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();