blob: c3767e1cb3b2ef4197a302ed59450c035a7d826a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
|
/*
* Copyright 2012 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef PictureBenchmark_DEFINED
#define PictureBenchmark_DEFINED
#include "SkTypes.h"
#include "SkRefCnt.h"
#include "PictureRenderer.h"
class BenchTimer;
class SkBenchLogger;
class SkPicture;
class SkString;
namespace sk_tools {
class PictureBenchmark : public SkRefCnt {
public:
PictureBenchmark()
: fRepeats(1)
, fLogger(NULL) {}
void run(SkPicture* pict);
void setRepeats(int repeats) {
fRepeats = repeats;
}
void setDeviceType(PictureRenderer::SkDeviceTypes deviceType) {
sk_tools::PictureRenderer* renderer = getRenderer();
if (renderer != NULL) {
renderer->setDeviceType(deviceType);
}
}
void setLogger(SkBenchLogger* logger) { fLogger = logger; }
private:
int fRepeats;
SkBenchLogger* fLogger;
void logProgress(const char msg[]);
virtual sk_tools::PictureRenderer* getRenderer() = 0;
BenchTimer* setupTimer();
typedef SkRefCnt INHERITED;
};
// TODO: Use just one PictureBenchmark with different renderers.
class PipePictureBenchmark : public PictureBenchmark {
private:
PipePictureRenderer fRenderer;
virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE {
return &fRenderer;
}
typedef PictureBenchmark INHERITED;
};
class RecordPictureBenchmark : public PictureBenchmark {
private:
RecordPictureRenderer fRenderer;
virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE {
return &fRenderer;
}
typedef PictureBenchmark INHERITED;
};
class SimplePictureBenchmark : public PictureBenchmark {
private:
SimplePictureRenderer fRenderer;
virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE {
return &fRenderer;
}
typedef PictureBenchmark INHERITED;
};
class TiledPictureBenchmark : public PictureBenchmark {
public:
void setTileWidth(int width) {
fRenderer.setTileWidth(width);
}
int getTileWidth() const {
return fRenderer.getTileWidth();
}
void setTileHeight(int height) {
fRenderer.setTileHeight(height);
}
int getTileHeight() const {
return fRenderer.getTileHeight();
}
void setTileWidthPercentage(double percentage) {
fRenderer.setTileWidthPercentage(percentage);
}
double getTileWidthPercentage() const {
return fRenderer.getTileWidthPercentage();
}
void setTileHeightPercentage(double percentage) {
fRenderer.setTileHeightPercentage(percentage);
}
double getTileHeightPercentage() const {
return fRenderer.getTileHeightPercentage();
}
void setTileMinPowerOf2Width(int width) {
fRenderer.setTileMinPowerOf2Width(width);
}
int getTileMinPowerOf2Width() {
return fRenderer.getTileMinPowerOf2Width();
}
void setThreading(bool multi) {
fRenderer.setMultiThreaded(multi);
}
void setUsePipe(bool usePipe) {
fRenderer.setUsePipe(usePipe);
}
private:
TiledPictureRenderer fRenderer;
virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE{
return &fRenderer;
}
typedef PictureBenchmark INHERITED;
};
class PlaybackCreationBenchmark : public PictureBenchmark {
private:
PlaybackCreationRenderer fRenderer;
virtual sk_tools::PictureRenderer* getRenderer() SK_OVERRIDE{
return &fRenderer;
}
typedef PictureBenchmark INHERITED;
};
}
#endif // PictureBenchmark_DEFINED
|