Add submittedProc to GrFlushInfo.

Bug: skia:10118
Change-Id: Iad848310d0f2fb22f19e9890209548fda103bd27
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/291078
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
diff --git a/src/gpu/GrGpu.cpp b/src/gpu/GrGpu.cpp
index 5bc99f0..a32eb00 100644
--- a/src/gpu/GrGpu.cpp
+++ b/src/gpu/GrGpu.cpp
@@ -42,6 +42,7 @@
 GrGpu::GrGpu(GrContext* context) : fResetBits(kAll_GrBackendState), fContext(context) {}
 
 GrGpu::~GrGpu() {
+    this->callSubmittedProcs(false);
     SkASSERT(fBusyStagingBuffers.isEmpty());
 }
 
@@ -685,6 +686,11 @@
     if (info.fFinishedProc) {
         this->addFinishedProc(info.fFinishedProc, info.fFinishedContext);
     }
+
+    if (info.fSubmittedProc) {
+        fSubmittedProcs.emplace_back(info.fSubmittedProc, info.fSubmittedContext);
+    }
+
     this->prepareSurfacesForBackendAccessAndExternalIO(proxies, numProxies, access,
                                                        externalRequests);
 }
@@ -699,9 +705,18 @@
 
     bool submitted = this->onSubmitToGpu(syncCpu);
 
+    this->callSubmittedProcs(submitted);
+
     return submitted;
 }
 
+void GrGpu::callSubmittedProcs(bool success) {
+    for (int i = 0; i < fSubmittedProcs.count(); ++i) {
+        fSubmittedProcs[i].fProc(fSubmittedProcs[i].fContext, success);
+    }
+    fSubmittedProcs.reset();
+}
+
 #ifdef SK_ENABLE_DUMP_GPU
 void GrGpu::dumpJSON(SkJSONWriter* writer) const {
     writer->beginObject();