diff options
author | 2015-05-04 08:09:30 -0700 | |
---|---|---|
committer | 2015-05-04 08:09:30 -0700 | |
commit | ab622c7b8cc8c39f0a594e4392b9e31b7e1ddb26 (patch) | |
tree | 37f3f06f49ac232382c691d09df3a8da0aada0ba /src/gpu/GrInOrderDrawBuffer.cpp | |
parent | f15132fdcf5aabb874f1c151a872efe54ee95118 (diff) |
Move instanced index buffer creation to flush time
Review URL: https://codereview.chromium.org/1116943004
Diffstat (limited to 'src/gpu/GrInOrderDrawBuffer.cpp')
-rw-r--r-- | src/gpu/GrInOrderDrawBuffer.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/gpu/GrInOrderDrawBuffer.cpp b/src/gpu/GrInOrderDrawBuffer.cpp index e298be6c8b..8190ec0e8a 100644 --- a/src/gpu/GrInOrderDrawBuffer.cpp +++ b/src/gpu/GrInOrderDrawBuffer.cpp @@ -8,6 +8,7 @@ #include "GrInOrderDrawBuffer.h" #include "GrDefaultGeoProcFactory.h" +#include "GrResourceProvider.h" #include "GrTemplates.h" GrInOrderDrawBuffer::GrInOrderDrawBuffer(GrContext* context, @@ -137,17 +138,18 @@ public: vertexStride == sizeof(GrDefaultGeoProcFactory::PositionColorAttr)); int instanceCount = fGeoData.count(); - int vertexCount = kVertsPerRect * instanceCount; + SkAutoTUnref<const GrIndexBuffer> indexBuffer( + batchTarget->resourceProvider()->refQuadIndexBuffer()); + int vertexCount = kVertsPerRect * instanceCount; const GrVertexBuffer* vertexBuffer; int firstVertex; - void* vertices = batchTarget->vertexPool()->makeSpace(vertexStride, vertexCount, &vertexBuffer, &firstVertex); - if (!vertices || !batchTarget->quadIndexBuffer()) { + if (!vertices || !indexBuffer) { SkDebugf("Could not allocate buffers\n"); return; } @@ -181,8 +183,6 @@ public: } } - const GrIndexBuffer* quadIndexBuffer = batchTarget->quadIndexBuffer(); - GrDrawTarget::DrawInfo drawInfo; drawInfo.setPrimitiveType(kTriangles_GrPrimitiveType); drawInfo.setStartVertex(0); @@ -191,9 +191,9 @@ public: drawInfo.setIndicesPerInstance(kIndicesPerRect); drawInfo.adjustStartVertex(firstVertex); drawInfo.setVertexBuffer(vertexBuffer); - drawInfo.setIndexBuffer(quadIndexBuffer); + drawInfo.setIndexBuffer(indexBuffer); - int maxInstancesPerDraw = quadIndexBuffer->maxQuads(); + int maxInstancesPerDraw = indexBuffer->maxQuads(); while (instanceCount) { drawInfo.setInstanceCount(SkTMin(instanceCount, maxInstancesPerDraw)); drawInfo.setVertexCount(drawInfo.instanceCount() * drawInfo.verticesPerInstance()); |