add tilemode options



git-svn-id: http://skia.googlecode.com/svn/trunk@1607 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/bench/GradientBench.cpp b/bench/GradientBench.cpp
index 5ecca6b..428ad57 100644
--- a/bench/GradientBench.cpp
+++ b/bench/GradientBench.cpp
@@ -89,6 +89,20 @@
     kRadial2_GradType
 };
 
+static const char* tilemodename(SkShader::TileMode tm) {
+    switch (tm) {
+        case SkShader::kClamp_TileMode:
+            return "clamp";
+        case SkShader::kRepeat_TileMode:
+            return "repeat";
+        case SkShader::kMirror_TileMode:
+            return "mirror";
+        default:
+            SkASSERT(!"unknown tilemode");
+            return "error";
+    }
+}
+
 ///////////////////////////////////////////////////////////////////////////////
 
 class GradientBench : public SkBenchmark {
@@ -101,8 +115,9 @@
         N   = 1
     };
 public:
-    GradientBench(void* param, GradType gt) : INHERITED(param) {
-        fName.printf("gradient_%s", gGrads[gt].fName);
+    GradientBench(void* param, GradType gt,
+                  SkShader::TileMode tm = SkShader::kClamp_TileMode) : INHERITED(param) {
+        fName.printf("gradient_%s_%s", gGrads[gt].fName, tilemodename(tm));
 
         const SkPoint pts[2] = {
             { 0, 0 },
@@ -110,8 +125,7 @@
         };
         
         fCount = N * gGrads[gt].fRepeat;
-        fShader = gGrads[gt].fMaker(pts, gGradData[0],
-                                    SkShader::kClamp_TileMode, NULL);
+        fShader = gGrads[gt].fMaker(pts, gGradData[0], tm, NULL);
     }
 
     virtual ~GradientBench() {
@@ -141,11 +155,13 @@
 
 static SkBenchmark* Fact0(void* p) { return new GradientBench(p, kLinear_GradType); }
 static SkBenchmark* Fact1(void* p) { return new GradientBench(p, kRadial_GradType); }
+static SkBenchmark* Fact11(void* p) { return new GradientBench(p, kRadial_GradType, SkShader::kMirror_TileMode); }
 static SkBenchmark* Fact2(void* p) { return new GradientBench(p, kSweep_GradType); }
 static SkBenchmark* Fact3(void* p) { return new GradientBench(p, kRadial2_GradType); }
 
 static BenchRegistry gReg0(Fact0);
 static BenchRegistry gReg1(Fact1);
+static BenchRegistry gReg11(Fact11);
 static BenchRegistry gReg2(Fact2);
 static BenchRegistry gReg3(Fact3);