| Index: src/gpu/GrDrawTarget.h
|
| diff --git a/src/gpu/GrDrawTarget.h b/src/gpu/GrDrawTarget.h
|
| index 458e6e14a99d787d65e532c81caf0d19ec32facc..5871abfe7e6ba5e0dd81c39428dcef6e410772a1 100644
|
| --- a/src/gpu/GrDrawTarget.h
|
| +++ b/src/gpu/GrDrawTarget.h
|
| @@ -224,152 +224,6 @@ public:
|
|
|
| virtual DrawToken getCurrentDrawToken() { return DrawToken(this, 0); }
|
|
|
| - /**
|
| - * Used to communicate draw index vertex offsets and counts toto GPUs / subclasses
|
| - */
|
| - class DrawInfo {
|
| - public:
|
| - DrawInfo() {}
|
| - DrawInfo(const DrawInfo& di) { (*this) = di; }
|
| - DrawInfo& operator =(const DrawInfo& di);
|
| -
|
| - void init(GrPrimitiveType primType, const GrVertexBuffer* vertexBuffer, int startVertex,
|
| - int vertexCount) {
|
| - SkASSERT(vertexBuffer);
|
| - SkASSERT(vertexCount);
|
| - SkASSERT(startVertex >= 0);
|
| - fPrimitiveType = primType;
|
| - fVertexBuffer.reset(SkRef(vertexBuffer));
|
| - fIndexBuffer.reset(NULL);
|
| - fStartVertex = startVertex;
|
| - fStartIndex = 0;
|
| - fVertexCount = vertexCount;
|
| - fIndexCount = 0;
|
| - fInstanceCount = 0;
|
| - fVerticesPerInstance = 0;
|
| - fIndicesPerInstance = 0;
|
| - }
|
| -
|
| - void initIndexed(GrPrimitiveType primType,
|
| - const GrVertexBuffer* vertexBuffer,
|
| - const GrIndexBuffer* indexBuffer,
|
| - int startVertex,
|
| - int startIndex,
|
| - int vertexCount,
|
| - int indexCount) {
|
| - SkASSERT(indexBuffer);
|
| - SkASSERT(vertexBuffer);
|
| - SkASSERT(indexCount);
|
| - SkASSERT(vertexCount);
|
| - SkASSERT(startIndex >= 0);
|
| - SkASSERT(startVertex >= 0);
|
| - fPrimitiveType = primType;
|
| - fVertexBuffer.reset(SkRef(vertexBuffer));
|
| - fIndexBuffer.reset(SkRef(indexBuffer));
|
| - fStartVertex = startVertex;
|
| - fStartIndex = startIndex;
|
| - fVertexCount = vertexCount;
|
| - fIndexCount = indexCount;
|
| - fInstanceCount = 0;
|
| - fVerticesPerInstance = 0;
|
| - fIndicesPerInstance = 0;
|
| - }
|
| -
|
| - void initInstanced(GrPrimitiveType primType,
|
| - const GrVertexBuffer* vertexBuffer,
|
| - const GrIndexBuffer* indexBuffer,
|
| - int startVertex,
|
| - int verticesPerInstance,
|
| - int indicesPerInstance,
|
| - int instanceCount) {
|
| - SkASSERT(vertexBuffer);
|
| - SkASSERT(indexBuffer);
|
| - SkASSERT(instanceCount);
|
| - SkASSERT(verticesPerInstance);
|
| - SkASSERT(indicesPerInstance);
|
| - SkASSERT(startVertex >= 0);
|
| - fPrimitiveType = primType;
|
| - fVertexBuffer.reset(SkRef(vertexBuffer));
|
| - fIndexBuffer.reset(SkRef(indexBuffer));
|
| - fStartVertex = startVertex;
|
| - fStartIndex = 0;
|
| - fVerticesPerInstance = verticesPerInstance;
|
| - fIndicesPerInstance = indicesPerInstance;
|
| - fInstanceCount = instanceCount;
|
| - fVertexCount = instanceCount * fVerticesPerInstance;
|
| - fIndexCount = instanceCount * fIndicesPerInstance;
|
| - }
|
| -
|
| - /** Variation of the above that may be used when the total number of instances may exceed
|
| - the number of instances supported by the index buffer. To be used with
|
| - nextInstances() to draw in max-sized batches.*/
|
| - void initInstanced(GrPrimitiveType primType,
|
| - const GrVertexBuffer* vertexBuffer,
|
| - const GrIndexBuffer* indexBuffer,
|
| - int startVertex,
|
| - int verticesPerInstance,
|
| - int indicesPerInstance,
|
| - int* instancesRemaining,
|
| - int maxInstancesPerDraw) {
|
| - int instanceCount = SkTMin(*instancesRemaining, maxInstancesPerDraw);
|
| - *instancesRemaining -= instanceCount;
|
| - this->initInstanced(primType, vertexBuffer, indexBuffer, startVertex,
|
| - verticesPerInstance, indicesPerInstance, instanceCount);
|
| - }
|
| -
|
| - GrPrimitiveType primitiveType() const { return fPrimitiveType; }
|
| - int startVertex() const { return fStartVertex; }
|
| - int startIndex() const { return fStartIndex; }
|
| - int vertexCount() const { return fVertexCount; }
|
| - int indexCount() const { return fIndexCount; }
|
| -
|
| - /** These return 0 if initInstanced was not used to initialize the DrawInfo. */
|
| - int verticesPerInstance() const { return fVerticesPerInstance; }
|
| - int indicesPerInstance() const { return fIndicesPerInstance; }
|
| - int instanceCount() const { return fInstanceCount; }
|
| -
|
| - bool isIndexed() const { return fIndexCount > 0; }
|
| - bool isInstanced() const { return fInstanceCount > 0; }
|
| -
|
| - /** Called after using this draw info to draw the next set of instances.
|
| - The vertex offset is advanced while the index buffer is reused at the same
|
| - position. instancesRemaining is number of instances that remain, maxInstances is
|
| - the most number of instances that can be used with the index buffer. If there
|
| - are no instances remaining, the DrawInfo is unmodified and false is returned.*/
|
| - bool nextInstances(int* instancesRemaining, int maxInstances) {
|
| - SkASSERT(this->isInstanced());
|
| - if (!*instancesRemaining) {
|
| - return false;
|
| - }
|
| - fStartVertex += fVertexCount;
|
| - fInstanceCount = SkTMin(*instancesRemaining, maxInstances);
|
| - fVertexCount = fInstanceCount * fVerticesPerInstance;
|
| - fIndexCount = fInstanceCount * fIndicesPerInstance;
|
| - *instancesRemaining -= fInstanceCount;
|
| - return true;
|
| - }
|
| -
|
| - const GrVertexBuffer* vertexBuffer() const { return fVertexBuffer.get(); }
|
| - const GrIndexBuffer* indexBuffer() const { return fIndexBuffer.get(); }
|
| -
|
| - private:
|
| - friend class GrDrawTarget;
|
| -
|
| - GrPrimitiveType fPrimitiveType;
|
| -
|
| - int fStartVertex;
|
| - int fStartIndex;
|
| - int fVertexCount;
|
| - int fIndexCount;
|
| -
|
| - int fInstanceCount;
|
| - int fVerticesPerInstance;
|
| - int fIndicesPerInstance;
|
| -
|
| - GrPendingIOResource<const GrVertexBuffer, kRead_GrIOType> fVertexBuffer;
|
| - GrPendingIOResource<const GrIndexBuffer, kRead_GrIOType> fIndexBuffer;
|
| - };
|
| -
|
| bool programUnitTest(int maxStages);
|
|
|
| protected:
|
|
|