Child fragment processors are now written as separate functions
instead of inline
Bug: skia:
Change-Id: I3c6c876fea9cfcc311fc09c0fdf0375b776004aa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/210632
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
diff --git a/src/gpu/GrFragmentProcessor.cpp b/src/gpu/GrFragmentProcessor.cpp
index 7205f08..1cc5e71 100644
--- a/src/gpu/GrFragmentProcessor.cpp
+++ b/src/gpu/GrFragmentProcessor.cpp
@@ -241,7 +241,7 @@
public:
void emitCode(EmitArgs& args) override {
GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder;
- this->emitChild(0, args);
+ this->invokeChild(0, args);
fragBuilder->codeAppendf("%s.rgb *= %s.rgb;", args.fOutputColor,
args.fInputColor);
fragBuilder->codeAppendf("%s *= %s.a;", args.fOutputColor, args.fInputColor);
@@ -318,15 +318,19 @@
void emitCode(EmitArgs& args) override {
// First guy's input might be nil.
SkString temp("out0");
- this->emitChild(0, args.fInputColor, &temp, args);
+ GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder;
+ fragBuilder->codeAppendf("half4 %s;\n", temp.c_str());
+ this->invokeChild(0, args.fInputColor, temp.c_str(), args);
SkString input = temp;
for (int i = 1; i < this->numChildProcessors() - 1; ++i) {
temp.printf("out%d", i);
- this->emitChild(i, input.c_str(), &temp, args);
+ fragBuilder->codeAppendf("half4 %s;\n", temp.c_str());
+ this->invokeChild(i, input.c_str(), temp.c_str(), args);
input = temp;
}
// Last guy writes to our output variable.
- this->emitChild(this->numChildProcessors() - 1, input.c_str(), args);
+ this->invokeChild(this->numChildProcessors() - 1, input.c_str(),
+ args.fOutputColor, args);
}
};
return new GLFP;