Fix an egregious overallocation error in GrVertexChunkArray
Change-Id: I6ca9f094edcaf1dbf21ffe32a37d5e058ec57c0a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/411096
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
diff --git a/src/gpu/GrVertexChunkArray.h b/src/gpu/GrVertexChunkArray.h
index 1a1d7a1..c27e06a 100644
--- a/src/gpu/GrVertexChunkArray.h
+++ b/src/gpu/GrVertexChunkArray.h
@@ -72,10 +72,9 @@
}
fCurrChunkVertexCount = 0;
GrVertexChunk* chunk = &fChunks->push_back();
- fCurrChunkVertexWriter = {fTarget->makeVertexSpaceAtLeast(fStride,
- fMinVerticesPerChunk * minCount,
- fMinVerticesPerChunk * minCount,
- &chunk->fBuffer,
+ int minAllocCount = std::max(minCount, fMinVerticesPerChunk);
+ fCurrChunkVertexWriter = {fTarget->makeVertexSpaceAtLeast(fStride, minAllocCount,
+ minAllocCount, &chunk->fBuffer,
&chunk->fBase,
&fCurrChunkVertexCapacity)};
if (!fCurrChunkVertexWriter || !chunk->fBuffer || fCurrChunkVertexCapacity < minCount) {
@@ -92,7 +91,7 @@
GrMeshDrawOp::Target* const fTarget;
GrVertexChunkArray* const fChunks;
const size_t fStride;
- size_t fMinVerticesPerChunk;
+ int fMinVerticesPerChunk;
GrVertexWriter fCurrChunkVertexWriter;
int fCurrChunkVertexCount = 0;