diff --git a/src/gpu/GrVertexChunkArray.cpp b/src/gpu/GrVertexChunkArray.cpp
new file mode 100644
index 0000000..27490f6
--- /dev/null
+++ b/src/gpu/GrVertexChunkArray.cpp
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2021 Google LLC.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "src/gpu/GrVertexChunkArray.h"
+
+#include "src/gpu/GrMeshDrawTarget.h"
+
+GrVertexChunkBuilder::~GrVertexChunkBuilder() {
+    if (!fChunks->empty()) {
+        fTarget->putBackVertices(fCurrChunkVertexCapacity - fCurrChunkVertexCount, fStride);
+        fChunks->back().fCount = fCurrChunkVertexCount;
+    }
+}
+
+bool GrVertexChunkBuilder::allocChunk(int minCount) {
+    if (!fChunks->empty()) {
+        // No need to put back vertices; the buffer is full.
+        fChunks->back().fCount = fCurrChunkVertexCount;
+    }
+    fCurrChunkVertexCount = 0;
+    GrVertexChunk* chunk = &fChunks->push_back();
+    int minAllocCount = std::max(minCount, fMinVerticesPerChunk);
+    fCurrChunkVertexWriter = {fTarget->makeVertexSpaceAtLeast(fStride, minAllocCount,
+                                                                minAllocCount, &chunk->fBuffer,
+                                                                &chunk->fBase,
+                                                                &fCurrChunkVertexCapacity)};
+    if (!fCurrChunkVertexWriter || !chunk->fBuffer || fCurrChunkVertexCapacity < minCount) {
+        SkDebugf("WARNING: Failed to allocate vertex buffer for GrVertexChunk.\n");
+        fChunks->pop_back();
+        SkASSERT(fCurrChunkVertexCount == 0);
+        fCurrChunkVertexCapacity = 0;
+        return false;
+    }
+    fMinVerticesPerChunk *= 2;
+    return true;
+}
