diff options
Diffstat (limited to 'bench/WritePixelsBench.cpp')
-rw-r--r-- | bench/WritePixelsBench.cpp | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/bench/WritePixelsBench.cpp b/bench/WritePixelsBench.cpp new file mode 100644 index 0000000000..ea6f88cf6b --- /dev/null +++ b/bench/WritePixelsBench.cpp @@ -0,0 +1,77 @@ + +/* + * Copyright 2013 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 "SkCanvas.h" +#include "SkConfig8888.h" +#include "SkString.h" + +class WritePixelsBench : public SkBenchmark { +public: + WritePixelsBench(void* param, SkCanvas::Config8888 config) + : INHERITED(param) + , fConfig(config) + , fName("writepix") { + switch (config) { + case SkCanvas::kNative_Premul_Config8888: + fName.append("_native_PM"); + break; + case SkCanvas::kNative_Unpremul_Config8888: + fName.append("_native_UPM"); + break; + case SkCanvas::kBGRA_Premul_Config8888: + fName.append("_bgra_PM"); + break; + case SkCanvas::kBGRA_Unpremul_Config8888: + fName.append("_bgra_UPM"); + break; + case SkCanvas::kRGBA_Premul_Config8888: + fName.append("_rgba_PM"); + break; + case SkCanvas::kRGBA_Unpremul_Config8888: + fName.append("_rgba_UPM"); + break; + default: + SK_CRASH(); + break; + } + } + +protected: + virtual const char* onGetName() SK_OVERRIDE { + return fName.c_str(); + } + + virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE { + SkISize size = canvas->getDeviceSize(); + + canvas->clear(0xFFFF0000); + + SkBitmap bmp; + bmp.setConfig(SkBitmap::kARGB_8888_Config, size.width(), size.height()); + canvas->readPixels(&bmp, 0, 0); + + for (int loop = 0; loop < kLoopCount; ++loop) { + canvas->writePixels(bmp, 0, 0, fConfig); + } + } + +private: + static const int kLoopCount = SkBENCHLOOP(50); + + SkCanvas::Config8888 fConfig; + SkString fName; + + typedef SkBenchmark INHERITED; +}; + +////////////////////////////////////////////////////////////////////////////// + +DEF_BENCH( return SkNEW_ARGS(WritePixelsBench, (p, SkCanvas::kRGBA_Premul_Config8888)); ) +DEF_BENCH( return SkNEW_ARGS(WritePixelsBench, (p, SkCanvas::kRGBA_Unpremul_Config8888)); ) + |