Add fractional-radius blurs to blur benchmark.
Specialize loops in apply_kernel and apply_kernel_interp,
improving blur benchmark performance by 25%.
git-svn-id: http://skia.googlecode.com/svn/trunk@2731 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/bench/BlurBench.cpp b/bench/BlurBench.cpp
index 1a69184..de78fe1 100644
--- a/bench/BlurBench.cpp
+++ b/bench/BlurBench.cpp
@@ -14,6 +14,7 @@
#include "SkBlurMaskFilter.h"
#define SMALL SkIntToScalar(2)
+#define REAL SkFloatToScalar(1.5f)
#define BIG SkIntToScalar(10)
static const char* gStyleName[] = {
@@ -33,7 +34,11 @@
fRadius = rad;
fStyle = bs;
const char* name = rad > 0 ? gStyleName[bs] : "none";
- fName.printf("blur_%d_%s", SkScalarRound(rad), name);
+ if (SkScalarFraction(rad) != 0) {
+ fName.printf("blur_%.2f_%s", SkScalarToFloat(rad), name);
+ } else {
+ fName.printf("blur_%d_%s", SkScalarRound(rad), name);
+ }
}
protected:
@@ -75,6 +80,11 @@
static SkBenchmark* Fact12(void* p) { return new BlurBench(p, BIG, SkBlurMaskFilter::kOuter_BlurStyle); }
static SkBenchmark* Fact13(void* p) { return new BlurBench(p, BIG, SkBlurMaskFilter::kInner_BlurStyle); }
+static SkBenchmark* Fact20(void* p) { return new BlurBench(p, REAL, SkBlurMaskFilter::kNormal_BlurStyle); }
+static SkBenchmark* Fact21(void* p) { return new BlurBench(p, REAL, SkBlurMaskFilter::kSolid_BlurStyle); }
+static SkBenchmark* Fact22(void* p) { return new BlurBench(p, REAL, SkBlurMaskFilter::kOuter_BlurStyle); }
+static SkBenchmark* Fact23(void* p) { return new BlurBench(p, REAL, SkBlurMaskFilter::kInner_BlurStyle); }
+
static SkBenchmark* FactNone(void* p) { return new BlurBench(p, 0, SkBlurMaskFilter::kNormal_BlurStyle); }
static BenchRegistry gReg00(Fact00);
@@ -87,5 +97,10 @@
static BenchRegistry gReg12(Fact12);
static BenchRegistry gReg13(Fact13);
+static BenchRegistry gReg20(Fact20);
+static BenchRegistry gReg21(Fact21);
+static BenchRegistry gReg22(Fact22);
+static BenchRegistry gReg23(Fact23);
+
static BenchRegistry gRegNone(FactNone);