aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/ops
diff options
context:
space:
mode:
authorGravatar Greg Daniel <egdaniel@google.com>2017-08-24 15:59:33 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-08-24 20:18:27 +0000
commit500d58b2a6e6fd03239622da42b67b2c9843b7be (patch)
treedc77637f3bbcc07773c3bdbd292870c59f28e333 /src/gpu/ops
parentfb126fa96e0f49f5dc17a9a043acced68be99e93 (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.cpp3
-rw-r--r--src/gpu/ops/GrClearStencilClipOp.h3
-rw-r--r--src/gpu/ops/GrCopySurfaceOp.cpp5
-rw-r--r--src/gpu/ops/GrCopySurfaceOp.h2
-rw-r--r--src/gpu/ops/GrDiscardOp.h3
-rw-r--r--src/gpu/ops/GrMeshDrawOp.cpp9
-rw-r--r--src/gpu/ops/GrOp.h2
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