diff options
author | 2016-09-22 14:50:58 -0700 | |
---|---|---|
committer | 2016-09-22 14:50:58 -0700 | |
commit | 5a9c2f110e4f1a78d9bfedcf708168909706d7fd (patch) | |
tree | 615e7b191814888f8cb88043d85bf9b5472eff5f | |
parent | c68e8924c57487f39d5647f6e68bde522940b728 (diff) |
sRGB cleanup in image filters. Ensure we configure paints correctly.
Net effect of the two calls is (basically) the same, but given that we're
propagating from isGammaCorrect on the DC, I figured it makes sense to use
the same-named API.
More importantly, a couple places had slipped through, so those draws would
ignore sRGB-ness of inputs entirely.
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2357413004
Review-Url: https://codereview.chromium.org/2357413004
-rw-r--r-- | src/core/SkImageFilter.cpp | 1 | ||||
-rw-r--r-- | src/effects/SkDisplacementMapEffect.cpp | 1 | ||||
-rw-r--r-- | src/effects/SkLightingImageFilter.cpp | 2 | ||||
-rw-r--r-- | src/effects/SkMorphologyImageFilter.cpp | 4 | ||||
-rw-r--r-- | src/effects/SkXfermodeImageFilter.cpp | 2 |
5 files changed, 6 insertions, 4 deletions
diff --git a/src/core/SkImageFilter.cpp b/src/core/SkImageFilter.cpp index 9ec6f2c28f..be48ca17ba 100644 --- a/src/core/SkImageFilter.cpp +++ b/src/core/SkImageFilter.cpp @@ -292,6 +292,7 @@ sk_sp<SkSpecialImage> SkImageFilter::DrawWithFP(GrContext* context, if (!drawContext) { return nullptr; } + paint.setGammaCorrect(drawContext->isGammaCorrect()); SkIRect dstIRect = SkIRect::MakeWH(bounds.width(), bounds.height()); SkRect srcRect = SkRect::Make(bounds); diff --git a/src/effects/SkDisplacementMapEffect.cpp b/src/effects/SkDisplacementMapEffect.cpp index 8fc0ec1366..8d068072a7 100644 --- a/src/effects/SkDisplacementMapEffect.cpp +++ b/src/effects/SkDisplacementMapEffect.cpp @@ -344,6 +344,7 @@ sk_sp<SkSpecialImage> SkDisplacementMapEffect::onFilterImage(SkSpecialImage* sou if (!drawContext) { return nullptr; } + paint.setGammaCorrect(drawContext->isGammaCorrect()); drawContext->drawRect(GrNoClip(), paint, matrix, SkRect::Make(colorBounds)); diff --git a/src/effects/SkLightingImageFilter.cpp b/src/effects/SkLightingImageFilter.cpp index 138ba8bdc4..66d3a17883 100644 --- a/src/effects/SkLightingImageFilter.cpp +++ b/src/effects/SkLightingImageFilter.cpp @@ -392,7 +392,7 @@ void SkLightingImageFilterInternal::drawRect(GrDrawContext* drawContext, const SkIRect& bounds) const { SkRect srcRect = dstRect.makeOffset(SkIntToScalar(bounds.x()), SkIntToScalar(bounds.y())); GrPaint paint; - paint.setAllowSRGBInputs(drawContext->isGammaCorrect()); + paint.setGammaCorrect(drawContext->isGammaCorrect()); sk_sp<GrFragmentProcessor> fp(this->makeFragmentProcessor(src, matrix, srcBounds, boundaryMode)); paint.addColorFragmentProcessor(std::move(fp)); diff --git a/src/effects/SkMorphologyImageFilter.cpp b/src/effects/SkMorphologyImageFilter.cpp index b8d4884239..82e47c5081 100644 --- a/src/effects/SkMorphologyImageFilter.cpp +++ b/src/effects/SkMorphologyImageFilter.cpp @@ -395,7 +395,7 @@ static void apply_morphology_rect(GrDrawContext* drawContext, float bounds[2], Gr1DKernelEffect::Direction direction) { GrPaint paint; - paint.setAllowSRGBInputs(drawContext->isGammaCorrect()); + paint.setGammaCorrect(drawContext->isGammaCorrect()); paint.addColorFragmentProcessor(GrMorphologyEffect::Make(texture, direction, radius, @@ -415,7 +415,7 @@ static void apply_morphology_rect_no_bounds(GrDrawContext* drawContext, GrMorphologyEffect::MorphologyType morphType, Gr1DKernelEffect::Direction direction) { GrPaint paint; - paint.setAllowSRGBInputs(drawContext->isGammaCorrect()); + paint.setGammaCorrect(drawContext->isGammaCorrect()); paint.addColorFragmentProcessor(GrMorphologyEffect::Make(texture, direction, radius, morphType)); paint.setPorterDuffXPFactory(SkXfermode::kSrc_Mode); diff --git a/src/effects/SkXfermodeImageFilter.cpp b/src/effects/SkXfermodeImageFilter.cpp index 62daa5ae3b..c7e4143e11 100644 --- a/src/effects/SkXfermodeImageFilter.cpp +++ b/src/effects/SkXfermodeImageFilter.cpp @@ -250,7 +250,7 @@ sk_sp<SkSpecialImage> SkXfermodeImageFilter::filterImageGPU( if (!drawContext) { return nullptr; } - paint.setAllowSRGBInputs(drawContext->isGammaCorrect()); + paint.setGammaCorrect(drawContext->isGammaCorrect()); SkMatrix matrix; matrix.setTranslate(SkIntToScalar(-bounds.left()), SkIntToScalar(-bounds.top())); |