| 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 |