blob: e0fdd7fab26b2b92ad300d6a1267fa19cefba461 [file] [log] [blame]
keyar@chromium.org163b5672012-08-01 17:53:29 +00001/*
2 * Copyright 2012 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 PictureBenchmark_DEFINED
9#define PictureBenchmark_DEFINED
10#include "SkTypes.h"
11#include "SkRefCnt.h"
12#include "PictureRenderer.h"
13
keyar@chromium.org77a55222012-08-20 15:03:47 +000014class BenchTimer;
keyar@chromium.org163b5672012-08-01 17:53:29 +000015class SkPicture;
16class SkString;
17
18namespace sk_tools {
19
20class PictureBenchmark : public SkRefCnt {
21public:
22 virtual void run(SkPicture* pict) = 0;
23
24 void setRepeats(int repeats) {
25 fRepeats = repeats;
26 }
27
28 int getRepeats() const {
29 return fRepeats;
30 }
31
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +000032 void setUseBitmapDevice() {
33 sk_tools::PictureRenderer* renderer = getRenderer();
34
35 if (renderer != NULL) {
36 renderer->setUseBitmapDevice();
37 }
38 }
39
keyar@chromium.org77a55222012-08-20 15:03:47 +000040 BenchTimer* setupTimer();
41
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +000042#if SK_SUPPORT_GPU
43 void setUseGpuDevice() {
44 sk_tools::PictureRenderer* renderer = getRenderer();
45
46 if (renderer != NULL) {
47 renderer->setUseGpuDevice();
48 }
49 }
50#endif
51
keyar@chromium.org163b5672012-08-01 17:53:29 +000052protected:
53 int fRepeats;
keyar@chromium.org9d696c02012-08-07 17:11:33 +000054
55private:
56 typedef SkRefCnt INHERITED;
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +000057
58 virtual sk_tools::PictureRenderer* getRenderer() {
59 return NULL;
60 }
keyar@chromium.org163b5672012-08-01 17:53:29 +000061};
62
63class PipePictureBenchmark : public PictureBenchmark {
64public:
keyar@chromium.org9d696c02012-08-07 17:11:33 +000065 virtual void run(SkPicture* pict) SK_OVERRIDE;
keyar@chromium.org163b5672012-08-01 17:53:29 +000066private:
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +000067 PipePictureRenderer fRenderer;
keyar@chromium.org9d696c02012-08-07 17:11:33 +000068 typedef PictureBenchmark INHERITED;
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +000069
70 virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE {
71 return &fRenderer;
72 }
keyar@chromium.org163b5672012-08-01 17:53:29 +000073};
74
75class RecordPictureBenchmark : public PictureBenchmark {
76public:
keyar@chromium.org9d696c02012-08-07 17:11:33 +000077 virtual void run(SkPicture* pict) SK_OVERRIDE;
78private:
79 typedef PictureBenchmark INHERITED;
keyar@chromium.org163b5672012-08-01 17:53:29 +000080};
81
82class SimplePictureBenchmark : public PictureBenchmark {
83public:
keyar@chromium.org9d696c02012-08-07 17:11:33 +000084 virtual void run(SkPicture* pict) SK_OVERRIDE;
keyar@chromium.org163b5672012-08-01 17:53:29 +000085private:
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +000086 SimplePictureRenderer fRenderer;
keyar@chromium.org9d696c02012-08-07 17:11:33 +000087 typedef PictureBenchmark INHERITED;
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +000088
89 virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE {
90 return &fRenderer;
91 }
keyar@chromium.org163b5672012-08-01 17:53:29 +000092};
93
94class TiledPictureBenchmark : public PictureBenchmark {
95public:
keyar@chromium.org9d696c02012-08-07 17:11:33 +000096 virtual void run(SkPicture* pict) SK_OVERRIDE;
keyar@chromium.org163b5672012-08-01 17:53:29 +000097
98 void setTileWidth(int width) {
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +000099 fRenderer.setTileWidth(width);
keyar@chromium.org163b5672012-08-01 17:53:29 +0000100 }
101
102 int getTileWidth() const {
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +0000103 return fRenderer.getTileWidth();
keyar@chromium.org163b5672012-08-01 17:53:29 +0000104 }
105
106 void setTileHeight(int height) {
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +0000107 fRenderer.setTileHeight(height);
keyar@chromium.org163b5672012-08-01 17:53:29 +0000108 }
109
110 int getTileHeight() const {
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +0000111 return fRenderer.getTileHeight();
keyar@chromium.org163b5672012-08-01 17:53:29 +0000112 }
113
114 void setTileWidthPercentage(double percentage) {
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +0000115 fRenderer.setTileWidthPercentage(percentage);
keyar@chromium.org163b5672012-08-01 17:53:29 +0000116 }
117
118 double getTileWidthPercentage() const {
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +0000119 return fRenderer.getTileWidthPercentage();
keyar@chromium.org163b5672012-08-01 17:53:29 +0000120 }
121
122 void setTileHeightPercentage(double percentage) {
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +0000123 fRenderer.setTileHeightPercentage(percentage);
keyar@chromium.org163b5672012-08-01 17:53:29 +0000124 }
125
126 double getTileHeightPercentage() const {
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +0000127 return fRenderer.getTileHeightPercentage();
keyar@chromium.org163b5672012-08-01 17:53:29 +0000128 }
129
130private:
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +0000131 TiledPictureRenderer fRenderer;
keyar@chromium.org9d696c02012-08-07 17:11:33 +0000132 typedef PictureBenchmark INHERITED;
keyar@chromium.orgfe6391a2012-08-20 15:03:41 +0000133
134 virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE{
135 return &fRenderer;
136 }
keyar@chromium.org163b5672012-08-01 17:53:29 +0000137};
138
139class UnflattenPictureBenchmark : public PictureBenchmark {
140public:
keyar@chromium.org9d696c02012-08-07 17:11:33 +0000141 virtual void run(SkPicture* pict) SK_OVERRIDE;
142private:
143 typedef PictureBenchmark INHERITED;
keyar@chromium.org163b5672012-08-01 17:53:29 +0000144};
145
146}
147
148#endif // PictureBenchmark_DEFINED