aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/SkRasterPipelineBench.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'bench/SkRasterPipelineBench.cpp')
-rw-r--r--bench/SkRasterPipelineBench.cpp29
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>); )