Child fragment processors are now written as separate functions
Bug: skia:
Change-Id: Icbf8f542637a874b3e2d3513d932b39728fa5e77
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/229385
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
diff --git a/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp b/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp
index 2b6894a..986ad37 100644
--- a/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp
+++ b/src/gpu/glsl/GrGLSLFragmentShaderBuilder.cpp
@@ -156,6 +156,26 @@
this->codeAppendf("}");
}
+SkString GrGLSLFPFragmentBuilder::writeProcessorFunction(GrGLSLFragmentProcessor* fp,
+ GrGLSLFragmentProcessor::EmitArgs& args) {
+ this->onBeforeChildProcEmitCode();
+ this->nextStage();
+ this->codeAppendf("half4 %s;\n", args.fOutputColor);
+ fp->emitCode(args);
+ this->codeAppendf("return %s;", args.fOutputColor);
+ GrShaderVar inColor(args.fInputColor, kHalf4_GrSLType);
+ SkString result;
+ this->emitFunction(kHalf4_GrSLType,
+ "stage",
+ 1,
+ &inColor,
+ this->code().c_str(),
+ &result);
+ this->deleteStage();
+ this->onAfterChildProcEmitCode();
+ return result;
+}
+
const char* GrGLSLFragmentShaderBuilder::dstColor() {
SkDEBUGCODE(fHasReadDstColorThisStage_DebugOnly = true;)