diff options
author | 2017-08-24 15:59:33 -0400 | |
---|---|---|
committer | 2017-08-24 20:18:27 +0000 | |
commit | 500d58b2a6e6fd03239622da42b67b2c9843b7be (patch) | |
tree | dc77637f3bbcc07773c3bdbd292870c59f28e333 /src/gpu/ops | |
parent | fb126fa96e0f49f5dc17a9a043acced68be99e93 (diff) |
Make Copy Ops to go through GpuCommandBuffer instead of straigt to GPU.
Bug: skia:
Change-Id: I4eae4507e07278997e26419e94586eef0780c423
Reviewed-on: https://skia-review.googlesource.com/38361
Commit-Queue: Greg Daniel <egdaniel@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src/gpu/ops')
-rw-r--r-- | src/gpu/ops/GrClearOp.cpp | 3 | ||||
-rw-r--r-- | src/gpu/ops/GrClearStencilClipOp.h | 3 | ||||
-rw-r--r-- | src/gpu/ops/GrCopySurfaceOp.cpp | 5 | ||||
-rw-r--r-- | src/gpu/ops/GrCopySurfaceOp.h | 2 | ||||
-rw-r--r-- | src/gpu/ops/GrDiscardOp.h | 3 | ||||
-rw-r--r-- | src/gpu/ops/GrMeshDrawOp.cpp | 9 | ||||
-rw-r--r-- | src/gpu/ops/GrOp.h | 2 |
7 files changed, 12 insertions, 15 deletions
diff --git a/src/gpu/ops/GrClearOp.cpp b/src/gpu/ops/GrClearOp.cpp index 4b1efd6c47..cb9d4db63b 100644 --- a/src/gpu/ops/GrClearOp.cpp +++ b/src/gpu/ops/GrClearOp.cpp @@ -32,5 +32,6 @@ GrClearOp::GrClearOp(const GrFixedClip& clip, GrColor color, GrSurfaceProxy* pro } void GrClearOp::onExecute(GrOpFlushState* state) { - state->commandBuffer()->clear(fClip, fColor); + SkASSERT(state->rtCommandBuffer()); + state->rtCommandBuffer()->clear(fClip, fColor); } diff --git a/src/gpu/ops/GrClearStencilClipOp.h b/src/gpu/ops/GrClearStencilClipOp.h index 1364b2365a..ffd2fd9b28 100644 --- a/src/gpu/ops/GrClearStencilClipOp.h +++ b/src/gpu/ops/GrClearStencilClipOp.h @@ -55,7 +55,8 @@ private: void onPrepare(GrOpFlushState*) override {} void onExecute(GrOpFlushState* state) override { - state->commandBuffer()->clearStencilClip(fClip, fInsideStencilMask); + SkASSERT(state->rtCommandBuffer()); + state->rtCommandBuffer()->clearStencilClip(fClip, fInsideStencilMask); } const GrFixedClip fClip; diff --git a/src/gpu/ops/GrCopySurfaceOp.cpp b/src/gpu/ops/GrCopySurfaceOp.cpp index 4e8fab7d70..ad6fec988e 100644 --- a/src/gpu/ops/GrCopySurfaceOp.cpp +++ b/src/gpu/ops/GrCopySurfaceOp.cpp @@ -80,13 +80,10 @@ std::unique_ptr<GrOp> GrCopySurfaceOp::Make(GrSurfaceProxy* dstProxy, GrSurfaceP } void GrCopySurfaceOp::onExecute(GrOpFlushState* state) { - SkASSERT(!state->commandBuffer()); - if (!fDst.get()->instantiate(state->resourceProvider()) || !fSrc.get()->instantiate(state->resourceProvider())) { return; } - state->gpu()->copySurface(fDst.get()->priv().peekSurface(), - fSrc.get()->priv().peekSurface(), fSrcRect, fDstPoint); + state->commandBuffer()->copy(fSrc.get()->priv().peekSurface(), fSrcRect, fDstPoint); } diff --git a/src/gpu/ops/GrCopySurfaceOp.h b/src/gpu/ops/GrCopySurfaceOp.h index 64431a523d..57548a8268 100644 --- a/src/gpu/ops/GrCopySurfaceOp.h +++ b/src/gpu/ops/GrCopySurfaceOp.h @@ -33,8 +33,6 @@ public: return string; } - bool needsCommandBufferIsolation() const override { return true; } - private: GrCopySurfaceOp(GrSurfaceProxy* dst, GrSurfaceProxy* src, const SkIRect& srcRect, const SkIPoint& dstPoint) diff --git a/src/gpu/ops/GrDiscardOp.h b/src/gpu/ops/GrDiscardOp.h index d30aa5a8c5..b38577027a 100644 --- a/src/gpu/ops/GrDiscardOp.h +++ b/src/gpu/ops/GrDiscardOp.h @@ -39,7 +39,8 @@ private: void onPrepare(GrOpFlushState*) override {} void onExecute(GrOpFlushState* state) override { - state->commandBuffer()->discard(); + SkASSERT(state->rtCommandBuffer()); + state->rtCommandBuffer()->discard(); } typedef GrOp INHERITED; diff --git a/src/gpu/ops/GrMeshDrawOp.cpp b/src/gpu/ops/GrMeshDrawOp.cpp index 10253174b8..026781a972 100644 --- a/src/gpu/ops/GrMeshDrawOp.cpp +++ b/src/gpu/ops/GrMeshDrawOp.cpp @@ -64,18 +64,19 @@ void GrMeshDrawOp::onExecute(GrOpFlushState* state) { int currMeshIdx = 0; SkASSERT(fQueuedDraws.empty() || fBaseDrawToken == state->nextTokenToFlush()); + SkASSERT(state->rtCommandBuffer()); for (int currDrawIdx = 0; currDrawIdx < fQueuedDraws.count(); ++currDrawIdx) { GrDrawOpUploadToken drawToken = state->nextTokenToFlush(); while (currUploadIdx < fInlineUploads.count() && fInlineUploads[currUploadIdx].fUploadBeforeToken == drawToken) { - state->commandBuffer()->inlineUpload(state, fInlineUploads[currUploadIdx++].fUpload); + state->rtCommandBuffer()->inlineUpload(state, fInlineUploads[currUploadIdx++].fUpload); } const QueuedDraw& draw = fQueuedDraws[currDrawIdx]; SkASSERT(draw.fPipeline->proxy() == state->drawOpArgs().fProxy); - state->commandBuffer()->draw(*draw.fPipeline, *draw.fGeometryProcessor.get(), - fMeshes.begin() + currMeshIdx, nullptr, draw.fMeshCnt, - this->bounds()); + state->rtCommandBuffer()->draw(*draw.fPipeline, *draw.fGeometryProcessor.get(), + fMeshes.begin() + currMeshIdx, nullptr, draw.fMeshCnt, + this->bounds()); currMeshIdx += draw.fMeshCnt; state->flushToken(); } diff --git a/src/gpu/ops/GrOp.h b/src/gpu/ops/GrOp.h index ec4b746091..a87f8b633b 100644 --- a/src/gpu/ops/GrOp.h +++ b/src/gpu/ops/GrOp.h @@ -152,8 +152,6 @@ public: return string; } - virtual bool needsCommandBufferIsolation() const { return false; } - protected: /** * Indicates that the op will produce geometry that extends beyond its bounds for the |