Remove reliance on constant propagation from Ellipse effect.

Being able to copy an sk_Caps bit into a boolean with a nicer name is
helpful, but it relies on the optimizer. Using the sk_Caps value
directly will work even if the optimizer is off.

Change-Id: I3d976f13c435cf471ab764917f78d27dacbf331c
Bug: skia:11378
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/377842
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
diff --git a/src/gpu/effects/GrEllipseEffect.fp b/src/gpu/effects/GrEllipseEffect.fp
index 4d52330..f2fd9dc 100644
--- a/src/gpu/effects/GrEllipseEffect.fp
+++ b/src/gpu/effects/GrEllipseEffect.fp
@@ -20,8 +20,7 @@
 // The last two terms can underflow when float != fp32, so we also provide a workaround.
 uniform float4 ellipse;
 
-bool medPrecision = !sk_Caps.floatIs32Bits;
-layout(when=medPrecision) uniform float2 scale;
+layout(when=!sk_Caps.floatIs32Bits) uniform float2 scale;
 
 @make {
     static GrFPResult Make(std::unique_ptr<GrFragmentProcessor> inputFP, GrClipEdgeType edgeType,
@@ -82,7 +81,7 @@
     // that is normalized by the larger radius or 128, whichever is smaller. The scale uniform will
     // be scale, 1/scale. The inverse squared radii uniform values are already in this normalized space.
     // The center is not.
-    @if (medPrecision) {
+    @if (!sk_Caps.floatIs32Bits) {
         d *= scale.y;
     }
     float2 Z = d * ellipse.zw;
@@ -91,13 +90,13 @@
     // grad_dot is the squared length of the gradient of the implicit.
     float grad_dot = 4 * dot(Z, Z);
     // Avoid calling inversesqrt on zero.
-    @if (medPrecision) {
+    @if (!sk_Caps.floatIs32Bits) {
         grad_dot = max(grad_dot, 6.1036e-5);
     } else {
         grad_dot = max(grad_dot, 1.1755e-38);
     }
     float approx_dist = implicit * inversesqrt(grad_dot);
-    @if (medPrecision) {
+    @if (!sk_Caps.floatIs32Bits) {
         approx_dist *= scale.x;
     }
 
diff --git a/src/gpu/effects/generated/GrEllipseEffect.cpp b/src/gpu/effects/generated/GrEllipseEffect.cpp
index 961da12..2649f1e 100644
--- a/src/gpu/effects/generated/GrEllipseEffect.cpp
+++ b/src/gpu/effects/generated/GrEllipseEffect.cpp
@@ -31,31 +31,29 @@
         auto radii = _outer.radii;
         (void)radii;
         prevRadii = float2(-1.0);
-        medPrecision = !sk_Caps.floatIs32Bits;
         ellipseVar = args.fUniformHandler->addUniform(&_outer, kFragment_GrShaderFlag,
                                                       kFloat4_GrSLType, "ellipse");
-        if (medPrecision) {
+        if (!sk_Caps.floatIs32Bits) {
             scaleVar = args.fUniformHandler->addUniform(&_outer, kFragment_GrShaderFlag,
                                                         kFloat2_GrSLType, "scale");
         }
         fragBuilder->codeAppendf(
                 R"SkSL(float2 prevCenter;
 float2 prevRadii = float2(%f, %f);
-bool medPrecision = %s;
 float2 d = sk_FragCoord.xy - %s.xy;
-@if (medPrecision) {
+@if (!sk_Caps.floatIs32Bits) {
     d *= %s.y;
 }
 float2 Z = d * %s.zw;
 float implicit = dot(Z, d) - 1.0;
 float grad_dot = 4.0 * dot(Z, Z);
-@if (medPrecision) {
+@if (!sk_Caps.floatIs32Bits) {
     grad_dot = max(grad_dot, 6.1036000261083245e-05);
 } else {
     grad_dot = max(grad_dot, 1.1754999560161448e-38);
 }
 float approx_dist = implicit * inversesqrt(grad_dot);
-@if (medPrecision) {
+@if (!sk_Caps.floatIs32Bits) {
     approx_dist *= %s.x;
 }
 half alpha;
@@ -75,8 +73,7 @@
     default:
         discard;
 })SkSL",
-                prevRadii.fX, prevRadii.fY, (medPrecision ? "true" : "false"),
-                args.fUniformHandler->getUniformCStr(ellipseVar),
+                prevRadii.fX, prevRadii.fY, args.fUniformHandler->getUniformCStr(ellipseVar),
                 scaleVar.isValid() ? args.fUniformHandler->getUniformCStr(scaleVar) : "float2(0)",
                 args.fUniformHandler->getUniformCStr(ellipseVar),
                 scaleVar.isValid() ? args.fUniformHandler->getUniformCStr(scaleVar) : "float2(0)",
@@ -131,7 +128,6 @@
     }
     SkPoint prevCenter = float2(0);
     SkPoint prevRadii = float2(0);
-    bool medPrecision = false;
     UniformHandle ellipseVar;
     UniformHandle scaleVar;
 };