From 799a3646f9e1331bbfd82c5a34d1b47e279420f9 Mon Sep 17 00:00:00 2001 From: reed Date: Mon, 3 Aug 2015 14:18:04 -0700 Subject: add bench for gpu-image -> cpu-surface BUG=513695 TBR= Review URL: https://codereview.chromium.org/1261663004 --- bench/ImageBench.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 bench/ImageBench.cpp (limited to 'bench/ImageBench.cpp') diff --git a/bench/ImageBench.cpp b/bench/ImageBench.cpp new file mode 100644 index 0000000000..e3fe230353 --- /dev/null +++ b/bench/ImageBench.cpp @@ -0,0 +1,57 @@ +/* + * Copyright 2015 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 "SkImage.h" +#include "SkSurface.h" + +class GPU2RasterImageBench : public Benchmark { +public: + GPU2RasterImageBench() { + fName.set("gpu2raster_image"); + } + + bool isSuitableFor(Backend backend) override { + return kGPU_Backend == backend; + } + +protected: + const char* onGetName() override { + return fName.c_str(); + } + + void onPerCanvasPreDraw(SkCanvas* canvas) override { + // create a gpu-backed Image + SkImageInfo info = SkImageInfo::MakeN32Premul(500, 500); + SkAutoTUnref surface(canvas->newSurface(info)); + canvas->drawColor(SK_ColorRED); + fGpuImage.reset(surface->newImageSnapshot()); + + // create a cpu-backed Surface + fRasterSurface.reset(SkSurface::NewRaster(info)); + } + + void onDraw(const int loops, SkCanvas*) override { + // Time drawing a gpu-image into a raster-surface + for (int i = 0; i < loops; i++) { + for (int inner = 0; inner < 10; ++inner) { + fRasterSurface->getCanvas()->drawImage(fGpuImage, 0, 0); + } + } + } + +private: + SkString fName; + SkAutoTUnref fGpuImage; + SkAutoTUnref fRasterSurface; + + typedef Benchmark INHERITED; +}; + + +DEF_BENCH( return new GPU2RasterImageBench; ) -- cgit v1.2.3