| 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) {
|
|
|