| Index: src/gpu/GrVertices.h
|
| diff --git a/src/gpu/GrVertices.h b/src/gpu/GrVertices.h
|
| deleted file mode 100644
|
| index 03ede07d154cc2d9ddefad0eef620d9eaa2036c2..0000000000000000000000000000000000000000
|
| --- a/src/gpu/GrVertices.h
|
| +++ /dev/null
|
| @@ -1,179 +0,0 @@
|
| -/*
|
| - * Copyright 2015 Google Inc.
|
| - *
|
| - * Use of this source code is governed by a BSD-style license that can be
|
| - * found in the LICENSE file.
|
| - */
|
| -
|
| -#ifndef GrVertices_DEFINED
|
| -#define GrVertices_DEFINED
|
| -
|
| -#include "GrIndexBuffer.h"
|
| -#include "GrVertexBuffer.h"
|
| -
|
| -class GrNonInstancedVertices {
|
| -public:
|
| - 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; }
|
| - bool isIndexed() const { return fIndexCount > 0; }
|
| -
|
| - const GrVertexBuffer* vertexBuffer() const { return fVertexBuffer.get(); }
|
| - const GrIndexBuffer* indexBuffer() const { return fIndexBuffer.get(); }
|
| -
|
| -protected:
|
| - GrPrimitiveType fPrimitiveType;
|
| - int fStartVertex;
|
| - int fStartIndex;
|
| - int fVertexCount;
|
| - int fIndexCount;
|
| - GrPendingIOResource<const GrVertexBuffer, kRead_GrIOType> fVertexBuffer;
|
| - GrPendingIOResource<const GrIndexBuffer, kRead_GrIOType> fIndexBuffer;
|
| - friend class GrVertices;
|
| -};
|
| -
|
| -/**
|
| - * Used to communicate index and vertex buffers, counts, and offsets for a draw from GrBatch to
|
| - * GrGpu. It also holds the primitive type for the draw. TODO: Consider moving ownership of this
|
| - * and draw-issuing responsibility to GrPrimitiveProcessor. The rest of the vertex info lives there
|
| - * already (stride, attribute mappings).
|
| - */
|
| -class GrVertices : public GrNonInstancedVertices {
|
| -public:
|
| - GrVertices() {}
|
| - GrVertices(const GrVertices& di) { (*this) = di; }
|
| - GrVertices& operator =(const GrVertices& di);
|
| -
|
| - void init(GrPrimitiveType primType, const GrVertexBuffer* vertexBuffer, int startVertex,
|
| - int vertexCount) {
|
| - SkASSERT(vertexBuffer);
|
| - SkASSERT(vertexCount);
|
| - SkASSERT(startVertex >= 0);
|
| - fPrimitiveType = primType;
|
| - fVertexBuffer.reset(vertexBuffer);
|
| - fIndexBuffer.reset(nullptr);
|
| - fStartVertex = startVertex;
|
| - fStartIndex = 0;
|
| - fVertexCount = vertexCount;
|
| - fIndexCount = 0;
|
| - fInstanceCount = 0;
|
| - fVerticesPerInstance = 0;
|
| - fIndicesPerInstance = 0;
|
| - fMaxInstancesPerDraw = 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(vertexBuffer);
|
| - fIndexBuffer.reset(indexBuffer);
|
| - fStartVertex = startVertex;
|
| - fStartIndex = startIndex;
|
| - fVertexCount = vertexCount;
|
| - fIndexCount = indexCount;
|
| - fInstanceCount = 0;
|
| - fVerticesPerInstance = 0;
|
| - fIndicesPerInstance = 0;
|
| - fMaxInstancesPerDraw = 0;
|
| - }
|
| -
|
| -
|
| - /** 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 instanceCount,
|
| - int maxInstancesPerDraw) {
|
| - SkASSERT(vertexBuffer);
|
| - SkASSERT(indexBuffer);
|
| - SkASSERT(instanceCount);
|
| - SkASSERT(verticesPerInstance);
|
| - SkASSERT(indicesPerInstance);
|
| - SkASSERT(startVertex >= 0);
|
| - fPrimitiveType = primType;
|
| - fVertexBuffer.reset(vertexBuffer);
|
| - fIndexBuffer.reset(indexBuffer);
|
| - fStartVertex = startVertex;
|
| - fStartIndex = 0;
|
| - fVerticesPerInstance = verticesPerInstance;
|
| - fIndicesPerInstance = indicesPerInstance;
|
| - fInstanceCount = instanceCount;
|
| - fVertexCount = instanceCount * fVerticesPerInstance;
|
| - fIndexCount = instanceCount * fIndicesPerInstance;
|
| - fMaxInstancesPerDraw = maxInstancesPerDraw;
|
| - }
|
| -
|
| -
|
| - /** These return 0 if initInstanced was not used to initialize the GrVertices. */
|
| - int verticesPerInstance() const { return fVerticesPerInstance; }
|
| - int indicesPerInstance() const { return fIndicesPerInstance; }
|
| - int instanceCount() const { return fInstanceCount; }
|
| -
|
| - bool isInstanced() const { return fInstanceCount > 0; }
|
| -
|
| - class Iterator {
|
| - public:
|
| - const GrNonInstancedVertices* init(const GrVertices& vertices) {
|
| - fVertices = &vertices;
|
| - if (vertices.fInstanceCount <= vertices.fMaxInstancesPerDraw) {
|
| - fInstancesRemaining = 0;
|
| - // Note, this also covers the non-instanced case!
|
| - return &vertices;
|
| - }
|
| - SkASSERT(vertices.isInstanced());
|
| - fInstanceBatch.fIndexBuffer.reset(vertices.fIndexBuffer.get());
|
| - fInstanceBatch.fVertexBuffer.reset(vertices.fVertexBuffer.get());
|
| - fInstanceBatch.fIndexCount = vertices.fMaxInstancesPerDraw *
|
| - vertices.fIndicesPerInstance;
|
| - fInstanceBatch.fVertexCount = vertices.fMaxInstancesPerDraw *
|
| - vertices.fVerticesPerInstance;
|
| - fInstanceBatch.fPrimitiveType = vertices.fPrimitiveType;
|
| - fInstanceBatch.fStartIndex = vertices.fStartIndex;
|
| - fInstanceBatch.fStartVertex = vertices.fStartVertex;
|
| - fInstancesRemaining = vertices.fInstanceCount - vertices.fMaxInstancesPerDraw;
|
| - return &fInstanceBatch;
|
| - }
|
| -
|
| - const GrNonInstancedVertices* next() {
|
| - if (!fInstancesRemaining) {
|
| - return nullptr;
|
| - }
|
| - fInstanceBatch.fStartVertex += fInstanceBatch.fVertexCount;
|
| - int instances = SkTMin(fInstancesRemaining, fVertices->fMaxInstancesPerDraw);
|
| - fInstanceBatch.fIndexCount = instances * fVertices->fIndicesPerInstance;
|
| - fInstanceBatch.fVertexCount = instances * fVertices->fVerticesPerInstance;
|
| - fInstancesRemaining -= instances;
|
| - return &fInstanceBatch;
|
| - }
|
| - private:
|
| - GrNonInstancedVertices fInstanceBatch;
|
| - const GrVertices* fVertices;
|
| - int fInstancesRemaining;
|
| - };
|
| -
|
| -private:
|
| - int fInstanceCount;
|
| - int fVerticesPerInstance;
|
| - int fIndicesPerInstance;
|
| - int fMaxInstancesPerDraw;
|
| -};
|
| -
|
| -#endif
|
|
|