diff options
author | reed <reed@google.com> | 2015-08-03 14:18:04 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-03 14:18:04 -0700 |
commit | 799a3646f9e1331bbfd82c5a34d1b47e279420f9 (patch) | |
tree | 0531d8f0267b7975e11a03fa89a5b80eea45e651 /bench/ImageBench.cpp | |
parent | b001c41ed37d2018d38ce787b412ed741585d75d (diff) |
add bench for gpu-image -> cpu-surface
BUG=513695
TBR=
Review URL: https://codereview.chromium.org/1261663004
Diffstat (limited to 'bench/ImageBench.cpp')
-rw-r--r-- | bench/ImageBench.cpp | 57 |
1 files changed, 57 insertions, 0 deletions
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<SkSurface> 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<SkImage> fGpuImage; + SkAutoTUnref<SkSurface> fRasterSurface; + + typedef Benchmark INHERITED; +}; + + +DEF_BENCH( return new GPU2RasterImageBench; ) |