Index: src/gpu/GrResourceProvider.h |
diff --git a/src/gpu/GrResourceProvider.h b/src/gpu/GrResourceProvider.h |
index 7b51726d10c7e26d8a1e1ef2a1df64e7a994ee3c..3dfc9ba863334299c5ea1c7142a6ea8d27be9e9e 100644 |
--- a/src/gpu/GrResourceProvider.h |
+++ b/src/gpu/GrResourceProvider.h |
@@ -9,16 +9,18 @@ |
#define GrResourceProvider_DEFINED |
#include "GrBatchAtlas.h" |
-#include "GrBuffer.h" |
+#include "GrIndexBuffer.h" |
#include "GrTextureProvider.h" |
#include "GrPathRange.h" |
class GrBatchAtlas; |
+class GrIndexBuffer; |
class GrPath; |
class GrRenderTarget; |
class GrSingleOwner; |
class GrStencilAttachment; |
class GrStrokeInfo; |
+class GrVertexBuffer; |
class SkDescriptor; |
class SkPath; |
class SkTypeface; |
@@ -43,7 +45,7 @@ |
/** |
* Either finds and refs, or creates an index buffer for instanced drawing with a specific |
* pattern if the index buffer is not found. If the return is non-null, the caller owns |
- * a ref on the returned GrBuffer. |
+ * a ref on the returned GrIndexBuffer. |
* |
* @param pattern the pattern of indices to repeat |
* @param patternSize size in bytes of the pattern |
@@ -53,12 +55,12 @@ |
* |
* @return The index buffer if successful, otherwise nullptr. |
*/ |
- const GrBuffer* findOrCreateInstancedIndexBuffer(const uint16_t* pattern, |
- int patternSize, |
- int reps, |
- int vertCount, |
- const GrUniqueKey& key) { |
- if (GrBuffer* buffer = this->findAndRefTByUniqueKey<GrBuffer>(key)) { |
+ const GrIndexBuffer* findOrCreateInstancedIndexBuffer(const uint16_t* pattern, |
+ int patternSize, |
+ int reps, |
+ int vertCount, |
+ const GrUniqueKey& key) { |
+ if (GrIndexBuffer* buffer = this->findAndRefTByUniqueKey<GrIndexBuffer>(key)) { |
return buffer; |
} |
return this->createInstancedIndexBuffer(pattern, patternSize, reps, vertCount, key); |
@@ -67,13 +69,13 @@ |
/** |
* Returns an index buffer that can be used to render quads. |
* Six indices per quad: 0, 1, 2, 0, 2, 3, etc. |
- * The max number of quads is the buffer's index capacity divided by 6. |
+ * The max number of quads can be queried using GrIndexBuffer::maxQuads(). |
* Draw with kTriangles_GrPrimitiveType |
* @ return the quad index buffer |
*/ |
- const GrBuffer* refQuadIndexBuffer() { |
- if (GrBuffer* buffer = |
- this->findAndRefTByUniqueKey<GrBuffer>(fQuadIndexBufferKey)) { |
+ const GrIndexBuffer* refQuadIndexBuffer() { |
+ if (GrIndexBuffer* buffer = |
+ this->findAndRefTByUniqueKey<GrIndexBuffer>(fQuadIndexBufferKey)) { |
return buffer; |
} |
return this->createQuadIndexBuffer(); |
@@ -102,7 +104,16 @@ |
kNoPendingIO_Flag = kNoPendingIO_ScratchTextureFlag, |
}; |
- GrBuffer* createBuffer(GrBufferType, size_t size, GrAccessPattern, uint32_t flags); |
+ enum BufferUsage { |
+ /** Caller intends to specify the buffer data rarely with respect to the number of draws |
+ that read the data. */ |
+ kStatic_BufferUsage, |
+ /** Caller intends to respecify the buffer data frequently between draws. */ |
+ kDynamic_BufferUsage, |
+ }; |
+ GrIndexBuffer* createIndexBuffer(size_t size, BufferUsage, uint32_t flags); |
+ GrVertexBuffer* createVertexBuffer(size_t size, BufferUsage, uint32_t flags); |
+ GrTransferBuffer* createTransferBuffer(size_t size, TransferType, uint32_t flags); |
GrTexture* createApproxTexture(const GrSurfaceDesc& desc, uint32_t flags) { |
SkASSERT(0 == flags || kNoPendingIO_Flag == flags); |
@@ -146,13 +157,13 @@ |
GrWrapOwnership = kBorrow_GrWrapOwnership); |
private: |
- const GrBuffer* createInstancedIndexBuffer(const uint16_t* pattern, |
- int patternSize, |
- int reps, |
- int vertCount, |
- const GrUniqueKey& key); |
+ const GrIndexBuffer* createInstancedIndexBuffer(const uint16_t* pattern, |
+ int patternSize, |
+ int reps, |
+ int vertCount, |
+ const GrUniqueKey& key); |
- const GrBuffer* createQuadIndexBuffer(); |
+ const GrIndexBuffer* createQuadIndexBuffer(); |
GrUniqueKey fQuadIndexBufferKey; |