Revert "Initiate regeneration of mipmaps from proxy DAG land"
This reverts commit fe19203eb7d7e8bef528287494d82c2eb4efff0e.
Reason for revert: Turned a lot of bots red
Original change's description:
> Initiate regeneration of mipmaps from proxy DAG land
>
> This allows us to resolve all the textures before executing a command
> buffer, rather than interrupting execution as is currently done in the
> GL backend.
>
> Change-Id: I998546b312d24cf47fc2c837e7c94fbf95571af0
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/230636
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
TBR=bsalomon@google.com,robertphillips@google.com,csmartdalton@google.com
Change-Id: Iaa8391b8fbd5a4f851ca41834c1dfeee4be6fedd
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/233836
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/GrRenderTask.cpp b/src/gpu/GrRenderTask.cpp
index 3b572fc..66b6c3e 100644
--- a/src/gpu/GrRenderTask.cpp
+++ b/src/gpu/GrRenderTask.cpp
@@ -24,6 +24,7 @@
: fTarget(std::move(target))
, fUniqueID(CreateUniqueID())
, fFlags(0) {
+ fTarget->setLastRenderTask(this);
}
GrRenderTask::~GrRenderTask() {
@@ -68,44 +69,13 @@
}
// Convert from a GrSurface-based dependency to a GrRenderTask one
-void GrRenderTask::addDependency(GrSurfaceProxy* dependedOn, GrMipMapped mipMapped,
- GrTextureResolveManager textureResolveManager,
+void GrRenderTask::addDependency(GrSurfaceProxy* dependedOn, GrMipMapped, GrTextureResolveManager,
const GrCaps& caps) {
- GrRenderTask* dependedOnTask = dependedOn->getLastRenderTask();
-
- GrTextureProxy* textureProxy = dependedOn->asTextureProxy();
- SkASSERT(GrMipMapped::kNo == mipMapped || textureProxy);
-
- // Does this proxy have mipmaps that need to be regenerated?
- if (GrMipMapped::kYes == mipMapped && textureProxy->mipMapsAreDirty()) {
- // We only read our own target during dst reads, and we shouldn't use mipmaps in that case.
- SkASSERT(dependedOnTask != this);
-
- // Create an opList that resolves the texture's mipmap data.
- GrRenderTask* textureResolveTask = textureResolveManager.newTextureResolveRenderTask(
- sk_ref_sp(textureProxy), GrTextureResolveFlags::kMipMaps, caps);
-
- // The GrTextureResolveRenderTask factory should have called addDependency (in this
- // instance, recursively) on the textureProxy.
- SkASSERT(!dependedOnTask || textureResolveTask->dependsOn(dependedOnTask));
- SkASSERT(!textureProxy->texPriv().isDeferred() ||
- textureResolveTask->fDeferredProxies.back() == textureProxy);
-
- // The GrTextureResolveRenderTask factory should have also marked the mipmaps clean and set
- // the last opList on the textureProxy to textureResolveTask.
- SkASSERT(!textureProxy->mipMapsAreDirty());
- SkASSERT(textureProxy->getLastRenderTask() == textureResolveTask);
-
- // Fall through and add textureResolveTask as a dependency of "this".
- dependedOnTask = textureResolveTask;
- } else if (textureProxy && textureProxy->texPriv().isDeferred()) {
- fDeferredProxies.push_back(textureProxy);
- }
-
- if (dependedOnTask) {
+ if (dependedOn->getLastRenderTask()) {
// If it is still receiving dependencies, this GrRenderTask shouldn't be closed
SkASSERT(!this->isClosed());
+ GrRenderTask* dependedOnTask = dependedOn->getLastRenderTask();
if (dependedOnTask == this) {
// self-read - presumably for dst reads. We can't make it closed in the self-read case.
} else {
@@ -117,6 +87,12 @@
dependedOnTask->makeClosed(caps);
}
}
+
+ if (GrTextureProxy* textureProxy = dependedOn->asTextureProxy()) {
+ if (textureProxy->texPriv().isDeferred()) {
+ fDeferredProxies.push_back(textureProxy);
+ }
+ }
}
bool GrRenderTask::dependsOn(const GrRenderTask* dependedOn) const {