Resubmit r7899 and r7901.


git-svn-id: http://skia.googlecode.com/svn/trunk@7929 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/experimental/AndroidPathRenderer/GrAndroidPathRenderer.cpp b/experimental/AndroidPathRenderer/GrAndroidPathRenderer.cpp
index 2050f09..66cb93a 100644
--- a/experimental/AndroidPathRenderer/GrAndroidPathRenderer.cpp
+++ b/experimental/AndroidPathRenderer/GrAndroidPathRenderer.cpp
@@ -36,12 +36,25 @@
     android::uirenderer::PathRenderer::ConvexPathVertices(origPath, stroke, antiAlias, NULL,
                                                           &vertices);
 
-    // set vertex layout depending on anti-alias
-    GrVertexLayout layout = antiAlias ? GrDrawState::kCoverage_VertexLayoutBit : 0;
+    // set vertex attributes depending on anti-alias
+    GrDrawState* drawState = target->drawState();
+    if (antiAlias) {
+        // position + coverage
+        GrVertexAttrib attribs[] = {
+            GrVertexAttrib(kVec2f_GrVertexAttribType, 0),
+            GrVertexAttrib(kVec4ub_GrVertexAttribType, sizeof(GrPoint))
+        };
+        drawState->setVertexAttribs(attribs, SK_ARRAY_COUNT(attribs));
+        drawState->setAttribIndex(GrDrawState::kPosition_AttribIndex, 0);
+        drawState->setAttribIndex(GrDrawState::kCoverage_AttribIndex, 1);
+        drawState->setAttribBindings(GrDrawState::kCoverage_AttribBindingsBit);
+    } else {
+        drawState->setDefaultVertexAttribs();
+    }
 
     // allocate our vert buffer
     int vertCount = vertices.getSize();
-    GrDrawTarget::AutoReleaseGeometry geo(target, layout, vertCount, 0);
+    GrDrawTarget::AutoReleaseGeometry geo(target, vertCount, 0);
     if (!geo.succeeded()) {
         GrPrintf("Failed to get space for vertices!\n");
         return false;
@@ -49,6 +62,7 @@
 
     // copy android verts to our vertex buffer
     if (antiAlias) {
+        GrAssert(sizeof(ColorVertex) == drawState->getVertexSize());
         ColorVertex* outVert = reinterpret_cast<ColorVertex*>(geo.vertices());
         android::uirenderer::AlphaVertex* inVert =
             reinterpret_cast<android::uirenderer::AlphaVertex*>(vertices.getBuffer());
@@ -63,7 +77,7 @@
             ++inVert;
         }
     } else {
-       size_t vsize = GrDrawState::VertexSize(layout);
+       size_t vsize = drawState->getVertexSize();
        size_t copySize = vsize*vertCount;
        memcpy(geo.vertices(), vertices.getBuffer(), copySize);
     }