Don't compare coord change matrices to determine effect compatibility when using explicit local coords.

R=robertphillips@google.com

Author: bsalomon@google.com

Review URL: https://codereview.chromium.org/438053002
diff --git a/src/gpu/GrDrawState.h b/src/gpu/GrDrawState.h
index d1b7a66..b894cb5 100644
--- a/src/gpu/GrDrawState.h
+++ b/src/gpu/GrDrawState.h
@@ -893,13 +893,17 @@
             fDrawFace != that.fDrawFace) {
             return false;
         }
+
+        bool explicitLocalCoords = this->hasLocalCoordAttribute();
         for (int i = 0; i < fColorStages.count(); i++) {
-            if (fColorStages[i] != that.fColorStages[i]) {
+            if (!GrEffectStage::AreCompatible(fColorStages[i], that.fColorStages[i],
+                explicitLocalCoords)) {
                 return false;
             }
         }
         for (int i = 0; i < fCoverageStages.count(); i++) {
-            if (fCoverageStages[i] != that.fCoverageStages[i]) {
+            if (!GrEffectStage::AreCompatible(fCoverageStages[i], that.fCoverageStages[i],
+                explicitLocalCoords)) {
                 return false;
             }
         }
diff --git a/src/gpu/gl/GrGLProgramEffects.cpp b/src/gpu/gl/GrGLProgramEffects.cpp
index cff31e2..3fa4f15 100644
--- a/src/gpu/gl/GrGLProgramEffects.cpp
+++ b/src/gpu/gl/GrGLProgramEffects.cpp
@@ -90,8 +90,11 @@
 SkMatrix get_transform_matrix(const GrDrawEffect& drawEffect, int transformIdx) {
     const GrCoordTransform& coordTransform = drawEffect.effect()->coordTransform(transformIdx);
     SkMatrix combined;
-    if (kLocal_GrCoordSet == coordTransform.sourceCoords() &&
-        !drawEffect.programHasExplicitLocalCoords()) {
+
+    if (kLocal_GrCoordSet == coordTransform.sourceCoords()) {
+        // If we have explicit local coords then we shouldn't need a coord change.
+        SkASSERT(!drawEffect.programHasExplicitLocalCoords() ||
+                 drawEffect.getCoordChangeMatrix().isIdentity());
         combined.setConcat(coordTransform.getMatrix(), drawEffect.getCoordChangeMatrix());
     } else {
         combined = coordTransform.getMatrix();