diff options
author | 2015-01-26 13:30:10 -0800 | |
---|---|---|
committer | 2015-01-26 13:30:10 -0800 | |
commit | d15e4e45374275c045572b304c229237c4a82be4 (patch) | |
tree | 3301c47cdcccff9626c754a73cf3dc60e4f2f85c /src/gpu/GrDrawTarget.h | |
parent | b041efe2a825ea94c0a3805f1f8ca635c6c69dce (diff) |
GrBatchPrototype
BUG=skia:
Review URL: https://codereview.chromium.org/845103005
Diffstat (limited to 'src/gpu/GrDrawTarget.h')
-rw-r--r-- | src/gpu/GrDrawTarget.h | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/src/gpu/GrDrawTarget.h b/src/gpu/GrDrawTarget.h index b66f1c6bd3..18265c8fb7 100644 --- a/src/gpu/GrDrawTarget.h +++ b/src/gpu/GrDrawTarget.h @@ -26,6 +26,7 @@ #include "SkTypes.h" #include "SkXfermode.h" +class GrBatch; class GrClipData; class GrDrawTargetCaps; class GrPath; @@ -259,6 +260,11 @@ public: int vertexCount, const SkRect* devBounds = NULL); + // TODO devbounds should live on the batch + void drawBatch(GrPipelineBuilder*, + GrBatch*, + const SkRect* devBounds = NULL); + /** * Draws path into the stencil buffer. The fill must be either even/odd or * winding (not inverse or hairline). It will respect the HW antialias flag @@ -310,14 +316,14 @@ public: * that rectangle before it is input to GrCoordTransforms that read local * coordinates */ - void drawRect(GrPipelineBuilder* ds, + void drawRect(GrPipelineBuilder* pipelineBuilder, GrColor color, const SkMatrix& viewMatrix, const SkRect& rect, const SkRect* localRect, const SkMatrix* localMatrix) { AutoGeometryPush agp(this); - this->onDrawRect(ds, color, viewMatrix, rect, localRect, localMatrix); + this->onDrawRect(pipelineBuilder, color, viewMatrix, rect, localRect, localMatrix); } /** @@ -527,6 +533,7 @@ public: */ class DrawInfo { public: + DrawInfo() { fDevBounds = NULL; } DrawInfo(const DrawInfo& di) { (*this) = di; } DrawInfo& operator =(const DrawInfo& di); @@ -539,6 +546,15 @@ public: int indicesPerInstance() const { return fIndicesPerInstance; } int instanceCount() const { return fInstanceCount; } + void setPrimitiveType(GrPrimitiveType type) { fPrimitiveType = type; } + void setStartVertex(int startVertex) { fStartVertex = startVertex; } + void setStartIndex(int startIndex) { fStartIndex = startIndex; } + void setVertexCount(int vertexCount) { fVertexCount = vertexCount; } + void setIndexCount(int indexCount) { fIndexCount = indexCount; } + void setVerticesPerInstance(int verticesPerI) { fVerticesPerInstance = verticesPerI; } + void setIndicesPerInstance(int indicesPerI) { fIndicesPerInstance = indicesPerI; } + void setInstanceCount(int instanceCount) { fInstanceCount = instanceCount; } + bool isIndexed() const { return fIndexCount > 0; } #ifdef SK_DEBUG bool isInstanced() const; // this version is longer because of asserts @@ -568,8 +584,6 @@ public: const SkRect* getDevBounds() const { return fDevBounds; } private: - DrawInfo() { fDevBounds = NULL; } - friend class GrDrawTarget; GrPrimitiveType fPrimitiveType; @@ -708,6 +722,10 @@ private: const DrawInfo&, const GrScissorState&, const GrDeviceCoordTexture* dstCopy) = 0; + virtual void onDrawBatch(GrBatch*, + const GrPipelineBuilder&, + const GrScissorState&, + const GrDeviceCoordTexture* dstCopy) = 0; // TODO copy in order drawbuffer onDrawRect to here virtual void onDrawRect(GrPipelineBuilder*, GrColor color, |