Disable blending when there is an effect that reads the dst and draw state blend is 1,0.

R=robertphillips@google.com

Review URL: https://codereview.chromium.org/15199008

git-svn-id: http://skia.googlecode.com/svn/trunk@9147 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrDrawState.cpp b/src/gpu/GrDrawState.cpp
index 591e157..a3850b0 100644
--- a/src/gpu/GrDrawState.cpp
+++ b/src/gpu/GrDrawState.cpp
@@ -371,6 +371,13 @@
             return  kCoverageAsAlpha_BlendOptFlag;
         }
     }
+    if (kOne_GrBlendCoeff == *srcCoeff &&
+        kZero_GrBlendCoeff == *dstCoeff &&
+        this->willEffectReadDstColor()) {
+        // In this case the shader will fully resolve the color, coverage, and dst and we don't
+        // need blending.
+        return kDisableBlend_BlendOptFlag;
+    }
     return kNone_BlendOpt;
 }
 
diff --git a/src/gpu/gl/GrGLProgramDesc.cpp b/src/gpu/gl/GrGLProgramDesc.cpp
index 532923a..e8812fa 100644
--- a/src/gpu/gl/GrGLProgramDesc.cpp
+++ b/src/gpu/gl/GrGLProgramDesc.cpp
@@ -178,8 +178,8 @@
                 desc->fFirstCoverageStage = firstCoverageStage;
             }
         } else if (readsDst &&
-                   kOne_GrBlendCoeff == drawState.getSrcBlendCoeff() &&
-                   kZero_GrBlendCoeff == drawState.getDstBlendCoeff()) {
+                   kOne_GrBlendCoeff == srcCoeff &&
+                   kZero_GrBlendCoeff == dstCoeff) {
             desc->fCoverageOutput = kCombineWithDst_CoverageOutput;
             desc->fFirstCoverageStage = firstCoverageStage;
         }