Index: bench/BlurImageFilterBench.cpp |
diff --git a/bench/BlurImageFilterBench.cpp b/bench/BlurImageFilterBench.cpp |
index 476f192ef8747cff8611e8378cd444709c849aad..ec8b9ef59d845fe671fb7fd13974018e42f1a449 100644 |
--- a/bench/BlurImageFilterBench.cpp |
+++ b/bench/BlurImageFilterBench.cpp |
@@ -24,10 +24,10 @@ |
class BlurImageFilterBench : public Benchmark { |
public: |
- BlurImageFilterBench(SkScalar sigmaX, SkScalar sigmaY, bool small) : |
- fIsSmall(small), fInitialized(false), fSigmaX(sigmaX), fSigmaY(sigmaY) { |
- fName.printf("blur_image_filter_%s_%.2f_%.2f", fIsSmall ? "small" : "large", |
- SkScalarToFloat(sigmaX), SkScalarToFloat(sigmaY)); |
+ BlurImageFilterBench(SkScalar sigmaX, SkScalar sigmaY, bool small, bool cropped) : |
+ fIsSmall(small), fIsCropped(cropped), fInitialized(false), fSigmaX(sigmaX), fSigmaY(sigmaY) { |
+ fName.printf("blur_image_filter_%s%s_%.2f_%.2f", fIsSmall ? "small" : "large", |
+ fIsCropped ? "_cropped" : "", SkScalarToFloat(sigmaX), SkScalarToFloat(sigmaY)); |
} |
protected: |
@@ -44,10 +44,19 @@ protected: |
void onDraw(const int loops, SkCanvas* canvas) override { |
SkPaint paint; |
- paint.setImageFilter(SkBlurImageFilter::Create(fSigmaX, fSigmaY))->unref(); |
+ static const SkScalar kX = 0; |
+ static const SkScalar kY = 0; |
+ const SkRect bmpRect = SkRect::MakeXYWH(kX, kY, |
+ SkIntToScalar(fCheckerboard.width()), |
+ SkIntToScalar(fCheckerboard.height())); |
+ const SkImageFilter::CropRect cropRect = |
+ SkImageFilter::CropRect(bmpRect.makeInset(10.f, 10.f)); |
+ const SkImageFilter::CropRect* crop = fIsCropped ? &cropRect : NULL; |
+ |
+ paint.setImageFilter(SkBlurImageFilter::Create(fSigmaX, fSigmaY, NULL, crop))->unref(); |
for (int i = 0; i < loops; i++) { |
- canvas->drawBitmap(fCheckerboard, 0, 0, &paint); |
+ canvas->drawBitmap(fCheckerboard, kX, kY, &paint); |
} |
} |
@@ -77,21 +86,35 @@ private: |
SkString fName; |
bool fIsSmall; |
+ bool fIsCropped; |
bool fInitialized; |
SkBitmap fCheckerboard; |
SkScalar fSigmaX, fSigmaY; |
typedef Benchmark INHERITED; |
}; |
-DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_LARGE, 0, false);) |
-DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_SMALL, 0, false);) |
-DEF_BENCH(return new BlurImageFilterBench(0, BLUR_SIGMA_LARGE, false);) |
-DEF_BENCH(return new BlurImageFilterBench(0, BLUR_SIGMA_SMALL, false);) |
-DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_MINI, BLUR_SIGMA_MINI, true);) |
-DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_MINI, BLUR_SIGMA_MINI, false);) |
-DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_SMALL, BLUR_SIGMA_SMALL, true);) |
-DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_SMALL, BLUR_SIGMA_SMALL, false);) |
-DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_LARGE, BLUR_SIGMA_LARGE, true);) |
-DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_LARGE, BLUR_SIGMA_LARGE, false);) |
-DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_HUGE, BLUR_SIGMA_HUGE, true);) |
-DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_HUGE, BLUR_SIGMA_HUGE, false);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_LARGE, 0, false, false);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_SMALL, 0, false, false);) |
+DEF_BENCH(return new BlurImageFilterBench(0, BLUR_SIGMA_LARGE, false, false);) |
+DEF_BENCH(return new BlurImageFilterBench(0, BLUR_SIGMA_SMALL, false, false);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_MINI, BLUR_SIGMA_MINI, true, false);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_MINI, BLUR_SIGMA_MINI, false, false);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_SMALL, BLUR_SIGMA_SMALL, true, false);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_SMALL, BLUR_SIGMA_SMALL, false, false);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_LARGE, BLUR_SIGMA_LARGE, true, false);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_LARGE, BLUR_SIGMA_LARGE, false, false);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_HUGE, BLUR_SIGMA_HUGE, true, false);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_HUGE, BLUR_SIGMA_HUGE, false, false);) |
+ |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_LARGE, 0, false, true);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_SMALL, 0, false, true);) |
+DEF_BENCH(return new BlurImageFilterBench(0, BLUR_SIGMA_LARGE, false, true);) |
+DEF_BENCH(return new BlurImageFilterBench(0, BLUR_SIGMA_SMALL, false, true);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_MINI, BLUR_SIGMA_MINI, true, true);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_MINI, BLUR_SIGMA_MINI, false, true);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_SMALL, BLUR_SIGMA_SMALL, true, true);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_SMALL, BLUR_SIGMA_SMALL, false, true);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_LARGE, BLUR_SIGMA_LARGE, true, true);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_LARGE, BLUR_SIGMA_LARGE, false, true);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_HUGE, BLUR_SIGMA_HUGE, true, true);) |
+DEF_BENCH(return new BlurImageFilterBench(BLUR_SIGMA_HUGE, BLUR_SIGMA_HUGE, false, true);) |