Resolve issue with flush-time opsTask management
Despite what the bug says, I believe the only issue here was that
all the flush-time opsTasks weren't guaranteed to be in
'fOnFlushRenderTasks'. Since the users of flush-time opsTasks
use GrRenderTargetContext::addDrawOp, if the opsTask were to be
split, new ops would be added to the correct/new opsTask.
Bug: skia:9357
Change-Id: I90577bcc852419a9e0c31d858f71cda9f6f6b6a3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/336435
Reviewed-by: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Adlai Holler <adlai@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/GrDrawingManager.cpp b/src/gpu/GrDrawingManager.cpp
index ff3885e..def3dbd 100644
--- a/src/gpu/GrDrawingManager.cpp
+++ b/src/gpu/GrDrawingManager.cpp
@@ -676,7 +676,7 @@
}
sk_sp<GrOpsTask> GrDrawingManager::newOpsTask(GrSurfaceProxyView surfaceView,
- bool managedOpsTask) {
+ bool flushTimeOpsTask) {
SkDEBUGCODE(this->validate());
SkASSERT(fContext);
@@ -688,7 +688,9 @@
fContext->priv().auditTrail()));
SkASSERT(this->getLastRenderTask(proxy) == opsTask.get());
- if (managedOpsTask) {
+ if (flushTimeOpsTask) {
+ fOnFlushRenderTasks.push_back(opsTask);
+ } else {
this->appendTask(opsTask);
if (!fReduceOpsTaskSplitting) {