Update SkPaintToGrPaint to perform clamping via child FPs.
Previously, clamping would be a separate child processor on the GrPaint.
This CL consolidates all GrPaint-related color processors into a single
call to grPaint->addColorFragmentProcessor.
Change-Id: If726a1d216d55cb2d07cff92a7c4e7e2a873322d
Bug: skia:10217
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/301020
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/src/gpu/SkGr.cpp b/src/gpu/SkGr.cpp
index 46514d5..e7e181f 100644
--- a/src/gpu/SkGr.cpp
+++ b/src/gpu/SkGr.cpp
@@ -337,14 +337,9 @@
}
#endif
- if (paintFP) {
- grPaint->addColorFragmentProcessor(std::move(paintFP));
- }
-
if (GrColorTypeClampType(dstColorInfo.colorType()) == GrClampType::kManual) {
- if (grPaint->numColorFragmentProcessors()) {
- grPaint->addColorFragmentProcessor(
- GrClampFragmentProcessor::Make(/*inputFP=*/nullptr, /*clampToPremul=*/false));
+ if (paintFP != nullptr) {
+ paintFP = GrClampFragmentProcessor::Make(std::move(paintFP), /*clampToPremul=*/false);
} else {
auto color = grPaint->getColor4f();
grPaint->setColor4f({SkTPin(color.fR, 0.f, 1.f),
@@ -353,6 +348,11 @@
SkTPin(color.fA, 0.f, 1.f)});
}
}
+
+ if (paintFP) {
+ grPaint->addColorFragmentProcessor(std::move(paintFP));
+ }
+
return true;
}