| 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 "Benchmark.h" | 8 #include "Benchmark.h" |
| 9 #include "SkCanvas.h" | 9 #include "SkCanvas.h" |
| 10 #include "SkCommandLineFlags.h" | 10 #include "SkCommandLineFlags.h" |
| (...skipping 28 matching lines...) Expand all Loading... |
| 39 return fName.c_str(); | 39 return fName.c_str(); |
| 40 } | 40 } |
| 41 | 41 |
| 42 bool isVisual() override { return true; } | 42 bool isVisual() override { return true; } |
| 43 | 43 |
| 44 protected: | 44 protected: |
| 45 virtual void drawThisRect(SkCanvas* c, const SkRect& r, const SkPaint& p) { | 45 virtual void drawThisRect(SkCanvas* c, const SkRect& r, const SkPaint& p) { |
| 46 c->drawRect(r, p); | 46 c->drawRect(r, p); |
| 47 } | 47 } |
| 48 | 48 |
| 49 virtual const char* onGetName() { return computeName("rects"); } | 49 const char* onGetName() override { return computeName("rects"); } |
| 50 | 50 |
| 51 virtual void onPreDraw() { | 51 void onPreDraw() override { |
| 52 SkRandom rand; | 52 SkRandom rand; |
| 53 const SkScalar offset = SK_Scalar1/3; | 53 const SkScalar offset = SK_Scalar1/3; |
| 54 for (int i = 0; i < N; i++) { | 54 for (int i = 0; i < N; i++) { |
| 55 int x = rand.nextU() % W; | 55 int x = rand.nextU() % W; |
| 56 int y = rand.nextU() % H; | 56 int y = rand.nextU() % H; |
| 57 int w = rand.nextU() % W; | 57 int w = rand.nextU() % W; |
| 58 int h = rand.nextU() % H; | 58 int h = rand.nextU() % H; |
| 59 w >>= fShift; | 59 w >>= fShift; |
| 60 h >>= fShift; | 60 h >>= fShift; |
| 61 x -= w/2; | 61 x -= w/2; |
| 62 y -= h/2; | 62 y -= h/2; |
| 63 fRects[i].set(SkIntToScalar(x), SkIntToScalar(y), | 63 fRects[i].set(SkIntToScalar(x), SkIntToScalar(y), |
| 64 SkIntToScalar(x+w), SkIntToScalar(y+h)); | 64 SkIntToScalar(x+w), SkIntToScalar(y+h)); |
| 65 fRects[i].offset(offset, offset); | 65 fRects[i].offset(offset, offset); |
| 66 fColors[i] = rand.nextU() | 0xFF808080; | 66 fColors[i] = rand.nextU() | 0xFF808080; |
| 67 } | 67 } |
| 68 } | 68 } |
| 69 | 69 |
| 70 virtual void onDraw(const int loops, SkCanvas* canvas) { | 70 void onDraw(const int loops, SkCanvas* canvas) override { |
| 71 SkPaint paint; | 71 SkPaint paint; |
| 72 if (fStroke > 0) { | 72 if (fStroke > 0) { |
| 73 paint.setStyle(SkPaint::kStroke_Style); | 73 paint.setStyle(SkPaint::kStroke_Style); |
| 74 paint.setStrokeWidth(SkIntToScalar(fStroke)); | 74 paint.setStrokeWidth(SkIntToScalar(fStroke)); |
| 75 } | 75 } |
| 76 for (int i = 0; i < loops; i++) { | 76 for (int i = 0; i < loops; i++) { |
| 77 paint.setColor(fColors[i % N]); | 77 paint.setColor(fColors[i % N]); |
| 78 this->setupPaint(&paint); | 78 this->setupPaint(&paint); |
| 79 this->drawThisRect(canvas, fRects[i % N], paint); | 79 this->drawThisRect(canvas, fRects[i % N], paint); |
| 80 } | 80 } |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 SkString fName; | 135 SkString fName; |
| 136 | 136 |
| 137 typedef RectBench INHERITED; | 137 typedef RectBench INHERITED; |
| 138 }; | 138 }; |
| 139 | 139 |
| 140 | 140 |
| 141 class OvalBench : public RectBench { | 141 class OvalBench : public RectBench { |
| 142 public: | 142 public: |
| 143 OvalBench(int shift, int stroke = 0) : RectBench(shift, stroke) {} | 143 OvalBench(int shift, int stroke = 0) : RectBench(shift, stroke) {} |
| 144 protected: | 144 protected: |
| 145 virtual void drawThisRect(SkCanvas* c, const SkRect& r, const SkPaint& p) { | 145 void drawThisRect(SkCanvas* c, const SkRect& r, const SkPaint& p) override { |
| 146 c->drawOval(r, p); | 146 c->drawOval(r, p); |
| 147 } | 147 } |
| 148 virtual const char* onGetName() { return computeName("ovals"); } | 148 const char* onGetName() override { return computeName("ovals"); } |
| 149 }; | 149 }; |
| 150 | 150 |
| 151 class RRectBench : public RectBench { | 151 class RRectBench : public RectBench { |
| 152 public: | 152 public: |
| 153 RRectBench(int shift, int stroke = 0) : RectBench(shift, stroke) {} | 153 RRectBench(int shift, int stroke = 0) : RectBench(shift, stroke) {} |
| 154 protected: | 154 protected: |
| 155 virtual void drawThisRect(SkCanvas* c, const SkRect& r, const SkPaint& p) { | 155 void drawThisRect(SkCanvas* c, const SkRect& r, const SkPaint& p) override { |
| 156 c->drawRoundRect(r, r.width() / 4, r.height() / 4, p); | 156 c->drawRoundRect(r, r.width() / 4, r.height() / 4, p); |
| 157 } | 157 } |
| 158 virtual const char* onGetName() { return computeName("rrects"); } | 158 const char* onGetName() override { return computeName("rrects"); } |
| 159 }; | 159 }; |
| 160 | 160 |
| 161 class PointsBench : public RectBench { | 161 class PointsBench : public RectBench { |
| 162 public: | 162 public: |
| 163 SkCanvas::PointMode fMode; | 163 SkCanvas::PointMode fMode; |
| 164 const char* fName; | 164 const char* fName; |
| 165 | 165 |
| 166 PointsBench(SkCanvas::PointMode mode, const char* name) | 166 PointsBench(SkCanvas::PointMode mode, const char* name) |
| 167 : RectBench(2) | 167 : RectBench(2) |
| 168 , fMode(mode) { | 168 , fMode(mode) { |
| 169 fName = name; | 169 fName = name; |
| 170 } | 170 } |
| 171 | 171 |
| 172 protected: | 172 protected: |
| 173 virtual void onDraw(const int loops, SkCanvas* canvas) { | 173 void onDraw(const int loops, SkCanvas* canvas) override { |
| 174 SkScalar gSizes[] = { | 174 SkScalar gSizes[] = { |
| 175 SkIntToScalar(7), 0 | 175 SkIntToScalar(7), 0 |
| 176 }; | 176 }; |
| 177 size_t sizes = SK_ARRAY_COUNT(gSizes); | 177 size_t sizes = SK_ARRAY_COUNT(gSizes); |
| 178 | 178 |
| 179 if (FLAGS_strokeWidth >= 0) { | 179 if (FLAGS_strokeWidth >= 0) { |
| 180 gSizes[0] = (SkScalar)FLAGS_strokeWidth; | 180 gSizes[0] = (SkScalar)FLAGS_strokeWidth; |
| 181 sizes = 1; | 181 sizes = 1; |
| 182 } | 182 } |
| 183 | 183 |
| 184 SkPaint paint; | 184 SkPaint paint; |
| 185 paint.setStrokeCap(SkPaint::kRound_Cap); | 185 paint.setStrokeCap(SkPaint::kRound_Cap); |
| 186 | 186 |
| 187 for (int loop = 0; loop < loops; loop++) { | 187 for (int loop = 0; loop < loops; loop++) { |
| 188 for (size_t i = 0; i < sizes; i++) { | 188 for (size_t i = 0; i < sizes; i++) { |
| 189 paint.setStrokeWidth(gSizes[i]); | 189 paint.setStrokeWidth(gSizes[i]); |
| 190 this->setupPaint(&paint); | 190 this->setupPaint(&paint); |
| 191 canvas->drawPoints(fMode, N * 2, SkTCast<SkPoint*>(fRects), pain
t); | 191 canvas->drawPoints(fMode, N * 2, SkTCast<SkPoint*>(fRects), pain
t); |
| 192 paint.setColor(fColors[i % N]); | 192 paint.setColor(fColors[i % N]); |
| 193 } | 193 } |
| 194 } | 194 } |
| 195 } | 195 } |
| 196 virtual const char* onGetName() { return fName; } | 196 const char* onGetName() override { return fName; } |
| 197 }; | 197 }; |
| 198 | 198 |
| 199 /******************************************************************************* | 199 /******************************************************************************* |
| 200 * to bench BlitMask [Opaque, Black, color, shader] | 200 * to bench BlitMask [Opaque, Black, color, shader] |
| 201 *******************************************************************************
/ | 201 *******************************************************************************
/ |
| 202 | 202 |
| 203 class BlitMaskBench : public RectBench { | 203 class BlitMaskBench : public RectBench { |
| 204 public: | 204 public: |
| 205 enum kMaskType { | 205 enum kMaskType { |
| 206 kMaskOpaque = 0, | 206 kMaskOpaque = 0, |
| 207 kMaskBlack, | 207 kMaskBlack, |
| 208 kMaskColor, | 208 kMaskColor, |
| 209 KMaskShader | 209 KMaskShader |
| 210 }; | 210 }; |
| 211 SkCanvas::PointMode fMode; | 211 SkCanvas::PointMode fMode; |
| 212 const char* fName; | 212 const char* fName; |
| 213 | 213 |
| 214 BlitMaskBench(SkCanvas::PointMode mode, | 214 BlitMaskBench(SkCanvas::PointMode mode, |
| 215 BlitMaskBench::kMaskType type, const char* name) : | 215 BlitMaskBench::kMaskType type, const char* name) : |
| 216 RectBench(2), fMode(mode), _type(type) { | 216 RectBench(2), fMode(mode), _type(type) { |
| 217 fName = name; | 217 fName = name; |
| 218 } | 218 } |
| 219 | 219 |
| 220 protected: | 220 protected: |
| 221 virtual void onDraw(const int loops, SkCanvas* canvas) { | 221 void onDraw(const int loops, SkCanvas* canvas) override { |
| 222 SkScalar gSizes[] = { | 222 SkScalar gSizes[] = { |
| 223 SkIntToScalar(13), SkIntToScalar(24) | 223 SkIntToScalar(13), SkIntToScalar(24) |
| 224 }; | 224 }; |
| 225 size_t sizes = SK_ARRAY_COUNT(gSizes); | 225 size_t sizes = SK_ARRAY_COUNT(gSizes); |
| 226 | 226 |
| 227 if (FLAGS_strokeWidth >= 0) { | 227 if (FLAGS_strokeWidth >= 0) { |
| 228 gSizes[0] = (SkScalar)FLAGS_strokeWidth; | 228 gSizes[0] = (SkScalar)FLAGS_strokeWidth; |
| 229 sizes = 1; | 229 sizes = 1; |
| 230 } | 230 } |
| 231 SkRandom rand; | 231 SkRandom rand; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 262 break; | 262 break; |
| 263 } | 263 } |
| 264 paint.setStrokeWidth(gSizes[i]); | 264 paint.setStrokeWidth(gSizes[i]); |
| 265 this->setupPaint(&paint); | 265 this->setupPaint(&paint); |
| 266 paint.setColor(color); | 266 paint.setColor(color); |
| 267 paint.setAlpha(alpha); | 267 paint.setAlpha(alpha); |
| 268 canvas->drawPoints(fMode, N * 2, SkTCast<SkPoint*>(fRects), pain
t); | 268 canvas->drawPoints(fMode, N * 2, SkTCast<SkPoint*>(fRects), pain
t); |
| 269 } | 269 } |
| 270 } | 270 } |
| 271 } | 271 } |
| 272 virtual const char* onGetName() { return fName; } | 272 const char* onGetName() override { return fName; } |
| 273 private: | 273 private: |
| 274 typedef RectBench INHERITED; | 274 typedef RectBench INHERITED; |
| 275 kMaskType _type; | 275 kMaskType _type; |
| 276 }; | 276 }; |
| 277 | 277 |
| 278 DEF_BENCH(return new RectBench(1);) | 278 DEF_BENCH(return new RectBench(1);) |
| 279 DEF_BENCH(return new RectBench(1, 4);) | 279 DEF_BENCH(return new RectBench(1, 4);) |
| 280 DEF_BENCH(return new RectBench(3);) | 280 DEF_BENCH(return new RectBench(3);) |
| 281 DEF_BENCH(return new RectBench(3, 4);) | 281 DEF_BENCH(return new RectBench(3, 4);) |
| 282 DEF_BENCH(return new OvalBench(1);) | 282 DEF_BENCH(return new OvalBench(1);) |
| (...skipping 19 matching lines...) Expand all Loading... |
| 302 "maskopaque");) | 302 "maskopaque");) |
| 303 DEF_BENCH(return new BlitMaskBench(SkCanvas::kPoints_PointMode, | 303 DEF_BENCH(return new BlitMaskBench(SkCanvas::kPoints_PointMode, |
| 304 BlitMaskBench::kMaskBlack, | 304 BlitMaskBench::kMaskBlack, |
| 305 "maskblack");) | 305 "maskblack");) |
| 306 DEF_BENCH(return new BlitMaskBench(SkCanvas::kPoints_PointMode, | 306 DEF_BENCH(return new BlitMaskBench(SkCanvas::kPoints_PointMode, |
| 307 BlitMaskBench::kMaskColor, | 307 BlitMaskBench::kMaskColor, |
| 308 "maskcolor");) | 308 "maskcolor");) |
| 309 DEF_BENCH(return new BlitMaskBench(SkCanvas::kPoints_PointMode, | 309 DEF_BENCH(return new BlitMaskBench(SkCanvas::kPoints_PointMode, |
| 310 BlitMaskBench::KMaskShader, | 310 BlitMaskBench::KMaskShader, |
| 311 "maskshader");) | 311 "maskshader");) |
| OLD | NEW |