blob: f17281c13a41e099243e0ccb054dc3d78e6103f3 [file] [log] [blame]
mtklein92007582014-08-01 07:46:52 -07001/*
2 * Copyright 2014 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SKPBench_DEFINED
9#define SKPBench_DEFINED
10
11#include "Benchmark.h"
12#include "SkCanvas.h"
13#include "SkPicture.h"
14
15/**
16 * Runs an SkPicture as a benchmark by repeatedly drawing it scaled inside a device clip.
17 */
18class SKPBench : public Benchmark {
19public:
robertphillips5b693772014-11-21 06:19:36 -080020 SKPBench(const char* name, const SkPicture*, const SkIRect& devClip, SkScalar scale,
21 bool useMultiPictureDraw);
mtklein36352bf2015-03-25 18:17:31 -070022 ~SKPBench() override;
mtklein92007582014-08-01 07:46:52 -070023
24protected:
mtklein36352bf2015-03-25 18:17:31 -070025 const char* onGetName() override;
26 const char* onGetUniqueName() override;
27 void onPerCanvasPreDraw(SkCanvas*) override;
28 void onPerCanvasPostDraw(SkCanvas*) override;
29 bool isSuitableFor(Backend backend) override;
30 void onDraw(const int loops, SkCanvas* canvas) override;
31 SkIPoint onGetSize() override;
mtklein92007582014-08-01 07:46:52 -070032
33private:
34 SkAutoTUnref<const SkPicture> fPic;
35 const SkIRect fClip;
36 const SkScalar fScale;
37 SkString fName;
mtklein96289052014-09-10 12:05:59 -070038 SkString fUniqueName;
mtklein92007582014-08-01 07:46:52 -070039
robertphillips5b693772014-11-21 06:19:36 -080040 const bool fUseMultiPictureDraw;
41 SkTDArray<SkSurface*> fSurfaces; // for MultiPictureDraw
42 SkTDArray<SkIRect> fTileRects; // for MultiPictureDraw
43
mtklein92007582014-08-01 07:46:52 -070044 typedef Benchmark INHERITED;
45};
46
47#endif