diff options
author | Mike Klein <mtklein@chromium.org> | 2016-10-25 13:31:21 -0400 |
---|---|---|
committer | Mike Klein <mtklein@chromium.org> | 2016-10-25 18:04:16 +0000 |
commit | e9f74b89c09772dd5abae1c0709c711d7cdb6535 (patch) | |
tree | 96e72a059facdc06f0ea39f2037e77d08eac6453 /bench/SkRasterPipelineBench.cpp | |
parent | aebfb45104eeb6dab5dbbedda13c2eaa7b7f7868 (diff) |
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>
Diffstat (limited to 'bench/SkRasterPipelineBench.cpp')
-rw-r--r-- | bench/SkRasterPipelineBench.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/bench/SkRasterPipelineBench.cpp b/bench/SkRasterPipelineBench.cpp index bf71d9a8d9..bfe2110362 100644 --- a/bench/SkRasterPipelineBench.cpp +++ b/bench/SkRasterPipelineBench.cpp @@ -32,16 +32,18 @@ public: } 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); } } }; |