diff options
author | reed <reed@google.com> | 2015-08-04 08:42:40 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-04 08:42:40 -0700 |
commit | dea6e1c737a97a10e123d811d056ff85a09e1f2e (patch) | |
tree | 9fd78b302d3b701b87db242c720ae39d21244e4e /bench/ImageBench.cpp | |
parent | 6f1216ac158e36a3a1cc805e7f899c755c5b98a2 (diff) |
update image bench to test gpu and cpu images against raster surface
BUG=513695
TBR=
Review URL: https://codereview.chromium.org/1261043003
Diffstat (limited to 'bench/ImageBench.cpp')
-rw-r--r-- | bench/ImageBench.cpp | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/bench/ImageBench.cpp b/bench/ImageBench.cpp index e3fe230353..69ab17f2c1 100644 --- a/bench/ImageBench.cpp +++ b/bench/ImageBench.cpp @@ -10,14 +10,14 @@ #include "SkImage.h" #include "SkSurface.h" -class GPU2RasterImageBench : public Benchmark { +class Image2RasterBench : public Benchmark { public: - GPU2RasterImageBench() { - fName.set("gpu2raster_image"); + Image2RasterBench() { + fName.set("native_image_to_raster_surface"); } bool isSuitableFor(Backend backend) override { - return kGPU_Backend == backend; + return kGPU_Backend == backend || kRaster_Backend == backend; } protected: @@ -25,33 +25,35 @@ protected: return fName.c_str(); } + // We explicitly want to bench drawing a Image [cpu or gpu backed] into a raster target, + // to ensure that we can cache the read-back in the case of gpu -> raster + // void onPerCanvasPreDraw(SkCanvas* canvas) override { - // create a gpu-backed Image - SkImageInfo info = SkImageInfo::MakeN32Premul(500, 500); + // create an Image reflecting the canvas (gpu or cpu) + SkImageInfo info = SkImageInfo::MakeN32Premul(100, 100); SkAutoTUnref<SkSurface> surface(canvas->newSurface(info)); canvas->drawColor(SK_ColorRED); - fGpuImage.reset(surface->newImageSnapshot()); + fImage.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); + fRasterSurface->getCanvas()->drawImage(fImage, 0, 0); } } } private: SkString fName; - SkAutoTUnref<SkImage> fGpuImage; + SkAutoTUnref<SkImage> fImage; SkAutoTUnref<SkSurface> fRasterSurface; typedef Benchmark INHERITED; }; -DEF_BENCH( return new GPU2RasterImageBench; ) +DEF_BENCH( return new Image2RasterBench; ) |