Chromium Code Reviews| 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 |