OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 #include "SkBenchmark.h" | 8 #include "SkBenchmark.h" |
9 #include "SkCanvas.h" | 9 #include "SkCanvas.h" |
10 #include "SkCommandLineFlags.h" | 10 #include "SkCommandLineFlags.h" |
11 #include "SkPaint.h" | 11 #include "SkPaint.h" |
12 #include "SkRandom.h" | 12 #include "SkRandom.h" |
13 #include "SkShader.h" | 13 #include "SkShader.h" |
14 #include "SkString.h" | 14 #include "SkString.h" |
15 | 15 |
16 DEFINE_double(strokeWidth, -1.0, "If set, use this stroke width in RectBench."); | 16 DEFINE_double(strokeWidth, -1.0, "If set, use this stroke width in RectBench."); |
17 | 17 |
18 class RectBench : public SkBenchmark { | 18 class RectBench : public SkBenchmark { |
19 public: | 19 public: |
20 int fShift, fStroke; | 20 int fShift, fStroke; |
21 enum { | 21 enum { |
22 W = 640, | 22 W = 640, |
23 H = 480, | 23 H = 480, |
24 N = 300, | 24 N = 300, |
25 }; | 25 }; |
26 SkRect fRects[N]; | 26 SkRect fRects[N]; |
27 SkColor fColors[N]; | 27 SkColor fColors[N]; |
28 | 28 |
29 RectBench(void* param, int shift, int stroke = 0) | 29 RectBench(int shift, int stroke = 0) |
30 : INHERITED(param) | 30 : fShift(shift) |
31 , fShift(shift) | |
32 , fStroke(stroke) { | 31 , fStroke(stroke) { |
33 SkRandom rand; | 32 SkRandom rand; |
34 const SkScalar offset = SK_Scalar1/3; | 33 const SkScalar offset = SK_Scalar1/3; |
35 for (int i = 0; i < N; i++) { | 34 for (int i = 0; i < N; i++) { |
36 int x = rand.nextU() % W; | 35 int x = rand.nextU() % W; |
37 int y = rand.nextU() % H; | 36 int y = rand.nextU() % H; |
38 int w = rand.nextU() % W; | 37 int w = rand.nextU() % W; |
39 int h = rand.nextU() % H; | 38 int h = rand.nextU() % H; |
40 w >>= shift; | 39 w >>= shift; |
41 h >>= shift; | 40 h >>= shift; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 this->setupPaint(&paint); | 73 this->setupPaint(&paint); |
75 this->drawThisRect(canvas, fRects[i % N], paint); | 74 this->drawThisRect(canvas, fRects[i % N], paint); |
76 } | 75 } |
77 } | 76 } |
78 private: | 77 private: |
79 typedef SkBenchmark INHERITED; | 78 typedef SkBenchmark INHERITED; |
80 }; | 79 }; |
81 | 80 |
82 class SrcModeRectBench : public RectBench { | 81 class SrcModeRectBench : public RectBench { |
83 public: | 82 public: |
84 SrcModeRectBench(void* param) : INHERITED(param, 1, 0) { | 83 SrcModeRectBench() : INHERITED(1, 0) { |
85 fMode = SkXfermode::Create(SkXfermode::kSrc_Mode); | 84 fMode = SkXfermode::Create(SkXfermode::kSrc_Mode); |
86 } | 85 } |
87 | 86 |
88 virtual ~SrcModeRectBench() { | 87 virtual ~SrcModeRectBench() { |
89 SkSafeUnref(fMode); | 88 SkSafeUnref(fMode); |
90 } | 89 } |
91 | 90 |
92 protected: | 91 protected: |
93 virtual void setupPaint(SkPaint* paint) SK_OVERRIDE { | 92 virtual void setupPaint(SkPaint* paint) SK_OVERRIDE { |
94 this->INHERITED::setupPaint(paint); | 93 this->INHERITED::setupPaint(paint); |
(...skipping 10 matching lines...) Expand all Loading... |
105 | 104 |
106 private: | 105 private: |
107 SkString fName; | 106 SkString fName; |
108 SkXfermode* fMode; | 107 SkXfermode* fMode; |
109 | 108 |
110 typedef RectBench INHERITED; | 109 typedef RectBench INHERITED; |
111 }; | 110 }; |
112 | 111 |
113 class OvalBench : public RectBench { | 112 class OvalBench : public RectBench { |
114 public: | 113 public: |
115 OvalBench(void* param, int shift, int stroke = 0) : RectBench(param, shift,
stroke) {} | 114 OvalBench(int shift, int stroke = 0) : RectBench(shift, stroke) {} |
116 protected: | 115 protected: |
117 virtual void drawThisRect(SkCanvas* c, const SkRect& r, const SkPaint& p) { | 116 virtual void drawThisRect(SkCanvas* c, const SkRect& r, const SkPaint& p) { |
118 c->drawOval(r, p); | 117 c->drawOval(r, p); |
119 } | 118 } |
120 virtual const char* onGetName() { return computeName("ovals"); } | 119 virtual const char* onGetName() { return computeName("ovals"); } |
121 }; | 120 }; |
122 | 121 |
123 class RRectBench : public RectBench { | 122 class RRectBench : public RectBench { |
124 public: | 123 public: |
125 RRectBench(void* param, int shift, int stroke = 0) : RectBench(param, shift,
stroke) {} | 124 RRectBench(int shift, int stroke = 0) : RectBench(shift, stroke) {} |
126 protected: | 125 protected: |
127 virtual void drawThisRect(SkCanvas* c, const SkRect& r, const SkPaint& p) { | 126 virtual void drawThisRect(SkCanvas* c, const SkRect& r, const SkPaint& p) { |
128 c->drawRoundRect(r, r.width() / 4, r.height() / 4, p); | 127 c->drawRoundRect(r, r.width() / 4, r.height() / 4, p); |
129 } | 128 } |
130 virtual const char* onGetName() { return computeName("rrects"); } | 129 virtual const char* onGetName() { return computeName("rrects"); } |
131 }; | 130 }; |
132 | 131 |
133 class PointsBench : public RectBench { | 132 class PointsBench : public RectBench { |
134 public: | 133 public: |
135 SkCanvas::PointMode fMode; | 134 SkCanvas::PointMode fMode; |
136 const char* fName; | 135 const char* fName; |
137 | 136 |
138 PointsBench(void* param, SkCanvas::PointMode mode, const char* name) : | 137 PointsBench(SkCanvas::PointMode mode, const char* name) |
139 RectBench(param, 2), fMode(mode) { | 138 : RectBench(2) |
| 139 , fMode(mode) { |
140 fName = name; | 140 fName = name; |
141 } | 141 } |
142 | 142 |
143 protected: | 143 protected: |
144 virtual void onDraw(SkCanvas* canvas) { | 144 virtual void onDraw(SkCanvas* canvas) { |
145 SkScalar gSizes[] = { | 145 SkScalar gSizes[] = { |
146 SkIntToScalar(7), 0 | 146 SkIntToScalar(7), 0 |
147 }; | 147 }; |
148 size_t sizes = SK_ARRAY_COUNT(gSizes); | 148 size_t sizes = SK_ARRAY_COUNT(gSizes); |
149 | 149 |
(...skipping 17 matching lines...) Expand all Loading... |
167 virtual const char* onGetName() { return fName; } | 167 virtual const char* onGetName() { return fName; } |
168 }; | 168 }; |
169 | 169 |
170 class AARectBench : public SkBenchmark { | 170 class AARectBench : public SkBenchmark { |
171 public: | 171 public: |
172 enum { | 172 enum { |
173 W = 640, | 173 W = 640, |
174 H = 480, | 174 H = 480, |
175 }; | 175 }; |
176 | 176 |
177 AARectBench(void* param, bool rotate) : INHERITED(param), fRotate(rotate) {} | 177 AARectBench(bool rotate) : fRotate(rotate) {} |
178 | 178 |
179 protected: | 179 protected: |
180 | 180 |
181 virtual const char* onGetName() { | 181 virtual const char* onGetName() { |
182 if (fRotate) { | 182 if (fRotate) { |
183 return "aarects_rotated"; | 183 return "aarects_rotated"; |
184 } | 184 } |
185 return "aarects"; | 185 return "aarects"; |
186 } | 186 } |
187 | 187 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 public: | 229 public: |
230 enum kMaskType { | 230 enum kMaskType { |
231 kMaskOpaque = 0, | 231 kMaskOpaque = 0, |
232 kMaskBlack, | 232 kMaskBlack, |
233 kMaskColor, | 233 kMaskColor, |
234 KMaskShader | 234 KMaskShader |
235 }; | 235 }; |
236 SkCanvas::PointMode fMode; | 236 SkCanvas::PointMode fMode; |
237 const char* fName; | 237 const char* fName; |
238 | 238 |
239 BlitMaskBench(void* param, SkCanvas::PointMode mode, | 239 BlitMaskBench(SkCanvas::PointMode mode, |
240 BlitMaskBench::kMaskType type, const char* name) : | 240 BlitMaskBench::kMaskType type, const char* name) : |
241 RectBench(param, 2), fMode(mode), _type(type) { | 241 RectBench(2), fMode(mode), _type(type) { |
242 fName = name; | 242 fName = name; |
243 } | 243 } |
244 | 244 |
245 protected: | 245 protected: |
246 virtual void onDraw(SkCanvas* canvas) { | 246 virtual void onDraw(SkCanvas* canvas) { |
247 SkScalar gSizes[] = { | 247 SkScalar gSizes[] = { |
248 SkIntToScalar(13), SkIntToScalar(24) | 248 SkIntToScalar(13), SkIntToScalar(24) |
249 }; | 249 }; |
250 size_t sizes = SK_ARRAY_COUNT(gSizes); | 250 size_t sizes = SK_ARRAY_COUNT(gSizes); |
251 | 251 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
295 } | 295 } |
296 } | 296 } |
297 } | 297 } |
298 virtual const char* onGetName() { return fName; } | 298 virtual const char* onGetName() { return fName; } |
299 private: | 299 private: |
300 typedef RectBench INHERITED; | 300 typedef RectBench INHERITED; |
301 kMaskType _type; | 301 kMaskType _type; |
302 }; | 302 }; |
303 | 303 |
304 | 304 |
305 DEF_BENCH( return SkNEW_ARGS(RectBench, (p, 1)); ) | 305 DEF_BENCH( return SkNEW_ARGS(RectBench, (1)); ) |
306 DEF_BENCH( return SkNEW_ARGS(RectBench, (p, 1, 4)); ) | 306 DEF_BENCH( return SkNEW_ARGS(RectBench, (1, 4)); ) |
307 DEF_BENCH( return SkNEW_ARGS(RectBench, (p, 3)); ) | 307 DEF_BENCH( return SkNEW_ARGS(RectBench, (3)); ) |
308 DEF_BENCH( return SkNEW_ARGS(RectBench, (p, 3, 4)); ) | 308 DEF_BENCH( return SkNEW_ARGS(RectBench, (3, 4)); ) |
309 DEF_BENCH( return SkNEW_ARGS(OvalBench, (p, 1)); ) | 309 DEF_BENCH( return SkNEW_ARGS(OvalBench, (1)); ) |
310 DEF_BENCH( return SkNEW_ARGS(OvalBench, (p, 3)); ) | 310 DEF_BENCH( return SkNEW_ARGS(OvalBench, (3)); ) |
311 DEF_BENCH( return SkNEW_ARGS(OvalBench, (p, 1, 4)); ) | 311 DEF_BENCH( return SkNEW_ARGS(OvalBench, (1, 4)); ) |
312 DEF_BENCH( return SkNEW_ARGS(OvalBench, (p, 3, 4)); ) | 312 DEF_BENCH( return SkNEW_ARGS(OvalBench, (3, 4)); ) |
313 DEF_BENCH( return SkNEW_ARGS(RRectBench, (p, 1)); ) | 313 DEF_BENCH( return SkNEW_ARGS(RRectBench, (1)); ) |
314 DEF_BENCH( return SkNEW_ARGS(RRectBench, (p, 1, 4)); ) | 314 DEF_BENCH( return SkNEW_ARGS(RRectBench, (1, 4)); ) |
315 DEF_BENCH( return SkNEW_ARGS(RRectBench, (p, 3)); ) | 315 DEF_BENCH( return SkNEW_ARGS(RRectBench, (3)); ) |
316 DEF_BENCH( return SkNEW_ARGS(RRectBench, (p, 3, 4)); ) | 316 DEF_BENCH( return SkNEW_ARGS(RRectBench, (3, 4)); ) |
317 DEF_BENCH( return SkNEW_ARGS(PointsBench, (p, SkCanvas::kPoints_PointMode, "poin
ts")); ) | 317 DEF_BENCH( return SkNEW_ARGS(PointsBench, (SkCanvas::kPoints_PointMode, "points"
)); ) |
318 DEF_BENCH( return SkNEW_ARGS(PointsBench, (p, SkCanvas::kLines_PointMode, "lines
")); ) | 318 DEF_BENCH( return SkNEW_ARGS(PointsBench, (SkCanvas::kLines_PointMode, "lines"))
; ) |
319 DEF_BENCH( return SkNEW_ARGS(PointsBench, (p, SkCanvas::kPolygon_PointMode, "pol
ygon")); ) | 319 DEF_BENCH( return SkNEW_ARGS(PointsBench, (SkCanvas::kPolygon_PointMode, "polygo
n")); ) |
320 | 320 |
321 DEF_BENCH( return SkNEW_ARGS(SrcModeRectBench, (p)); ) | 321 DEF_BENCH( return SkNEW_ARGS(SrcModeRectBench, ()); ) |
322 | 322 |
323 DEF_BENCH( return SkNEW_ARGS(AARectBench, (p, false)); ) | 323 DEF_BENCH( return SkNEW_ARGS(AARectBench, (false)); ) |
324 DEF_BENCH( return SkNEW_ARGS(AARectBench, (p, true)); ) | 324 DEF_BENCH( return SkNEW_ARGS(AARectBench, (true)); ) |
325 | 325 |
326 /* init the blitmask bench | 326 /* init the blitmask bench |
327 */ | 327 */ |
328 DEF_BENCH( return SkNEW_ARGS(BlitMaskBench, | 328 DEF_BENCH( return SkNEW_ARGS(BlitMaskBench, |
329 (p, SkCanvas::kPoints_PointMode, | 329 (SkCanvas::kPoints_PointMode, |
330 BlitMaskBench::kMaskOpaque, "maskopaque") | 330 BlitMaskBench::kMaskOpaque, "maskopaque") |
331 ); ) | 331 ); ) |
332 DEF_BENCH( return SkNEW_ARGS(BlitMaskBench, | 332 DEF_BENCH( return SkNEW_ARGS(BlitMaskBench, |
333 (p, SkCanvas::kPoints_PointMode, | 333 (SkCanvas::kPoints_PointMode, |
334 BlitMaskBench::kMaskBlack, "maskblack") | 334 BlitMaskBench::kMaskBlack, "maskblack") |
335 ); ) | 335 ); ) |
336 DEF_BENCH( return SkNEW_ARGS(BlitMaskBench, | 336 DEF_BENCH( return SkNEW_ARGS(BlitMaskBench, |
337 (p, SkCanvas::kPoints_PointMode, | 337 (SkCanvas::kPoints_PointMode, |
338 BlitMaskBench::kMaskColor, "maskcolor") | 338 BlitMaskBench::kMaskColor, "maskcolor") |
339 ); ) | 339 ); ) |
340 DEF_BENCH( return SkNEW_ARGS(BlitMaskBench, | 340 DEF_BENCH( return SkNEW_ARGS(BlitMaskBench, |
341 (p, SkCanvas::kPoints_PointMode, | 341 (SkCanvas::kPoints_PointMode, |
342 BlitMaskBench::KMaskShader, "maskshader") | 342 BlitMaskBench::KMaskShader, "maskshader") |
343 ); ) | 343 ); ) |
OLD | NEW |