Move creation of AAQuadIndexBuffer to GrResourceProvider
This CL also increases the AAQuadIndexBuffer's size and centralizes the handling of index buffer constants.
Change-Id: I4fb679a1c5e4076cf249b612f798e9bf5a38cd0b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/251244
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/ops/GrMeshDrawOp.cpp b/src/gpu/ops/GrMeshDrawOp.cpp
index 77dcf6d..8ae327c 100644
--- a/src/gpu/ops/GrMeshDrawOp.cpp
+++ b/src/gpu/ops/GrMeshDrawOp.cpp
@@ -20,15 +20,15 @@
GrMeshDrawOp::PatternHelper::PatternHelper(Target* target, GrPrimitiveType primitiveType,
size_t vertexStride, sk_sp<const GrBuffer> indexBuffer,
int verticesPerRepetition, int indicesPerRepetition,
- int repeatCount) {
+ int repeatCount, int maxRepetitions) {
this->init(target, primitiveType, vertexStride, std::move(indexBuffer), verticesPerRepetition,
- indicesPerRepetition, repeatCount);
+ indicesPerRepetition, repeatCount, maxRepetitions);
}
void GrMeshDrawOp::PatternHelper::init(Target* target, GrPrimitiveType primitiveType,
size_t vertexStride, sk_sp<const GrBuffer> indexBuffer,
int verticesPerRepetition, int indicesPerRepetition,
- int repeatCount) {
+ int repeatCount, int maxRepetitions) {
SkASSERT(target);
if (!indexBuffer) {
return;
@@ -42,9 +42,10 @@
return;
}
SkASSERT(vertexBuffer);
- size_t ibSize = indexBuffer->size();
- int maxRepetitions = static_cast<int>(ibSize / (sizeof(uint16_t) * indicesPerRepetition));
fMesh = target->allocMesh(primitiveType);
+
+ 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);
@@ -64,13 +65,15 @@
//////////////////////////////////////////////////////////////////////////////
GrMeshDrawOp::QuadHelper::QuadHelper(Target* target, size_t vertexStride, int quadsToDraw) {
- sk_sp<const GrGpuBuffer> quadIndexBuffer = target->resourceProvider()->refQuadIndexBuffer();
- if (!quadIndexBuffer) {
+ sk_sp<const GrGpuBuffer> indexBuffer = target->resourceProvider()->refNonAAQuadIndexBuffer();
+ if (!indexBuffer) {
SkDebugf("Could not get quad index buffer.");
return;
}
- this->init(target, GrPrimitiveType::kTriangles, vertexStride, std::move(quadIndexBuffer),
- kVerticesPerQuad, kIndicesPerQuad, quadsToDraw);
+ this->init(target, GrPrimitiveType::kTriangles, vertexStride, std::move(indexBuffer),
+ GrResourceProvider::NumVertsPerNonAAQuad(),
+ GrResourceProvider::NumIndicesPerNonAAQuad(), quadsToDraw,
+ GrResourceProvider::MaxNumNonAAQuads());
}
//////////////////////////////////////////////////////////////////////////////