Chromium Code Reviews| Index: bench/TileImageFilterBench.cpp |
| diff --git a/bench/TileImageFilterBench.cpp b/bench/TileImageFilterBench.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..949baea6d716c9a7511377a095ad0ab7da799167 |
| --- /dev/null |
| +++ b/bench/TileImageFilterBench.cpp |
| @@ -0,0 +1,67 @@ |
| +/* |
| + * Copyright 2016 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 "SkTileImageFilter.h" |
| +#include "SkCanvas.h" |
| +#include "SkPaint.h" |
| +#include "SkString.h" |
| + |
| +#define WIDTH 512 |
| +#define HEIGHT 512 |
| + |
| + |
|
robertphillips
2016/01/05 20:45:48
// This bench is interesting because ... ?
I'm as
Stephen White
2016/01/05 20:50:09
Done.
|
| +class TileImageFilterBench : public Benchmark { |
| +public: |
| + TileImageFilterBench(int tileSize) : fTileSize(tileSize) { |
| + if (tileSize > 0) { |
| + fName.printf("tile_image_filter_tiled_%d", tileSize); |
| + } else { |
| + fName.printf("tile_image_filter"); |
| + } |
| + } |
| + |
| +protected: |
| + const char* onGetName() override { |
| + return fName.c_str(); |
| + } |
| + |
| + void onDraw(int loops, SkCanvas* canvas) override { |
| + SkPaint paint; |
| + SkAutoTUnref<SkImageFilter> tile(SkTileImageFilter::Create( |
| + SkRect::MakeWH(50, 50), |
| + SkRect::MakeWH(WIDTH, HEIGHT), |
| + nullptr)); |
| + paint.setImageFilter(tile); |
| + |
| + for (int i = 0; i < loops; i++) { |
| + if (fTileSize > 0) { |
| + for (int y = 0; y < HEIGHT; y += fTileSize) { |
| + for (int x = 0; x < WIDTH; x += fTileSize) { |
| + canvas->save(); |
| + canvas->clipRect(SkRect::MakeXYWH(x, y, fTileSize, fTileSize)); |
| + canvas->drawRect(SkRect::MakeWH(WIDTH, HEIGHT), paint); |
| + canvas->restore(); |
| + } |
| + } |
| + } else { |
| + canvas->drawRect(SkRect::MakeWH(WIDTH, HEIGHT), paint); |
| + } |
| + } |
| + } |
| + |
| +private: |
| + SkString fName; |
| + // Note: this is the tile size used for tiled rendering, not for the size |
| + // of the SkTileImageFilter source rect. |
| + int fTileSize; |
| + typedef Benchmark INHERITED; |
| +}; |
| + |
| +DEF_BENCH(return new TileImageFilterBench(0);) |
| +DEF_BENCH(return new TileImageFilterBench(32);) |
| +DEF_BENCH(return new TileImageFilterBench(64);) |