From 57c4957604b9cb71acbc0db4a8e83701437e7fb1 Mon Sep 17 00:00:00 2001 From: "reed@google.com" Date: Mon, 31 Oct 2011 14:33:35 +0000 Subject: add bench for building aaclips git-svn-id: http://skia.googlecode.com/svn/trunk@2565 2bbb7eff-a529-9590-31e7-b0007b416f81 --- bench/AAClipBench.cpp | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 bench/AAClipBench.cpp (limited to 'bench/AAClipBench.cpp') diff --git a/bench/AAClipBench.cpp b/bench/AAClipBench.cpp new file mode 100644 index 0000000000..eca45184a6 --- /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); -- cgit v1.2.3