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" |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 } | 55 } |
56 return fName.c_str(); | 56 return fName.c_str(); |
57 } | 57 } |
58 | 58 |
59 protected: | 59 protected: |
60 virtual void drawThisRect(SkCanvas* c, const SkRect& r, const SkPaint& p) { | 60 virtual void drawThisRect(SkCanvas* c, const SkRect& r, const SkPaint& p) { |
61 c->drawRect(r, p); | 61 c->drawRect(r, p); |
62 } | 62 } |
63 | 63 |
64 virtual const char* onGetName() { return computeName("rects"); } | 64 virtual const char* onGetName() { return computeName("rects"); } |
65 virtual void onDraw(SkCanvas* canvas) { | 65 virtual void onDraw(const int loops, SkCanvas* canvas) { |
66 SkPaint paint; | 66 SkPaint paint; |
67 if (fStroke > 0) { | 67 if (fStroke > 0) { |
68 paint.setStyle(SkPaint::kStroke_Style); | 68 paint.setStyle(SkPaint::kStroke_Style); |
69 paint.setStrokeWidth(SkIntToScalar(fStroke)); | 69 paint.setStrokeWidth(SkIntToScalar(fStroke)); |
70 } | 70 } |
71 for (int i = 0; i < this->getLoops(); i++) { | 71 for (int i = 0; i < loops; i++) { |
72 paint.setColor(fColors[i % N]); | 72 paint.setColor(fColors[i % N]); |
73 this->setupPaint(&paint); | 73 this->setupPaint(&paint); |
74 this->drawThisRect(canvas, fRects[i % N], paint); | 74 this->drawThisRect(canvas, fRects[i % N], paint); |
75 } | 75 } |
76 } | 76 } |
77 private: | 77 private: |
78 typedef SkBenchmark INHERITED; | 78 typedef SkBenchmark INHERITED; |
79 }; | 79 }; |
80 | 80 |
81 class SrcModeRectBench : public RectBench { | 81 class SrcModeRectBench : public RectBench { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 SkCanvas::PointMode fMode; | 134 SkCanvas::PointMode fMode; |
135 const char* fName; | 135 const char* fName; |
136 | 136 |
137 PointsBench(SkCanvas::PointMode mode, const char* name) | 137 PointsBench(SkCanvas::PointMode mode, const char* name) |
138 : RectBench(2) | 138 : RectBench(2) |
139 , fMode(mode) { | 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(const int loops, 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 |
150 if (FLAGS_strokeWidth >= 0) { | 150 if (FLAGS_strokeWidth >= 0) { |
151 gSizes[0] = (SkScalar)FLAGS_strokeWidth; | 151 gSizes[0] = (SkScalar)FLAGS_strokeWidth; |
152 sizes = 1; | 152 sizes = 1; |
153 } | 153 } |
154 | 154 |
155 SkPaint paint; | 155 SkPaint paint; |
156 paint.setStrokeCap(SkPaint::kRound_Cap); | 156 paint.setStrokeCap(SkPaint::kRound_Cap); |
157 | 157 |
158 for (int loop = 0; loop < this->getLoops(); loop++) { | 158 for (int loop = 0; loop < loops; loop++) { |
159 for (size_t i = 0; i < sizes; i++) { | 159 for (size_t i = 0; i < sizes; i++) { |
160 paint.setStrokeWidth(gSizes[i]); | 160 paint.setStrokeWidth(gSizes[i]); |
161 this->setupPaint(&paint); | 161 this->setupPaint(&paint); |
162 canvas->drawPoints(fMode, N * 2, SkTCast<SkPoint*>(fRects), pain
t); | 162 canvas->drawPoints(fMode, N * 2, SkTCast<SkPoint*>(fRects), pain
t); |
163 paint.setColor(fColors[i % N]); | 163 paint.setColor(fColors[i % N]); |
164 } | 164 } |
165 } | 165 } |
166 } | 166 } |
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(bool rotate) : 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 |
188 virtual void onDraw(SkCanvas* canvas) { | 188 virtual void onDraw(const int loops, SkCanvas* canvas) { |
189 static const SkScalar kHalfRectSize = 0.75f; | 189 static const SkScalar kHalfRectSize = 0.75f; |
190 | 190 |
191 SkPaint paint; | 191 SkPaint paint; |
192 this->setupPaint(&paint); | 192 this->setupPaint(&paint); |
193 paint.setAntiAlias(true); | 193 paint.setAntiAlias(true); |
194 paint.setColor(SK_ColorBLACK); | 194 paint.setColor(SK_ColorBLACK); |
195 SkRect r = { -kHalfRectSize, -kHalfRectSize, kHalfRectSize, kHalfRectSiz
e }; | 195 SkRect r = { -kHalfRectSize, -kHalfRectSize, kHalfRectSize, kHalfRectSiz
e }; |
196 int rot = 0; | 196 int rot = 0; |
197 | 197 |
198 for (int i = 0; i < this->getLoops(); i++) { | 198 for (int i = 0; i < loops; i++) { |
199 // Draw small aa rects in a grid across the screen | 199 // Draw small aa rects in a grid across the screen |
200 for (SkScalar y = kHalfRectSize+SK_Scalar1; y < H; y += 2*kHalfRectS
ize+2) { | 200 for (SkScalar y = kHalfRectSize+SK_Scalar1; y < H; y += 2*kHalfRectS
ize+2) { |
201 for (SkScalar x = kHalfRectSize+SK_Scalar1; x < W; x += 2*kHalfR
ectSize+2) { | 201 for (SkScalar x = kHalfRectSize+SK_Scalar1; x < W; x += 2*kHalfR
ectSize+2) { |
202 canvas->save(); | 202 canvas->save(); |
203 canvas->translate(x, y); | 203 canvas->translate(x, y); |
204 | 204 |
205 if (fRotate) { | 205 if (fRotate) { |
206 SkMatrix rotate; | 206 SkMatrix rotate; |
207 rotate.setRotate(SkIntToScalar(rot)); | 207 rotate.setRotate(SkIntToScalar(rot)); |
208 canvas->concat(rotate); | 208 canvas->concat(rotate); |
(...skipping 27 matching lines...) Expand all Loading... |
236 SkCanvas::PointMode fMode; | 236 SkCanvas::PointMode fMode; |
237 const char* fName; | 237 const char* fName; |
238 | 238 |
239 BlitMaskBench(SkCanvas::PointMode mode, | 239 BlitMaskBench(SkCanvas::PointMode mode, |
240 BlitMaskBench::kMaskType type, const char* name) : | 240 BlitMaskBench::kMaskType type, const char* name) : |
241 RectBench(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(const int loops, 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 |
252 if (FLAGS_strokeWidth >= 0) { | 252 if (FLAGS_strokeWidth >= 0) { |
253 gSizes[0] = (SkScalar)FLAGS_strokeWidth; | 253 gSizes[0] = (SkScalar)FLAGS_strokeWidth; |
254 sizes = 1; | 254 sizes = 1; |
255 } | 255 } |
256 SkRandom rand; | 256 SkRandom rand; |
257 SkColor color = 0xFF000000; | 257 SkColor color = 0xFF000000; |
258 U8CPU alpha = 0xFF; | 258 U8CPU alpha = 0xFF; |
259 SkPaint paint; | 259 SkPaint paint; |
260 paint.setStrokeCap(SkPaint::kRound_Cap); | 260 paint.setStrokeCap(SkPaint::kRound_Cap); |
261 if (_type == KMaskShader) { | 261 if (_type == KMaskShader) { |
262 SkBitmap srcBM; | 262 SkBitmap srcBM; |
263 srcBM.setConfig(SkBitmap::kARGB_8888_Config, 10, 1); | 263 srcBM.setConfig(SkBitmap::kARGB_8888_Config, 10, 1); |
264 srcBM.allocPixels(); | 264 srcBM.allocPixels(); |
265 srcBM.eraseColor(0xFF00FF00); | 265 srcBM.eraseColor(0xFF00FF00); |
266 | 266 |
267 SkShader* s; | 267 SkShader* s; |
268 s = SkShader::CreateBitmapShader(srcBM, SkShader::kClamp_TileMode, | 268 s = SkShader::CreateBitmapShader(srcBM, SkShader::kClamp_TileMode, |
269 SkShader::kClamp_TileMode); | 269 SkShader::kClamp_TileMode); |
270 paint.setShader(s)->unref(); | 270 paint.setShader(s)->unref(); |
271 } | 271 } |
272 for (int loop = 0; loop < this->getLoops(); loop++) { | 272 for (int loop = 0; loop < loops; loop++) { |
273 for (size_t i = 0; i < sizes; i++) { | 273 for (size_t i = 0; i < sizes; i++) { |
274 switch (_type) { | 274 switch (_type) { |
275 case kMaskOpaque: | 275 case kMaskOpaque: |
276 color = fColors[i]; | 276 color = fColors[i]; |
277 alpha = 0xFF; | 277 alpha = 0xFF; |
278 break; | 278 break; |
279 case kMaskBlack: | 279 case kMaskBlack: |
280 alpha = 0xFF; | 280 alpha = 0xFF; |
281 color = 0xFF000000; | 281 color = 0xFF000000; |
282 break; | 282 break; |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 (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 (SkCanvas::kPoints_PointMode, | 341 (SkCanvas::kPoints_PointMode, |
342 BlitMaskBench::KMaskShader, "maskshader") | 342 BlitMaskBench::KMaskShader, "maskshader") |
343 ); ) | 343 ); ) |
OLD | NEW |