Revert "Reorder msaa and mipmap resolves to happen all at once"
This reverts commit fd1414608ba1174a26af27067575c65c2dc3d605.
Reason for revert: red bots
Original change's description:
> Reorder msaa and mipmap resolves to happen all at once
>
> Makes it so every renderTask has only one textureResolveTask, and
> modifies GrTextureResolveTask to perform multiple resolves
> back-to-back.
>
> Bug: skia:9406
> Change-Id: I93566cf4b23764bd846a1e0a0848642c9b3a507a
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/241936
> Commit-Queue: Chris Dalton <csmartdalton@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
TBR=egdaniel@google.com,robertphillips@google.com,csmartdalton@google.com
Change-Id: I12f340da3dfec81477ceeab806ca76ce2b3c397b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:9406
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/242390
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Commit-Queue: Chris Dalton <csmartdalton@google.com>
diff --git a/src/gpu/GrRenderTask.cpp b/src/gpu/GrRenderTask.cpp
index 287fd5a..42906dd 100644
--- a/src/gpu/GrRenderTask.cpp
+++ b/src/gpu/GrRenderTask.cpp
@@ -10,7 +10,6 @@
#include "src/gpu/GrRenderTargetPriv.h"
#include "src/gpu/GrStencilAttachment.h"
#include "src/gpu/GrTextureProxyPriv.h"
-#include "src/gpu/GrTextureResolveRenderTask.h"
uint32_t GrRenderTask::CreateUniqueID() {
static std::atomic<uint32_t> nextID{1};
@@ -62,12 +61,6 @@
}
}
- if (fTextureResolveTask) {
- this->addDependency(fTextureResolveTask);
- fTextureResolveTask->makeClosed(caps);
- fTextureResolveTask = nullptr;
- }
-
this->setFlag(kClosed_Flag);
}
@@ -153,23 +146,18 @@
// Does this proxy have msaa to resolve and/or mipmaps to regenerate?
if (GrSurfaceProxy::ResolveFlags::kNone != resolveFlags) {
- if (!fTextureResolveTask) {
- fTextureResolveTask = textureResolveManager.newTextureResolveRenderTask(caps);
- }
- fTextureResolveTask->addProxy(sk_ref_sp(dependedOn), resolveFlags, caps);
-
- // addProxy() should have closed the texture proxy's previous task.
- SkASSERT(!dependedOnTask || dependedOnTask->isClosed());
- SkASSERT(dependedOn->getLastRenderTask() == fTextureResolveTask);
+ // Create a renderTask that resolves the texture's mipmap data.
+ GrRenderTask* textureResolveTask = textureResolveManager.newTextureResolveRenderTask(
+ sk_ref_sp(dependedOn), resolveFlags, caps);
#ifdef SK_DEBUG
- // addProxy() should have called addDependency (in this instance, recursively) on
- // fTextureResolveTask.
+ // GrTextureResolveRenderTask::init should have called addDependency (in this instance,
+ // recursively) on the textureResolveTask.
if (dependedOnTask) {
- SkASSERT(fTextureResolveTask->dependsOn(dependedOnTask));
+ SkASSERT(textureResolveTask->dependsOn(dependedOnTask));
}
if (textureProxy && textureProxy->texPriv().isDeferred()) {
- SkASSERT(fTextureResolveTask->fDeferredProxies.back() == textureProxy);
+ SkASSERT(textureResolveTask->fDeferredProxies.back() == textureProxy);
}
// The GrTextureResolveRenderTask factory should have also marked the proxy clean, set the
@@ -180,12 +168,13 @@
if (textureProxy) {
SkASSERT(!textureProxy->mipMapsAreDirty());
}
- SkASSERT(dependedOn->getLastRenderTask() == fTextureResolveTask);
+ SkASSERT(dependedOn->getLastRenderTask() == textureResolveTask);
+ SkASSERT(textureResolveTask->isClosed());
#endif
- return;
- }
- if (textureProxy && textureProxy->texPriv().isDeferred()) {
+ // Fall through and add textureResolveTask as a dependency of "this".
+ dependedOnTask = textureResolveTask;
+ } else if (textureProxy && textureProxy->texPriv().isDeferred()) {
fDeferredProxies.push_back(textureProxy);
}