aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/gpu/GrRenderTargetOpList.h
diff options
context:
space:
mode:
authorGravatar Robert Phillips <robertphillips@google.com>2017-09-13 13:10:52 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-09-13 17:38:56 +0000
commitb493eebca14aefbd5f22fb5d45ba978b19db4b18 (patch)
tree8a9ae4209e52b1e1da283e45f56df921598c7920 /src/gpu/GrRenderTargetOpList.h
parent08cda14d61f02d2e376a9cd88131daebad6b21e0 (diff)
Add method to iterate over a GrOp's GrSurfaceProxies
The extra generality of having a std::function is for MDB reordering. In the current MDB reordering world there is one pass through the surfaceProxies at creation time and a second pass after flush to create the usage intervals. Change-Id: I3f548417eddc1dad7503d919241301e404255ffe Reviewed-on: https://skia-review.googlesource.com/46200 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src/gpu/GrRenderTargetOpList.h')
-rw-r--r--src/gpu/GrRenderTargetOpList.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/gpu/GrRenderTargetOpList.h b/src/gpu/GrRenderTargetOpList.h
index ef4bdacdd2..d80f667655 100644
--- a/src/gpu/GrRenderTargetOpList.h
+++ b/src/gpu/GrRenderTargetOpList.h
@@ -68,12 +68,28 @@ public:
bool onExecute(GrOpFlushState* flushState) override;
uint32_t addOp(std::unique_ptr<GrOp> op, const GrCaps& caps) {
+ auto addDependency = [ &caps, this ] (GrSurfaceProxy* p) {
+ this->addDependency(p, caps);
+ };
+
+ op->visitProxies(addDependency);
+
this->recordOp(std::move(op), caps, nullptr, nullptr);
+
return this->uniqueID();
}
+
uint32_t addOp(std::unique_ptr<GrOp> op, const GrCaps& caps,
GrAppliedClip&& clip, const DstProxy& dstProxy) {
+ auto addDependency = [ &caps, this ] (GrSurfaceProxy* p) {
+ this->addDependency(p, caps);
+ };
+
+ op->visitProxies(addDependency);
+ clip.visitProxies(addDependency);
+
this->recordOp(std::move(op), caps, clip.doesClip() ? &clip : nullptr, &dstProxy);
+
return this->uniqueID();
}