Index: src/gpu/GrAAConvexPathRenderer.cpp |
diff --git a/src/gpu/GrAAConvexPathRenderer.cpp b/src/gpu/GrAAConvexPathRenderer.cpp |
index 3325b1cf68b184414a1e94b22260b0c9f26da787..03d8377d554435c24d42fd53ed37d0370642370e 100644 |
--- a/src/gpu/GrAAConvexPathRenderer.cpp |
+++ b/src/gpu/GrAAConvexPathRenderer.cpp |
@@ -609,9 +609,10 @@ GrGeometryProcessor* QuadEdgeEffect::TestCreate(SkRandom* random, |
/////////////////////////////////////////////////////////////////////////////// |
-bool GrAAConvexPathRenderer::canDrawPath(const SkPath& path, |
+bool GrAAConvexPathRenderer::canDrawPath(const GrDrawTarget* target, |
+ const GrDrawState*, |
+ const SkPath& path, |
const SkStrokeRec& stroke, |
- const GrDrawTarget* target, |
bool antiAlias) const { |
return (target->caps()->shaderDerivativeSupport() && antiAlias && |
stroke.isFillStyle() && !path.isInverseFillType() && path.isConvex()); |
@@ -627,9 +628,10 @@ extern const GrVertexAttrib gPathAttribs[] = { |
}; |
-bool GrAAConvexPathRenderer::onDrawPath(const SkPath& origPath, |
+bool GrAAConvexPathRenderer::onDrawPath(GrDrawTarget* target, |
+ GrDrawState* drawState, |
+ const SkPath& origPath, |
const SkStrokeRec&, |
- GrDrawTarget* target, |
bool antiAlias) { |
const SkPath* path = &origPath; |
@@ -637,12 +639,10 @@ bool GrAAConvexPathRenderer::onDrawPath(const SkPath& origPath, |
return true; |
} |
- SkMatrix viewMatrix = target->getDrawState().getViewMatrix(); |
- GrDrawTarget::AutoStateRestore asr; |
- if (!asr.setIdentity(target, GrDrawTarget::kPreserve_ASRInit)) { |
+ SkMatrix viewMatrix = drawState->getViewMatrix(); |
+ if (!drawState->setIdentityViewMatrix()) { |
return false; |
} |
- GrDrawState* drawState = target->drawState(); |
// We use the fact that SkPath::transform path does subdivision based on |
// perspective. Otherwise, we apply the view matrix when copying to the |
@@ -681,7 +681,7 @@ bool GrAAConvexPathRenderer::onDrawPath(const SkPath& origPath, |
GrGeometryProcessor* quadProcessor = QuadEdgeEffect::Create(); |
drawState->setGeometryProcessor(quadProcessor)->unref(); |
- GrDrawTarget::AutoReleaseGeometry arg(target, vCount, iCount); |
+ GrDrawTarget::AutoReleaseGeometry arg(target, vCount, drawState->getVertexStride(), iCount); |
if (!arg.succeeded()) { |
return false; |
} |
@@ -706,7 +706,8 @@ bool GrAAConvexPathRenderer::onDrawPath(const SkPath& origPath, |
int vOffset = 0; |
for (int i = 0; i < draws.count(); ++i) { |
const Draw& draw = draws[i]; |
- target->drawIndexed(kTriangles_GrPrimitiveType, |
+ target->drawIndexed(drawState, |
+ kTriangles_GrPrimitiveType, |
vOffset, // start vertex |
0, // start index |
draw.fVertexCnt, |