Converted GrGaussianConvolutionFragmentProcessor to SkSL DSL

Change-Id: I75d29c0b93954fe72dd556d3ab3d8987fff38eaa
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/375778
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
diff --git a/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp b/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp
index a9c33f4..449e5d6 100644
--- a/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp
+++ b/src/gpu/effects/GrGaussianConvolutionFragmentProcessor.cpp
@@ -15,6 +15,7 @@
 #include "src/gpu/glsl/GrGLSLFragmentShaderBuilder.h"
 #include "src/gpu/glsl/GrGLSLProgramDataManager.h"
 #include "src/gpu/glsl/GrGLSLUniformHandler.h"
+#include "src/sksl/dsl/priv/DSLFPs.h"
 
 // For brevity
 using UniformHandle = GrGLSLProgramDataManager::UniformHandle;
@@ -40,37 +41,34 @@
     const GrGaussianConvolutionFragmentProcessor& ce =
             args.fFp.cast<GrGaussianConvolutionFragmentProcessor>();
 
-    GrGLSLUniformHandler* uniformHandler = args.fUniformHandler;
-
-    const char* inc;
-    fIncrementUni = uniformHandler->addUniform(&ce, kFragment_GrShaderFlag, kHalf2_GrSLType,
-                                               "Increment", &inc);
+    using namespace SkSL::dsl;
+    StartFragmentProcessor(this, &args);
+    Var increment(kUniform_Modifier, kHalf2, "Increment");
+    fIncrementUni = VarUniformHandle(increment);
 
     int width = SkGpuBlurUtils::KernelWidth(ce.fRadius);
 
     int arrayCount = (width + 3) / 4;
     SkASSERT(4 * arrayCount >= width);
 
-    const char* kernel;
-    fKernelUni = uniformHandler->addUniformArray(&ce, kFragment_GrShaderFlag, kHalf4_GrSLType,
-                                                 "Kernel", arrayCount, &kernel);
+    Var kernel(kUniform_Modifier, Array(kHalf4, arrayCount), "Kernel");
+    fKernelUni = VarUniformHandle(kernel);
 
-    GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder;
+    Var color(kHalf4, "color");
+    Declare(color, Half4(0));
 
-    fragBuilder->codeAppendf("half4 color = half4(0);");
-
-    fragBuilder->codeAppendf("float2 coord = %s - %d.0 * %s;", args.fSampleCoord, ce.fRadius, inc);
+    Var coord(kFloat2, "coord");
+    Declare(coord, sk_SampleCoord() - ce.fRadius * increment);
 
     // Manually unroll loop because some drivers don't; yields 20-30% speedup.
     for (int i = 0; i < width; i++) {
-        auto sample = this->invokeChild(/*childIndex=*/0, args, "coord");
         if (i != 0) {
-            fragBuilder->codeAppendf("coord += %s;", inc);
+            coord += increment;
         }
-        fragBuilder->codeAppendf("color += %s * %s[%d][%d];",
-                                 sample.c_str(), kernel, i / 4, i & 0x3);
+        color += SampleChild(/*index=*/0, coord) * kernel[i / 4][i & 0x3];
     }
-    fragBuilder->codeAppendf("return color;");
+    Return(color);
+    EndFragmentProcessor();
 }
 
 void GrGaussianConvolutionFragmentProcessor::Impl::onSetData(const GrGLSLProgramDataManager& pdman,