Remove GrMesh::setVertexData

Fuses the relevant functionality into the set() calls.

Change-Id: I3a764219425c35967942366c60a6b9ee6ec48e11
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/276836
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
diff --git a/bench/VertexColorSpaceBench.cpp b/bench/VertexColorSpaceBench.cpp
index 6856445..d73ceed 100644
--- a/bench/VertexColorSpaceBench.cpp
+++ b/bench/VertexColorSpaceBench.cpp
@@ -253,8 +253,7 @@
         }
 
         fMesh = target->allocMesh();
-        fMesh->setNonIndexedNonInstanced(kVertexCount);
-        fMesh->setVertexData(std::move(vertexBuffer), firstVertex);
+        fMesh->set(std::move(vertexBuffer), kVertexCount, firstVertex);
     }
 
     void onExecute(GrOpFlushState* flushState, const SkRect& chainBounds) override {
diff --git a/gm/clockwise.cpp b/gm/clockwise.cpp
index 1a0753f..e8da08c 100644
--- a/gm/clockwise.cpp
+++ b/gm/clockwise.cpp
@@ -29,7 +29,6 @@
 #include "src/gpu/GrGeometryProcessor.h"
 #include "src/gpu/GrGpuBuffer.h"
 #include "src/gpu/GrMemoryPool.h"
-#include "src/gpu/GrMesh.h"
 #include "src/gpu/GrOpFlushState.h"
 #include "src/gpu/GrOpsRenderPass.h"
 #include "src/gpu/GrPipeline.h"
@@ -218,12 +217,10 @@
             fProgramInfo = this->createProgramInfo(flushState);
         }
 
-        GrMesh mesh;
-        mesh.setNonIndexedNonInstanced(4);
-        mesh.setVertexData(std::move(fVertexBuffer));
-
-        flushState->opsRenderPass()->bindPipeline(*fProgramInfo, SkRect::MakeXYWH(0, fY, 100, 100));
-        flushState->opsRenderPass()->drawMeshes(*fProgramInfo, &mesh, 1);
+        GrOpsRenderPass* renderPass = flushState->opsRenderPass();
+        renderPass->bindPipeline(*fProgramInfo, SkRect::MakeXYWH(0, fY, 100, 100));
+        renderPass->bindBuffers(nullptr, nullptr, fVertexBuffer.get());
+        renderPass->draw(4, 0);
     }
 
     sk_sp<GrBuffer> fVertexBuffer;
diff --git a/gm/fwidth_squircle.cpp b/gm/fwidth_squircle.cpp
index 38dca23..ee34bc8 100644
--- a/gm/fwidth_squircle.cpp
+++ b/gm/fwidth_squircle.cpp
@@ -23,7 +23,6 @@
 #include "src/gpu/GrGeometryProcessor.h"
 #include "src/gpu/GrGpuBuffer.h"
 #include "src/gpu/GrMemoryPool.h"
-#include "src/gpu/GrMesh.h"
 #include "src/gpu/GrOpFlushState.h"
 #include "src/gpu/GrOpsRenderPass.h"
 #include "src/gpu/GrPipeline.h"
@@ -226,12 +225,10 @@
             fProgramInfo = this->createProgramInfo(flushState);
         }
 
-        GrMesh mesh;
-        mesh.setNonIndexedNonInstanced(4);
-        mesh.setVertexData(std::move(fVertexBuffer));
-
-        flushState->opsRenderPass()->bindPipeline(*fProgramInfo, SkRect::MakeIWH(kWidth, kHeight));
-        flushState->opsRenderPass()->drawMeshes(*fProgramInfo, &mesh, 1);
+        GrOpsRenderPass* renderPass = flushState->opsRenderPass();
+        renderPass->bindPipeline(*fProgramInfo, SkRect::MakeIWH(kWidth, kHeight));
+        renderPass->bindBuffers(nullptr, nullptr, fVertexBuffer.get());
+        renderPass->draw(4, 0);
 
     }
 
diff --git a/gm/tessellation.cpp b/gm/tessellation.cpp
index 184b98b..a2b025a 100644
--- a/gm/tessellation.cpp
+++ b/gm/tessellation.cpp
@@ -10,7 +10,6 @@
 #include "src/gpu/GrCaps.h"
 #include "src/gpu/GrContextPriv.h"
 #include "src/gpu/GrMemoryPool.h"
-#include "src/gpu/GrMesh.h"
 #include "src/gpu/GrOpFlushState.h"
 #include "src/gpu/GrOpsRenderPass.h"
 #include "src/gpu/GrPipeline.h"
@@ -313,7 +312,6 @@
                             state->drawOpArgs().outputSwizzle());
         GrPipeline::FixedDynamicState fixedDynamicState;
 
-        GrMesh mesh;
         int tessellationPatchVertexCount;
         std::unique_ptr<GrGeometryProcessor> shader;
         if (fTriPositions) {
@@ -321,14 +319,11 @@
                 return;
             }
             tessellationPatchVertexCount = 3;
-            mesh.setNonIndexedNonInstanced(3);
-            mesh.setVertexData(fVertexBuffer, fBaseVertex);
             shader = std::make_unique<TessellationTestTriShader>(fViewMatrix);
         } else {
             // Use a mismatched number of vertices in the input patch vs output.
             // (The tessellation control shader will output one vertex per patch.)
             tessellationPatchVertexCount = 5;
-            mesh.setNonIndexedNonInstanced(5);
             shader = std::make_unique<TessellationTestRectShader>(fViewMatrix);
         }
 
@@ -337,8 +332,10 @@
                                   &pipeline, shader.get(), &fixedDynamicState, nullptr, 0,
                                   GrPrimitiveType::kPatches, tessellationPatchVertexCount);
 
-        state->opsRenderPass()->bindPipeline(programInfo, SkRect::MakeIWH(kWidth, kHeight));
-        state->opsRenderPass()->drawMeshes(programInfo, &mesh, 1);
+        GrOpsRenderPass* renderPass = state->opsRenderPass();
+        renderPass->bindPipeline(programInfo, SkRect::MakeIWH(kWidth, kHeight));
+        renderPass->bindBuffers(nullptr, nullptr, fVertexBuffer.get());
+        renderPass->draw(tessellationPatchVertexCount, fBaseVertex);
     }
 
     const SkMatrix fViewMatrix;
diff --git a/src/gpu/GrMesh.h b/src/gpu/GrMesh.h
index c47b986..5104ec9 100644
--- a/src/gpu/GrMesh.h
+++ b/src/gpu/GrMesh.h
@@ -23,17 +23,16 @@
 class GrMesh {
 public:
     const GrBuffer* indexBuffer() const { return fIndexBuffer.get(); }
-    GrPrimitiveRestart primitiveRestart() const { return fPrimitiveRestart; }
     const GrBuffer* vertexBuffer() const { return fVertexBuffer.get(); }
 
-    void setNonIndexedNonInstanced(int vertexCount);
-
+    void set(sk_sp<const GrBuffer> vertexBuffer, int vertexCount, int baseVertex);
     void setIndexed(sk_sp<const GrBuffer> indexBuffer, int indexCount, int baseIndex,
-                    uint16_t minIndexValue, uint16_t maxIndexValue, GrPrimitiveRestart);
-    void setIndexedPatterned(sk_sp<const GrBuffer> indexBuffer, int indexCount, int vertexCount,
-                             int patternRepeatCount, int maxPatternRepetitionsInIndexBuffer);
-
-    void setVertexData(sk_sp<const GrBuffer> vertexBuffer, int baseVertex = 0);
+                    uint16_t minIndexValue, uint16_t maxIndexValue, GrPrimitiveRestart,
+                    sk_sp<const GrBuffer> vertexBuffer, int baseVertex);
+    void setIndexedPatterned(sk_sp<const GrBuffer> indexBuffer, int indexCount,
+                             int patternRepeatCount, int maxPatternRepetitionsInIndexBuffer,
+                             sk_sp<const GrBuffer> vertexBuffer, int patternVertexCount,
+                             int baseVertex);
 
     void draw(GrOpsRenderPass*) const;
 
@@ -54,20 +53,24 @@
     SkDEBUGCODE(bool fIsInitialized = false;)
 };
 
-inline void GrMesh::setNonIndexedNonInstanced(int vertexCount) {
+inline void GrMesh::set(sk_sp<const GrBuffer> vertexBuffer, int vertexCount, int baseVertex) {
+    SkASSERT(baseVertex >= 0);
     fIndexBuffer.reset();
+    fVertexBuffer = std::move(vertexBuffer);
     fVertexCount = vertexCount;
-    fPrimitiveRestart = GrPrimitiveRestart::kNo;
+    fBaseVertex = baseVertex;
     SkDEBUGCODE(fIsInitialized = true;)
 }
 
 inline void GrMesh::setIndexed(sk_sp<const GrBuffer> indexBuffer, int indexCount, int baseIndex,
                                uint16_t minIndexValue, uint16_t maxIndexValue,
-                               GrPrimitiveRestart primitiveRestart) {
+                               GrPrimitiveRestart primitiveRestart,
+                               sk_sp<const GrBuffer> vertexBuffer, int baseVertex) {
     SkASSERT(indexBuffer);
     SkASSERT(indexCount >= 1);
     SkASSERT(baseIndex >= 0);
     SkASSERT(maxIndexValue >= minIndexValue);
+    SkASSERT(baseVertex >= 0);
     fIndexBuffer = std::move(indexBuffer);
     fIndexCount = indexCount;
     fPatternRepeatCount = 0;
@@ -75,30 +78,31 @@
     fMinIndexValue = minIndexValue;
     fMaxIndexValue = maxIndexValue;
     fPrimitiveRestart = primitiveRestart;
+    fVertexBuffer = std::move(vertexBuffer);
+    fBaseVertex = baseVertex;
     SkDEBUGCODE(fIsInitialized = true;)
 }
 
 inline void GrMesh::setIndexedPatterned(sk_sp<const GrBuffer> indexBuffer, int indexCount,
-                                        int vertexCount, int patternRepeatCount,
-                                        int maxPatternRepetitionsInIndexBuffer) {
+                                        int patternRepeatCount,
+                                        int maxPatternRepetitionsInIndexBuffer,
+                                        sk_sp<const GrBuffer> vertexBuffer,
+                                        int patternVertexCount, int baseVertex) {
     SkASSERT(indexBuffer);
     SkASSERT(indexCount >= 1);
-    SkASSERT(vertexCount >= 1);
+    SkASSERT(patternVertexCount >= 1);
     SkASSERT(patternRepeatCount >= 1);
     SkASSERT(maxPatternRepetitionsInIndexBuffer >= 1);
+    SkASSERT(baseVertex >= 0);
     fIndexBuffer = std::move(indexBuffer);
     fIndexCount = indexCount;
     fPatternRepeatCount = patternRepeatCount;
-    fVertexCount = vertexCount;
+    fVertexCount = patternVertexCount;
     fMaxPatternRepetitionsInIndexBuffer = maxPatternRepetitionsInIndexBuffer;
     fPrimitiveRestart = GrPrimitiveRestart::kNo;
-    SkDEBUGCODE(fIsInitialized = true;)
-}
-
-inline void GrMesh::setVertexData(sk_sp<const GrBuffer> vertexBuffer, int baseVertex) {
-    SkASSERT(baseVertex >= 0);
     fVertexBuffer = std::move(vertexBuffer);
     fBaseVertex = baseVertex;
+    SkDEBUGCODE(fIsInitialized = true;)
 }
 
 inline void GrMesh::draw(GrOpsRenderPass* opsRenderPass) const {
@@ -109,7 +113,7 @@
         opsRenderPass->draw(fVertexCount, fBaseVertex);
     } else {
         opsRenderPass->bindBuffers(fIndexBuffer.get(), nullptr, fVertexBuffer.get(),
-                                   this->primitiveRestart());
+                                   fPrimitiveRestart);
         if (0 == fPatternRepeatCount) {
             opsRenderPass->drawIndexed(fIndexCount, fBaseIndex, fMinIndexValue, fMaxIndexValue,
                                        fBaseVertex);
diff --git a/src/gpu/ops/GrAAConvexPathRenderer.cpp b/src/gpu/ops/GrAAConvexPathRenderer.cpp
index 0048d84..76724ff 100644
--- a/src/gpu/ops/GrAAConvexPathRenderer.cpp
+++ b/src/gpu/ops/GrAAConvexPathRenderer.cpp
@@ -837,8 +837,8 @@
             for (int j = 0; j < draws.count(); ++j) {
                 const Draw& draw = draws[j];
                 meshes[j].setIndexed(indexBuffer, draw.fIndexCnt, firstIndex, 0,
-                                     draw.fVertexCnt - 1, GrPrimitiveRestart::kNo);
-                meshes[j].setVertexData(vertexBuffer, firstVertex);
+                                     draw.fVertexCnt - 1, GrPrimitiveRestart::kNo, vertexBuffer,
+                                     firstVertex);
                 firstIndex += draw.fIndexCnt;
                 firstVertex += draw.fVertexCnt;
             }
diff --git a/src/gpu/ops/GrAAHairLinePathRenderer.cpp b/src/gpu/ops/GrAAHairLinePathRenderer.cpp
index 020dbba..7e98529 100644
--- a/src/gpu/ops/GrAAHairLinePathRenderer.cpp
+++ b/src/gpu/ops/GrAAHairLinePathRenderer.cpp
@@ -1106,9 +1106,9 @@
                                                            geometryProcessorLocalM);
 
             GrMesh* mesh = target->allocMesh();
-            mesh->setIndexedPatterned(quadsIndexBuffer, kIdxsPerQuad, kQuadNumVertices, quadCount,
-                                      kQuadsNumInIdxBuffer);
-            mesh->setVertexData(vertexBuffer, firstVertex);
+            mesh->setIndexedPatterned(quadsIndexBuffer, kIdxsPerQuad, quadCount,
+                                      kQuadsNumInIdxBuffer, vertexBuffer, kQuadNumVertices,
+                                      firstVertex);
             target->recordDraw(quadGP, mesh, 1, GrPrimitiveType::kTriangles);
             firstVertex += quadCount * kQuadNumVertices;
         }
@@ -1119,9 +1119,9 @@
                                                              geometryProcessorLocalM);
 
             GrMesh* mesh = target->allocMesh();
-            mesh->setIndexedPatterned(std::move(quadsIndexBuffer), kIdxsPerQuad, kQuadNumVertices,
-                                      conicCount, kQuadsNumInIdxBuffer);
-            mesh->setVertexData(std::move(vertexBuffer), firstVertex);
+            mesh->setIndexedPatterned(std::move(quadsIndexBuffer), kIdxsPerQuad, conicCount,
+                                      kQuadsNumInIdxBuffer, std::move(vertexBuffer),
+                                      kQuadNumVertices, firstVertex);
             target->recordDraw(conicGP, mesh, 1, GrPrimitiveType::kTriangles);
         }
     }
diff --git a/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp b/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp
index 40332ba..2581fc7b 100644
--- a/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp
+++ b/src/gpu/ops/GrAALinearizingConvexPathRenderer.cpp
@@ -251,8 +251,7 @@
         memcpy(idxs, indices, indexCount * sizeof(uint16_t));
         GrMesh* mesh = target->allocMesh();
         mesh->setIndexed(std::move(indexBuffer), indexCount, firstIndex, 0, vertexCount - 1,
-                         GrPrimitiveRestart::kNo);
-        mesh->setVertexData(std::move(vertexBuffer), firstVertex);
+                         GrPrimitiveRestart::kNo, std::move(vertexBuffer), firstVertex);
         fMeshes.push_back(mesh);
     }
 
diff --git a/src/gpu/ops/GrAtlasTextOp.cpp b/src/gpu/ops/GrAtlasTextOp.cpp
index 594d68c..b40bd0d 100644
--- a/src/gpu/ops/GrAtlasTextOp.cpp
+++ b/src/gpu/ops/GrAtlasTextOp.cpp
@@ -512,9 +512,9 @@
     }
     int maxGlyphsPerDraw = static_cast<int>(flushInfo->fIndexBuffer->size() / sizeof(uint16_t) / 6);
     GrMesh* mesh = target->allocMesh();
-    mesh->setIndexedPatterned(flushInfo->fIndexBuffer, kIndicesPerGlyph, kVerticesPerGlyph,
-                              flushInfo->fGlyphsToFlush, maxGlyphsPerDraw);
-    mesh->setVertexData(flushInfo->fVertexBuffer, flushInfo->fVertexOffset);
+    mesh->setIndexedPatterned(flushInfo->fIndexBuffer, kIndicesPerGlyph, flushInfo->fGlyphsToFlush,
+                              maxGlyphsPerDraw, flushInfo->fVertexBuffer, kVerticesPerGlyph,
+                              flushInfo->fVertexOffset);
     target->recordDraw(flushInfo->fGeometryProcessor, mesh, 1, flushInfo->fFixedDynamicState,
                        nullptr, GrPrimitiveType::kTriangles);
     flushInfo->fVertexOffset += kVerticesPerGlyph * flushInfo->fGlyphsToFlush;
diff --git a/src/gpu/ops/GrDefaultPathRenderer.cpp b/src/gpu/ops/GrDefaultPathRenderer.cpp
index 65a66e4..0b676c2 100644
--- a/src/gpu/ops/GrDefaultPathRenderer.cpp
+++ b/src/gpu/ops/GrDefaultPathRenderer.cpp
@@ -274,12 +274,12 @@
         if (this->isIndexed() ? SkToBool(indexCount) : SkToBool(vertexCount)) {
             mesh = fTarget->allocMesh();
             if (!this->isIndexed()) {
-                mesh->setNonIndexedNonInstanced(vertexCount);
+                mesh->set(std::move(fVertexBuffer), vertexCount, fFirstVertex);
             } else {
                 mesh->setIndexed(std::move(fIndexBuffer), indexCount, fFirstIndex, 0,
-                                 vertexCount - 1, GrPrimitiveRestart::kNo);
+                                 vertexCount - 1, GrPrimitiveRestart::kNo, std::move(fVertexBuffer),
+                                 fFirstVertex);
             }
-            mesh->setVertexData(std::move(fVertexBuffer), fFirstVertex);
         }
 
         fTarget->putBackIndices((size_t)(fIndicesInChunk - indexCount));
diff --git a/src/gpu/ops/GrDrawVerticesOp.cpp b/src/gpu/ops/GrDrawVerticesOp.cpp
index c200367..6adae7b 100644
--- a/src/gpu/ops/GrDrawVerticesOp.cpp
+++ b/src/gpu/ops/GrDrawVerticesOp.cpp
@@ -342,11 +342,10 @@
     fMesh = target->allocMesh();
     if (this->isIndexed()) {
         fMesh->setIndexed(std::move(indexBuffer), fIndexCount, firstIndex, 0, fVertexCount - 1,
-                         GrPrimitiveRestart::kNo);
+                         GrPrimitiveRestart::kNo, std::move(vertexBuffer), firstVertex);
     } else {
-        fMesh->setNonIndexedNonInstanced(fVertexCount);
+        fMesh->set(std::move(vertexBuffer), fVertexCount, firstVertex);
     }
-    fMesh->setVertexData(std::move(vertexBuffer), firstVertex);
 }
 
 void DrawVerticesOp::onExecute(GrOpFlushState* flushState, const SkRect& chainBounds) {
diff --git a/src/gpu/ops/GrMeshDrawOp.cpp b/src/gpu/ops/GrMeshDrawOp.cpp
index 0cdc857..c66166f 100644
--- a/src/gpu/ops/GrMeshDrawOp.cpp
+++ b/src/gpu/ops/GrMeshDrawOp.cpp
@@ -73,9 +73,9 @@
 
     SkASSERT(maxRepetitions ==
              static_cast<int>(indexBuffer->size() / (sizeof(uint16_t) * indicesPerRepetition)));
-    fMesh->setIndexedPatterned(std::move(indexBuffer), indicesPerRepetition, verticesPerRepetition,
-                               repeatCount, maxRepetitions);
-    fMesh->setVertexData(std::move(vertexBuffer), firstVertex);
+    fMesh->setIndexedPatterned(std::move(indexBuffer), indicesPerRepetition, repeatCount,
+                               maxRepetitions, std::move(vertexBuffer), verticesPerRepetition,
+                               firstVertex);
 }
 
 void GrMeshDrawOp::PatternHelper::recordDraw(Target* target, const GrGeometryProcessor* gp) const {
diff --git a/src/gpu/ops/GrOvalOpFactory.cpp b/src/gpu/ops/GrOvalOpFactory.cpp
index 7405dda..1fb885b 100644
--- a/src/gpu/ops/GrOvalOpFactory.cpp
+++ b/src/gpu/ops/GrOvalOpFactory.cpp
@@ -1420,8 +1420,7 @@
 
         fMesh = target->allocMesh();
         fMesh->setIndexed(std::move(indexBuffer), fIndexCount, firstIndex, 0, fVertCount - 1,
-                         GrPrimitiveRestart::kNo);
-        fMesh->setVertexData(std::move(vertexBuffer), firstVertex);
+                         GrPrimitiveRestart::kNo, std::move(vertexBuffer), firstVertex);
     }
 
     void onExecute(GrOpFlushState* flushState, const SkRect& chainBounds) override {
@@ -1743,8 +1742,7 @@
 
         fMesh = target->allocMesh();
         fMesh->setIndexed(std::move(indexBuffer), fIndexCount, firstIndex, 0, fVertCount - 1,
-                          GrPrimitiveRestart::kNo);
-        fMesh->setVertexData(std::move(vertexBuffer), firstVertex);
+                          GrPrimitiveRestart::kNo, std::move(vertexBuffer), firstVertex);
     }
 
     void onExecute(GrOpFlushState* flushState, const SkRect& chainBounds) override {
@@ -2755,8 +2753,7 @@
 
         fMesh = target->allocMesh();
         fMesh->setIndexed(std::move(indexBuffer), fIndexCount, firstIndex, 0, fVertCount - 1,
-                          GrPrimitiveRestart::kNo);
-        fMesh->setVertexData(std::move(vertexBuffer), firstVertex);
+                          GrPrimitiveRestart::kNo, std::move(vertexBuffer), firstVertex);
     }
 
     void onExecute(GrOpFlushState* flushState, const SkRect& chainBounds) override {
diff --git a/src/gpu/ops/GrQuadPerEdgeAA.cpp b/src/gpu/ops/GrQuadPerEdgeAA.cpp
index ee2a694..42162f8 100644
--- a/src/gpu/ops/GrQuadPerEdgeAA.cpp
+++ b/src/gpu/ops/GrQuadPerEdgeAA.cpp
@@ -400,11 +400,9 @@
 
     if (spec.indexBufferOption() == IndexBufferOption::kTriStrips) {
         SkASSERT(!indexBuffer);
-
-        mesh->setNonIndexedNonInstanced(4);
         int offset = absVertBufferOffset +
                                     runningQuadCount * GrResourceProvider::NumVertsPerNonAAQuad();
-        mesh->setVertexData(std::move(vertexBuffer), offset);
+        mesh->set(std::move(vertexBuffer), 4, offset);
         return;
     }
 
@@ -434,9 +432,8 @@
         // preferred.
         int offset = absVertBufferOffset + runningQuadCount * numVertsPerQuad;
 
-        mesh->setIndexedPatterned(std::move(indexBuffer), numIndicesPerQuad,
-                                  numVertsPerQuad, quadsInDraw, maxNumQuads);
-        mesh->setVertexData(std::move(vertexBuffer), offset);
+        mesh->setIndexedPatterned(std::move(indexBuffer), numIndicesPerQuad, quadsInDraw,
+                                  maxNumQuads, std::move(vertexBuffer), numVertsPerQuad, offset);
     } else {
         int baseIndex = runningQuadCount * numIndicesPerQuad;
         int numIndicesToDraw = quadsInDraw * numIndicesPerQuad;
@@ -445,8 +442,8 @@
         int maxVertex = (runningQuadCount + quadsInDraw) * numVertsPerQuad;
 
         mesh->setIndexed(std::move(indexBuffer), numIndicesToDraw,
-                         baseIndex, minVertex, maxVertex, GrPrimitiveRestart::kNo);
-        mesh->setVertexData(std::move(vertexBuffer), absVertBufferOffset);
+                         baseIndex, minVertex, maxVertex, GrPrimitiveRestart::kNo,
+                         std::move(vertexBuffer), absVertBufferOffset);
     }
 }
 
diff --git a/src/gpu/ops/GrShadowRRectOp.cpp b/src/gpu/ops/GrShadowRRectOp.cpp
index cdc8eda..119addd 100644
--- a/src/gpu/ops/GrShadowRRectOp.cpp
+++ b/src/gpu/ops/GrShadowRRectOp.cpp
@@ -616,8 +616,7 @@
 
         fMesh = target->allocMesh();
         fMesh->setIndexed(std::move(indexBuffer), fIndexCount, firstIndex, 0, fVertCount - 1,
-                          GrPrimitiveRestart::kNo);
-        fMesh->setVertexData(std::move(vertexBuffer), firstVertex);
+                          GrPrimitiveRestart::kNo, std::move(vertexBuffer), firstVertex);
     }
 
     void onExecute(GrOpFlushState* flushState, const SkRect& chainBounds) override {
diff --git a/src/gpu/ops/GrSmallPathRenderer.cpp b/src/gpu/ops/GrSmallPathRenderer.cpp
index 2dbbf37..d3d4df6 100644
--- a/src/gpu/ops/GrSmallPathRenderer.cpp
+++ b/src/gpu/ops/GrSmallPathRenderer.cpp
@@ -820,10 +820,11 @@
             GrMesh* mesh = target->allocMesh();
             mesh->setIndexedPatterned(flushInfo->fIndexBuffer,
                                       GrResourceProvider::NumIndicesPerNonAAQuad(),
-                                      GrResourceProvider::NumVertsPerNonAAQuad(),
                                       flushInfo->fInstancesToFlush,
-                                      GrResourceProvider::MaxNumNonAAQuads());
-            mesh->setVertexData(flushInfo->fVertexBuffer, flushInfo->fVertexOffset);
+                                      GrResourceProvider::MaxNumNonAAQuads(),
+                                      flushInfo->fVertexBuffer,
+                                      GrResourceProvider::NumVertsPerNonAAQuad(),
+                                      flushInfo->fVertexOffset);
             target->recordDraw(flushInfo->fGeometryProcessor, mesh, 1,
                                flushInfo->fFixedDynamicState, nullptr, GrPrimitiveType::kTriangles);
             flushInfo->fVertexOffset += GrResourceProvider::NumVertsPerNonAAQuad() *
diff --git a/src/gpu/ops/GrStrokeRectOp.cpp b/src/gpu/ops/GrStrokeRectOp.cpp
index 639423e..7bb9d29 100644
--- a/src/gpu/ops/GrStrokeRectOp.cpp
+++ b/src/gpu/ops/GrStrokeRectOp.cpp
@@ -242,8 +242,7 @@
         }
 
         fMesh = target->allocMesh();
-        fMesh->setNonIndexedNonInstanced(vertexCount);
-        fMesh->setVertexData(std::move(vertexBuffer), firstVertex);
+        fMesh->set(std::move(vertexBuffer), vertexCount, firstVertex);
     }
 
     void onExecute(GrOpFlushState* flushState, const SkRect& chainBounds) override {
diff --git a/src/gpu/ops/GrTessellatingPathRenderer.cpp b/src/gpu/ops/GrTessellatingPathRenderer.cpp
index 97cdb87..a39cb00 100644
--- a/src/gpu/ops/GrTessellatingPathRenderer.cpp
+++ b/src/gpu/ops/GrTessellatingPathRenderer.cpp
@@ -382,8 +382,7 @@
 
     void createMesh(Target* target, sk_sp<const GrBuffer> vb, int firstVertex, int count) {
         fMesh = target->allocMesh();
-        fMesh->setNonIndexedNonInstanced(count);
-        fMesh->setVertexData(std::move(vb), firstVertex);
+        fMesh->set(std::move(vb), count, firstVertex);
     }
 
     void onExecute(GrOpFlushState* flushState, const SkRect& chainBounds) override {
diff --git a/tests/GrPipelineDynamicStateTest.cpp b/tests/GrPipelineDynamicStateTest.cpp
index 961b63b..6752847 100644
--- a/tests/GrPipelineDynamicStateTest.cpp
+++ b/tests/GrPipelineDynamicStateTest.cpp
@@ -152,8 +152,7 @@
         SkSTArray<kNumMeshes, GrMesh> meshes;
         for (int i = 0; i < kNumMeshes; ++i) {
             GrMesh& mesh = meshes.push_back();
-            mesh.setNonIndexedNonInstanced(4);
-            mesh.setVertexData(fVertexBuffer, 4 * i);
+            mesh.set(fVertexBuffer, 4, 4 * i);
         }
         GrPipeline::DynamicStateArrays dynamicState;
         dynamicState.fScissorRects = kDynamicScissors;
diff --git a/tests/OnFlushCallbackTest.cpp b/tests/OnFlushCallbackTest.cpp
index c639c6f..3be24da 100644
--- a/tests/OnFlushCallbackTest.cpp
+++ b/tests/OnFlushCallbackTest.cpp
@@ -182,8 +182,8 @@
         }
 
         fMesh = target->allocMesh();
-        fMesh->setIndexed(indexBuffer, 6, firstIndex, 0, 3, GrPrimitiveRestart::kNo);
-        fMesh->setVertexData(vertexBuffer, firstVertex);
+        fMesh->setIndexed(indexBuffer, 6, firstIndex, 0, 3, GrPrimitiveRestart::kNo, vertexBuffer,
+                          firstVertex);
     }
 
     void onExecute(GrOpFlushState* flushState, const SkRect& chainBounds) override {