Add constant coverage to GrDrawState
Review URL: http://codereview.appspot.com/5543052/
git-svn-id: http://skia.googlecode.com/svn/trunk@3054 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrDrawTarget.cpp b/src/gpu/GrDrawTarget.cpp
index be6bd0a..fa266d1 100644
--- a/src/gpu/GrDrawTarget.cpp
+++ b/src/gpu/GrDrawTarget.cpp
@@ -885,8 +885,10 @@
// When coeffs are (0,1) there is no reason to draw at all, unless
// stenciling is enabled. Having color writes disabled is effectively
- // (0,1).
- if ((kZero_BlendCoeff == *srcCoeff && dstCoeffIsOne)) {
+ // (0,1). The same applies when coverage is known to be 0.
+ if ((kZero_BlendCoeff == *srcCoeff && dstCoeffIsOne) ||
+ (!(layout & kCoverage_VertexLayoutBit) &&
+ 0 == drawState.getCoverage())) {
if (drawState.getStencil().doesWrite()) {
return kDisableBlend_BlendOptFlag |
kEmitTransBlack_BlendOptFlag;
@@ -895,8 +897,10 @@
}
}
- // check for coverage due to edge aa or coverage texture stage
+ // check for coverage due to constant coverage, per-vertex coverage,
+ // edge aa or coverage texture stage
bool hasCoverage = forceCoverage ||
+ 0xffffffff != drawState.getCoverage() ||
drawState.getNumAAEdges() > 0 ||
(layout & kCoverage_VertexLayoutBit) ||
(layout & kEdge_VertexLayoutBit);