aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench
diff options
context:
space:
mode:
authorGravatar reed <reed@google.com>2016-01-14 10:10:56 -0800
committerGravatar Commit bot <commit-bot@chromium.org>2016-01-14 10:10:56 -0800
commita36c710bf56b2123ab25b59aa177191229325698 (patch)
treefc519a8eb083211f428de0e6838df7472a639bfe /bench
parentde83b41cc7fc5bd1398e06c011e698215261665f (diff)
add explicit bench for raw bitmapscaler
Diffstat (limited to 'bench')
-rw-r--r--bench/BitmapScaleBench.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/bench/BitmapScaleBench.cpp b/bench/BitmapScaleBench.cpp
index 37ce7cf65a..2e8f72e03c 100644
--- a/bench/BitmapScaleBench.cpp
+++ b/bench/BitmapScaleBench.cpp
@@ -110,3 +110,51 @@ DEF_BENCH(return new BitmapFilterScaleBench(90, 30);)
DEF_BENCH(return new BitmapFilterScaleBench(90, 10);)
DEF_BENCH(return new BitmapFilterScaleBench(256, 64);)
DEF_BENCH(return new BitmapFilterScaleBench(64, 256);)
+
+///////////////////////////////////////////////////////////////////////////////////////////////
+
+#include "SkBitmapScaler.h"
+
+class PixmapScalerBench: public Benchmark {
+ SkBitmapScaler::ResizeMethod fMethod;
+ SkString fName;
+ SkBitmap fSrc, fDst;
+
+public:
+ PixmapScalerBench(SkBitmapScaler::ResizeMethod method, const char suffix[]) : fMethod(method) {
+ fName.printf("pixmapscaler_%s", suffix);
+ }
+
+protected:
+ const char* onGetName() override {
+ return fName.c_str();
+ }
+
+ SkIPoint onGetSize() override { return{ 100, 100 }; }
+
+ bool isSuitableFor(Backend backend) override {
+ return backend == kNonRendering_Backend;
+ }
+
+ void onDelayedSetup() override {
+ fSrc.allocN32Pixels(640, 480);
+ fDst.allocN32Pixels(300, 250);
+ }
+
+ void onDraw(int loops, SkCanvas*) override {
+ SkPixmap src, dst;
+ fSrc.peekPixels(&src);
+ fDst.peekPixels(&dst);
+ for (int i = 0; i < loops * 16; i++) {
+ SkBitmapScaler::Resize(dst, src, fMethod);
+ }
+ }
+
+private:
+ typedef Benchmark INHERITED;
+};
+DEF_BENCH( return new PixmapScalerBench(SkBitmapScaler::RESIZE_LANCZOS3, "lanczos"); )
+DEF_BENCH( return new PixmapScalerBench(SkBitmapScaler::RESIZE_MITCHELL, "mitchell"); )
+DEF_BENCH( return new PixmapScalerBench(SkBitmapScaler::RESIZE_HAMMING, "hamming"); )
+DEF_BENCH( return new PixmapScalerBench(SkBitmapScaler::RESIZE_TRIANGLE, "triangle"); )
+DEF_BENCH( return new PixmapScalerBench(SkBitmapScaler::RESIZE_BOX, "box"); )