Update SkColorFilterShader to use an inputFP instead of RunInSeries.
Change-Id: I22a6b110c414fe3d8942b2c890c1339de45c39e6
Bug: skia:10217
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/298984
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
diff --git a/src/shaders/SkColorFilterShader.cpp b/src/shaders/SkColorFilterShader.cpp
index c3cf244..95bdcc1 100644
--- a/src/shaders/SkColorFilterShader.cpp
+++ b/src/shaders/SkColorFilterShader.cpp
@@ -93,21 +93,19 @@
std::unique_ptr<GrFragmentProcessor> SkColorFilterShader::asFragmentProcessor(
const GrFPArgs& args) const {
- auto fp1 = as_SB(fShader)->asFragmentProcessor(args);
- if (!fp1) {
+ auto shaderFP = as_SB(fShader)->asFragmentProcessor(args);
+ if (!shaderFP) {
return nullptr;
}
// TODO I guess, but it shouldn't come up as used today.
SkASSERT(fAlpha == 1.0f);
- auto fp2 = fFilter->asFragmentProcessor(args.fContext, *args.fDstColorInfo);
- if (!fp2) {
- return fp1;
- }
-
- std::unique_ptr<GrFragmentProcessor> fpSeries[] = { std::move(fp1), std::move(fp2) };
- return GrFragmentProcessor::RunInSeries(fpSeries, 2);
+ auto [success, fp] = fFilter->asFragmentProcessor(std::move(shaderFP), args.fContext,
+ *args.fDstColorInfo);
+ // If the filter FP could not be created, we still want to return the shader FP, so checking
+ // success can be omitted here.
+ return std::move(fp);
}
#endif