Index: src/gpu/GrInOrderDrawBuffer.h |
diff --git a/src/gpu/GrInOrderDrawBuffer.h b/src/gpu/GrInOrderDrawBuffer.h |
index 7780e402ed2e8b49373dfb01c2e2b1f338593f0d..4129d0a4dce45c192e8731d4e8cdcdff67842927 100644 |
--- a/src/gpu/GrInOrderDrawBuffer.h |
+++ b/src/gpu/GrInOrderDrawBuffer.h |
@@ -110,7 +110,7 @@ private: |
Cmd(uint8_t type) : fType(type) {} |
virtual ~Cmd() {} |
- virtual void execute(GrGpu*, const GrOptDrawState*) = 0; |
+ virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*) = 0; |
uint8_t fType; |
}; |
@@ -129,7 +129,7 @@ private: |
const GrVertexBuffer* vertexBuffer() const { return fVertexBuffer.get(); } |
const GrIndexBuffer* indexBuffer() const { return fIndexBuffer.get(); } |
- virtual void execute(GrGpu*, const GrOptDrawState*); |
+ virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*); |
DrawInfo fInfo; |
ScissorState fScissorState; |
@@ -144,7 +144,7 @@ private: |
const GrPath* path() const { return fPath.get(); } |
- virtual void execute(GrGpu*, const GrOptDrawState*); |
+ virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*); |
ScissorState fScissorState; |
GrStencilSettings fStencilSettings; |
@@ -158,7 +158,7 @@ private: |
const GrPath* path() const { return fPath.get(); } |
- virtual void execute(GrGpu*, const GrOptDrawState*); |
+ virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*); |
GrDeviceCoordTexture fDstCopy; |
ScissorState fScissorState; |
@@ -172,12 +172,12 @@ private: |
DrawPaths(const GrPathRange* pathRange) : Cmd(kDrawPaths_Cmd), fPathRange(pathRange) {} |
const GrPathRange* pathRange() const { return fPathRange.get(); } |
- uint32_t* indices() { return reinterpret_cast<uint32_t*>(CmdBuffer::GetDataForItem(this)); } |
- float* transforms() { return reinterpret_cast<float*>(&this->indices()[fCount]); } |
- virtual void execute(GrGpu*, const GrOptDrawState*); |
+ virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*); |
+ int fIndicesLocation; |
size_t fCount; |
+ int fTransformsLocation; |
PathTransformType fTransformsType; |
GrDeviceCoordTexture fDstCopy; |
ScissorState fScissorState; |
@@ -193,7 +193,7 @@ private: |
GrRenderTarget* renderTarget() const { return fRenderTarget.get(); } |
- virtual void execute(GrGpu*, const GrOptDrawState*); |
+ virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*); |
SkIRect fRect; |
GrColor fColor; |
@@ -209,7 +209,7 @@ private: |
GrRenderTarget* renderTarget() const { return fRenderTarget.get(); } |
- virtual void execute(GrGpu*, const GrOptDrawState*); |
+ virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*); |
SkIRect fRect; |
bool fInsideClip; |
@@ -224,7 +224,7 @@ private: |
GrSurface* dst() const { return fDst.get(); } |
GrSurface* src() const { return fSrc.get(); } |
- virtual void execute(GrGpu*, const GrOptDrawState*); |
+ virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*); |
SkIPoint fDstPoint; |
SkIRect fSrcRect; |
@@ -237,7 +237,7 @@ private: |
struct SetState : public Cmd { |
SetState(const GrDrawState& state) : Cmd(kSetState_Cmd), fState(state) {} |
- virtual void execute(GrGpu*, const GrOptDrawState*); |
+ virtual void execute(GrInOrderDrawBuffer*, const GrOptDrawState*); |
GrDrawState fState; |
GrGpu::DrawType fDrawType; |
@@ -301,6 +301,8 @@ private: |
// TODO: Use a single allocator for commands and records |
enum { |
kCmdBufferInitialSizeInBytes = 8 * 1024, |
+ kPathIdxBufferMinReserve = 64, |
+ kPathXformBufferMinReserve = 2 * kPathIdxBufferMinReserve, |
kGeoPoolStatePreAllocCnt = 4, |
}; |
@@ -310,6 +312,8 @@ private: |
GrGpu* fDstGpu; |
GrVertexBufferAllocPool& fVertexPool; |
GrIndexBufferAllocPool& fIndexPool; |
+ SkTDArray<uint32_t> fPathIndexBuffer; |
+ SkTDArray<float> fPathTransformBuffer; |
struct GeometryPoolState { |
const GrVertexBuffer* fPoolVertexBuffer; |