| Index: src/gpu/GrTargetCommands.cpp
|
| diff --git a/src/gpu/GrTargetCommands.cpp b/src/gpu/GrTargetCommands.cpp
|
| index d3c924d36847b2ca76b242bdc39b667ba35c4919..69ef53bd4592ba55f6091c0dd1ebd86eb87ca027 100644
|
| --- a/src/gpu/GrTargetCommands.cpp
|
| +++ b/src/gpu/GrTargetCommands.cpp
|
| @@ -13,15 +13,6 @@
|
| #include "GrTemplates.h"
|
| #include "SkPoint.h"
|
|
|
| -void GrTargetCommands::closeBatch() {
|
| - if (fDrawBatch) {
|
| - fBatchTarget.resetNumberOfDraws();
|
| - fDrawBatch->execute(NULL, fPrevState);
|
| - fDrawBatch->fBatch->setNumberOfDraws(fBatchTarget.numberOfDraws());
|
| - fDrawBatch = NULL;
|
| - }
|
| -}
|
| -
|
| static bool path_fill_type_is_winding(const GrStencilSettings& pathStencilSettings) {
|
| static const GrStencilSettings::Face pathFace = GrStencilSettings::kFront_Face;
|
| bool isWinding = kInvert_StencilOp != pathStencilSettings.passOp(pathFace);
|
| @@ -35,79 +26,6 @@ static bool path_fill_type_is_winding(const GrStencilSettings& pathStencilSettin
|
| return isWinding;
|
| }
|
|
|
| -int GrTargetCommands::concatInstancedDraw(GrInOrderDrawBuffer* iodb,
|
| - const GrDrawTarget::DrawInfo& info) {
|
| - SkASSERT(!fCmdBuffer.empty());
|
| - SkASSERT(info.isInstanced());
|
| -
|
| - const GrIndexBuffer* ib;
|
| - if (!iodb->canConcatToIndexBuffer(&ib)) {
|
| - return 0;
|
| - }
|
| -
|
| - // 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_CmdType != fCmdBuffer.back().type()) {
|
| - return 0;
|
| - }
|
| -
|
| - Draw* draw = static_cast<Draw*>(&fCmdBuffer.back());
|
| -
|
| - if (!draw->fInfo.isInstanced() ||
|
| - draw->fInfo.primitiveType() != info.primitiveType() ||
|
| - draw->fInfo.verticesPerInstance() != info.verticesPerInstance() ||
|
| - draw->fInfo.indicesPerInstance() != info.indicesPerInstance() ||
|
| - draw->fInfo.vertexBuffer() != info.vertexBuffer() ||
|
| - draw->fInfo.indexBuffer() != ib) {
|
| - return 0;
|
| - }
|
| - if (draw->fInfo.startVertex() + draw->fInfo.vertexCount() != info.startVertex()) {
|
| - return 0;
|
| - }
|
| -
|
| - // how many instances can be concat'ed onto draw given the size of the index buffer
|
| - int instancesToConcat = iodb->indexCountInCurrentSource() / info.indicesPerInstance();
|
| - instancesToConcat -= draw->fInfo.instanceCount();
|
| - instancesToConcat = SkTMin(instancesToConcat, info.instanceCount());
|
| -
|
| - draw->fInfo.adjustInstanceCount(instancesToConcat);
|
| -
|
| - // update last fGpuCmdMarkers to include any additional trace markers that have been added
|
| - iodb->recordTraceMarkersIfNecessary(draw);
|
| - return instancesToConcat;
|
| -}
|
| -
|
| -GrTargetCommands::Cmd* GrTargetCommands::recordDraw(
|
| - GrInOrderDrawBuffer* iodb,
|
| - const GrGeometryProcessor* gp,
|
| - const GrDrawTarget::DrawInfo& info,
|
| - const GrDrawTarget::PipelineInfo& pipelineInfo) {
|
| -#ifdef USE_BITMAP_TEXTBLOBS
|
| - SkFAIL("Non-batch no longer supported\n");
|
| -#endif
|
| - SkASSERT(info.vertexBuffer() && (!info.isIndexed() || info.indexBuffer()));
|
| - CLOSE_BATCH
|
| -
|
| - if (!this->setupPipelineAndShouldDraw(iodb, gp, pipelineInfo)) {
|
| - return NULL;
|
| - }
|
| -
|
| - Draw* draw;
|
| - if (info.isInstanced()) {
|
| - int instancesConcated = this->concatInstancedDraw(iodb, info);
|
| - if (info.instanceCount() > instancesConcated) {
|
| - draw = GrNEW_APPEND_TO_RECORDER(fCmdBuffer, Draw, (info));
|
| - draw->fInfo.adjustInstanceCount(-instancesConcated);
|
| - } else {
|
| - return NULL;
|
| - }
|
| - } else {
|
| - draw = GrNEW_APPEND_TO_RECORDER(fCmdBuffer, Draw, (info));
|
| - }
|
| -
|
| - return draw;
|
| -}
|
| -
|
| GrTargetCommands::Cmd* GrTargetCommands::recordDrawBatch(
|
| GrInOrderDrawBuffer* iodb,
|
| GrBatch* batch,
|
| @@ -124,7 +42,6 @@ GrTargetCommands::Cmd* GrTargetCommands::recordDrawBatch(
|
|
|
| SkASSERT(&fCmdBuffer.back() == fDrawBatch);
|
| if (!fDrawBatch->fBatch->combineIfPossible(batch)) {
|
| - CLOSE_BATCH
|
| fDrawBatch = GrNEW_APPEND_TO_RECORDER(fCmdBuffer, DrawBatch, (batch, &fBatchTarget));
|
| }
|
|
|
| @@ -138,8 +55,6 @@ GrTargetCommands::Cmd* GrTargetCommands::recordStencilPath(
|
| const GrPath* path,
|
| const GrScissorState& scissorState,
|
| const GrStencilSettings& stencilSettings) {
|
| - CLOSE_BATCH
|
| -
|
| StencilPath* sp = GrNEW_APPEND_TO_RECORDER(fCmdBuffer, StencilPath,
|
| (path, pipelineBuilder.getRenderTarget()));
|
|
|
| @@ -156,8 +71,6 @@ GrTargetCommands::Cmd* GrTargetCommands::recordDrawPath(
|
| const GrPath* path,
|
| const GrStencilSettings& stencilSettings,
|
| const GrDrawTarget::PipelineInfo& pipelineInfo) {
|
| - CLOSE_BATCH
|
| -
|
| // TODO: Only compare the subset of GrPipelineBuilder relevant to path covering?
|
| if (!this->setupPipelineAndShouldDraw(iodb, pathProc, pipelineInfo)) {
|
| return NULL;
|
| @@ -181,7 +94,6 @@ GrTargetCommands::Cmd* GrTargetCommands::recordDrawPaths(
|
| SkASSERT(pathRange);
|
| SkASSERT(indexValues);
|
| SkASSERT(transformValues);
|
| - CLOSE_BATCH
|
|
|
| if (!this->setupPipelineAndShouldDraw(iodb, pathProc, pipelineInfo)) {
|
| return NULL;
|
| @@ -237,7 +149,6 @@ GrTargetCommands::Cmd* GrTargetCommands::recordClear(GrInOrderDrawBuffer* iodb,
|
| bool canIgnoreRect,
|
| GrRenderTarget* renderTarget) {
|
| SkASSERT(renderTarget);
|
| - CLOSE_BATCH
|
|
|
| SkIRect r;
|
| if (NULL == rect) {
|
| @@ -260,7 +171,6 @@ GrTargetCommands::Cmd* GrTargetCommands::recordClearStencilClip(GrInOrderDrawBuf
|
| bool insideClip,
|
| GrRenderTarget* renderTarget) {
|
| SkASSERT(renderTarget);
|
| - CLOSE_BATCH
|
|
|
| ClearStencilClip* clr = GrNEW_APPEND_TO_RECORDER(fCmdBuffer, ClearStencilClip, (renderTarget));
|
| clr->fRect = rect;
|
| @@ -271,7 +181,6 @@ GrTargetCommands::Cmd* GrTargetCommands::recordClearStencilClip(GrInOrderDrawBuf
|
| GrTargetCommands::Cmd* GrTargetCommands::recordDiscard(GrInOrderDrawBuffer* iodb,
|
| GrRenderTarget* renderTarget) {
|
| SkASSERT(renderTarget);
|
| - CLOSE_BATCH
|
|
|
| Clear* clr = GrNEW_APPEND_TO_RECORDER(fCmdBuffer, Clear, (renderTarget));
|
| clr->fColor = GrColor_ILLEGAL;
|
| @@ -289,9 +198,6 @@ void GrTargetCommands::flush(GrInOrderDrawBuffer* iodb) {
|
| return;
|
| }
|
|
|
| - // TODO this is temporary while batch is being rolled out
|
| - CLOSE_BATCH
|
| -
|
| // Updated every time we find a set state cmd to reflect the current state in the playback
|
| // stream.
|
| SetState* currentState = NULL;
|
| @@ -441,7 +347,6 @@ GrTargetCommands::Cmd* GrTargetCommands::recordCopySurface(GrInOrderDrawBuffer*
|
| const SkIRect& srcRect,
|
| const SkIPoint& dstPoint) {
|
| if (iodb->getGpu()->canCopySurface(dst, src, srcRect, dstPoint)) {
|
| - CLOSE_BATCH
|
| CopySurface* cs = GrNEW_APPEND_TO_RECORDER(fCmdBuffer, CopySurface, (dst, src));
|
| cs->fSrcRect = srcRect;
|
| cs->fDstPoint = dstPoint;
|
| @@ -494,7 +399,6 @@ bool GrTargetCommands::setupPipelineAndShouldDraw(GrInOrderDrawBuffer* iodb,
|
| fPrevState->getPipeline()->isEqual(*ss->getPipeline())) {
|
| fCmdBuffer.pop_back();
|
| } else {
|
| - CLOSE_BATCH
|
| fPrevState = ss;
|
| iodb->recordTraceMarkersIfNecessary(ss);
|
| }
|
|
|