Remove coordchanges from drawstate
BUG=skia:
Review URL: https://codereview.chromium.org/818233002
diff --git a/src/gpu/GrAAHairLinePathRenderer.cpp b/src/gpu/GrAAHairLinePathRenderer.cpp
index 98e6965..319228e 100644
--- a/src/gpu/GrAAHairLinePathRenderer.cpp
+++ b/src/gpu/GrAAHairLinePathRenderer.cpp
@@ -832,18 +832,30 @@
lineCnt = lines.count() / 2;
conicCnt = conics.count() / 3;
+ // createGeom transforms the geometry to device space when the matrix does not have
+ // perspective.
+ GrDrawState::AutoViewMatrixRestore avmr;
+ SkMatrix invert = SkMatrix::I();
+ if (!drawState->getViewMatrix().hasPerspective()) {
+ avmr.setIdentity(drawState);
+ if (!drawState->getViewMatrix().invert(&invert)) {
+ return false;
+ }
+ }
+
// do lines first
if (lineCnt) {
GrDrawTarget::AutoReleaseGeometry arg;
SkRect devBounds;
+ GrDrawState::AutoRestoreEffects are(drawState);
uint32_t gpFlags = GrDefaultGeoProcFactory::kPosition_GPType |
GrDefaultGeoProcFactory::kCoverage_GPType;
- GrDrawState::AutoRestoreEffects are(drawState);
SkAutoTUnref<const GrGeometryProcessor> gp(GrDefaultGeoProcFactory::Create(color,
gpFlags,
false,
- newCoverage));
+ newCoverage,
+ invert));
if (!this->createLineGeom(target,
drawState,
@@ -857,13 +869,6 @@
return false;
}
- // createLineGeom transforms the geometry to device space when the matrix does not have
- // perspective.
- GrDrawState::AutoViewMatrixRestore avmr;
- if (!drawState->getViewMatrix().hasPerspective() && !avmr.setIdentity(drawState)) {
- return false;
- }
-
// Check devBounds
SkASSERT(check_bounds<LineVertex>(drawState, devBounds, arg.vertices(),
kLineSegNumVertices * lineCnt));
@@ -906,14 +911,6 @@
return false;
}
- // createGeom transforms the geometry to device space when the matrix does not have
- // perspective.
- GrDrawState::AutoViewMatrixRestore avmr;
- if (!drawState->getViewMatrix().hasPerspective() && !avmr.setIdentity(drawState)) {
- return false;
- }
-
-
// Check devBounds
SkASSERT(check_bounds<BezierVertex>(drawState, devBounds, arg.vertices(),
kQuadNumVertices * quadCnt + kQuadNumVertices * conicCnt));
@@ -923,6 +920,7 @@
GrQuadEffect::Create(color,
kHairlineAA_GrProcessorEdgeType,
*target->caps(),
+ invert,
newCoverage));
SkASSERT(hairQuadProcessor);
GrDrawState::AutoRestoreEffects are(drawState);
@@ -946,7 +944,7 @@
if (conicCnt > 0) {
SkAutoTUnref<GrGeometryProcessor> hairConicProcessor(
GrConicEffect::Create(color, kHairlineAA_GrProcessorEdgeType, *target->caps(),
- newCoverage));
+ invert, newCoverage));
SkASSERT(hairConicProcessor);
GrDrawState::AutoRestoreEffects are(drawState);
target->setIndexSourceToBuffer(fQuadsIndexBuffer);