diff options
Diffstat (limited to 'bench/SkRasterPipelineBench.cpp')
-rw-r--r-- | bench/SkRasterPipelineBench.cpp | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/bench/SkRasterPipelineBench.cpp b/bench/SkRasterPipelineBench.cpp index 16dea8aa66..376efdeb84 100644 --- a/bench/SkRasterPipelineBench.cpp +++ b/bench/SkRasterPipelineBench.cpp @@ -22,13 +22,18 @@ static uint8_t mask[N]; // 8-bit linear // - src = srcover(dst, src) // - store src back as srgb/f16 -template <bool kF16> +template <bool kF16, bool kCompiled> class SkRasterPipelineBench : public Benchmark { public: bool isSuitableFor(Backend backend) override { return backend == kNonRendering_Backend; } const char* onGetName() override { - return kF16 ? "SkRasterPipeline_f16" - : "SkRasterPipeline_srgb"; + switch ((int)kCompiled << 1 | (int)kF16) { + case 0: return "SkRasterPipeline_srgb_run"; + case 1: return "SkRasterPipeline_f16_run"; + case 2: return "SkRasterPipeline_srgb_compile"; + case 3: return "SkRasterPipeline_f16_compile"; + } + return "whoops"; } void onDraw(int loops, SkCanvas*) override { @@ -53,12 +58,20 @@ public: p.append(SkRasterPipeline::to_srgb); p.append(SkRasterPipeline::store_8888, &dst_ctx); } - auto compiled = p.compile(); - while (loops --> 0) { - compiled(0,0, N); + 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 SkRasterPipelineBench<true>; ) -DEF_BENCH( return new SkRasterPipelineBench<false>; ) +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>); ) |