Drawstate on stack

BUG=skia:

Review URL: https://codereview.chromium.org/732693002
diff --git a/src/gpu/GrAARectRenderer.cpp b/src/gpu/GrAARectRenderer.cpp
index f748895..edb59d0 100644
--- a/src/gpu/GrAARectRenderer.cpp
+++ b/src/gpu/GrAARectRenderer.cpp
@@ -177,10 +177,10 @@
 }
 
 void GrAARectRenderer::geometryFillAARect(GrDrawTarget* target,
+                                          GrDrawState* drawState,
                                           const SkRect& rect,
                                           const SkMatrix& combinedMatrix,
                                           const SkRect& devRect) {
-    GrDrawState* drawState = target->drawState();
     GrDrawState::AutoRestoreEffects are(drawState);
 
     GrColor color = drawState->getColor();
@@ -190,7 +190,7 @@
         drawState->setHint(GrDrawState::kVertexColorsAreOpaque_Hint, true);
     }
 
-    GrDrawTarget::AutoReleaseGeometry geo(target, 8, 0);
+    GrDrawTarget::AutoReleaseGeometry geo(target, 8, drawState->getVertexStride(),  0);
     if (!geo.succeeded()) {
         SkDebugf("Failed to get space for vertices!\n");
         return;
@@ -300,13 +300,16 @@
     }
 
     target->setIndexSourceToBuffer(indexBuffer);
-    target->drawIndexedInstances(kTriangles_GrPrimitiveType, 1,
+    target->drawIndexedInstances(drawState,
+                                 kTriangles_GrPrimitiveType,
+                                 1,
                                  kVertsPerAAFillRect,
                                  kIndicesPerAAFillRect);
     target->resetIndexSource();
 }
 
 void GrAARectRenderer::strokeAARect(GrDrawTarget* target,
+                                    GrDrawState* drawState,
                                     const SkRect& rect,
                                     const SkMatrix& combinedMatrix,
                                     const SkRect& devRect,
@@ -353,7 +356,7 @@
     }
 
     if (spare <= 0 && miterStroke) {
-        this->fillAARect(target, devOutside, SkMatrix::I(), devOutside);
+        this->fillAARect(target, drawState, devOutside, SkMatrix::I(), devOutside);
         return;
     }
 
@@ -370,17 +373,17 @@
         devOutsideAssist.outset(0, ry);
     }
 
-    this->geometryStrokeAARect(target, devOutside, devOutsideAssist, devInside, miterStroke);
+    this->geometryStrokeAARect(target, drawState, devOutside, devOutsideAssist, devInside,
+                               miterStroke);
 }
 
 void GrAARectRenderer::geometryStrokeAARect(GrDrawTarget* target,
+                                            GrDrawState* drawState,
                                             const SkRect& devOutside,
                                             const SkRect& devOutsideAssist,
                                             const SkRect& devInside,
                                             bool miterStroke) {
-    GrDrawState* drawState = target->drawState();
     GrDrawState::AutoRestoreEffects are(drawState);
-
     CoverageAttribType covAttribType = set_rect_attribs(drawState);
 
     GrColor color = drawState->getColor();
@@ -392,7 +395,7 @@
     int outerVertexNum = miterStroke ? 4 : 8;
     int totalVertexNum = (outerVertexNum + innerVertexNum) * 2;
 
-    GrDrawTarget::AutoReleaseGeometry geo(target, totalVertexNum, 0);
+    GrDrawTarget::AutoReleaseGeometry geo(target, totalVertexNum,  drawState->getVertexStride(), 0);
     if (!geo.succeeded()) {
         SkDebugf("Failed to get space for vertices!\n");
         return;
@@ -499,12 +502,16 @@
     }
 
     target->setIndexSourceToBuffer(indexBuffer);
-    target->drawIndexedInstances(kTriangles_GrPrimitiveType, 1,
-                                 totalVertexNum, aa_stroke_rect_index_count(miterStroke));
+    target->drawIndexedInstances(drawState,
+                                 kTriangles_GrPrimitiveType,
+                                 1,
+                                 totalVertexNum,
+                                 aa_stroke_rect_index_count(miterStroke));
     target->resetIndexSource();
 }
 
 void GrAARectRenderer::fillAANestedRects(GrDrawTarget* target,
+                                         GrDrawState* drawState,
                                          const SkRect rects[2],
                                          const SkMatrix& combinedMatrix) {
     SkASSERT(combinedMatrix.rectStaysRect());
@@ -516,9 +523,9 @@
     combinedMatrix.mapPoints((SkPoint*)&devInside, (const SkPoint*)&rects[1], 2);
 
     if (devInside.isEmpty()) {
-        this->fillAARect(target, devOutside, SkMatrix::I(), devOutside);
+        this->fillAARect(target, drawState, devOutside, SkMatrix::I(), devOutside);
         return;
     }
 
-    this->geometryStrokeAARect(target, devOutside, devOutsideAssist, devInside, true);
+    this->geometryStrokeAARect(target, drawState, devOutside, devOutsideAssist, devInside, true);
 }