Chromium Code Reviews| Index: bench/ImageFilterDAGBench.cpp |
| diff --git a/bench/ImageFilterDAGBench.cpp b/bench/ImageFilterDAGBench.cpp |
| index 776ee787fdf818cd7a3b4c24a7e41a2def120c46..3832360ca6f5605aadb4688342d852ccb33353c6 100644 |
| --- a/bench/ImageFilterDAGBench.cpp |
| +++ b/bench/ImageFilterDAGBench.cpp |
| @@ -6,6 +6,7 @@ |
| */ |
| #include "Benchmark.h" |
| +#include "Resources.h" |
| #include "SkBlurImageFilter.h" |
| #include "SkDisplacementMapEffect.h" |
| #include "SkCanvas.h" |
| @@ -45,6 +46,43 @@ private: |
| typedef Benchmark INHERITED; |
| }; |
| +class ImageMakeWithFilterDAGBench : public Benchmark { |
| +public: |
| + ImageMakeWithFilterDAGBench() {} |
| + |
| +protected: |
| + const char* onGetName() override { |
| + return "image_make_with_filter_dag"; |
| + } |
| + |
| + void onDelayedSetup() override { |
| + fImage = GetResourceAsImage("mandrill_512.png"); |
| + } |
| + |
| + void onDraw(int loops, SkCanvas* canvas) override { |
| + SkIRect subset = SkIRect::MakeSize(fImage->dimensions()); |
| + SkIPoint offset = SkIPoint::Make(0, 0); |
| + sk_sp<SkImage> image = fImage; |
| + |
| + for (int j = 0; j < loops; j++) { |
| + sk_sp<SkImageFilter> blur(SkBlurImageFilter::Make(20.0f, 20.0f, nullptr)); |
| + sk_sp<SkImageFilter> inputs[kNumInputs]; |
| + for (int i = 0; i < kNumInputs; ++i) { |
| + inputs[i] = blur; |
| + } |
| + sk_sp<SkImageFilter> mergeFilter = SkMergeImageFilter::Make(inputs, kNumInputs); |
|
robertphillips
2016/09/21 15:50:24
The use of subset & offset here scares me a bit.
|
| + image = image->makeWithFilter(mergeFilter.get(), subset, subset, &subset, &offset); |
| + SkASSERT(image && image->dimensions() == fImage->dimensions()); |
| + } |
| + } |
| + |
| +private: |
| + static const int kNumInputs = 5; |
| + sk_sp<SkImage> fImage; |
| + |
| + typedef Benchmark INHERITED; |
| +}; |
| + |
| // Exercise a blur filter connected to both inputs of an SkDisplacementMapEffect. |
| class ImageFilterDisplacedBlur : public Benchmark { |
| @@ -77,4 +115,5 @@ private: |
| }; |
| DEF_BENCH(return new ImageFilterDAGBench;) |
| +DEF_BENCH(return new ImageMakeWithFilterDAGBench;) |
| DEF_BENCH(return new ImageFilterDisplacedBlur;) |