aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2017-12-19 14:48:04 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-12-20 13:06:25 +0000
commitbc9f3499c345ce59f8cd3889c580fa75db54034b (patch)
tree2936d0abbf7aef99a7143263821d6bffbae5609d
parente3cc317ab2d15015a0ad2841c63473407dca6179 (diff)
remove bicubic clamp in SkImageShader
We ought to be able to handle out-of-gamut colors now, whatever their provenance. Should be we can just not clamp here. Bug: skia:5733 Change-Id: Icd9851543638fd81755afee2eac2347702b88e9f Reviewed-on: https://skia-review.googlesource.com/87000 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Brian Osman <brianosman@google.com>
-rw-r--r--src/core/SkPixmap.cpp4
-rw-r--r--src/shaders/SkImageShader.cpp2
2 files changed, 2 insertions, 4 deletions
diff --git a/src/core/SkPixmap.cpp b/src/core/SkPixmap.cpp
index 5648405445..7873a9b8ce 100644
--- a/src/core/SkPixmap.cpp
+++ b/src/core/SkPixmap.cpp
@@ -251,10 +251,6 @@ bool SkPixmap::scalePixels(const SkPixmap& dst, SkFilterQuality quality) const {
// Trick: if src and dst are both unpremul, we can give the correct result if we change both
// to premul (or opaque), since the draw will not try to blend or otherwise interpret
// the pixels' alpha.
- //
- // Today this works except in kHigh_SkFilterQuality, where we incorrectly clamp assuming the
- // colors are premul. TODO: fix the HQ mode.
- //
if (srcPtr->alphaType() == kUnpremul_SkAlphaType &&
dstPtr->alphaType() == kUnpremul_SkAlphaType)
{
diff --git a/src/shaders/SkImageShader.cpp b/src/shaders/SkImageShader.cpp
index ef13498ece..331dfb59ca 100644
--- a/src/shaders/SkImageShader.cpp
+++ b/src/shaders/SkImageShader.cpp
@@ -407,11 +407,13 @@ bool SkImageShader::onAppendStages(const StageRec& rec) const {
if (info.colorType() == kAlpha_8_SkColorType || info.alphaType() == kUnpremul_SkAlphaType) {
p->append(SkRasterPipeline::premul);
}
+#if defined(SK_LEGACY_HIGH_QUALITY_SCALING_CLAMP)
if (quality > kLow_SkFilterQuality) {
// Bicubic filtering naturally produces out of range values on both sides.
p->append(SkRasterPipeline::clamp_0);
p->append(SkRasterPipeline::clamp_a);
}
+#endif
append_gamut_transform(p, alloc, info.colorSpace(), rec.fDstCS, kPremul_SkAlphaType);
return true;
}