Revert "When flushing, reset flush state before op lists"
This reverts commit 78bdee200c26520eb065728ae7c094b76ecaae66.
Reason for revert: breaking PathRendererCacheTests.cpp unit test
Original change's description:
> When flushing, reset flush state before op lists
>
> When we reset the flush state after executing the ops in a flush, we reset
> the stored pipelines which may be holding refs to resources in their processors.
>
> We want the resources that we wrote to in the op list to be freed last for caching
> LRU purposes. Thus we make sure to free all the pipeline resources first before
> resetting and freeing the op lists
>
> Bug: skia:
> Change-Id: I5b02e9b7532007b5854e906bf4d64e901e7e7e53
> Reviewed-on: https://skia-review.googlesource.com/54760
> Reviewed-by: Robert Phillips <robertphillips@google.com>
> Commit-Queue: Greg Daniel <egdaniel@google.com>
TBR=egdaniel@google.com,robertphillips@google.com
Change-Id: If74a158e90316553a401386c8c7a6b3c2b29a7df
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:
Reviewed-on: https://skia-review.googlesource.com/55080
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
diff --git a/src/gpu/GrDrawingManager.cpp b/src/gpu/GrDrawingManager.cpp
index 48540e0..5deacbb 100644
--- a/src/gpu/GrDrawingManager.cpp
+++ b/src/gpu/GrDrawingManager.cpp
@@ -211,26 +211,16 @@
if (fOpLists[i]->execute(&fFlushState)) {
flushed = true;
}
- }
-
- SkASSERT(fFlushState.nextDrawToken() == fFlushState.nextTokenToFlush());
-
- // We reset the flush state before the OpLists so that the last resources to be freed are those
- // that are written to in the OpLists. This helps to make sure the most recently used resources
- // are the last to be purged by the resource cache.
- fFlushState.reset();
-
- for (int i = 0; i < fOpLists.count(); ++i) {
- if (!fOpLists[i]) {
- continue;
- }
fOpLists[i]->reset();
}
fOpLists.reset();
+ SkASSERT(fFlushState.nextDrawToken() == fFlushState.nextTokenToFlush());
+
GrSemaphoresSubmitted result = fContext->getGpu()->finishFlush(numSemaphores,
backendSemaphores);
+ fFlushState.reset();
// We always have to notify the cache when it requested a flush so it can reset its state.
if (flushed || type == GrResourceCache::FlushType::kCacheRequested) {
fContext->getResourceCache()->notifyFlushOccurred(type);