zink: sync queue access for vkQueueWaitIdle
authorYiwei Zhang <zzyiwei@chromium.org>
Sat, 14 Oct 2023 22:41:59 +0000 (15:41 -0700)
committerMarge Bot <emma+marge@anholt.net>
Sat, 14 Oct 2023 23:43:36 +0000 (23:43 +0000)
Ensure VkQueue external sync between flush_queue and TC.

Cc: mesa-stable
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25733>

src/gallium/drivers/zink/zink_kopper.c

index 66166df..ca3c389 100644 (file)
@@ -887,7 +887,10 @@ zink_kopper_present_readback(struct zink_context *ctx, struct zink_resource *res
       return false;
 
    zink_kopper_present_queue(screen, res);
+   simple_mtx_lock(&screen->queue_lock);
    error = VKSCR(QueueWaitIdle)(screen->queue);
+   simple_mtx_unlock(&screen->queue_lock);
+
    simple_mtx_lock(&screen->semaphores_lock);
    util_dynarray_append(&screen->semaphores, VkSemaphore, acquire);
    simple_mtx_unlock(&screen->semaphores_lock);