Convert GrMesh to a struct

Converts GrMesh to a struct and changes the names/semantics of its
fields to be more inline with their GL counterparts. Also renames the
"instancing" feature to "pattern", to avoid ambiguity with hardware
instancing.

Bug: skia:
Change-Id: Ia0999d4f9c83b5dd31f81b9bf4f36ed9abd26286
Reviewed-on: https://skia-review.googlesource.com/15157
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
diff --git a/src/gpu/ops/GrMSAAPathRenderer.cpp b/src/gpu/ops/GrMSAAPathRenderer.cpp
index 8e32006..f4d14cd 100644
--- a/src/gpu/ops/GrMSAAPathRenderer.cpp
+++ b/src/gpu/ops/GrMSAAPathRenderer.cpp
@@ -413,14 +413,16 @@
             SkASSERT(lineVertexStride == lineGP->getVertexStride());
 
             GrMesh lineMeshes;
+            lineMeshes.fPrimitiveType = primitiveType;
             if (fIsIndexed) {
-                lineMeshes.initIndexed(primitiveType, lineVertexBuffer, lineIndexBuffer,
-                                         firstLineVertex, firstLineIndex, lineVertexOffset,
-                                         lineIndexOffset);
-            } else {
-                lineMeshes.init(primitiveType, lineVertexBuffer, firstLineVertex,
-                                  lineVertexOffset);
+                lineMeshes.fIndexBuffer.reset(lineIndexBuffer);
+                lineMeshes.fIndexCount = lineIndexOffset;
+                lineMeshes.fBaseIndex = firstLineIndex;
             }
+            lineMeshes.fVertexBuffer.reset(lineVertexBuffer);
+            lineMeshes.fVertexCount = lineVertexOffset;
+            lineMeshes.fBaseVertex = firstLineVertex;
+
             target->draw(lineGP.get(), this->pipeline(), lineMeshes);
         }
 
@@ -435,20 +437,20 @@
                                             &firstQuadVertex);
             memcpy(quadVertices, quads.vertices, quadVertexStride * quadVertexOffset);
             GrMesh quadMeshes;
+            quadMeshes.fPrimitiveType = kTriangles_GrPrimitiveType;
             if (fIsIndexed) {
                 const GrBuffer* quadIndexBuffer;
-                int firstQuadIndex;
                 uint16_t* quadIndices = (uint16_t*) target->makeIndexSpace(quadIndexOffset,
                                                                            &quadIndexBuffer,
-                                                                           &firstQuadIndex);
+                                                                           &quadMeshes.fBaseIndex);
+                quadMeshes.fIndexBuffer.reset(quadIndexBuffer);
+                quadMeshes.fIndexCount = quadIndexOffset;
                 memcpy(quadIndices, quads.indices, sizeof(uint16_t) * quadIndexOffset);
-                quadMeshes.initIndexed(kTriangles_GrPrimitiveType, quadVertexBuffer,
-                                       quadIndexBuffer, firstQuadVertex, firstQuadIndex,
-                                       quadVertexOffset, quadIndexOffset);
-            } else {
-                quadMeshes.init(kTriangles_GrPrimitiveType, quadVertexBuffer, firstQuadVertex,
-                                quadVertexOffset);
             }
+            quadMeshes.fVertexBuffer.reset(quadVertexBuffer);
+            quadMeshes.fVertexCount = quadVertexOffset;
+            quadMeshes.fBaseVertex = firstQuadVertex;
+
             target->draw(quadGP.get(), this->pipeline(), quadMeshes);
         }
     }