Index: src/gpu/GrTargetCommands.h |
diff --git a/src/gpu/GrTargetCommands.h b/src/gpu/GrTargetCommands.h |
index f5f0004d079638324e3da966089c8d67a012e808..a62bc0d1d0ded8830d2df66d9d4655c6e1ec3be6 100644 |
--- a/src/gpu/GrTargetCommands.h |
+++ b/src/gpu/GrTargetCommands.h |
@@ -22,6 +22,9 @@ |
class GrBufferedDrawTarget; |
+// TODO: Convert all commands into GrBatch and remove this class. Xferbarrier will just become a |
+// batch blocker (when there is overlap) and the xp is responsible for issuing any barrier calls |
+// on the backend. |
class GrTargetCommands : ::SkNoncopyable { |
public: |
GrTargetCommands(GrGpu* gpu) |
@@ -33,14 +36,13 @@ public: |
public: |
enum CmdType { |
kStencilPath_CmdType = 1, |
- kSetState_CmdType = 2, |
- kClear_CmdType = 3, |
- kClearStencil_CmdType = 4, |
- kCopySurface_CmdType = 5, |
- kDrawPath_CmdType = 6, |
- kDrawPaths_CmdType = 7, |
- kDrawBatch_CmdType = 8, |
- kXferBarrier_CmdType = 9, |
+ kClear_CmdType = 2, |
+ kClearStencil_CmdType = 3, |
+ kCopySurface_CmdType = 4, |
+ kDrawPath_CmdType = 5, |
+ kDrawPaths_CmdType = 6, |
+ kDrawBatch_CmdType = 7, |
+ kXferBarrier_CmdType = 8, |
}; |
Cmd(CmdType type) |
@@ -90,13 +92,13 @@ private: |
void recordXferBarrierIfNecessary(const GrPipeline&, GrBufferedDrawTarget*); |
// TODO: This can be just a pipeline once paths are in batch, and it should live elsewhere |
- struct State : public SkNVRefCnt<State> { |
+ struct StateForPathDraw : public SkNVRefCnt<StateForPathDraw> { |
// TODO get rid of the prim proc parameter when we use batch everywhere |
- State(const GrPrimitiveProcessor* primProc = NULL) |
+ StateForPathDraw(const GrPrimitiveProcessor* primProc = NULL) |
: fPrimitiveProcessor(primProc) |
, fCompiled(false) {} |
- ~State() { reinterpret_cast<GrPipeline*>(fPipeline.get())->~GrPipeline(); } |
+ ~StateForPathDraw() { reinterpret_cast<GrPipeline*>(fPipeline.get())->~GrPipeline(); } |
// This function is only for getting the location in memory where we will create our |
// pipeline object. |
@@ -131,7 +133,7 @@ private: |
bool fCompiled; |
}; |
// TODO remove this when State is just a pipeline |
- friend SkNVRefCnt<State>; |
+ friend SkNVRefCnt<StateForPathDraw>; |
struct StencilPath : public Cmd { |
StencilPath(const GrPath* path, GrRenderTarget* rt) |
@@ -153,7 +155,7 @@ private: |
}; |
struct DrawPath : public Cmd { |
- DrawPath(State* state, const GrPath* path) |
+ DrawPath(StateForPathDraw* state, const GrPath* path) |
: Cmd(kDrawPath_CmdType) |
, fState(SkRef(state)) |
, fPath(path) {} |
@@ -162,14 +164,14 @@ private: |
void execute(GrGpu*) override; |
- SkAutoTUnref<State> fState; |
- GrStencilSettings fStencilSettings; |
+ SkAutoTUnref<StateForPathDraw> fState; |
+ GrStencilSettings fStencilSettings; |
private: |
GrPendingIOResource<const GrPath, kRead_GrIOType> fPath; |
}; |
struct DrawPaths : public Cmd { |
- DrawPaths(State* state, const GrPathRange* pathRange) |
+ DrawPaths(StateForPathDraw* state, const GrPathRange* pathRange) |
: Cmd(kDrawPaths_CmdType) |
, fState(SkRef(state)) |
, fPathRange(pathRange) {} |
@@ -178,7 +180,7 @@ private: |
void execute(GrGpu*) override; |
- SkAutoTUnref<State> fState; |
+ SkAutoTUnref<StateForPathDraw> fState; |
char* fIndices; |
GrDrawTarget::PathIndexType fIndexType; |
float* fTransforms; |
@@ -241,20 +243,17 @@ private: |
}; |
struct DrawBatch : public Cmd { |
- DrawBatch(const State* state, GrBatch* batch, GrBatchTarget* batchTarget) |
+ DrawBatch(GrBatch* batch, GrBatchTarget* batchTarget) |
: Cmd(kDrawBatch_CmdType) |
- , fState(SkRef(state)) |
, fBatch(SkRef(batch)) |
, fBatchTarget(batchTarget) { |
SkASSERT(!batch->isUsed()); |
} |
+ GrBatch* batch() { return fBatch; } |
void execute(GrGpu*) override; |
- |
- SkAutoTUnref<const State> fState; |
- SkAutoTUnref<GrBatch> fBatch; |
- |
private: |
+ SkAutoTUnref<GrBatch> fBatch; |
GrBatchTarget* fBatchTarget; |
}; |