Index: src/gpu/GrDrawState.cpp |
diff --git a/src/gpu/GrDrawState.cpp b/src/gpu/GrDrawState.cpp |
index 02c7920f5d07c778870ae7ef972b733316c61c73..1b40642251e87219f321d6a3e6aeeb836db6e84c 100644 |
--- a/src/gpu/GrDrawState.cpp |
+++ b/src/gpu/GrDrawState.cpp |
@@ -339,8 +339,7 @@ GrDrawState::BlendOptFlags GrDrawState::calcBlendOpts(bool forceCoverage, |
// (0,1). The same applies when coverage is known to be 0. |
if ((kZero_GrBlendCoeff == *srcCoeff && dstCoeffIsOne) || covIsZero) { |
if (this->getStencil().doesWrite()) { |
- return kDisableBlend_BlendOptFlag | |
- kEmitCoverage_BlendOptFlag; |
+ return kEmitCoverage_BlendOptFlag; |
} else { |
return kSkipDraw_BlendOptFlag; |
} |
@@ -359,13 +358,14 @@ GrDrawState::BlendOptFlags GrDrawState::calcBlendOpts(bool forceCoverage, |
if (kOne_GrBlendCoeff == *srcCoeff) { |
// if there is no coverage and coeffs are (1,0) then we |
// won't need to read the dst at all, it gets replaced by src |
- return kDisableBlend_BlendOptFlag; |
+ *dstCoeff = kZero_GrBlendCoeff; |
+ return kNone_BlendOpt; |
} else if (kZero_GrBlendCoeff == *srcCoeff) { |
// if the op is "clear" then we don't need to emit a color |
// or blend, just write transparent black into the dst. |
*srcCoeff = kOne_GrBlendCoeff; |
*dstCoeff = kZero_GrBlendCoeff; |
- return kDisableBlend_BlendOptFlag | kEmitTransBlack_BlendOptFlag; |
+ return kEmitTransBlack_BlendOptFlag; |
} |
} |
} else if (this->isCoverageDrawing()) { |
@@ -399,13 +399,7 @@ GrDrawState::BlendOptFlags GrDrawState::calcBlendOpts(bool forceCoverage, |
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; |
} |