| Index: src/gpu/GrTargetCommands.cpp
|
| diff --git a/src/gpu/GrTargetCommands.cpp b/src/gpu/GrTargetCommands.cpp
|
| index 24ee32d83218f97479fbed65ea68fabc341fae6d..a6d31481413b0d29005013b1a975ad3f13a69459 100644
|
| --- a/src/gpu/GrTargetCommands.cpp
|
| +++ b/src/gpu/GrTargetCommands.cpp
|
| @@ -35,17 +35,14 @@ GrTargetCommands::Cmd* GrTargetCommands::recordDrawBatch(
|
| }
|
|
|
| // Check if there is a Batch Draw we can batch with
|
| - if (Cmd::kDrawBatch_CmdType != fCmdBuffer.back().type() || !fDrawBatch) {
|
| - fDrawBatch = GrNEW_APPEND_TO_RECORDER(fCmdBuffer, DrawBatch, (batch, &fBatchTarget));
|
| - return fDrawBatch;
|
| - }
|
| -
|
| - SkASSERT(&fCmdBuffer.back() == fDrawBatch);
|
| - if (!fDrawBatch->fBatch->combineIfPossible(batch)) {
|
| - fDrawBatch = GrNEW_APPEND_TO_RECORDER(fCmdBuffer, DrawBatch, (batch, &fBatchTarget));
|
| + if (Cmd::kDrawBatch_CmdType == fCmdBuffer.back().type()) {
|
| + DrawBatch* previous = static_cast<DrawBatch*>(&fCmdBuffer.back());
|
| + if (previous->fBatch->combineIfPossible(batch)) {
|
| + return NULL;
|
| + }
|
| }
|
|
|
| - return fDrawBatch;
|
| + return GrNEW_APPEND_TO_RECORDER(fCmdBuffer, DrawBatch, (batch, &fBatchTarget));
|
| }
|
|
|
| GrTargetCommands::Cmd* GrTargetCommands::recordStencilPath(
|
| @@ -190,7 +187,6 @@ GrTargetCommands::Cmd* GrTargetCommands::recordDiscard(GrInOrderDrawBuffer* iodb
|
| void GrTargetCommands::reset() {
|
| fCmdBuffer.reset();
|
| fPrevState = NULL;
|
| - fDrawBatch = NULL;
|
| }
|
|
|
| void GrTargetCommands::flush(GrInOrderDrawBuffer* iodb) {
|
| @@ -204,7 +200,6 @@ void GrTargetCommands::flush(GrInOrderDrawBuffer* iodb) {
|
|
|
| GrGpu* gpu = iodb->getGpu();
|
|
|
| -#ifdef USE_BITMAP_TEXTBLOBS
|
| // Loop over all batches and generate geometry
|
| CmdBuffer::Iter genIter(fCmdBuffer);
|
| while (genIter.next()) {
|
| @@ -220,7 +215,6 @@ void GrTargetCommands::flush(GrInOrderDrawBuffer* iodb) {
|
| currentState = ss;
|
| }
|
| }
|
| -#endif
|
|
|
| iodb->getVertexAllocPool()->unmap();
|
| iodb->getIndexAllocPool()->unmap();
|
| @@ -237,7 +231,6 @@ void GrTargetCommands::flush(GrInOrderDrawBuffer* iodb) {
|
| gpu->addGpuTraceMarker(&newMarker);
|
| }
|
|
|
| - // TODO temporary hack
|
| if (Cmd::kDrawBatch_CmdType == iter->type()) {
|
| DrawBatch* db = reinterpret_cast<DrawBatch*>(iter.get());
|
| fBatchTarget.flushNext(db->fBatch->numberOfDraws());
|
| @@ -249,12 +242,6 @@ void GrTargetCommands::flush(GrInOrderDrawBuffer* iodb) {
|
| }
|
|
|
| if (Cmd::kSetState_CmdType == iter->type()) {
|
| -#ifndef USE_BITMAP_TEXTBLOBS
|
| - SetState* ss = reinterpret_cast<SetState*>(iter.get());
|
| -
|
| - ss->execute(gpu, currentState);
|
| - currentState = ss;
|
| -#else
|
| // TODO this is just until NVPR is in batch
|
| SetState* ss = reinterpret_cast<SetState*>(iter.get());
|
|
|
| @@ -262,7 +249,6 @@ void GrTargetCommands::flush(GrInOrderDrawBuffer* iodb) {
|
| ss->execute(gpu, currentState);
|
| }
|
| currentState = ss;
|
| -#endif
|
|
|
| } else {
|
| iter->execute(gpu, currentState);
|
| @@ -273,17 +259,9 @@ void GrTargetCommands::flush(GrInOrderDrawBuffer* iodb) {
|
| }
|
| }
|
|
|
| - // TODO see copious notes about hack
|
| fBatchTarget.postFlush();
|
| }
|
|
|
| -void GrTargetCommands::Draw::execute(GrGpu* gpu, const SetState* state) {
|
| - SkASSERT(state);
|
| - DrawArgs args(state->fPrimitiveProcessor.get(), state->getPipeline(), &state->fDesc,
|
| - &state->fBatchTracker);
|
| - gpu->draw(args, fInfo);
|
| -}
|
| -
|
| void GrTargetCommands::StencilPath::execute(GrGpu* gpu, const SetState*) {
|
| GrGpu::StencilPathState state;
|
| state.fRenderTarget = fRenderTarget.get();
|
|
|