Index: src/gpu/GrGpu.h |
diff --git a/src/gpu/GrGpu.h b/src/gpu/GrGpu.h |
index 429c9c843927c1bbed41e079735ee3cdb636de60..cbae83f71f714a956afa27b1811e441048624982 100644 |
--- a/src/gpu/GrGpu.h |
+++ b/src/gpu/GrGpu.h |
@@ -20,6 +20,7 @@ class GrPath; |
class GrPathRange; |
class GrPathRenderer; |
class GrPathRendererChain; |
+class GrPrimitiveProcessor; |
class GrStencilBuffer; |
class GrVertexBufferAllocPool; |
@@ -315,10 +316,12 @@ public: |
GrContext::GPUStats* gpuStats() { return &fGPUStats; } |
- virtual void buildProgramDesc(const GrOptDrawState&, |
+ virtual void buildProgramDesc(GrProgramDesc*, |
+ const GrPrimitiveProcessor&, |
+ const GrOptDrawState&, |
const GrProgramDesc::DescInfo&, |
GrGpu::DrawType, |
- GrProgramDesc*) = 0; |
+ const GrBatchTracker&) const = 0; |
/** |
* Called at start and end of gpu trace marking |
@@ -358,7 +361,25 @@ public: |
const SkIRect& srcRect, |
const SkIPoint& dstPoint) = 0; |
- void draw(const GrOptDrawState&, const GrDrawTarget::DrawInfo&); |
+ struct DrawArgs { |
+ typedef GrDrawTarget::DrawInfo DrawInfo; |
+ DrawArgs(const GrPrimitiveProcessor* primProc, |
+ const GrOptDrawState* optState, |
+ const GrProgramDesc* desc, |
+ const GrBatchTracker* batchTracker) |
+ : fPrimitiveProcessor(primProc) |
+ , fOptState(optState) |
+ , fDesc(desc) |
+ , fBatchTracker(batchTracker) { |
+ SkASSERT(primProc && optState && desc && batchTracker); |
+ } |
+ const GrPrimitiveProcessor* fPrimitiveProcessor; |
+ const GrOptDrawState* fOptState; |
+ const GrProgramDesc* fDesc; |
+ const GrBatchTracker* fBatchTracker; |
+ }; |
+ |
+ void draw(const DrawArgs&, const GrDrawTarget::DrawInfo&); |
/** None of these params are optional, pointers used just to avoid making copies. */ |
struct StencilPathState { |
@@ -371,8 +392,8 @@ public: |
void stencilPath(const GrPath*, const StencilPathState&); |
- void drawPath(const GrOptDrawState&, const GrPath*, const GrStencilSettings&); |
- void drawPaths(const GrOptDrawState&, |
+ void drawPath(const DrawArgs&, const GrPath*, const GrStencilSettings&); |
+ void drawPaths(const DrawArgs&, |
const GrPathRange*, |
const void* indices, |
GrDrawTarget::PathIndexType, |
@@ -446,11 +467,11 @@ private: |
bool insideClip) = 0; |
// overridden by backend-specific derived class to perform the draw call. |
- virtual void onDraw(const GrOptDrawState&, const GrDrawTarget::DrawInfo&) = 0; |
+ virtual void onDraw(const DrawArgs&, const GrDrawTarget::DrawInfo&) = 0; |
virtual void onStencilPath(const GrPath*, const StencilPathState&) = 0; |
- virtual void onDrawPath(const GrOptDrawState&, const GrPath*, const GrStencilSettings&) = 0; |
- virtual void onDrawPaths(const GrOptDrawState&, |
+ virtual void onDrawPath(const DrawArgs&, const GrPath*, const GrStencilSettings&) = 0; |
+ virtual void onDrawPaths(const DrawArgs&, |
const GrPathRange*, |
const void* indices, |
GrDrawTarget::PathIndexType, |