add bench for building aaclips



git-svn-id: http://skia.googlecode.com/svn/trunk@2565 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/bench/AAClipBench.cpp b/bench/AAClipBench.cpp
new file mode 100644
index 0000000..eca4518
--- /dev/null
+++ b/bench/AAClipBench.cpp
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2011 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "SkBenchmark.h"
+#include "SkAAClip.h"
+#include "SkPath.h"
+#include "SkRegion.h"
+#include "SkString.h"
+
+class AAClipBuilderBench : public SkBenchmark {
+    SkString fName;
+    SkPath   fPath;
+    SkRect   fRect;
+    SkRegion fRegion;
+    bool     fDoPath;
+    bool     fDoAA;
+
+    enum {
+        N = SkBENCHLOOP(200),
+    };
+
+public:
+    AAClipBuilderBench(void* param, bool doPath, bool doAA) : INHERITED(param) {
+        fDoPath = doPath;
+        fDoAA = doAA;
+
+        fName.printf("aaclip_build_%s_%s", doPath ? "path" : "rect",
+                     doAA ? "AA" : "BW");
+
+        fRegion.setRect(0, 0, 640, 480);
+        fRect.set(fRegion.getBounds());
+        fRect.inset(SK_Scalar1/4, SK_Scalar1/4);
+        fPath.addRoundRect(fRect, SkIntToScalar(20), SkIntToScalar(20));
+    }
+
+protected:
+    virtual const char* onGetName() { return fName.c_str(); }
+    virtual void onDraw(SkCanvas* canvas) {
+        SkPaint paint;
+        this->setupPaint(&paint);
+
+        for (int i = 0; i < N; ++i) {
+            SkAAClip clip;
+            if (fDoPath) {
+                clip.setPath(fPath, &fRegion, fDoAA);
+            } else {
+                clip.setRect(fRect, fDoAA);
+            }
+        }
+    }
+private:
+    typedef SkBenchmark INHERITED;
+};
+
+///////////////////////////////////////////////////////////////////////////////
+
+static SkBenchmark* Fact0(void* p) { return SkNEW_ARGS(AAClipBuilderBench, (p, false, false)); }
+static SkBenchmark* Fact1(void* p) { return SkNEW_ARGS(AAClipBuilderBench, (p, false, true)); }
+static SkBenchmark* Fact2(void* p) { return SkNEW_ARGS(AAClipBuilderBench, (p, true, false)); }
+static SkBenchmark* Fact3(void* p) { return SkNEW_ARGS(AAClipBuilderBench, (p, true, true)); }
+
+static BenchRegistry gReg0(Fact0);
+static BenchRegistry gReg1(Fact1);
+static BenchRegistry gReg2(Fact2);
+static BenchRegistry gReg3(Fact3);
diff --git a/gyp/bench.gyp b/gyp/bench.gyp
index 73472a5..6361586 100644
--- a/gyp/bench.gyp
+++ b/gyp/bench.gyp
@@ -9,8 +9,12 @@
     {
       'target_name': 'bench',
       'type': 'executable',
+      'include_dirs' : [
+        '../src/core',
+        '../src/gpu',
+      ],
       'includes': [
-	'bench.gypi'
+        'bench.gypi'
       ],
       'dependencies': [
         'core.gyp:core',
diff --git a/gyp/bench.gypi b/gyp/bench.gypi
index 879dee5..b8f3e58 100644
--- a/gyp/bench.gypi
+++ b/gyp/bench.gypi
@@ -17,6 +17,7 @@
     '../bench/SkBenchmark.h',
     '../bench/SkBenchmark.cpp',
 
+    '../bench/AAClipBench.cpp',
     '../bench/BitmapBench.cpp',
     '../bench/BlurBench.cpp',
     '../bench/ChromeBench.cpp',