Move paint modulation after color space xform when drawing images
The paint color has already been transformed to the destination color
space, so this prevents a double-transform when doing alpha-image draws.
Bug: skia:10555
Change-Id: I9d026d231199b22d9a67bc92bfe9a615295490b8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/306855
Reviewed-by: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
diff --git a/src/gpu/SkGpuDevice_drawTexture.cpp b/src/gpu/SkGpuDevice_drawTexture.cpp
index e06e8b1..9fbdca1 100644
--- a/src/gpu/SkGpuDevice_drawTexture.cpp
+++ b/src/gpu/SkGpuDevice_drawTexture.cpp
@@ -501,15 +501,12 @@
} else {
fp = producer->createFragmentProcessor(textureMatrix, subset, domain, sampler);
}
- if (fp) {
- fp = GrBlendFragmentProcessor::Make(std::move(fp), nullptr, SkBlendMode::kModulate);
- }
- fp = GrColorSpaceXformEffect::Make(std::move(fp),
- producer->colorSpace(), producer->alphaType(),
- rtc->colorInfo().colorSpace(), kPremul_SkAlphaType);
if (!fp) {
return;
}
+ fp = GrColorSpaceXformEffect::Make(std::move(fp), producer->colorSpace(), producer->alphaType(),
+ rtc->colorInfo().colorSpace(), kPremul_SkAlphaType);
+ fp = GrBlendFragmentProcessor::Make(std::move(fp), nullptr, SkBlendMode::kModulate);
GrPaint grPaint;
if (!SkPaintToGrPaintWithTexture(context, rtc->colorInfo(), paint, matrixProvider,