SkSL 'key' variables can now be controlled by 'when' expressions

Bug: skia:8880
Change-Id: I075ef57035b37250196d85bc6767eb877e445aa2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/206698
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
diff --git a/src/gpu/effects/GrRectBlurEffect.cpp b/src/gpu/effects/GrRectBlurEffect.cpp
index 7ccaa34..b03c8f9 100644
--- a/src/gpu/effects/GrRectBlurEffect.cpp
+++ b/src/gpu/effects/GrRectBlurEffect.cpp
@@ -22,27 +22,27 @@
         GrGLSLFPFragmentBuilder* fragBuilder = args.fFragBuilder;
         const GrRectBlurEffect& _outer = args.fFp.cast<GrRectBlurEffect>();
         (void)_outer;
-        auto rect = _outer.rect();
+        auto rect = _outer.rect;
         (void)rect;
-        auto sigma = _outer.sigma();
+        auto sigma = _outer.sigma;
         (void)sigma;
         highPrecision = ((((abs(rect.left()) > 16000.0 || abs(rect.top()) > 16000.0) ||
                            abs(rect.right()) > 16000.0) ||
                           abs(rect.bottom()) > 16000.0) ||
                          abs(rect.right() - rect.left()) > 16000.0) ||
                         abs(rect.bottom() - rect.top()) > 16000.0;
-        fRectVar =
+        rectVar =
                 args.fUniformHandler->addUniform(kFragment_GrShaderFlag, kFloat4_GrSLType, "rect");
         if (!highPrecision) {
-            fProxyRectHalfVar = args.fUniformHandler->addUniform(kFragment_GrShaderFlag,
-                                                                 kHalf4_GrSLType, "proxyRectHalf");
+            proxyRectHalfVar = args.fUniformHandler->addUniform(kFragment_GrShaderFlag,
+                                                                kHalf4_GrSLType, "proxyRectHalf");
         }
         if (highPrecision) {
-            fProxyRectFloatVar = args.fUniformHandler->addUniform(
+            proxyRectFloatVar = args.fUniformHandler->addUniform(
                     kFragment_GrShaderFlag, kFloat4_GrSLType, "proxyRectFloat");
         }
-        fProfileSizeVar = args.fUniformHandler->addUniform(kFragment_GrShaderFlag, kHalf_GrSLType,
-                                                           "profileSize");
+        profileSizeVar = args.fUniformHandler->addUniform(kFragment_GrShaderFlag, kHalf_GrSLType,
+                                                          "profileSize");
         fragBuilder->codeAppendf(
                 "/* key */ bool highPrecision = %s;\n@if (highPrecision) {\n    float2 "
                 "translatedPos = sk_FragCoord.xy - %s.xy;\n    float width = %s.z - %s.x;\n    "
@@ -51,15 +51,15 @@
                 "1.0);\n    float2 wh = smallDims - float2(center, center);\n    half hcoord = "
                 "half((abs(translatedPos.x - 0.5 * width) - 0.5 * wh.x) / float(%s));\n    half "
                 "hlookup = texture(%s, float2(float(hcoord), 0.5)).",
-                (highPrecision ? "true" : "false"), args.fUniformHandler->getUniformCStr(fRectVar),
-                args.fUniformHandler->getUniformCStr(fRectVar),
-                args.fUniformHandler->getUniformCStr(fRectVar),
-                args.fUniformHandler->getUniformCStr(fRectVar),
-                args.fUniformHandler->getUniformCStr(fRectVar),
-                args.fUniformHandler->getUniformCStr(fProfileSizeVar),
-                args.fUniformHandler->getUniformCStr(fProfileSizeVar),
-                args.fUniformHandler->getUniformCStr(fProfileSizeVar),
-                args.fUniformHandler->getUniformCStr(fProfileSizeVar),
+                (highPrecision ? "true" : "false"), args.fUniformHandler->getUniformCStr(rectVar),
+                args.fUniformHandler->getUniformCStr(rectVar),
+                args.fUniformHandler->getUniformCStr(rectVar),
+                args.fUniformHandler->getUniformCStr(rectVar),
+                args.fUniformHandler->getUniformCStr(rectVar),
+                args.fUniformHandler->getUniformCStr(profileSizeVar),
+                args.fUniformHandler->getUniformCStr(profileSizeVar),
+                args.fUniformHandler->getUniformCStr(profileSizeVar),
+                args.fUniformHandler->getUniformCStr(profileSizeVar),
                 fragBuilder->getProgramBuilder()->samplerVariable(args.fTexSamplers[0]).c_str());
         fragBuilder->codeAppendf(
                 "%s.w;\n    half vcoord = half((abs(translatedPos.y - 0.5 * height) - 0.5 * wh.y) "
@@ -70,27 +70,27 @@
                 "%s);\n    half center = 2.0 * floor(%s / 2.0 + 0.25) - 1.0;\n    half2 wh = "
                 "smallDims - half2(center, center);\n    half ",
                 fragBuilder->getProgramBuilder()->samplerSwizzle(args.fTexSamplers[0]).c_str(),
-                args.fUniformHandler->getUniformCStr(fProfileSizeVar),
+                args.fUniformHandler->getUniformCStr(profileSizeVar),
                 fragBuilder->getProgramBuilder()->samplerVariable(args.fTexSamplers[0]).c_str(),
                 fragBuilder->getProgramBuilder()->samplerSwizzle(args.fTexSamplers[0]).c_str(),
-                args.fOutputColor, args.fInputColor, args.fUniformHandler->getUniformCStr(fRectVar),
-                args.fUniformHandler->getUniformCStr(fRectVar),
-                args.fUniformHandler->getUniformCStr(fRectVar),
-                args.fUniformHandler->getUniformCStr(fRectVar),
-                args.fUniformHandler->getUniformCStr(fRectVar),
-                args.fUniformHandler->getUniformCStr(fProfileSizeVar),
-                args.fUniformHandler->getUniformCStr(fProfileSizeVar),
-                args.fUniformHandler->getUniformCStr(fProfileSizeVar));
+                args.fOutputColor, args.fInputColor, args.fUniformHandler->getUniformCStr(rectVar),
+                args.fUniformHandler->getUniformCStr(rectVar),
+                args.fUniformHandler->getUniformCStr(rectVar),
+                args.fUniformHandler->getUniformCStr(rectVar),
+                args.fUniformHandler->getUniformCStr(rectVar),
+                args.fUniformHandler->getUniformCStr(profileSizeVar),
+                args.fUniformHandler->getUniformCStr(profileSizeVar),
+                args.fUniformHandler->getUniformCStr(profileSizeVar));
         fragBuilder->codeAppendf(
                 "hcoord = (abs(translatedPos.x - 0.5 * width) - 0.5 * wh.x) / %s;\n    half "
                 "hlookup = texture(%s, float2(float(hcoord), 0.5)).%s.w;\n    half vcoord = "
                 "(abs(translatedPos.y - 0.5 * height) - 0.5 * wh.y) / %s;\n    half vlookup = "
                 "texture(%s, float2(float(vcoord), 0.5)).%s.w;\n    %s = (%s * hlookup) * "
                 "vlookup;\n}\n",
-                args.fUniformHandler->getUniformCStr(fProfileSizeVar),
+                args.fUniformHandler->getUniformCStr(profileSizeVar),
                 fragBuilder->getProgramBuilder()->samplerVariable(args.fTexSamplers[0]).c_str(),
                 fragBuilder->getProgramBuilder()->samplerSwizzle(args.fTexSamplers[0]).c_str(),
-                args.fUniformHandler->getUniformCStr(fProfileSizeVar),
+                args.fUniformHandler->getUniformCStr(profileSizeVar),
                 fragBuilder->getProgramBuilder()->samplerVariable(args.fTexSamplers[0]).c_str(),
                 fragBuilder->getProgramBuilder()->samplerSwizzle(args.fTexSamplers[0]).c_str(),
                 args.fOutputColor, args.fInputColor);
@@ -100,28 +100,28 @@
     void onSetData(const GrGLSLProgramDataManager& pdman,
                    const GrFragmentProcessor& _proc) override {
         const GrRectBlurEffect& _outer = _proc.cast<GrRectBlurEffect>();
-        { pdman.set4fv(fRectVar, 1, reinterpret_cast<const float*>(&(_outer.rect()))); }
-        UniformHandle& rect = fRectVar;
+        { pdman.set4fv(rectVar, 1, reinterpret_cast<const float*>(&(_outer.rect))); }
+        UniformHandle& rect = rectVar;
         (void)rect;
-        auto sigma = _outer.sigma();
+        auto sigma = _outer.sigma;
         (void)sigma;
         GrSurfaceProxy& blurProfileProxy = *_outer.textureSampler(0).proxy();
         GrTexture& blurProfile = *blurProfileProxy.peekTexture();
         (void)blurProfile;
-        UniformHandle& proxyRectHalf = fProxyRectHalfVar;
+        UniformHandle& proxyRectHalf = proxyRectHalfVar;
         (void)proxyRectHalf;
-        UniformHandle& proxyRectFloat = fProxyRectFloatVar;
+        UniformHandle& proxyRectFloat = proxyRectFloatVar;
         (void)proxyRectFloat;
-        UniformHandle& profileSize = fProfileSizeVar;
+        UniformHandle& profileSize = profileSizeVar;
         (void)profileSize;
 
         pdman.set1f(profileSize, SkScalarCeilToScalar(6 * sigma));
     }
     bool highPrecision = false;
-    UniformHandle fProxyRectHalfVar;
-    UniformHandle fProxyRectFloatVar;
-    UniformHandle fProfileSizeVar;
-    UniformHandle fRectVar;
+    UniformHandle proxyRectHalfVar;
+    UniformHandle proxyRectFloatVar;
+    UniformHandle profileSizeVar;
+    UniformHandle rectVar;
 };
 GrGLSLFragmentProcessor* GrRectBlurEffect::onCreateGLSLInstance() const {
     return new GrGLSLRectBlurEffect();
@@ -131,23 +131,23 @@
 bool GrRectBlurEffect::onIsEqual(const GrFragmentProcessor& other) const {
     const GrRectBlurEffect& that = other.cast<GrRectBlurEffect>();
     (void)that;
-    if (fRect != that.fRect) return false;
-    if (fSigma != that.fSigma) return false;
-    if (fBlurProfile != that.fBlurProfile) return false;
+    if (rect != that.rect) return false;
+    if (sigma != that.sigma) return false;
+    if (blurProfile != that.blurProfile) return false;
     return true;
 }
 GrRectBlurEffect::GrRectBlurEffect(const GrRectBlurEffect& src)
         : INHERITED(kGrRectBlurEffect_ClassID, src.optimizationFlags())
-        , fRect(src.fRect)
-        , fSigma(src.fSigma)
-        , fBlurProfile(src.fBlurProfile) {
+        , rect(src.rect)
+        , sigma(src.sigma)
+        , blurProfile(src.blurProfile) {
     this->setTextureSamplerCnt(1);
 }
 std::unique_ptr<GrFragmentProcessor> GrRectBlurEffect::clone() const {
     return std::unique_ptr<GrFragmentProcessor>(new GrRectBlurEffect(*this));
 }
 const GrFragmentProcessor::TextureSampler& GrRectBlurEffect::onTextureSampler(int index) const {
-    return IthTextureSampler(index, fBlurProfile);
+    return IthTextureSampler(index, blurProfile);
 }
 GR_DEFINE_FRAGMENT_PROCESSOR_TEST(GrRectBlurEffect);
 #if GR_TEST_UTILS