summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/skia/bench/MatrixConvolutionBench.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/skia/bench/MatrixConvolutionBench.cpp')
-rw-r--r--chromium/third_party/skia/bench/MatrixConvolutionBench.cpp60
1 files changed, 60 insertions, 0 deletions
diff --git a/chromium/third_party/skia/bench/MatrixConvolutionBench.cpp b/chromium/third_party/skia/bench/MatrixConvolutionBench.cpp
new file mode 100644
index 00000000000..6593ab02597
--- /dev/null
+++ b/chromium/third_party/skia/bench/MatrixConvolutionBench.cpp
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "Benchmark.h"
+#include "SkCanvas.h"
+#include "SkMatrixConvolutionImageFilter.h"
+#include "SkPaint.h"
+#include "SkRandom.h"
+#include "SkString.h"
+
+class MatrixConvolutionBench : public Benchmark {
+public:
+ MatrixConvolutionBench(SkMatrixConvolutionImageFilter::TileMode tileMode, bool convolveAlpha)
+ : fName("matrixconvolution") {
+ SkISize kernelSize = SkISize::Make(3, 3);
+ SkScalar kernel[9] = {
+ SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1),
+ SkIntToScalar( 1), SkIntToScalar(-7), SkIntToScalar( 1),
+ SkIntToScalar( 1), SkIntToScalar( 1), SkIntToScalar( 1),
+ };
+ SkScalar gain = 0.3f, bias = SkIntToScalar(100);
+ SkIPoint kernelOffset = SkIPoint::Make(1, 1);
+ fFilter = SkMatrixConvolutionImageFilter::Create(kernelSize, kernel, gain, bias, kernelOffset, tileMode, convolveAlpha);
+ }
+
+ ~MatrixConvolutionBench() {
+ fFilter->unref();
+ }
+
+protected:
+ virtual const char* onGetName() {
+ return fName.c_str();
+ }
+
+ virtual void onDraw(const int loops, SkCanvas* canvas) {
+ SkPaint paint;
+ this->setupPaint(&paint);
+ paint.setAntiAlias(true);
+ SkRandom rand;
+ for (int i = 0; i < loops; i++) {
+ SkRect r = SkRect::MakeWH(rand.nextUScalar1() * 400,
+ rand.nextUScalar1() * 400);
+ paint.setImageFilter(fFilter);
+ canvas->drawOval(r, paint);
+ }
+ }
+
+private:
+ typedef Benchmark INHERITED;
+ SkMatrixConvolutionImageFilter* fFilter;
+ SkString fName;
+};
+
+DEF_BENCH( return new MatrixConvolutionBench(SkMatrixConvolutionImageFilter::kClamp_TileMode, true); )
+DEF_BENCH( return new MatrixConvolutionBench(SkMatrixConvolutionImageFilter::kRepeat_TileMode, true); )
+DEF_BENCH( return new MatrixConvolutionBench(SkMatrixConvolutionImageFilter::kClampToBlack_TileMode, true); )
+DEF_BENCH( return new MatrixConvolutionBench(SkMatrixConvolutionImageFilter::kClampToBlack_TileMode, false); )