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',