Drawstate on stack

BUG=skia:

Review URL: https://codereview.chromium.org/732693002
diff --git a/gm/convexpolyeffect.cpp b/gm/convexpolyeffect.cpp
index 9f4c48b..8ee4a5d 100644
--- a/gm/convexpolyeffect.cpp
+++ b/gm/convexpolyeffect.cpp
@@ -121,8 +121,6 @@
                     SkDEBUGFAIL("Couldn't get Gr test target.");
                     return;
                 }
-                GrDrawState* drawState = tt.target()->drawState();
-
                 SkMatrix m;
                 SkPath p;
                 m.setTranslate(x, y);
@@ -133,13 +131,15 @@
                 if (!fp) {
                     continue;
                 }
-                drawState->setGeometryProcessor(GrDefaultGeoProcFactory::Create(false))->unref();
-                drawState->addCoverageProcessor(fp);
-                drawState->setIdentityViewMatrix();
-                drawState->setRenderTarget(rt);
-                drawState->setColor(0xff000000);
 
-                GrDrawTarget::AutoReleaseGeometry geo(tt.target(), 4, 0);
+                GrDrawState ds;
+                ds.setGeometryProcessor(GrDefaultGeoProcFactory::Create(false))->unref();
+                ds.addCoverageProcessor(fp);
+                ds.setIdentityViewMatrix();
+                ds.setRenderTarget(rt);
+                ds.setColor(0xff000000);
+
+                GrDrawTarget::AutoReleaseGeometry geo(tt.target(), 4, ds.getVertexStride(), 0);
                 SkPoint* verts = reinterpret_cast<SkPoint*>(geo.vertices());
 
                 SkRect bounds = p.getBounds();
@@ -149,7 +149,7 @@
                 bounds.toQuad(verts);
 
                 tt.target()->setIndexSourceToBuffer(context->getQuadIndexBuffer());
-                tt.target()->drawIndexed(kTriangleFan_GrPrimitiveType, 0, 0, 4, 6);
+                tt.target()->drawIndexed(&ds, kTriangleFan_GrPrimitiveType, 0, 0, 4, 6);
 
                 x += SkScalarCeilToScalar(path->getBounds().width() + 10.f);
             }
@@ -188,14 +188,14 @@
                     continue;
                 }
 
-                GrDrawState* drawState = tt.target()->drawState();
-                drawState->setGeometryProcessor(GrDefaultGeoProcFactory::Create(false))->unref();
-                drawState->addCoverageProcessor(fp);
-                drawState->setIdentityViewMatrix();
-                drawState->setRenderTarget(rt);
-                drawState->setColor(0xff000000);
+                GrDrawState ds;
+                ds.setGeometryProcessor(GrDefaultGeoProcFactory::Create(false))->unref();
+                ds.addCoverageProcessor(fp);
+                ds.setIdentityViewMatrix();
+                ds.setRenderTarget(rt);
+                ds.setColor(0xff000000);
 
-                GrDrawTarget::AutoReleaseGeometry geo(tt.target(), 4, 0);
+                GrDrawTarget::AutoReleaseGeometry geo(tt.target(), 4, ds.getVertexStride(), 0);
                 SkPoint* verts = reinterpret_cast<SkPoint*>(geo.vertices());
 
                 SkRect bounds = rect;
@@ -203,7 +203,7 @@
                 bounds.toQuad(verts);
 
                 tt.target()->setIndexSourceToBuffer(context->getQuadIndexBuffer());
-                tt.target()->drawIndexed(kTriangleFan_GrPrimitiveType, 0, 0, 4, 6);
+                tt.target()->drawIndexed(&ds, kTriangleFan_GrPrimitiveType, 0, 0, 4, 6);
 
                 x += SkScalarCeilToScalar(rect.width() + 10.f);
             }