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 "SkPaint.h" | 10 #include "SkPaint.h" |
11 #include "SkRandom.h" | 11 #include "SkRandom.h" |
12 #include "SkShader.h" | 12 #include "SkShader.h" |
13 #include "SkString.h" | 13 #include "SkString.h" |
14 #include "SkBlurMaskFilter.h" | 14 #include "SkBlurMaskFilter.h" |
15 | 15 |
16 #define SMALL SkIntToScalar(2) | 16 #define SMALL SkFloatToScalar(1.6547f) |
bsalomon
2013/09/05 13:09:10
This looks really weird, as though someone chose t
robertphillips
2013/09/05 14:00:14
I considered doing that (using a conversion method
bsalomon
2013/09/05 14:10:55
It just seems like a future editor of this file (a
| |
17 #define REAL SkFloatToScalar(1.5f) | 17 #define REAL SkFloatToScalar(1.366025f) |
18 #define BIG SkIntToScalar(10) | 18 #define BIG SkFloatToScalar(6.2735f) |
19 #define REALBIG SkFloatToScalar(100.5f) | 19 #define REALBIG SkFloatToScalar(58.523675f) |
20 | 20 |
21 static const char* gStyleName[] = { | 21 static const char* gStyleName[] = { |
22 "normal", | 22 "normal", |
23 "solid", | 23 "solid", |
24 "outer", | 24 "outer", |
25 "inner" | 25 "inner" |
26 }; | 26 }; |
27 | 27 |
28 class BlurBench : public SkBenchmark { | 28 class BlurBench : public SkBenchmark { |
29 SkScalar fRadius; | 29 SkScalar fSigma; |
30 SkScalar fOffset; | |
30 SkBlurMaskFilter::BlurStyle fStyle; | 31 SkBlurMaskFilter::BlurStyle fStyle; |
31 uint32_t fFlags; | 32 uint32_t fFlags; |
32 SkString fName; | 33 SkString fName; |
33 | 34 |
34 public: | 35 public: |
35 BlurBench(void* param, SkScalar rad, SkBlurMaskFilter::BlurStyle bs, uint32_ t flags = 0) : INHERITED(param) { | 36 BlurBench(void* param, SkScalar sigma, SkScalar offset, SkBlurMaskFilter::Bl urStyle bs, |
36 fRadius = rad; | 37 const char* size, uint32_t flags = 0) : INHERITED(param) { |
38 fSigma = sigma; | |
39 fOffset = offset; | |
37 fStyle = bs; | 40 fStyle = bs; |
38 fFlags = flags; | 41 fFlags = flags; |
39 const char* name = rad > 0 ? gStyleName[bs] : "none"; | 42 const char* name = fSigma > 0 ? gStyleName[bs] : "none"; |
40 const char* quality = flags & SkBlurMaskFilter::kHighQuality_BlurFlag ? "high_quality" : "low_quality"; | 43 const char* quality = flags & SkBlurMaskFilter::kHighQuality_BlurFlag ? "high_quality" |
41 if (SkScalarFraction(rad) != 0) { | 44 : "low_quality"; |
42 fName.printf("blur_%.2f_%s_%s", SkScalarToFloat(rad), name, quality) ; | 45 fName.printf("blur_%s_%s_%s", size, name, quality); |
43 } else { | |
44 fName.printf("blur_%d_%s_%s", SkScalarRound(rad), name, quality); | |
45 } | |
46 } | 46 } |
47 | 47 |
48 protected: | 48 protected: |
49 virtual const char* onGetName() { | 49 virtual const char* onGetName() { |
50 return fName.c_str(); | 50 return fName.c_str(); |
51 } | 51 } |
52 | 52 |
53 virtual void onDraw(SkCanvas* canvas) { | 53 virtual void onDraw(SkCanvas* canvas) { |
54 SkPaint paint; | 54 SkPaint paint; |
55 this->setupPaint(&paint); | 55 this->setupPaint(&paint); |
56 | 56 |
57 paint.setAntiAlias(true); | 57 paint.setAntiAlias(true); |
58 | 58 |
59 SkRandom rand; | 59 SkRandom rand; |
60 for (int i = 0; i < SkBENCHLOOP(10); i++) { | 60 for (int i = 0; i < SkBENCHLOOP(10); i++) { |
61 SkRect r = SkRect::MakeWH(rand.nextUScalar1() * 400, | 61 SkRect r = SkRect::MakeWH(rand.nextUScalar1() * 400, |
62 rand.nextUScalar1() * 400); | 62 rand.nextUScalar1() * 400); |
63 r.offset(fRadius, fRadius); | 63 r.offset(fOffset, fOffset); |
64 | 64 |
65 if (fRadius > 0) { | 65 if (fSigma > 0) { |
66 SkMaskFilter* mf = SkBlurMaskFilter::Create(fRadius, fStyle, fFl ags); | 66 SkMaskFilter* mf = SkBlurMaskFilter::Create(fStyle, fSigma, fFla gs); |
67 paint.setMaskFilter(mf)->unref(); | 67 paint.setMaskFilter(mf)->unref(); |
68 } | 68 } |
69 canvas->drawOval(r, paint); | 69 canvas->drawOval(r, paint); |
70 } | 70 } |
71 } | 71 } |
72 | 72 |
73 private: | 73 private: |
74 typedef SkBenchmark INHERITED; | 74 typedef SkBenchmark INHERITED; |
75 }; | 75 }; |
76 | 76 |
77 DEF_BENCH(return new BlurBench(p, SMALL, SkBlurMaskFilter::kNormal_BlurStyle);) | 77 DEF_BENCH(return new BlurBench(p, SMALL, 2, SkBlurMaskFilter::kNormal_BlurStyle, "2");) |
78 DEF_BENCH(return new BlurBench(p, SMALL, SkBlurMaskFilter::kSolid_BlurStyle);) | 78 DEF_BENCH(return new BlurBench(p, SMALL, 2, SkBlurMaskFilter::kSolid_BlurStyle, "2");) |
79 DEF_BENCH(return new BlurBench(p, SMALL, SkBlurMaskFilter::kOuter_BlurStyle);) | 79 DEF_BENCH(return new BlurBench(p, SMALL, 2, SkBlurMaskFilter::kOuter_BlurStyle, "2");) |
80 DEF_BENCH(return new BlurBench(p, SMALL, SkBlurMaskFilter::kInner_BlurStyle);) | 80 DEF_BENCH(return new BlurBench(p, SMALL, 2, SkBlurMaskFilter::kInner_BlurStyle, "2");) |
81 | 81 |
82 DEF_BENCH(return new BlurBench(p, BIG, SkBlurMaskFilter::kNormal_BlurStyle);) | 82 DEF_BENCH(return new BlurBench(p, BIG, 10, SkBlurMaskFilter::kNormal_BlurStyle, "10");) |
83 DEF_BENCH(return new BlurBench(p, BIG, SkBlurMaskFilter::kSolid_BlurStyle);) | 83 DEF_BENCH(return new BlurBench(p, BIG, 10, SkBlurMaskFilter::kSolid_BlurStyle, " 10");) |
84 DEF_BENCH(return new BlurBench(p, BIG, SkBlurMaskFilter::kOuter_BlurStyle);) | 84 DEF_BENCH(return new BlurBench(p, BIG, 10, SkBlurMaskFilter::kOuter_BlurStyle, " 10");) |
85 DEF_BENCH(return new BlurBench(p, BIG, SkBlurMaskFilter::kInner_BlurStyle);) | 85 DEF_BENCH(return new BlurBench(p, BIG, 10, SkBlurMaskFilter::kInner_BlurStyle, " 10");) |
86 | 86 |
87 DEF_BENCH(return new BlurBench(p, REALBIG, SkBlurMaskFilter::kNormal_BlurStyle); ) | 87 DEF_BENCH(return new BlurBench(p, REALBIG, 100.5f, SkBlurMaskFilter::kNormal_Blu rStyle, "100.50");) |
88 DEF_BENCH(return new BlurBench(p, REALBIG, SkBlurMaskFilter::kSolid_BlurStyle);) | 88 DEF_BENCH(return new BlurBench(p, REALBIG, 100.5f, SkBlurMaskFilter::kSolid_Blur Style, "100.50");) |
89 DEF_BENCH(return new BlurBench(p, REALBIG, SkBlurMaskFilter::kOuter_BlurStyle);) | 89 DEF_BENCH(return new BlurBench(p, REALBIG, 100.5f, SkBlurMaskFilter::kOuter_Blur Style, "100.50");) |
90 DEF_BENCH(return new BlurBench(p, REALBIG, SkBlurMaskFilter::kInner_BlurStyle);) | 90 DEF_BENCH(return new BlurBench(p, REALBIG, 100.5f, SkBlurMaskFilter::kInner_Blur Style, "100.50");) |
91 | 91 |
92 DEF_BENCH(return new BlurBench(p, REAL, SkBlurMaskFilter::kNormal_BlurStyle);) | 92 DEF_BENCH(return new BlurBench(p, REAL, 1.5f, SkBlurMaskFilter::kNormal_BlurStyl e, "1.50");) |
93 DEF_BENCH(return new BlurBench(p, REAL, SkBlurMaskFilter::kSolid_BlurStyle);) | 93 DEF_BENCH(return new BlurBench(p, REAL, 1.5f, SkBlurMaskFilter::kSolid_BlurStyle , "1.50");) |
94 DEF_BENCH(return new BlurBench(p, REAL, SkBlurMaskFilter::kOuter_BlurStyle);) | 94 DEF_BENCH(return new BlurBench(p, REAL, 1.5f, SkBlurMaskFilter::kOuter_BlurStyle , "1.50");) |
95 DEF_BENCH(return new BlurBench(p, REAL, SkBlurMaskFilter::kInner_BlurStyle);) | 95 DEF_BENCH(return new BlurBench(p, REAL, 1.5f, SkBlurMaskFilter::kInner_BlurStyle , "1.50");) |
96 | 96 |
97 DEF_BENCH(return new BlurBench(p, SMALL, SkBlurMaskFilter::kNormal_BlurStyle, Sk BlurMaskFilter::kHighQuality_BlurFlag);) | 97 DEF_BENCH(return new BlurBench(p, SMALL, 2, SkBlurMaskFilter::kNormal_BlurStyle, "2", SkBlurMaskFilter::kHighQuality_BlurFlag);) |
98 | 98 |
99 DEF_BENCH(return new BlurBench(p, BIG, SkBlurMaskFilter::kNormal_BlurStyle, SkBl urMaskFilter::kHighQuality_BlurFlag);) | 99 DEF_BENCH(return new BlurBench(p, BIG, 10, SkBlurMaskFilter::kNormal_BlurStyle, "10", SkBlurMaskFilter::kHighQuality_BlurFlag);) |
100 | 100 |
101 DEF_BENCH(return new BlurBench(p, REALBIG, SkBlurMaskFilter::kNormal_BlurStyle, SkBlurMaskFilter::kHighQuality_BlurFlag);) | 101 DEF_BENCH(return new BlurBench(p, REALBIG, 100.5f, SkBlurMaskFilter::kNormal_Blu rStyle, "100.50", SkBlurMaskFilter::kHighQuality_BlurFlag);) |
102 | 102 |
103 DEF_BENCH(return new BlurBench(p, REAL, SkBlurMaskFilter::kNormal_BlurStyle, SkB lurMaskFilter::kHighQuality_BlurFlag);) | 103 DEF_BENCH(return new BlurBench(p, REAL, 1.5f, SkBlurMaskFilter::kNormal_BlurStyl e, "1.50", SkBlurMaskFilter::kHighQuality_BlurFlag);) |
104 | 104 |
105 DEF_BENCH(return new BlurBench(p, 0, SkBlurMaskFilter::kNormal_BlurStyle);) | 105 DEF_BENCH(return new BlurBench(p, 0, 0, SkBlurMaskFilter::kNormal_BlurStyle, "0" );) |
OLD | NEW |