diff options
author | 2016-01-14 10:10:56 -0800 | |
---|---|---|
committer | 2016-01-14 10:10:56 -0800 | |
commit | a36c710bf56b2123ab25b59aa177191229325698 (patch) | |
tree | fc519a8eb083211f428de0e6838df7472a639bfe /bench | |
parent | de83b41cc7fc5bd1398e06c011e698215261665f (diff) |
add explicit bench for raw bitmapscaler
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1586803003
patch from issue 1586803003 at patchset 20001 (http://crrev.com/1586803003#ps20001)
TBR=
Review URL: https://codereview.chromium.org/1588113002
Diffstat (limited to 'bench')
-rw-r--r-- | bench/BitmapScaleBench.cpp | 48 |
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"); ) |