From 604f0d54a8b22e6d1ec7581fcb68191aa0ff03fc Mon Sep 17 00:00:00 2001 From: Florin Malita Date: Thu, 13 Jul 2017 14:29:12 -0400 Subject: 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 Commit-Queue: Florin Malita --- src/effects/SkPictureImageFilter.cpp | 2 +- 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 SkPictureImageFilter::onFilterImage(SkSpecialImage* source sk_sp SkPictureImageFilter::onMakeColorSpace(SkColorSpaceXformer* xformer) const { sk_sp 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 SkPictureShader::onMakeColorSpace(SkColorSpaceXformer* xformer) const { + sk_sp dstCS = xformer->dst(); + if (SkColorSpace::Equals(dstCS.get(), fColorSpace.get())) { + return sk_ref_sp(const_cast(this)); + } + return sk_sp(new SkPictureShader(fPicture, fTmx, fTmy, &this->getLocalMatrix(), - &fTile, xformer->dst())); + &fTile, std::move(dstCS))); } ///////////////////////////////////////////////////////////////////////////////////////// -- cgit v1.2.3