diff options
Diffstat (limited to 'src/gpu/GrAAHairLinePathRenderer.cpp')
-rw-r--r-- | src/gpu/GrAAHairLinePathRenderer.cpp | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/src/gpu/GrAAHairLinePathRenderer.cpp b/src/gpu/GrAAHairLinePathRenderer.cpp index bed931c034..51bff1efc3 100644 --- a/src/gpu/GrAAHairLinePathRenderer.cpp +++ b/src/gpu/GrAAHairLinePathRenderer.cpp @@ -871,24 +871,27 @@ bool GrAAHairLinePathRenderer::onDrawPath(const SkPath& path, } #endif - target->setIndexSourceToBuffer(fLinesIndexBuffer); - int lines = 0; - int nBufLines = fLinesIndexBuffer->maxQuads(); - drawState->setEffect(kEdgeEffectStage, hairLineEffect, kEdgeAttrIndex)->unref(); - while (lines < lineCnt) { - int n = GrMin(lineCnt - lines, nBufLines); - target->drawIndexed(kTriangles_GrPrimitiveType, - kVertsPerLineSeg*lines, // startV - 0, // startI - kVertsPerLineSeg*n, // vCount - kIdxsPerLineSeg*n, - &devBounds); // iCount - lines += n; + { + GrDrawState::AutoRestoreEffects are(drawState); + target->setIndexSourceToBuffer(fLinesIndexBuffer); + int lines = 0; + int nBufLines = fLinesIndexBuffer->maxQuads(); + drawState->addCoverageEffect(hairLineEffect, kEdgeAttrIndex)->unref(); + while (lines < lineCnt) { + int n = GrMin(lineCnt - lines, nBufLines); + target->drawIndexed(kTriangles_GrPrimitiveType, + kVertsPerLineSeg*lines, // startV + 0, // startI + kVertsPerLineSeg*n, // vCount + kIdxsPerLineSeg*n, + &devBounds); // iCount + lines += n; + } } target->setIndexSourceToBuffer(fQuadsIndexBuffer); int quads = 0; - drawState->setEffect(kEdgeEffectStage, hairQuadEffect, kEdgeAttrIndex)->unref(); + drawState->addCoverageEffect(hairQuadEffect, kEdgeAttrIndex)->unref(); while (quads < quadCnt) { int n = GrMin(quadCnt - quads, kNumQuadsInIdxBuffer); target->drawIndexed(kTriangles_GrPrimitiveType, |