Add support for an inputFP in SkMixerColorFilter::asFragmentProcessor.
Change-Id: Ib7a0b26568947bc0ec377a6f7f81ddac2c7c2528
Bug: skia:10217
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/300649
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
diff --git a/src/gpu/effects/generated/GrMixerEffect.cpp b/src/gpu/effects/generated/GrMixerEffect.cpp
index 20c43f2..f48b2e6 100644
--- a/src/gpu/effects/generated/GrMixerEffect.cpp
+++ b/src/gpu/effects/generated/GrMixerEffect.cpp
@@ -27,20 +27,30 @@
(void)weight;
weightVar = args.fUniformHandler->addUniform(&_outer, kFragment_GrShaderFlag,
kHalf_GrSLType, "weight");
- SkString _input1284(args.fInputColor);
- SkString _sample1284;
- _sample1284 = this->invokeChild(_outer.fp0_index, _input1284.c_str(), args);
- SkString _input1309(args.fInputColor);
- SkString _sample1309;
- if (_outer.fp1_index >= 0) {
- _sample1309 = this->invokeChild(_outer.fp1_index, _input1309.c_str(), args);
+ SkString _input1335(args.fInputColor);
+ SkString _sample1335;
+ if (_outer.inputFP_index >= 0) {
+ _sample1335 = this->invokeChild(_outer.inputFP_index, _input1335.c_str(), args);
} else {
- _sample1309.swap(_input1309);
+ _sample1335.swap(_input1335);
}
fragBuilder->codeAppendf(
- R"SkSL(%s = mix(%s, %s, %s);
+ R"SkSL(half4 inColor = %s;)SkSL", _sample1335.c_str());
+ SkString _input1386("inColor");
+ SkString _sample1386;
+ _sample1386 = this->invokeChild(_outer.fp0_index, _input1386.c_str(), args);
+ SkString _input1408("inColor");
+ SkString _sample1408;
+ if (_outer.fp1_index >= 0) {
+ _sample1408 = this->invokeChild(_outer.fp1_index, _input1408.c_str(), args);
+ } else {
+ _sample1408.swap(_input1408);
+ }
+ fragBuilder->codeAppendf(
+ R"SkSL(
+%s = mix(%s, %s, %s);
)SkSL",
- args.fOutputColor, _sample1284.c_str(), _sample1309.c_str(),
+ args.fOutputColor, _sample1386.c_str(), _sample1408.c_str(),
args.fUniformHandler->getUniformCStr(weightVar));
}
@@ -65,6 +75,9 @@
}
GrMixerEffect::GrMixerEffect(const GrMixerEffect& src)
: INHERITED(kGrMixerEffect_ClassID, src.optimizationFlags()), weight(src.weight) {
+ if (src.inputFP_index >= 0) {
+ inputFP_index = this->cloneAndRegisterChildProcessor(src.childProcessor(src.inputFP_index));
+ }
{ fp0_index = this->cloneAndRegisterChildProcessor(src.childProcessor(src.fp0_index)); }
if (src.fp1_index >= 0) {
fp1_index = this->cloneAndRegisterChildProcessor(src.childProcessor(src.fp1_index));