diff options
author | Florin Malita <fmalita@chromium.org> | 2017-07-13 14:29:12 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-07-13 18:53:32 +0000 |
commit | 604f0d54a8b22e6d1ec7581fcb68191aa0ff03fc (patch) | |
tree | 7a1b8974d3318f7b037ddacfd3b1c68a30f35b35 | |
parent | 9d3e162703e601db93e368299d412c11b1495769 (diff) |
Avoid unneeded picture shader color space transforms
Also update SkPictureImageFilter to use SkColorSpace::Equals instead of
direct comparison.
Change-Id: I434cd6d1afcb869d2a56601b72edf56d207d9868
Reviewed-on: https://skia-review.googlesource.com/23201
Reviewed-by: Mike Reed <reed@google.com>
Commit-Queue: Florin Malita <fmalita@chromium.org>
-rw-r--r-- | src/effects/SkPictureImageFilter.cpp | 2 | ||||
-rw-r--r-- | src/shaders/SkPictureShader.cpp | 7 |
2 files changed, 7 insertions, 2 deletions
diff --git a/src/effects/SkPictureImageFilter.cpp b/src/effects/SkPictureImageFilter.cpp index 80361aaaed..da3204e132 100644 --- a/src/effects/SkPictureImageFilter.cpp +++ b/src/effects/SkPictureImageFilter.cpp @@ -137,7 +137,7 @@ sk_sp<SkSpecialImage> SkPictureImageFilter::onFilterImage(SkSpecialImage* source sk_sp<SkImageFilter> SkPictureImageFilter::onMakeColorSpace(SkColorSpaceXformer* xformer) const { sk_sp<SkColorSpace> dstCS = xformer->dst(); - if (dstCS == fColorSpace) { + if (SkColorSpace::Equals(dstCS.get(), fColorSpace.get())) { return this->refMe(); } diff --git a/src/shaders/SkPictureShader.cpp b/src/shaders/SkPictureShader.cpp index 82439aeb62..415d3e5713 100644 --- a/src/shaders/SkPictureShader.cpp +++ b/src/shaders/SkPictureShader.cpp @@ -296,8 +296,13 @@ const { } sk_sp<SkShader> SkPictureShader::onMakeColorSpace(SkColorSpaceXformer* xformer) const { + sk_sp<SkColorSpace> dstCS = xformer->dst(); + if (SkColorSpace::Equals(dstCS.get(), fColorSpace.get())) { + return sk_ref_sp(const_cast<SkPictureShader*>(this)); + } + return sk_sp<SkPictureShader>(new SkPictureShader(fPicture, fTmx, fTmy, &this->getLocalMatrix(), - &fTile, xformer->dst())); + &fTile, std::move(dstCS))); } ///////////////////////////////////////////////////////////////////////////////////////// |