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);