Index: src/gpu/GrDrawState.cpp |
diff --git a/src/gpu/GrDrawState.cpp b/src/gpu/GrDrawState.cpp |
index c82c5adad1f771354e711e1ce149234d8ee77acf..4341d00ccedc367381341d795e0a73b7b07776b2 100644 |
--- a/src/gpu/GrDrawState.cpp |
+++ b/src/gpu/GrDrawState.cpp |
@@ -742,3 +742,23 @@ bool GrDrawState::srcAlphaWillBeOne() const { |
return inoutColor.isOpaque(); |
} |
+bool GrDrawState::willBlendWithDst() const { |
+ if (!this->hasSolidCoverage()) { |
+ return true; |
+ } |
+ |
+ bool srcAIsOne = this->srcAlphaWillBeOne(); |
+ GrBlendCoeff srcCoeff = this->getSrcBlendCoeff(); |
+ GrBlendCoeff dstCoeff = this->getDstBlendCoeff(); |
+ if (kISA_GrBlendCoeff == dstCoeff && srcAIsOne) { |
+ dstCoeff = kZero_GrBlendCoeff; |
+ } |
+ if (kOne_GrBlendCoeff != srcCoeff || |
+ kZero_GrBlendCoeff != dstCoeff || |
+ this->willEffectReadDstColor()) { |
+ return true; |
+ } |
+ |
+ return false; |
+} |
+ |