diff options
author | robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-09-06 14:16:12 +0000 |
---|---|---|
committer | robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-09-06 14:16:12 +0000 |
commit | b7061176c7f414616fe2e79e832b3e0abe326af6 (patch) | |
tree | 05269431ac1dfa9b62d5fa34a0351e2f21af712e /bench/BlurRectBench.cpp | |
parent | b27eba7c28c7a52e6af91743ab51c266ed96dccd (diff) |
Push sigma-based blur interface into our GMs/benches/tests/samplecode
https://codereview.chromium.org/23701006/
git-svn-id: http://skia.googlecode.com/svn/trunk@11129 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'bench/BlurRectBench.cpp')
-rw-r--r-- | bench/BlurRectBench.cpp | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/bench/BlurRectBench.cpp b/bench/BlurRectBench.cpp index 1f40780fc2..5c93cd5d1a 100644 --- a/bench/BlurRectBench.cpp +++ b/bench/BlurRectBench.cpp @@ -15,7 +15,9 @@ #define SMALL SkIntToScalar(2) #define REAL SkFloatToScalar(1.5f) +static const SkScalar kMedium = SkIntToScalar(5); #define BIG SkIntToScalar(10) +static const SkScalar kMedBig = SkIntToScalar(20); #define REALBIG SkFloatToScalar(30.5f) class BlurRectBench: public SkBenchmark { @@ -83,12 +85,13 @@ class BlurRectDirectBench: public BlurRectBench { name.printf("blurrect_direct_%d", SkScalarRoundToInt(rad)); } - setName(name); + this->setName(name); } protected: virtual void makeBlurryRect(const SkRect& r) SK_OVERRIDE { SkMask mask; - SkBlurMask::BlurRect(&mask, r, this->radius(), SkBlurMask::kNormal_Style); + SkBlurMask::BlurRect(SkBlurMask::ConvertRadiusToSigma(this->radius()), + &mask, r, SkBlurMask::kNormal_Style); SkMask::FreeImage(mask.fImage); } private: @@ -127,12 +130,14 @@ class BlurRectBoxFilterBench: public BlurRectSeparableBench { public: BlurRectBoxFilterBench(void *param, SkScalar rad) : INHERITED(param, rad) { SkString name; + if (SkScalarFraction(rad) != 0) { name.printf("blurrect_boxfilter_%.2f", SkScalarToFloat(rad)); } else { name.printf("blurrect_boxfilter_%d", SkScalarRoundToInt(rad)); } - setName(name); + + this->setName(name); } protected: @@ -140,9 +145,9 @@ protected: virtual void makeBlurryRect(const SkRect&) SK_OVERRIDE { SkMask mask; mask.fImage = NULL; - SkBlurMask::Blur(&mask, fSrcMask, this->radius(), - SkBlurMask::kNormal_Style, - SkBlurMask::kHigh_Quality); + SkBlurMask::BoxBlur(&mask, fSrcMask, SkBlurMask::ConvertRadiusToSigma(this->radius()), + SkBlurMask::kNormal_Style, + SkBlurMask::kHigh_Quality); SkMask::FreeImage(mask.fImage); } private: @@ -153,12 +158,14 @@ class BlurRectGaussianBench: public BlurRectSeparableBench { public: BlurRectGaussianBench(void *param, SkScalar rad) : INHERITED(param, rad) { SkString name; + if (SkScalarFraction(rad) != 0) { name.printf("blurrect_gaussian_%.2f", SkScalarToFloat(rad)); } else { name.printf("blurrect_gaussian_%d", SkScalarRoundToInt(rad)); } - setName(name); + + this->setName(name); } protected: @@ -166,8 +173,8 @@ protected: virtual void makeBlurryRect(const SkRect&) SK_OVERRIDE { SkMask mask; mask.fImage = NULL; - SkBlurMask::BlurGroundTruth(&mask, fSrcMask, this->radius(), - SkBlurMask::kNormal_Style); + SkBlurMask::BlurGroundTruth(SkBlurMask::ConvertRadiusToSigma(this->radius()), + &mask, fSrcMask, SkBlurMask::kNormal_Style); SkMask::FreeImage(mask.fImage); } private: @@ -187,11 +194,11 @@ DEF_BENCH(return new BlurRectDirectBench(p, BIG);) DEF_BENCH(return new BlurRectDirectBench(p, REALBIG);) DEF_BENCH(return new BlurRectDirectBench(p, REAL);) -DEF_BENCH(return new BlurRectDirectBench(p, SkIntToScalar(5));) -DEF_BENCH(return new BlurRectDirectBench(p, SkIntToScalar(20));) +DEF_BENCH(return new BlurRectDirectBench(p, kMedium);) +DEF_BENCH(return new BlurRectDirectBench(p, kMedBig);) -DEF_BENCH(return new BlurRectBoxFilterBench(p, SkIntToScalar(5));) -DEF_BENCH(return new BlurRectBoxFilterBench(p, SkIntToScalar(20));) +DEF_BENCH(return new BlurRectBoxFilterBench(p, kMedium);) +DEF_BENCH(return new BlurRectBoxFilterBench(p, kMedBig);) #if 0 // disable Gaussian benchmarks; the algorithm works well enough |