aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/SkRasterPipelineBench.cpp
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2016-10-25 15:43:46 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-10-26 18:15:03 +0000
commitbd3fe475b846da1ae75f22da67a34ae57d0627bb (patch)
tree9e82f8fba8acee4ff9e28dbdef797f05c6ebfbe8 /bench/SkRasterPipelineBench.cpp
parentce37e7af8bc3b141a2d02590f81d3cbdca526cac (diff)
Convert SkRasterPipeline loads and stores to indirect.
This allows us to change the underlying pointer without rebuilding the pipeline, e.g. when moving the blitter from scanline to scanline. The extra overhead when not needed is measurable but small, <2%. We can always add back direct stages later for cases where we know the context pointer will not change. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=3943 Change-Id: I827d7e6e4e67d02dd2802610f898f98c5f36f8cb Reviewed-on: https://skia-review.googlesource.com/3943 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'bench/SkRasterPipelineBench.cpp')
-rw-r--r--bench/SkRasterPipelineBench.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/bench/SkRasterPipelineBench.cpp b/bench/SkRasterPipelineBench.cpp
index bfe2110362..624b7951de 100644
--- a/bench/SkRasterPipelineBench.cpp
+++ b/bench/SkRasterPipelineBench.cpp
@@ -32,14 +32,18 @@ public:
}
void onDraw(int loops, SkCanvas*) override {
+ void* mask_ctx = mask;
+ void* src_ctx = src;
+ void* dst_ctx = dst;
+
SkRasterPipeline p;
- p.append(SkRasterPipeline::load_s_srgb, src);
- p.append(SkRasterPipeline:: scale_u8, mask);
+ p.append(SkRasterPipeline::load_s_srgb, &src_ctx);
+ p.append(SkRasterPipeline::scale_u8, &mask_ctx);
p.append(kF16 ? SkRasterPipeline::load_d_f16
- : SkRasterPipeline::load_d_srgb, dst);
- p.append(SkRasterPipeline:: srcover);
+ : SkRasterPipeline::load_d_srgb, &dst_ctx);
+ p.append(SkRasterPipeline::srcover);
p.append(kF16 ? SkRasterPipeline::store_f16
- : SkRasterPipeline::store_srgb, dst);
+ : SkRasterPipeline::store_srgb, &dst_ctx);
auto compiled = p.compile();
while (loops --> 0) {