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);
         }
     }