| Index: src/gpu/GrDrawTarget.cpp
|
| diff --git a/src/gpu/GrDrawTarget.cpp b/src/gpu/GrDrawTarget.cpp
|
| index d44c6991b44eb15e4dee2e712bd2d625558d3de2..72204fa14bfecbd81bff6619f709120e96ac4d3d 100644
|
| --- a/src/gpu/GrDrawTarget.cpp
|
| +++ b/src/gpu/GrDrawTarget.cpp
|
| @@ -613,16 +613,24 @@
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
|
|
| +bool GrDrawTarget::willUseHWAALines() const {
|
| + // There is a conflict between using smooth lines and our use of premultiplied alpha. Smooth
|
| + // lines tweak the incoming alpha value but not in a premul-alpha way. So we only use them when
|
| + // our alpha is 0xff and tweaking the color for partial coverage is OK
|
| + if (!this->caps()->hwAALineSupport() ||
|
| + !this->getDrawState().isHWAntialiasState()) {
|
| + return false;
|
| + }
|
| + GrDrawState::BlendOptFlags opts = this->getDrawState().getBlendOpts();
|
| + return (GrDrawState::kDisableBlend_BlendOptFlag & opts) &&
|
| + (GrDrawState::kCoverageAsAlpha_BlendOptFlag & opts);
|
| +}
|
| +
|
| bool GrDrawTarget::canApplyCoverage() const {
|
| // we can correctly apply coverage if a) we have dual source blending
|
| - // or b) one of our blend optimizations applies
|
| - // or c) the src/dst coefficients are 1, 0 respectively.
|
| - GrBlendCoeff srcCoeff;
|
| - GrBlendCoeff dstCoeff;
|
| + // or b) one of our blend optimizations applies.
|
| return this->caps()->dualSourceBlendingSupport() ||
|
| - GrDrawState::kNone_BlendOpt != this->getDrawState().getBlendOpts(true, &srcCoeff,
|
| - &dstCoeff) ||
|
| - (kOne_GrBlendCoeff == srcCoeff && kZero_GrBlendCoeff == dstCoeff);
|
| + GrDrawState::kNone_BlendOpt != this->getDrawState().getBlendOpts(true);
|
| }
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
|
|