From 3e9dfdb3784c0cbfecf7589a74aa9aff7ef40abd Mon Sep 17 00:00:00 2001 From: egdaniel Date: Wed, 4 Feb 2015 06:14:22 -0800 Subject: Revert "Move DstCopy on gpu into the GrXferProcessor." This reverts commit 74a11753604768bf461b80cabb66060e8564d82c. TBR=joshualitt@google.com,bsalomon@google.com NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=skia: Review URL: https://codereview.chromium.org/896163003 --- src/gpu/GrInOrderDrawBuffer.cpp | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) (limited to 'src/gpu/GrInOrderDrawBuffer.cpp') diff --git a/src/gpu/GrInOrderDrawBuffer.cpp b/src/gpu/GrInOrderDrawBuffer.cpp index 3e177ed207..e59df80e96 100644 --- a/src/gpu/GrInOrderDrawBuffer.cpp +++ b/src/gpu/GrInOrderDrawBuffer.cpp @@ -247,13 +247,14 @@ int GrInOrderDrawBuffer::concatInstancedDraw(const GrPipelineBuilder& pipelineBu void GrInOrderDrawBuffer::onDraw(const GrPipelineBuilder& pipelineBuilder, const GrGeometryProcessor* gp, const DrawInfo& info, - const GrScissorState& scissorState) { + const GrScissorState& scissorState, + const GrDeviceCoordTexture* dstCopy) { SkASSERT(info.vertexBuffer() && (!info.isIndexed() || info.indexBuffer())); // This closeBatch call is required because we may introduce new draws when we setup clip this->closeBatch(); - if (!this->recordStateAndShouldDraw(pipelineBuilder, gp, scissorState, info.getDevBounds())) { + if (!this->recordStateAndShouldDraw(pipelineBuilder, gp, scissorState, dstCopy)) { return; } @@ -275,8 +276,8 @@ void GrInOrderDrawBuffer::onDraw(const GrPipelineBuilder& pipelineBuilder, void GrInOrderDrawBuffer::onDrawBatch(GrBatch* batch, const GrPipelineBuilder& pipelineBuilder, const GrScissorState& scissorState, - const SkRect* devBounds) { - if (!this->recordStateAndShouldDraw(batch, pipelineBuilder, scissorState, devBounds)) { + const GrDeviceCoordTexture* dstCopy) { + if (!this->recordStateAndShouldDraw(batch, pipelineBuilder, scissorState, dstCopy)) { return; } @@ -315,11 +316,11 @@ void GrInOrderDrawBuffer::onDrawPath(const GrPipelineBuilder& pipelineBuilder, const GrPath* path, const GrScissorState& scissorState, const GrStencilSettings& stencilSettings, - const SkRect* devBounds) { + const GrDeviceCoordTexture* dstCopy) { this->closeBatch(); // TODO: Only compare the subset of GrPipelineBuilder relevant to path covering? - if (!this->recordStateAndShouldDraw(pipelineBuilder, pathProc, scissorState, devBounds)) { + if (!this->recordStateAndShouldDraw(pipelineBuilder, pathProc, scissorState, dstCopy)) { return; } DrawPath* dp = GrNEW_APPEND_TO_RECORDER(fCmdBuffer, DrawPath, (path)); @@ -337,14 +338,14 @@ void GrInOrderDrawBuffer::onDrawPaths(const GrPipelineBuilder& pipelineBuilder, int count, const GrScissorState& scissorState, const GrStencilSettings& stencilSettings, - const SkRect* devBounds) { + const GrDeviceCoordTexture* dstCopy) { SkASSERT(pathRange); SkASSERT(indices); SkASSERT(transformValues); this->closeBatch(); - if (!this->recordStateAndShouldDraw(pipelineBuilder, pathProc, scissorState, devBounds)) { + if (!this->recordStateAndShouldDraw(pipelineBuilder, pathProc, scissorState, dstCopy)) { return; } @@ -488,6 +489,7 @@ void GrInOrderDrawBuffer::onFlush() { if (ss->fPrimitiveProcessor) { this->getGpu()->buildProgramDesc(&ss->fDesc, *ss->fPrimitiveProcessor, ss->fPipeline, + ss->fPipeline.descInfo(), ss->fBatchTracker); } currentState = ss; @@ -582,14 +584,10 @@ bool GrInOrderDrawBuffer::onCopySurface(GrSurface* dst, bool GrInOrderDrawBuffer::recordStateAndShouldDraw(const GrPipelineBuilder& pipelineBuilder, const GrPrimitiveProcessor* primProc, const GrScissorState& scissor, - const SkRect* devBounds) { - GrDeviceCoordTexture dstCopy; - if (!this->setupDstReadIfNecessary(pipelineBuilder, &dstCopy, devBounds)) { - return false; - } + const GrDeviceCoordTexture* dstCopy) { SetState* ss = GrNEW_APPEND_TO_RECORDER(fCmdBuffer, SetState, (pipelineBuilder, primProc, *this->getGpu()->caps(), - scissor, &dstCopy)); + scissor, dstCopy)); if (ss->fPipeline.mustSkip()) { fCmdBuffer.pop_back(); return false; @@ -614,17 +612,13 @@ bool GrInOrderDrawBuffer::recordStateAndShouldDraw(const GrPipelineBuilder& pipe bool GrInOrderDrawBuffer::recordStateAndShouldDraw(GrBatch* batch, const GrPipelineBuilder& pipelineBuilder, const GrScissorState& scissor, - const SkRect* devBounds) { - GrDeviceCoordTexture dstCopy; - if (!this->setupDstReadIfNecessary(pipelineBuilder, &dstCopy, devBounds)) { - return false; - } + const GrDeviceCoordTexture* dstCopy) { // TODO this gets much simpler when we have batches everywhere. // If the previous command is also a set state, then we check to see if it has a Batch. If so, // and we can make the two batches equal, and we can combine the states, then we make them equal SetState* ss = GrNEW_APPEND_TO_RECORDER(fCmdBuffer, SetState, (batch, pipelineBuilder, *this->getGpu()->caps(), scissor, - &dstCopy)); + dstCopy)); if (ss->fPipeline.mustSkip()) { fCmdBuffer.pop_back(); return false; -- cgit v1.2.3