Index: src/gpu/GrDrawState.cpp |
diff --git a/src/gpu/GrDrawState.cpp b/src/gpu/GrDrawState.cpp |
index c82c5adad1f771354e711e1ce149234d8ee77acf..a6e4a96083f7e350cd20b48c400d8c69f05e862e 100644 |
--- a/src/gpu/GrDrawState.cpp |
+++ b/src/gpu/GrDrawState.cpp |
@@ -742,3 +742,20 @@ bool GrDrawState::srcAlphaWillBeOne() const { |
return inoutColor.isOpaque(); |
} |
+bool GrDrawState::isUnblended() const { |
+ if (!this->hasSolidCoverage()) { |
+ return false; |
+ } |
+ |
+ bool srcAIsOne = this->srcAlphaWillBeOne(); |
+ GrBlendCoeff srcCoeff = this->getSrcBlendCoeff(); |
+ GrBlendCoeff dstCoeff = this->getDstBlendCoeff(); |
+ bool dstCoeffIsZero = kZero_GrBlendCoeff == dstCoeff || |
bsalomon
2014/11/11 20:49:56
The fact that the blend opts code doesn't directly
egdaniel
2014/11/11 21:05:55
Done.
|
+ (kISA_GrBlendCoeff == dstCoeff && srcAIsOne); |
+ if (kOne_GrBlendCoeff != srcCoeff || !dstCoeffIsZero || this->willEffectReadDstColor()) { |
+ return false; |
+ } |
+ |
+ return true; |
+} |
+ |