Update workaround for devices with broken vkQueueWaitIdle.
This is essentially just changing how we do a workaround we
already have in the code. It also does it in release.
Change-Id: I53b6539beb3e919497f2a13f583108ec10f1b9af
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/368556
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
diff --git a/src/gpu/vk/GrVkResourceProvider.cpp b/src/gpu/vk/GrVkResourceProvider.cpp
index b8a1c7c..bcf2768 100644
--- a/src/gpu/vk/GrVkResourceProvider.cpp
+++ b/src/gpu/vk/GrVkResourceProvider.cpp
@@ -450,6 +450,16 @@
}
}
+void GrVkResourceProvider::forceSyncAllCommandBuffers() {
+ for (int i = fActiveCommandPools.count() - 1; fActiveCommandPools.count() && i >= 0; --i) {
+ GrVkCommandPool* pool = fActiveCommandPools[i];
+ if (!pool->isOpen()) {
+ GrVkPrimaryCommandBuffer* buffer = pool->getPrimaryCommandBuffer();
+ buffer->forceSync(fGpu);
+ }
+ }
+}
+
void GrVkResourceProvider::addFinishedProcToActiveCommandBuffers(
sk_sp<GrRefCntedCallback> finishedCallback) {
for (int i = 0; i < fActiveCommandPools.count(); ++i) {