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/effects/GrXfermodeFragmentProcessor.cpp b/src/gpu/effects/GrXfermodeFragmentProcessor.cpp
index 1424939..e4f4c0b 100644
--- a/src/gpu/effects/GrXfermodeFragmentProcessor.cpp
+++ b/src/gpu/effects/GrXfermodeFragmentProcessor.cpp
@@ -220,20 +220,18 @@
}
// declare outputColor and emit the code for each of the two children
- SkString srcColor("xfer_src");
- this->emitChild(0, inputColor, &srcColor, args);
+ const char* srcColor = "xfer_src";
+ fragBuilder->codeAppendf("half4 %s;\n", srcColor);
+ this->invokeChild(0, inputColor, srcColor, args);
- SkString dstColor("xfer_dst");
- this->emitChild(1, inputColor, &dstColor, args);
+ const char* dstColor = "xfer_dst";
+ fragBuilder->codeAppendf("half4 %s;\n", dstColor);
+ this->invokeChild(1, inputColor, dstColor, args);
// emit blend code
SkBlendMode mode = cs.getMode();
fragBuilder->codeAppendf("// Compose Xfer Mode: %s\n", SkBlendMode_Name(mode));
- GrGLSLBlend::AppendMode(fragBuilder,
- srcColor.c_str(),
- dstColor.c_str(),
- args.fOutputColor,
- mode);
+ GrGLSLBlend::AppendMode(fragBuilder, srcColor, dstColor, args.fOutputColor, mode);
// re-multiply the output color by the input color's alpha
if (args.fInputColor) {
@@ -438,16 +436,18 @@
SkBlendMode mode = args.fFp.cast<ComposeOneFragmentProcessor>().mode();
ComposeOneFragmentProcessor::Child child =
args.fFp.cast<ComposeOneFragmentProcessor>().child();
- SkString childColor("child");
- this->emitChild(0, &childColor, args);
+ const char* childColor = "child";
+ fragBuilder->codeAppendf("half4 %s;\n", childColor);
+ this->invokeChild(0, childColor, args);
// emit blend code
fragBuilder->codeAppendf("// Compose Xfer Mode: %s\n", SkBlendMode_Name(mode));
- const char* childStr = childColor.c_str();
if (ComposeOneFragmentProcessor::kDst_Child == child) {
- GrGLSLBlend::AppendMode(fragBuilder, args.fInputColor, childStr, args.fOutputColor, mode);
+ GrGLSLBlend::AppendMode(fragBuilder, args.fInputColor, childColor, args.fOutputColor,
+ mode);
} else {
- GrGLSLBlend::AppendMode(fragBuilder, childStr, args.fInputColor, args.fOutputColor, mode);
+ GrGLSLBlend::AppendMode(fragBuilder, childColor, args.fInputColor, args.fOutputColor,
+ mode);
}
}