Make render task targets be just a proxy.
Change-Id: I09548cc22b13bc0b9b5f77cf1f20c1505a529c51
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/356760
Commit-Queue: Brian Salomon <bsalomon@google.com>
Reviewed-by: Adlai Holler <adlai@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
diff --git a/src/gpu/GrRenderTask.cpp b/src/gpu/GrRenderTask.cpp
index 0c24d50..074f4a9 100644
--- a/src/gpu/GrRenderTask.cpp
+++ b/src/gpu/GrRenderTask.cpp
@@ -35,9 +35,9 @@
SkDEBUGCODE(fDrawingMgr = nullptr);
this->setFlag(kDisowned_Flag);
- for (const GrSurfaceProxyView& target : fTargets) {
- if (this == drawingMgr->getLastRenderTask(target.proxy())) {
- drawingMgr->setLastRenderTask(target.proxy(), nullptr);
+ for (const sk_sp<GrSurfaceProxy>& target : fTargets) {
+ if (this == drawingMgr->getLastRenderTask(target.get())) {
+ drawingMgr->setLastRenderTask(target.get(), nullptr);
}
}
}
@@ -65,13 +65,12 @@
SkIRect targetUpdateBounds;
if (ExpectedOutcome::kTargetDirty == this->onMakeClosed(caps, &targetUpdateBounds)) {
- GrSurfaceProxy* proxy = this->target(0).proxy();
+ GrSurfaceProxy* proxy = this->target(0);
if (proxy->requiresManualMSAAResolve()) {
- SkASSERT(this->target(0).asRenderTargetProxy());
- this->target(0).asRenderTargetProxy()->markMSAADirty(targetUpdateBounds,
- this->target(0).origin());
+ SkASSERT(this->target(0)->asRenderTargetProxy());
+ this->target(0)->asRenderTargetProxy()->markMSAADirty(targetUpdateBounds);
}
- GrTextureProxy* textureProxy = this->target(0).asTextureProxy();
+ GrTextureProxy* textureProxy = this->target(0)->asTextureProxy();
if (textureProxy && GrMipmapped::kYes == textureProxy->mipmapped()) {
textureProxy->markMipmapsDirty();
}
@@ -257,8 +256,8 @@
}
bool GrRenderTask::isInstantiated() const {
- for (const GrSurfaceProxyView& target : fTargets) {
- GrSurfaceProxy* proxy = target.proxy();
+ for (const sk_sp<GrSurfaceProxy>& target : fTargets) {
+ GrSurfaceProxy* proxy = target.get();
if (!proxy->isInstantiated()) {
return false;
}
@@ -272,13 +271,13 @@
return true;
}
-void GrRenderTask::addTarget(GrDrawingManager* drawingMgr, GrSurfaceProxyView view) {
- SkASSERT(view);
+void GrRenderTask::addTarget(GrDrawingManager* drawingMgr, sk_sp<GrSurfaceProxy> proxy) {
+ SkASSERT(proxy);
SkASSERT(!this->isClosed());
SkASSERT(!fDrawingMgr || drawingMgr == fDrawingMgr);
SkDEBUGCODE(fDrawingMgr = drawingMgr);
- drawingMgr->setLastRenderTask(view.proxy(), this);
- fTargets.push_back(std::move(view));
+ drawingMgr->setLastRenderTask(proxy.get(), this);
+ fTargets.emplace_back(std::move(proxy));
}
#if GR_TEST_UTILS
@@ -293,11 +292,10 @@
if (!fTargets.empty()) {
SkDebugf("%sTargets: \n", indent.c_str());
- for (const GrSurfaceProxyView& target : fTargets) {
- if (target.proxy()) {
- SkString proxyStr = target.proxy()->dump();
- SkDebugf("%s%s\n", indent.c_str(), proxyStr.c_str());
- }
+ for (const sk_sp<GrSurfaceProxy>& target : fTargets) {
+ SkASSERT(target);
+ SkString proxyStr = target->dump();
+ SkDebugf("%s%s\n", indent.c_str(), proxyStr.c_str());
}
}