Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(336)

Side by Side Diff: bench/PathBench.cpp

Issue 23876006: Refactoring: get rid of the SkBenchmark void* parameter. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: sync to head Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « bench/MutexBench.cpp ('k') | bench/PathIterBench.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "SkBitmap.h" 9 #include "SkBitmap.h"
10 #include "SkCanvas.h" 10 #include "SkCanvas.h"
(...skipping 12 matching lines...) Expand all
23 #define FLAGS00 Flags(0) 23 #define FLAGS00 Flags(0)
24 #define FLAGS01 Flags(kStroke_Flag) 24 #define FLAGS01 Flags(kStroke_Flag)
25 #define FLAGS10 Flags(kBig_Flag) 25 #define FLAGS10 Flags(kBig_Flag)
26 #define FLAGS11 Flags(kStroke_Flag | kBig_Flag) 26 #define FLAGS11 Flags(kStroke_Flag | kBig_Flag)
27 27
28 class PathBench : public SkBenchmark { 28 class PathBench : public SkBenchmark {
29 SkPaint fPaint; 29 SkPaint fPaint;
30 SkString fName; 30 SkString fName;
31 Flags fFlags; 31 Flags fFlags;
32 public: 32 public:
33 PathBench(void* param, Flags flags) : INHERITED(param), fFlags(flags) { 33 PathBench(Flags flags) : fFlags(flags) {
34 fPaint.setStyle(flags & kStroke_Flag ? SkPaint::kStroke_Style : 34 fPaint.setStyle(flags & kStroke_Flag ? SkPaint::kStroke_Style :
35 SkPaint::kFill_Style); 35 SkPaint::kFill_Style);
36 fPaint.setStrokeWidth(SkIntToScalar(5)); 36 fPaint.setStrokeWidth(SkIntToScalar(5));
37 fPaint.setStrokeJoin(SkPaint::kBevel_Join); 37 fPaint.setStrokeJoin(SkPaint::kBevel_Join);
38 } 38 }
39 39
40 virtual void appendName(SkString*) = 0; 40 virtual void appendName(SkString*) = 0;
41 virtual void makePath(SkPath*) = 0; 41 virtual void makePath(SkPath*) = 0;
42 virtual int complexity() { return 0; } 42 virtual int complexity() { return 0; }
43 43
(...skipping 28 matching lines...) Expand all
72 canvas->drawPath(path, paint); 72 canvas->drawPath(path, paint);
73 } 73 }
74 } 74 }
75 75
76 private: 76 private:
77 typedef SkBenchmark INHERITED; 77 typedef SkBenchmark INHERITED;
78 }; 78 };
79 79
80 class TrianglePathBench : public PathBench { 80 class TrianglePathBench : public PathBench {
81 public: 81 public:
82 TrianglePathBench(void* param, Flags flags) : INHERITED(param, flags) {} 82 TrianglePathBench(Flags flags) : INHERITED(flags) {}
83 83
84 virtual void appendName(SkString* name) SK_OVERRIDE { 84 virtual void appendName(SkString* name) SK_OVERRIDE {
85 name->append("triangle"); 85 name->append("triangle");
86 } 86 }
87 virtual void makePath(SkPath* path) SK_OVERRIDE { 87 virtual void makePath(SkPath* path) SK_OVERRIDE {
88 static const int gCoord[] = { 88 static const int gCoord[] = {
89 10, 10, 15, 5, 20, 20 89 10, 10, 15, 5, 20, 20
90 }; 90 };
91 path->moveTo(SkIntToScalar(gCoord[0]), SkIntToScalar(gCoord[1])); 91 path->moveTo(SkIntToScalar(gCoord[0]), SkIntToScalar(gCoord[1]));
92 path->lineTo(SkIntToScalar(gCoord[2]), SkIntToScalar(gCoord[3])); 92 path->lineTo(SkIntToScalar(gCoord[2]), SkIntToScalar(gCoord[3]));
93 path->lineTo(SkIntToScalar(gCoord[4]), SkIntToScalar(gCoord[5])); 93 path->lineTo(SkIntToScalar(gCoord[4]), SkIntToScalar(gCoord[5]));
94 path->close(); 94 path->close();
95 } 95 }
96 private: 96 private:
97 typedef PathBench INHERITED; 97 typedef PathBench INHERITED;
98 }; 98 };
99 99
100 class RectPathBench : public PathBench { 100 class RectPathBench : public PathBench {
101 public: 101 public:
102 RectPathBench(void* param, Flags flags) : INHERITED(param, flags) {} 102 RectPathBench(Flags flags) : INHERITED(flags) {}
103 103
104 virtual void appendName(SkString* name) SK_OVERRIDE { 104 virtual void appendName(SkString* name) SK_OVERRIDE {
105 name->append("rect"); 105 name->append("rect");
106 } 106 }
107 virtual void makePath(SkPath* path) SK_OVERRIDE { 107 virtual void makePath(SkPath* path) SK_OVERRIDE {
108 SkRect r = { 10, 10, 20, 20 }; 108 SkRect r = { 10, 10, 20, 20 };
109 path->addRect(r); 109 path->addRect(r);
110 } 110 }
111 private: 111 private:
112 typedef PathBench INHERITED; 112 typedef PathBench INHERITED;
113 }; 113 };
114 114
115 class OvalPathBench : public PathBench { 115 class OvalPathBench : public PathBench {
116 public: 116 public:
117 OvalPathBench(void* param, Flags flags) : INHERITED(param, flags) {} 117 OvalPathBench(Flags flags) : INHERITED(flags) {}
118 118
119 virtual void appendName(SkString* name) SK_OVERRIDE { 119 virtual void appendName(SkString* name) SK_OVERRIDE {
120 name->append("oval"); 120 name->append("oval");
121 } 121 }
122 virtual void makePath(SkPath* path) SK_OVERRIDE { 122 virtual void makePath(SkPath* path) SK_OVERRIDE {
123 SkRect r = { 10, 10, 23, 20 }; 123 SkRect r = { 10, 10, 23, 20 };
124 path->addOval(r); 124 path->addOval(r);
125 } 125 }
126 private: 126 private:
127 typedef PathBench INHERITED; 127 typedef PathBench INHERITED;
128 }; 128 };
129 129
130 class CirclePathBench: public PathBench { 130 class CirclePathBench: public PathBench {
131 public: 131 public:
132 CirclePathBench(void* param, Flags flags) : INHERITED(param, flags) {} 132 CirclePathBench(Flags flags) : INHERITED(flags) {}
133 133
134 virtual void appendName(SkString* name) SK_OVERRIDE { 134 virtual void appendName(SkString* name) SK_OVERRIDE {
135 name->append("circle"); 135 name->append("circle");
136 } 136 }
137 virtual void makePath(SkPath* path) SK_OVERRIDE { 137 virtual void makePath(SkPath* path) SK_OVERRIDE {
138 path->addCircle(SkIntToScalar(20), SkIntToScalar(20), 138 path->addCircle(SkIntToScalar(20), SkIntToScalar(20),
139 SkIntToScalar(10)); 139 SkIntToScalar(10));
140 } 140 }
141 private: 141 private:
142 typedef PathBench INHERITED; 142 typedef PathBench INHERITED;
143 }; 143 };
144 144
145 class SawToothPathBench : public PathBench { 145 class SawToothPathBench : public PathBench {
146 public: 146 public:
147 SawToothPathBench(void* param, Flags flags) : INHERITED(param, flags) {} 147 SawToothPathBench(Flags flags) : INHERITED(flags) {}
148 148
149 virtual void appendName(SkString* name) SK_OVERRIDE { 149 virtual void appendName(SkString* name) SK_OVERRIDE {
150 name->append("sawtooth"); 150 name->append("sawtooth");
151 } 151 }
152 virtual void makePath(SkPath* path) { 152 virtual void makePath(SkPath* path) {
153 SkScalar x = SkIntToScalar(20); 153 SkScalar x = SkIntToScalar(20);
154 SkScalar y = SkIntToScalar(20); 154 SkScalar y = SkIntToScalar(20);
155 const SkScalar x0 = x; 155 const SkScalar x0 = x;
156 const SkScalar dx = SK_Scalar1 * 5; 156 const SkScalar dx = SK_Scalar1 * 5;
157 const SkScalar dy = SK_Scalar1 * 10; 157 const SkScalar dy = SK_Scalar1 * 10;
158 158
159 path->moveTo(x, y); 159 path->moveTo(x, y);
160 for (int i = 0; i < 32; i++) { 160 for (int i = 0; i < 32; i++) {
161 x += dx; 161 x += dx;
162 path->lineTo(x, y - dy); 162 path->lineTo(x, y - dy);
163 x += dx; 163 x += dx;
164 path->lineTo(x, y + dy); 164 path->lineTo(x, y + dy);
165 } 165 }
166 path->lineTo(x, y + 2 * dy); 166 path->lineTo(x, y + 2 * dy);
167 path->lineTo(x0, y + 2 * dy); 167 path->lineTo(x0, y + 2 * dy);
168 path->close(); 168 path->close();
169 } 169 }
170 virtual int complexity() SK_OVERRIDE { return 1; } 170 virtual int complexity() SK_OVERRIDE { return 1; }
171 private: 171 private:
172 typedef PathBench INHERITED; 172 typedef PathBench INHERITED;
173 }; 173 };
174 174
175 class LongCurvedPathBench : public PathBench { 175 class LongCurvedPathBench : public PathBench {
176 public: 176 public:
177 LongCurvedPathBench(void * param, Flags flags) 177 LongCurvedPathBench(Flags flags) : INHERITED(flags) {}
178 : INHERITED(param, flags) {
179 }
180 178
181 virtual void appendName(SkString* name) SK_OVERRIDE { 179 virtual void appendName(SkString* name) SK_OVERRIDE {
182 name->append("long_curved"); 180 name->append("long_curved");
183 } 181 }
184 virtual void makePath(SkPath* path) SK_OVERRIDE { 182 virtual void makePath(SkPath* path) SK_OVERRIDE {
185 SkRandom rand (12); 183 SkRandom rand (12);
186 int i; 184 int i;
187 for (i = 0; i < 100; i++) { 185 for (i = 0; i < 100; i++) {
188 path->quadTo(SkScalarMul(rand.nextUScalar1(), SkIntToScalar(640)), 186 path->quadTo(SkScalarMul(rand.nextUScalar1(), SkIntToScalar(640)),
189 SkScalarMul(rand.nextUScalar1(), SkIntToScalar(480)), 187 SkScalarMul(rand.nextUScalar1(), SkIntToScalar(480)),
190 SkScalarMul(rand.nextUScalar1(), SkIntToScalar(640)), 188 SkScalarMul(rand.nextUScalar1(), SkIntToScalar(640)),
191 SkScalarMul(rand.nextUScalar1(), SkIntToScalar(480))); 189 SkScalarMul(rand.nextUScalar1(), SkIntToScalar(480)));
192 } 190 }
193 path->close(); 191 path->close();
194 } 192 }
195 virtual int complexity() SK_OVERRIDE { return 2; } 193 virtual int complexity() SK_OVERRIDE { return 2; }
196 private: 194 private:
197 typedef PathBench INHERITED; 195 typedef PathBench INHERITED;
198 }; 196 };
199 197
200 class LongLinePathBench : public PathBench { 198 class LongLinePathBench : public PathBench {
201 public: 199 public:
202 LongLinePathBench(void * param, Flags flags) 200 LongLinePathBench(Flags flags) : INHERITED(flags) {}
203 : INHERITED(param, flags) {
204 }
205 201
206 virtual void appendName(SkString* name) SK_OVERRIDE { 202 virtual void appendName(SkString* name) SK_OVERRIDE {
207 name->append("long_line"); 203 name->append("long_line");
208 } 204 }
209 virtual void makePath(SkPath* path) SK_OVERRIDE { 205 virtual void makePath(SkPath* path) SK_OVERRIDE {
210 SkRandom rand; 206 SkRandom rand;
211 path->moveTo(rand.nextUScalar1() * 640, rand.nextUScalar1() * 480); 207 path->moveTo(rand.nextUScalar1() * 640, rand.nextUScalar1() * 480);
212 for (size_t i = 1; i < 100; i++) { 208 for (size_t i = 1; i < 100; i++) {
213 path->lineTo(rand.nextUScalar1() * 640, rand.nextUScalar1() * 480); 209 path->lineTo(rand.nextUScalar1() * 640, rand.nextUScalar1() * 480);
214 } 210 }
215 } 211 }
216 virtual int complexity() SK_OVERRIDE { return 2; } 212 virtual int complexity() SK_OVERRIDE { return 2; }
217 private: 213 private:
218 typedef PathBench INHERITED; 214 typedef PathBench INHERITED;
219 }; 215 };
220 216
221 class RandomPathBench : public SkBenchmark { 217 class RandomPathBench : public SkBenchmark {
222 public: 218 public:
223 RandomPathBench(void* param) : INHERITED(param) { 219 RandomPathBench() {
224 fIsRendering = false; 220 fIsRendering = false;
225 } 221 }
226 222
227 protected: 223 protected:
228 void createData(int minVerbs, 224 void createData(int minVerbs,
229 int maxVerbs, 225 int maxVerbs,
230 bool allowMoves = true, 226 bool allowMoves = true,
231 SkRect* bounds = NULL) { 227 SkRect* bounds = NULL) {
232 SkRect tempBounds; 228 SkRect tempBounds;
233 if (NULL == bounds) { 229 if (NULL == bounds) {
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 SkAutoTArray<SkPoint> fPoints; 310 SkAutoTArray<SkPoint> fPoints;
315 int fCurrPath; 311 int fCurrPath;
316 int fCurrVerb; 312 int fCurrVerb;
317 int fCurrPoint; 313 int fCurrPoint;
318 SkRandom fRandom; 314 SkRandom fRandom;
319 typedef SkBenchmark INHERITED; 315 typedef SkBenchmark INHERITED;
320 }; 316 };
321 317
322 class PathCreateBench : public RandomPathBench { 318 class PathCreateBench : public RandomPathBench {
323 public: 319 public:
324 PathCreateBench(void* param) : INHERITED(param) { 320 PathCreateBench() {
325 } 321 }
326 322
327 protected: 323 protected:
328 virtual const char* onGetName() SK_OVERRIDE { 324 virtual const char* onGetName() SK_OVERRIDE {
329 return "path_create"; 325 return "path_create";
330 } 326 }
331 327
332 virtual void onPreDraw() SK_OVERRIDE { 328 virtual void onPreDraw() SK_OVERRIDE {
333 this->createData(10, 100); 329 this->createData(10, 100);
334 fPaths.reset(kPathCnt); 330 fPaths.reset(kPathCnt);
(...skipping 16 matching lines...) Expand all
351 // must be a pow 2 347 // must be a pow 2
352 kPathCnt = 1 << 5, 348 kPathCnt = 1 << 5,
353 }; 349 };
354 SkAutoTArray<SkPath> fPaths; 350 SkAutoTArray<SkPath> fPaths;
355 351
356 typedef RandomPathBench INHERITED; 352 typedef RandomPathBench INHERITED;
357 }; 353 };
358 354
359 class PathCopyBench : public RandomPathBench { 355 class PathCopyBench : public RandomPathBench {
360 public: 356 public:
361 PathCopyBench(void* param) : INHERITED(param) { 357 PathCopyBench() {
362 } 358 }
363 359
364 protected: 360 protected:
365 virtual const char* onGetName() SK_OVERRIDE { 361 virtual const char* onGetName() SK_OVERRIDE {
366 return "path_copy"; 362 return "path_copy";
367 } 363 }
368 virtual void onPreDraw() SK_OVERRIDE { 364 virtual void onPreDraw() SK_OVERRIDE {
369 this->createData(10, 100); 365 this->createData(10, 100);
370 fPaths.reset(kPathCnt); 366 fPaths.reset(kPathCnt);
371 fCopies.reset(kPathCnt); 367 fCopies.reset(kPathCnt);
(...skipping 19 matching lines...) Expand all
391 kPathCnt = 1 << 5, 387 kPathCnt = 1 << 5,
392 }; 388 };
393 SkAutoTArray<SkPath> fPaths; 389 SkAutoTArray<SkPath> fPaths;
394 SkAutoTArray<SkPath> fCopies; 390 SkAutoTArray<SkPath> fCopies;
395 391
396 typedef RandomPathBench INHERITED; 392 typedef RandomPathBench INHERITED;
397 }; 393 };
398 394
399 class PathTransformBench : public RandomPathBench { 395 class PathTransformBench : public RandomPathBench {
400 public: 396 public:
401 PathTransformBench(bool inPlace, void* param) 397 PathTransformBench(bool inPlace) : fInPlace(inPlace) {}
402 : INHERITED(param)
403 , fInPlace(inPlace) {
404 }
405 398
406 protected: 399 protected:
407 virtual const char* onGetName() SK_OVERRIDE { 400 virtual const char* onGetName() SK_OVERRIDE {
408 return fInPlace ? "path_transform_in_place" : "path_transform_copy"; 401 return fInPlace ? "path_transform_in_place" : "path_transform_copy";
409 } 402 }
410 403
411 virtual void onPreDraw() SK_OVERRIDE { 404 virtual void onPreDraw() SK_OVERRIDE {
412 fMatrix.setScale(5 * SK_Scalar1, 6 * SK_Scalar1); 405 fMatrix.setScale(5 * SK_Scalar1, 6 * SK_Scalar1);
413 this->createData(10, 100); 406 this->createData(10, 100);
414 fPaths.reset(kPathCnt); 407 fPaths.reset(kPathCnt);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 SkAutoTArray<SkPath> fPaths; 440 SkAutoTArray<SkPath> fPaths;
448 SkAutoTArray<SkPath> fTransformed; 441 SkAutoTArray<SkPath> fTransformed;
449 442
450 SkMatrix fMatrix; 443 SkMatrix fMatrix;
451 bool fInPlace; 444 bool fInPlace;
452 typedef RandomPathBench INHERITED; 445 typedef RandomPathBench INHERITED;
453 }; 446 };
454 447
455 class PathEqualityBench : public RandomPathBench { 448 class PathEqualityBench : public RandomPathBench {
456 public: 449 public:
457 PathEqualityBench(void* param) 450 PathEqualityBench() { }
458 : INHERITED(param) {
459 }
460 451
461 protected: 452 protected:
462 virtual const char* onGetName() SK_OVERRIDE { 453 virtual const char* onGetName() SK_OVERRIDE {
463 return "path_equality_50%"; 454 return "path_equality_50%";
464 } 455 }
465 456
466 virtual void onPreDraw() SK_OVERRIDE { 457 virtual void onPreDraw() SK_OVERRIDE {
467 fParity = 0; 458 fParity = 0;
468 this->createData(10, 100); 459 this->createData(10, 100);
469 fPaths.reset(kPathCnt); 460 fPaths.reset(kPathCnt);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 public: 493 public:
503 enum AddType { 494 enum AddType {
504 kAdd_AddType, 495 kAdd_AddType,
505 kAddTrans_AddType, 496 kAddTrans_AddType,
506 kAddMatrix_AddType, 497 kAddMatrix_AddType,
507 kPathTo_AddType, 498 kPathTo_AddType,
508 kReverseAdd_AddType, 499 kReverseAdd_AddType,
509 kReversePathTo_AddType, 500 kReversePathTo_AddType,
510 }; 501 };
511 502
512 SkBench_AddPathTest(AddType type, void* param) 503 SkBench_AddPathTest(AddType type) : fType(type) {
513 : INHERITED(param)
514 , fType(type) {
515 fMatrix.setRotate(60 * SK_Scalar1); 504 fMatrix.setRotate(60 * SK_Scalar1);
516 } 505 }
517 506
518 protected: 507 protected:
519 virtual const char* onGetName() SK_OVERRIDE { 508 virtual const char* onGetName() SK_OVERRIDE {
520 switch (fType) { 509 switch (fType) {
521 case kAdd_AddType: 510 case kAdd_AddType:
522 return "path_add_path"; 511 return "path_add_path";
523 case kAddTrans_AddType: 512 case kAddTrans_AddType:
524 return "path_add_path_trans"; 513 return "path_add_path_trans";
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 typedef RandomPathBench INHERITED; 603 typedef RandomPathBench INHERITED;
615 }; 604 };
616 605
617 606
618 class CirclesBench : public SkBenchmark { 607 class CirclesBench : public SkBenchmark {
619 protected: 608 protected:
620 SkString fName; 609 SkString fName;
621 Flags fFlags; 610 Flags fFlags;
622 611
623 public: 612 public:
624 CirclesBench(void* param, Flags flags) : INHERITED(param), fFlags(flags) { 613 CirclesBench(Flags flags) : fFlags(flags) {
625 fName.printf("circles_%s", fFlags & kStroke_Flag ? "stroke" : "fill"); 614 fName.printf("circles_%s", fFlags & kStroke_Flag ? "stroke" : "fill");
626 } 615 }
627 616
628 protected: 617 protected:
629 virtual const char* onGetName() SK_OVERRIDE { 618 virtual const char* onGetName() SK_OVERRIDE {
630 return fName.c_str(); 619 return fName.c_str();
631 } 620 }
632 621
633 virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { 622 virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
634 SkPaint paint; 623 SkPaint paint;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 // Chrome creates its own round rects with each corner possibly being different. 663 // Chrome creates its own round rects with each corner possibly being different.
675 // In its "zero radius" incarnation it creates degenerate round rects. 664 // In its "zero radius" incarnation it creates degenerate round rects.
676 // Note: PathTest::test_arb_round_rect_is_convex and 665 // Note: PathTest::test_arb_round_rect_is_convex and
677 // test_arb_zero_rad_round_rect_is_rect perform almost exactly 666 // test_arb_zero_rad_round_rect_is_rect perform almost exactly
678 // the same test (but with no drawing) 667 // the same test (but with no drawing)
679 class ArbRoundRectBench : public SkBenchmark { 668 class ArbRoundRectBench : public SkBenchmark {
680 protected: 669 protected:
681 SkString fName; 670 SkString fName;
682 671
683 public: 672 public:
684 ArbRoundRectBench(void* param, bool zeroRad) : INHERITED(param), fZeroRad(ze roRad) { 673 ArbRoundRectBench(bool zeroRad) : fZeroRad(zeroRad) {
685 if (zeroRad) { 674 if (zeroRad) {
686 fName.printf("zeroradroundrect"); 675 fName.printf("zeroradroundrect");
687 } else { 676 } else {
688 fName.printf("arbroundrect"); 677 fName.printf("arbroundrect");
689 } 678 }
690 } 679 }
691 680
692 protected: 681 protected:
693 virtual const char* onGetName() SK_OVERRIDE { 682 virtual const char* onGetName() SK_OVERRIDE {
694 return fName.c_str(); 683 return fName.c_str();
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
775 }; 764 };
776 765
777 class ConservativelyContainsBench : public SkBenchmark { 766 class ConservativelyContainsBench : public SkBenchmark {
778 public: 767 public:
779 enum Type { 768 enum Type {
780 kRect_Type, 769 kRect_Type,
781 kRoundRect_Type, 770 kRoundRect_Type,
782 kOval_Type, 771 kOval_Type,
783 }; 772 };
784 773
785 ConservativelyContainsBench(void* param, Type type) : INHERITED(param) { 774 ConservativelyContainsBench(Type type) {
786 fIsRendering = false; 775 fIsRendering = false;
787 fParity = false; 776 fParity = false;
788 fName = "conservatively_contains_"; 777 fName = "conservatively_contains_";
789 switch (type) { 778 switch (type) {
790 case kRect_Type: 779 case kRect_Type:
791 fName.append("rect"); 780 fName.append("rect");
792 fPath.addRect(kBaseRect); 781 fPath.addRect(kBaseRect);
793 break; 782 break;
794 case kRoundRect_Type: 783 case kRoundRect_Type:
795 fName.append("round_rect"); 784 fName.append("round_rect");
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
851 typedef SkBenchmark INHERITED; 840 typedef SkBenchmark INHERITED;
852 }; 841 };
853 842
854 /////////////////////////////////////////////////////////////////////////////// 843 ///////////////////////////////////////////////////////////////////////////////
855 844
856 #include "SkGeometry.h" 845 #include "SkGeometry.h"
857 846
858 class ConicBench_Chop5 : public SkBenchmark { 847 class ConicBench_Chop5 : public SkBenchmark {
859 SkConic fRQ; 848 SkConic fRQ;
860 public: 849 public:
861 ConicBench_Chop5(void* param) : INHERITED(param) { 850 ConicBench_Chop5() {
862 fRQ.fPts[0].set(0, 0); 851 fRQ.fPts[0].set(0, 0);
863 fRQ.fPts[1].set(100, 0); 852 fRQ.fPts[1].set(100, 0);
864 fRQ.fPts[2].set(100, 100); 853 fRQ.fPts[2].set(100, 100);
865 fRQ.fW = SkScalarCos(SK_ScalarPI/4); 854 fRQ.fW = SkScalarCos(SK_ScalarPI/4);
866 } 855 }
867 856
868 private: 857 private:
869 virtual const char* onGetName() SK_OVERRIDE { 858 virtual const char* onGetName() SK_OVERRIDE {
870 return "ratquad-chop-0.5"; 859 return "ratquad-chop-0.5";
871 } 860 }
872 861
873 virtual void onDraw(SkCanvas*) SK_OVERRIDE { 862 virtual void onDraw(SkCanvas*) SK_OVERRIDE {
874 SkConic dst[2]; 863 SkConic dst[2];
875 for (int i = 0; i < this->getLoops(); ++i) { 864 for (int i = 0; i < this->getLoops(); ++i) {
876 fRQ.chopAt(0.5f, dst); 865 fRQ.chopAt(0.5f, dst);
877 } 866 }
878 } 867 }
879 868
880 typedef SkBenchmark INHERITED; 869 typedef SkBenchmark INHERITED;
881 }; 870 };
882 871
883 class ConicBench_ChopHalf : public SkBenchmark { 872 class ConicBench_ChopHalf : public SkBenchmark {
884 SkConic fRQ; 873 SkConic fRQ;
885 public: 874 public:
886 ConicBench_ChopHalf(void* param) : INHERITED(param) { 875 ConicBench_ChopHalf() {
887 fRQ.fPts[0].set(0, 0); 876 fRQ.fPts[0].set(0, 0);
888 fRQ.fPts[1].set(100, 0); 877 fRQ.fPts[1].set(100, 0);
889 fRQ.fPts[2].set(100, 100); 878 fRQ.fPts[2].set(100, 100);
890 fRQ.fW = SkScalarCos(SK_ScalarPI/4); 879 fRQ.fW = SkScalarCos(SK_ScalarPI/4);
891 } 880 }
892 881
893 private: 882 private:
894 virtual const char* onGetName() SK_OVERRIDE { 883 virtual const char* onGetName() SK_OVERRIDE {
895 return "ratquad-chop-half"; 884 return "ratquad-chop-half";
896 } 885 }
(...skipping 16 matching lines...) Expand all
913 } 902 }
914 if (rand.nextUScalar1() > 0.5f) { 903 if (rand.nextUScalar1() > 0.5f) {
915 conic->fW = rand.nextUScalar1(); 904 conic->fW = rand.nextUScalar1();
916 } else { 905 } else {
917 conic->fW = 1 + rand.nextUScalar1() * 4; 906 conic->fW = 1 + rand.nextUScalar1() * 4;
918 } 907 }
919 } 908 }
920 909
921 class ConicBench : public SkBenchmark { 910 class ConicBench : public SkBenchmark {
922 public: 911 public:
923 ConicBench(void* param) : INHERITED(param) { 912 ConicBench() {
924 SkRandom rand; 913 SkRandom rand;
925 for (int i = 0; i < CONICS; ++i) { 914 for (int i = 0; i < CONICS; ++i) {
926 rand_conic(&fConics[i], rand); 915 rand_conic(&fConics[i], rand);
927 } 916 }
928 fIsRendering = false; 917 fIsRendering = false;
929 } 918 }
930 919
931 protected: 920 protected:
932 enum { 921 enum {
933 CONICS = 100 922 CONICS = 100
934 }; 923 };
935 SkConic fConics[CONICS]; 924 SkConic fConics[CONICS];
936 925
937 private: 926 private:
938 typedef SkBenchmark INHERITED; 927 typedef SkBenchmark INHERITED;
939 }; 928 };
940 929
941 class ConicBench_ComputeError : public ConicBench { 930 class ConicBench_ComputeError : public ConicBench {
942 public: 931 public:
943 ConicBench_ComputeError(void* param) : INHERITED(param) {} 932 ConicBench_ComputeError() {}
944 933
945 protected: 934 protected:
946 virtual const char* onGetName() SK_OVERRIDE { 935 virtual const char* onGetName() SK_OVERRIDE {
947 return "conic-compute-error"; 936 return "conic-compute-error";
948 } 937 }
949 938
950 virtual void onDraw(SkCanvas*) SK_OVERRIDE { 939 virtual void onDraw(SkCanvas*) SK_OVERRIDE {
951 SkVector err; 940 SkVector err;
952 for (int i = 0; i < this->getLoops(); ++i) { 941 for (int i = 0; i < this->getLoops(); ++i) {
953 for (int j = 0; j < CONICS; ++j) { 942 for (int j = 0; j < CONICS; ++j) {
954 fConics[j].computeAsQuadError(&err); 943 fConics[j].computeAsQuadError(&err);
955 } 944 }
956 } 945 }
957 } 946 }
958 947
959 private: 948 private:
960 typedef ConicBench INHERITED; 949 typedef ConicBench INHERITED;
961 }; 950 };
962 951
963 class ConicBench_asQuadTol : public ConicBench { 952 class ConicBench_asQuadTol : public ConicBench {
964 public: 953 public:
965 ConicBench_asQuadTol(void* param) : INHERITED(param) {} 954 ConicBench_asQuadTol() {}
966 955
967 protected: 956 protected:
968 virtual const char* onGetName() SK_OVERRIDE { 957 virtual const char* onGetName() SK_OVERRIDE {
969 return "conic-asQuadTol"; 958 return "conic-asQuadTol";
970 } 959 }
971 960
972 virtual void onDraw(SkCanvas*) SK_OVERRIDE { 961 virtual void onDraw(SkCanvas*) SK_OVERRIDE {
973 for (int i = 0; i < this->getLoops(); ++i) { 962 for (int i = 0; i < this->getLoops(); ++i) {
974 for (int j = 0; j < CONICS; ++j) { 963 for (int j = 0; j < CONICS; ++j) {
975 fConics[j].asQuadTol(SK_ScalarHalf); 964 fConics[j].asQuadTol(SK_ScalarHalf);
976 } 965 }
977 } 966 }
978 } 967 }
979 968
980 private: 969 private:
981 typedef ConicBench INHERITED; 970 typedef ConicBench INHERITED;
982 }; 971 };
983 972
984 class ConicBench_quadPow2 : public ConicBench { 973 class ConicBench_quadPow2 : public ConicBench {
985 public: 974 public:
986 ConicBench_quadPow2(void* param) : INHERITED(param) {} 975 ConicBench_quadPow2() {}
987 976
988 protected: 977 protected:
989 virtual const char* onGetName() SK_OVERRIDE { 978 virtual const char* onGetName() SK_OVERRIDE {
990 return "conic-quadPow2"; 979 return "conic-quadPow2";
991 } 980 }
992 981
993 virtual void onDraw(SkCanvas*) SK_OVERRIDE { 982 virtual void onDraw(SkCanvas*) SK_OVERRIDE {
994 for (int i = 0; i < this->getLoops(); ++i) { 983 for (int i = 0; i < this->getLoops(); ++i) {
995 for (int j = 0; j < CONICS; ++j) { 984 for (int j = 0; j < CONICS; ++j) {
996 fConics[j].computeQuadPOW2(SK_ScalarHalf); 985 fConics[j].computeQuadPOW2(SK_ScalarHalf);
997 } 986 }
998 } 987 }
999 } 988 }
1000 989
1001 private: 990 private:
1002 typedef ConicBench INHERITED; 991 typedef ConicBench INHERITED;
1003 }; 992 };
1004 993
1005 /////////////////////////////////////////////////////////////////////////////// 994 ///////////////////////////////////////////////////////////////////////////////
1006 995
1007 const SkRect ConservativelyContainsBench::kBounds = SkRect::MakeWH(SkIntToScalar (100), SkIntToScalar(100)); 996 const SkRect ConservativelyContainsBench::kBounds = SkRect::MakeWH(SkIntToScalar (100), SkIntToScalar(100));
1008 const SkSize ConservativelyContainsBench::kQueryMin = SkSize::Make(SkIntToScalar (1), SkIntToScalar(1)); 997 const SkSize ConservativelyContainsBench::kQueryMin = SkSize::Make(SkIntToScalar (1), SkIntToScalar(1));
1009 const SkSize ConservativelyContainsBench::kQueryMax = SkSize::Make(SkIntToScalar (40), SkIntToScalar(40)); 998 const SkSize ConservativelyContainsBench::kQueryMax = SkSize::Make(SkIntToScalar (40), SkIntToScalar(40));
1010 const SkRect ConservativelyContainsBench::kBaseRect = SkRect::MakeXYWH(SkIntToSc alar(25), SkIntToScalar(25), SkIntToScalar(50), SkIntToScalar(50)); 999 const SkRect ConservativelyContainsBench::kBaseRect = SkRect::MakeXYWH(SkIntToSc alar(25), SkIntToScalar(25), SkIntToScalar(50), SkIntToScalar(50));
1011 const SkScalar ConservativelyContainsBench::kRRRadii[2] = {SkIntToScalar(5), SkI ntToScalar(10)}; 1000 const SkScalar ConservativelyContainsBench::kRRRadii[2] = {SkIntToScalar(5), SkI ntToScalar(10)};
1012 1001
1013 DEF_BENCH( return new TrianglePathBench(p, FLAGS00); ) 1002 DEF_BENCH( return new TrianglePathBench(FLAGS00); )
1014 DEF_BENCH( return new TrianglePathBench(p, FLAGS01); ) 1003 DEF_BENCH( return new TrianglePathBench(FLAGS01); )
1015 DEF_BENCH( return new TrianglePathBench(p, FLAGS10); ) 1004 DEF_BENCH( return new TrianglePathBench(FLAGS10); )
1016 DEF_BENCH( return new TrianglePathBench(p, FLAGS11); ) 1005 DEF_BENCH( return new TrianglePathBench(FLAGS11); )
1017 1006
1018 DEF_BENCH( return new RectPathBench(p, FLAGS00); ) 1007 DEF_BENCH( return new RectPathBench(FLAGS00); )
1019 DEF_BENCH( return new RectPathBench(p, FLAGS01); ) 1008 DEF_BENCH( return new RectPathBench(FLAGS01); )
1020 DEF_BENCH( return new RectPathBench(p, FLAGS10); ) 1009 DEF_BENCH( return new RectPathBench(FLAGS10); )
1021 DEF_BENCH( return new RectPathBench(p, FLAGS11); ) 1010 DEF_BENCH( return new RectPathBench(FLAGS11); )
1022 1011
1023 DEF_BENCH( return new OvalPathBench(p, FLAGS00); ) 1012 DEF_BENCH( return new OvalPathBench(FLAGS00); )
1024 DEF_BENCH( return new OvalPathBench(p, FLAGS01); ) 1013 DEF_BENCH( return new OvalPathBench(FLAGS01); )
1025 DEF_BENCH( return new OvalPathBench(p, FLAGS10); ) 1014 DEF_BENCH( return new OvalPathBench(FLAGS10); )
1026 DEF_BENCH( return new OvalPathBench(p, FLAGS11); ) 1015 DEF_BENCH( return new OvalPathBench(FLAGS11); )
1027 1016
1028 DEF_BENCH( return new CirclePathBench(p, FLAGS00); ) 1017 DEF_BENCH( return new CirclePathBench(FLAGS00); )
1029 DEF_BENCH( return new CirclePathBench(p, FLAGS01); ) 1018 DEF_BENCH( return new CirclePathBench(FLAGS01); )
1030 DEF_BENCH( return new CirclePathBench(p, FLAGS10); ) 1019 DEF_BENCH( return new CirclePathBench(FLAGS10); )
1031 DEF_BENCH( return new CirclePathBench(p, FLAGS11); ) 1020 DEF_BENCH( return new CirclePathBench(FLAGS11); )
1032 1021
1033 DEF_BENCH( return new SawToothPathBench(p, FLAGS00); ) 1022 DEF_BENCH( return new SawToothPathBench(FLAGS00); )
1034 DEF_BENCH( return new SawToothPathBench(p, FLAGS01); ) 1023 DEF_BENCH( return new SawToothPathBench(FLAGS01); )
1035 1024
1036 DEF_BENCH( return new LongCurvedPathBench(p, FLAGS00); ) 1025 DEF_BENCH( return new LongCurvedPathBench(FLAGS00); )
1037 DEF_BENCH( return new LongCurvedPathBench(p, FLAGS01); ) 1026 DEF_BENCH( return new LongCurvedPathBench(FLAGS01); )
1038 DEF_BENCH( return new LongLinePathBench(p, FLAGS00); ) 1027 DEF_BENCH( return new LongLinePathBench(FLAGS00); )
1039 DEF_BENCH( return new LongLinePathBench(p, FLAGS01); ) 1028 DEF_BENCH( return new LongLinePathBench(FLAGS01); )
1040 1029
1041 DEF_BENCH( return new PathCreateBench(p); ) 1030 DEF_BENCH( return new PathCreateBench(); )
1042 DEF_BENCH( return new PathCopyBench(p); ) 1031 DEF_BENCH( return new PathCopyBench(); )
1043 DEF_BENCH( return new PathTransformBench(true, p); ) 1032 DEF_BENCH( return new PathTransformBench(true); )
1044 DEF_BENCH( return new PathTransformBench(false, p); ) 1033 DEF_BENCH( return new PathTransformBench(false); )
1045 DEF_BENCH( return new PathEqualityBench(p); ) 1034 DEF_BENCH( return new PathEqualityBench(); )
1046 1035
1047 DEF_BENCH( return new SkBench_AddPathTest(SkBench_AddPathTest::kAdd_AddType, p); ) 1036 DEF_BENCH( return new SkBench_AddPathTest(SkBench_AddPathTest::kAdd_AddType); )
1048 DEF_BENCH( return new SkBench_AddPathTest(SkBench_AddPathTest::kAddTrans_AddType , p); ) 1037 DEF_BENCH( return new SkBench_AddPathTest(SkBench_AddPathTest::kAddTrans_AddType ); )
1049 DEF_BENCH( return new SkBench_AddPathTest(SkBench_AddPathTest::kAddMatrix_AddTyp e, p); ) 1038 DEF_BENCH( return new SkBench_AddPathTest(SkBench_AddPathTest::kAddMatrix_AddTyp e); )
1050 DEF_BENCH( return new SkBench_AddPathTest(SkBench_AddPathTest::kPathTo_AddType, p); ) 1039 DEF_BENCH( return new SkBench_AddPathTest(SkBench_AddPathTest::kPathTo_AddType); )
1051 DEF_BENCH( return new SkBench_AddPathTest(SkBench_AddPathTest::kReverseAdd_AddTy pe, p); ) 1040 DEF_BENCH( return new SkBench_AddPathTest(SkBench_AddPathTest::kReverseAdd_AddTy pe); )
1052 DEF_BENCH( return new SkBench_AddPathTest(SkBench_AddPathTest::kReversePathTo_Ad dType, p); ) 1041 DEF_BENCH( return new SkBench_AddPathTest(SkBench_AddPathTest::kReversePathTo_Ad dType); )
1053 1042
1054 DEF_BENCH( return new CirclesBench(p, FLAGS00); ) 1043 DEF_BENCH( return new CirclesBench(FLAGS00); )
1055 DEF_BENCH( return new CirclesBench(p, FLAGS01); ) 1044 DEF_BENCH( return new CirclesBench(FLAGS01); )
1056 DEF_BENCH( return new ArbRoundRectBench(p, false); ) 1045 DEF_BENCH( return new ArbRoundRectBench(false); )
1057 DEF_BENCH( return new ArbRoundRectBench(p, true); ) 1046 DEF_BENCH( return new ArbRoundRectBench(true); )
1058 DEF_BENCH( return new ConservativelyContainsBench(p, ConservativelyContainsBench ::kRect_Type); ) 1047 DEF_BENCH( return new ConservativelyContainsBench(ConservativelyContainsBench::k Rect_Type); )
1059 DEF_BENCH( return new ConservativelyContainsBench(p, ConservativelyContainsBench ::kRoundRect_Type); ) 1048 DEF_BENCH( return new ConservativelyContainsBench(ConservativelyContainsBench::k RoundRect_Type); )
1060 DEF_BENCH( return new ConservativelyContainsBench(p, ConservativelyContainsBench ::kOval_Type); ) 1049 DEF_BENCH( return new ConservativelyContainsBench(ConservativelyContainsBench::k Oval_Type); )
1061 1050
1062 DEF_BENCH( return new ConicBench_Chop5(p) ) 1051 DEF_BENCH( return new ConicBench_Chop5() )
1063 DEF_BENCH( return new ConicBench_ChopHalf(p) ) 1052 DEF_BENCH( return new ConicBench_ChopHalf() )
1064 DEF_BENCH( return new ConicBench_ComputeError(p) ) 1053 DEF_BENCH( return new ConicBench_ComputeError() )
1065 DEF_BENCH( return new ConicBench_asQuadTol(p) ) 1054 DEF_BENCH( return new ConicBench_asQuadTol() )
1066 DEF_BENCH( return new ConicBench_quadPow2(p) ) 1055 DEF_BENCH( return new ConicBench_quadPow2() )
OLDNEW
« no previous file with comments | « bench/MutexBench.cpp ('k') | bench/PathIterBench.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698