From 7306bcd758fc35be2f4bf75063c4d50d0be8f853 Mon Sep 17 00:00:00 2001 From: Mike Reed Date: Wed, 25 Oct 2017 10:37:30 -0400 Subject: - add bench for pixmap orient - reduce code size by using a draw instead of custom blits Bug: skia: Change-Id: I90f9fb2abf40496e771f1f725556c178d730b590 Reviewed-on: https://skia-review.googlesource.com/62860 Reviewed-by: Mike Klein Commit-Queue: Mike Reed --- bench/ReadPixBench.cpp | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) (limited to 'bench/ReadPixBench.cpp') diff --git a/bench/ReadPixBench.cpp b/bench/ReadPixBench.cpp index 2a8e9c4df3..55078d96b6 100644 --- a/bench/ReadPixBench.cpp +++ b/bench/ReadPixBench.cpp @@ -62,7 +62,46 @@ private: typedef Benchmark INHERITED; }; +DEF_BENCH( return new ReadPixBench(); ) //////////////////////////////////////////////////////////////////////////////// +#include "SkBitmap.h" +#include "SkPixmapPriv.h" -DEF_BENCH( return new ReadPixBench(); ) +class PixmapOrientBench : public Benchmark { +public: + PixmapOrientBench() {} + +protected: + void onDelayedSetup() override { + const SkImageInfo info = SkImageInfo::MakeN32Premul(2048, 1024); + fSrc.allocPixels(info); + fSrc.eraseColor(SK_ColorBLACK); + fDst.allocPixels(info.makeWH(info.height(), info.width())); + } + + const char* onGetName() override { + return "orient_pixmap"; + } + + bool isSuitableFor(Backend backend) override { + return backend == kNonRendering_Backend; + } + + void onDraw(int loops, SkCanvas*) override { + const SkPixmapPriv::OrientFlags flags = SkPixmapPriv::kSwapXY; + + SkPixmap src, dst; + fSrc.peekPixels(&src); + fDst.peekPixels(&dst); + for (int i = 0; i < loops; ++i) { + SkPixmapPriv::Orient(dst, src, flags); + } + } + +private: + SkBitmap fSrc, fDst; + + typedef Benchmark INHERITED; +}; +DEF_BENCH( return new PixmapOrientBench(); ) -- cgit v1.2.3