aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrColorSpaceXform.cpp
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2017-01-04 12:54:07 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-01-04 18:28:26 +0000
commit0bd783f951a004ccca175b166f2b30a0fd18a6f6 (patch)
tree3d0188619d3b4524e506e3a174ebbb61650db682 /src/gpu/GrColorSpaceXform.cpp
parente151bdb357c21b833718b369fe8fbd7fd57ae474 (diff)
Clamp premul colors correctly after a gamut change
Textures that we sample on the GPU are always premul, so we should actually clamp to alpha. Colors that are xformed on the CPU are always unpremul, so clamping to [0,1] is correct. Add a comment explaining that. BUG=skia: Change-Id: I180f2d410f24afc78bd03ab8636a83fb443d68e2 Reviewed-on: https://skia-review.googlesource.com/6581 Commit-Queue: Brian Osman <brianosman@google.com> Reviewed-by: Mike Klein <mtklein@chromium.org>
Diffstat (limited to 'src/gpu/GrColorSpaceXform.cpp')
-rw-r--r--src/gpu/GrColorSpaceXform.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/gpu/GrColorSpaceXform.cpp b/src/gpu/GrColorSpaceXform.cpp
index cd8dc3340e..7690297176 100644
--- a/src/gpu/GrColorSpaceXform.cpp
+++ b/src/gpu/GrColorSpaceXform.cpp
@@ -121,6 +121,7 @@ bool GrColorSpaceXform::Equals(const GrColorSpaceXform* a, const GrColorSpaceXfo
GrColor4f GrColorSpaceXform::apply(const GrColor4f& srcColor) {
GrColor4f result;
fSrcToDst.mapScalars(srcColor.fRGBA, result.fRGBA);
+ // We always operate on unpremul colors, so clamp to [0,1].
for (int i = 0; i < 4; ++i) {
result.fRGBA[i] = SkTPin(result.fRGBA[i], 0.0f, 1.0f);
}