aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkRasterPipeline.cpp
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2017-01-09 10:20:13 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-01-09 17:01:26 +0000
commita7080264d11235d6f469d355b14a7647cba8eb75 (patch)
tree8ee121d44a3dfd947f8bb6804aa742842afba4c5 /src/core/SkRasterPipeline.cpp
parent003312a211e65f35e402d6fe80a32e23d4c94ac4 (diff)
SkSplicer
I think I may have cracked the compile-ahead-of-time-splice-at-runtime nut. This compiles stages ahead of time using clang, then splices them together at runtime. This means the stages can be written in simple C++, with some mild restrictions. This performs identically to our Xbyak experiment, and already supports more stages. As written this stands alone from SkRasterPipeline_opts.h, but I'm fairly confident that the bulk (the STAGE implementations) can ultimately be shared. As of PS 25 or so, this also supports all the stages used by bench/SkRasterPipelineBench.cpp: SkRasterPipeline_… 400 …f16_compile 1x …f16_run 1.38x …srgb_compile 1.89x …srgb_run 2.21x That is, ~30% faster than baseline for f16, ~15% faster for sRGB. Change-Id: I1ec7dcb769613713ce56978c58038f606f87d63d Reviewed-on: https://skia-review.googlesource.com/6733 Reviewed-by: Herb Derby <herb@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'src/core/SkRasterPipeline.cpp')
-rw-r--r--src/core/SkRasterPipeline.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/core/SkRasterPipeline.cpp b/src/core/SkRasterPipeline.cpp
index 13a7caecbd..7c3536c39d 100644
--- a/src/core/SkRasterPipeline.cpp
+++ b/src/core/SkRasterPipeline.cpp
@@ -27,7 +27,7 @@ void SkRasterPipeline::run(size_t x, size_t y, size_t n) const {
}
std::function<void(size_t, size_t, size_t)> SkRasterPipeline::compile() const {
-#ifdef SK_XBYAK
+#ifdef SK_RASTER_PIPELINE_HAS_JIT
if (auto fn = this->jit()) {
return fn;
}