diff options
author | 2017-01-17 10:24:15 -0500 | |
---|---|---|
committer | 2017-01-17 15:56:11 +0000 | |
commit | f76885694d4345363cb541170d18040a5c3f01cc (patch) | |
tree | 03078efabaa8a6126b9a018ed250282ef7e3e504 | |
parent | b5a1d41cc7d4995d473024a1a13020ad06870957 (diff) |
Add a bench to exercise legacy-mode SkRasterPipeline behavior.
No fancy f16 or sRGB here... just good old legacy 8888.
Change-Id: I21eb7c0d8e2c7a7d92e9d8a8bae9d318c4daa7e5
Reviewed-on: https://skia-review.googlesource.com/7109
Reviewed-by: Mike Klein <mtklein@chromium.org>
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
-rw-r--r-- | bench/SkRasterPipelineBench.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/bench/SkRasterPipelineBench.cpp b/bench/SkRasterPipelineBench.cpp index 6d9bb49f50..9afc029c30 100644 --- a/bench/SkRasterPipelineBench.cpp +++ b/bench/SkRasterPipelineBench.cpp @@ -76,3 +76,38 @@ DEF_BENCH( return (new SkRasterPipelineBench< true, true>); ) DEF_BENCH( return (new SkRasterPipelineBench<false, true>); ) DEF_BENCH( return (new SkRasterPipelineBench< true, false>); ) DEF_BENCH( return (new SkRasterPipelineBench<false, false>); ) + +template <bool kCompiled> +class SkRasterPipelineLegacyBench : public Benchmark { +public: + bool isSuitableFor(Backend backend) override { return backend == kNonRendering_Backend; } + const char* onGetName() override { + return kCompiled ? "SkRasterPipeline_legacy_compile" + : "SkRasterPipeline_legacy_run"; + } + + void onDraw(int loops, SkCanvas*) override { + void* src_ctx = src; + void* dst_ctx = dst; + + SkRasterPipeline p; + p.append(SkRasterPipeline::load_8888, &dst_ctx); + p.append(SkRasterPipeline::move_src_dst); + p.append(SkRasterPipeline::load_8888, &src_ctx); + p.append(SkRasterPipeline::srcover); + p.append(SkRasterPipeline::store_8888, &dst_ctx); + + if (kCompiled) { + auto compiled = p.compile(); + while (loops --> 0) { + compiled(0,0, N); + } + } else { + while (loops --> 0) { + p.run(0,0, N); + } + } + } +}; +DEF_BENCH( return (new SkRasterPipelineLegacyBench< true>); ) +DEF_BENCH( return (new SkRasterPipelineLegacyBench<false>); ) |