From 5e18cdea0a0a3f23d8e8b8140c82a4b54e121402 Mon Sep 17 00:00:00 2001 From: Herbert Derby Date: Fri, 20 Oct 2017 14:53:45 -0400 Subject: Direct evaluation of gaussian The SVG(CSS) standard allows the 3 pass algorithm for sigma >= 2. But sigma < 2, the code must evaluate to the convolution. The old code used an interpolation scheme between windowed filters. This code directly evaluates the gaussian kernel for sigma < 2. This code produces cleaner results, is 25% faster, and does not use a temporary memory buffer. Change-Id: Ibd0caa73cadd06b637f55ba7bd4fefcfe7ac73db Reviewed-on: https://skia-review.googlesource.com/62540 Commit-Queue: Herb Derby Reviewed-by: Mike Klein --- bench/BlurBench.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'bench/BlurBench.cpp') diff --git a/bench/BlurBench.cpp b/bench/BlurBench.cpp index 20afd4a2e5..5b94d66ff6 100644 --- a/bench/BlurBench.cpp +++ b/bench/BlurBench.cpp @@ -15,9 +15,11 @@ #define MINI 0.01f #define SMALL SkIntToScalar(2) -#define REAL 1.5f +#define REAL 0.5f #define BIG SkIntToScalar(10) #define REALBIG 100.5f +// The value that produces a sigma of just over 2. +#define CUTOVER 2.6f static const char* gStyleName[] = { "normal", @@ -111,5 +113,6 @@ DEF_BENCH(return new BlurBench(BIG, kNormal_SkBlurStyle, SkBlurMaskFilter::kHigh DEF_BENCH(return new BlurBench(REALBIG, kNormal_SkBlurStyle, SkBlurMaskFilter::kHighQuality_BlurFlag);) DEF_BENCH(return new BlurBench(REAL, kNormal_SkBlurStyle, SkBlurMaskFilter::kHighQuality_BlurFlag);) +DEF_BENCH(return new BlurBench(CUTOVER, kNormal_SkBlurStyle, SkBlurMaskFilter::kHighQuality_BlurFlag);) DEF_BENCH(return new BlurBench(0, kNormal_SkBlurStyle);) -- cgit v1.2.3