Index: src/gpu/GrTargetCommands.cpp |
diff --git a/src/gpu/GrTargetCommands.cpp b/src/gpu/GrTargetCommands.cpp |
index 30920f884d959a6639a0e1f907e077576521d905..9b968dc9e73650c0501fd9786a1e0901bcef2e18 100644 |
--- a/src/gpu/GrTargetCommands.cpp |
+++ b/src/gpu/GrTargetCommands.cpp |
@@ -47,7 +47,7 @@ int GrTargetCommands::concatInstancedDraw(GrInOrderDrawBuffer* iodb, |
// Check if there is a draw info that is compatible that uses the same VB from the pool and |
// the same IB |
- if (Cmd::kDraw_Cmd != fCmdBuffer.back().type()) { |
+ if (Cmd::kDraw_CmdType != fCmdBuffer.back().type()) { |
return 0; |
} |
@@ -114,7 +114,7 @@ GrTargetCommands::Cmd* GrTargetCommands::recordDrawBatch( |
} |
// Check if there is a Batch Draw we can batch with |
- if (Cmd::kDrawBatch_Cmd != fCmdBuffer.back().type() || !fDrawBatch) { |
+ if (Cmd::kDrawBatch_CmdType != fCmdBuffer.back().type() || !fDrawBatch) { |
fDrawBatch = GrNEW_APPEND_TO_RECORDER(fCmdBuffer, DrawBatch, (batch, &fBatchTarget)); |
return fDrawBatch; |
} |
@@ -191,7 +191,7 @@ GrTargetCommands::Cmd* GrTargetCommands::recordDrawPaths( |
transformValues, transformType, |
count, &savedIndices, &savedTransforms); |
- if (Cmd::kDrawPaths_Cmd == fCmdBuffer.back().type()) { |
+ if (Cmd::kDrawPaths_CmdType == fCmdBuffer.back().type()) { |
// The previous command was also DrawPaths. Try to collapse this call into the one |
// before. Note that stenciling all the paths at once, then covering, may not be |
// equivalent to two separate draw calls if there is overlap. Blending won't work, |
@@ -286,37 +286,31 @@ void GrTargetCommands::flush(GrInOrderDrawBuffer* iodb) { |
return; |
} |
- // Updated every time we find a set state cmd to reflect the current state in the playback |
- // stream. |
- SetState* currentState = NULL; |
- |
// TODO this is temporary while batch is being rolled out |
this->closeBatch(); |
iodb->getVertexAllocPool()->unmap(); |
iodb->getIndexAllocPool()->unmap(); |
fBatchTarget.preFlush(); |
- currentState = NULL; |
- CmdBuffer::Iter iter(fCmdBuffer); |
+ // Updated every time we find a set state cmd to reflect the current state in the playback |
+ // stream. |
+ SetState* currentState = NULL; |
- int currCmdMarker = 0; |
+ CmdBuffer::Iter iter(fCmdBuffer); |
GrGpu* gpu = iodb->getGpu(); |
- int i = 0; |
while (iter.next()) { |
- i++; |
GrGpuTraceMarker newMarker("", -1); |
SkString traceString; |
if (iter->isTraced()) { |
- traceString = iodb->getCmdString(currCmdMarker); |
+ traceString = iodb->getCmdString(iter->markerID()); |
newMarker.fMarker = traceString.c_str(); |
gpu->addGpuTraceMarker(&newMarker); |
- ++currCmdMarker; |
} |
// TODO temporary hack |
- if (Cmd::kDrawBatch_Cmd == iter->type()) { |
+ if (Cmd::kDrawBatch_CmdType == iter->type()) { |
DrawBatch* db = reinterpret_cast<DrawBatch*>(iter.get()); |
fBatchTarget.flushNext(db->fBatch->numberOfDraws()); |
@@ -326,16 +320,10 @@ void GrTargetCommands::flush(GrInOrderDrawBuffer* iodb) { |
continue; |
} |
- if (Cmd::kSetState_Cmd == iter->type()) { |
+ if (Cmd::kSetState_CmdType == iter->type()) { |
SetState* ss = reinterpret_cast<SetState*>(iter.get()); |
- // TODO sometimes we have a prim proc, othertimes we have a GrBatch. Eventually we |
- // will only have GrBatch and we can delete this |
- if (ss->fPrimitiveProcessor) { |
- gpu->buildProgramDesc(&ss->fDesc, *ss->fPrimitiveProcessor, |
- *ss->getPipeline(), |
- ss->fBatchTracker); |
- } |
+ ss->execute(gpu, currentState); |
currentState = ss; |
} else { |
iter->execute(gpu, currentState); |
@@ -390,7 +378,13 @@ void GrTargetCommands::DrawBatch::execute(GrGpu*, const SetState* state) { |
fBatch->generateGeometry(fBatchTarget, state->getPipeline()); |
} |
-void GrTargetCommands::SetState::execute(GrGpu*, const SetState*) {} |
+void GrTargetCommands::SetState::execute(GrGpu* gpu, const SetState*) { |
+ // TODO sometimes we have a prim proc, othertimes we have a GrBatch. Eventually we |
+ // will only have GrBatch and we can delete this |
+ if (fPrimitiveProcessor) { |
+ gpu->buildProgramDesc(&fDesc, *fPrimitiveProcessor, *getPipeline(), fBatchTracker); |
+ } |
+} |
void GrTargetCommands::Clear::execute(GrGpu* gpu, const SetState*) { |
if (GrColor_ILLEGAL == fColor) { |