| 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); | 
| } | 
|  | 
| //////////////////////////////////////////////////////////////////////////////// | 
|  |