Don't emit dead code in circle shader when not using distance vectors.
authorbsalomon <bsalomon@google.com>
Thu, 18 Aug 2016 15:32:27 +0000 (08:32 -0700)
committerCommit bot <commit-bot@chromium.org>
Thu, 18 Aug 2016 15:32:28 +0000 (08:32 -0700)
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2254103004

Review-Url: https://codereview.chromium.org/2254103004

src/gpu/GrOvalRenderer.cpp

index 622df15..079c261 100644 (file)
@@ -145,19 +145,18 @@ private:
                                          v.fsIn(), v.fsIn());
                 fragBuilder->codeAppend("float innerAlpha = clamp(distanceToInnerEdge, 0.0, 1.0);");
                 fragBuilder->codeAppend("edgeAlpha *= innerAlpha;");
-            } else {
-                fragBuilder->codeAppend("float distanceToInnerEdge = 0.0;");
             }
 
             if (args.fDistanceVectorName) {
+                const char* innerEdgeDistance = cgp.fStroke ? "distanceToInnerEdge" : "0.0";
                 fragBuilder->codeAppend ("if (d == 0.0) {"); // if on the center of the circle
                 fragBuilder->codeAppendf("    %s = vec4(1.0, 0.0, distanceToOuterEdge, "
-                                         "distanceToInnerEdge);", // no normalize
-                                         args.fDistanceVectorName);
+                                         "%s);", // no normalize
+                                         args.fDistanceVectorName, innerEdgeDistance);
                 fragBuilder->codeAppend ("} else {");
                 fragBuilder->codeAppendf("    %s = vec4(normalize(%s.xy), distanceToOuterEdge, "
-                                         "distanceToInnerEdge);",
-                                         args.fDistanceVectorName, v.fsIn());
+                                         "%s);",
+                                         args.fDistanceVectorName, v.fsIn(), innerEdgeDistance);
                 fragBuilder->codeAppend ("}");
             }