SkRasterPipeline::compile().
I'm not yet caching these in the blitter, and speed is essentially unchanged in the bench where I am now building and compiling the pipeline only once. This may not be able to stay a simple std::function after I figure out caching, but for now it's a nice fit.
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3911
Change-Id: I9545af589f73baf9f17cb4e6ace9a814c2478fe9
Reviewed-on: https://skia-review.googlesource.com/3911
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@chromium.org>
diff --git a/bench/SkRasterPipelineBench.cpp b/bench/SkRasterPipelineBench.cpp
index bf71d9a..bfe2110 100644
--- a/bench/SkRasterPipelineBench.cpp
+++ b/bench/SkRasterPipelineBench.cpp
@@ -32,16 +32,18 @@
}
void onDraw(int loops, SkCanvas*) override {
+ SkRasterPipeline p;
+ p.append(SkRasterPipeline::load_s_srgb, src);
+ p.append(SkRasterPipeline:: scale_u8, mask);
+ p.append(kF16 ? SkRasterPipeline::load_d_f16
+ : SkRasterPipeline::load_d_srgb, dst);
+ p.append(SkRasterPipeline:: srcover);
+ p.append(kF16 ? SkRasterPipeline::store_f16
+ : SkRasterPipeline::store_srgb, dst);
+ auto compiled = p.compile();
+
while (loops --> 0) {
- SkRasterPipeline p;
- p.append(SkRasterPipeline::load_s_srgb, src);
- p.append(SkRasterPipeline:: scale_u8, mask);
- p.append(kF16 ? SkRasterPipeline::load_d_f16
- : SkRasterPipeline::load_d_srgb, dst);
- p.append(SkRasterPipeline:: srcover);
- p.append(kF16 ? SkRasterPipeline::store_f16
- : SkRasterPipeline::store_srgb, dst);
- p.run(N);
+ compiled(0, N);
}
}
};