Index: src/gpu/GrDrawState.cpp |
diff --git a/src/gpu/GrDrawState.cpp b/src/gpu/GrDrawState.cpp |
index 23ebea6afcfd9cbbb4f476edea789b46e21118d4..513c3bf9e9eb7549c8e7d4e11666d947ea5a65b4 100644 |
--- a/src/gpu/GrDrawState.cpp |
+++ b/src/gpu/GrDrawState.cpp |
@@ -7,6 +7,7 @@ |
#include "GrDrawState.h" |
+#include "GrBlend.h" |
#include "GrInvariantOutput.h" |
#include "GrOptDrawState.h" |
#include "GrPaint.h" |
@@ -749,15 +750,17 @@ bool GrDrawState::willBlendWithDst() const { |
return true; |
} |
- bool srcAIsOne = this->srcAlphaWillBeOne(); |
- GrBlendCoeff srcCoeff = this->getSrcBlendCoeff(); |
- GrBlendCoeff dstCoeff = this->getDstBlendCoeff(); |
- if (kISA_GrBlendCoeff == dstCoeff && srcAIsOne) { |
- dstCoeff = kZero_GrBlendCoeff; |
+ if (this->willEffectReadDstColor()) { |
+ return true; |
+ } |
+ |
+ if (GrBlendCoeffRefsDst(this->getSrcBlendCoeff())) { |
+ return true; |
} |
- if (kOne_GrBlendCoeff != srcCoeff || |
- kZero_GrBlendCoeff != dstCoeff || |
- this->willEffectReadDstColor()) { |
+ |
+ GrBlendCoeff dstCoeff = this->getDstBlendCoeff(); |
+ if (!(kZero_GrBlendCoeff == dstCoeff || |
+ (kISA_GrBlendCoeff == dstCoeff && this->srcAlphaWillBeOne()))) { |
return true; |
} |