From 97f4827e2ec9c311a669f1e64827ce52b12b4250 Mon Sep 17 00:00:00 2001 From: Erik Faye-Lund Date: Fri, 12 Jul 2019 12:58:49 +0200 Subject: [PATCH] zink: wait for transfer when reading TODO: this could really benefit from a separate transfer-queue, I think. Acked-by: Jordan Justen --- src/gallium/drivers/zink/zink_resource.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index 029e5e91942..781e865cbf8 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -456,6 +456,15 @@ zink_transfer_map(struct pipe_context *pctx, false); if (ret == false) return NULL; + + /* need to wait for rendering to finish */ + struct pipe_fence_handle *fence = NULL; + pctx->flush(pctx, &fence, PIPE_FLUSH_HINT_FINISH); + if (fence) { + pctx->screen->fence_finish(pctx->screen, NULL, fence, + PIPE_TIMEOUT_INFINITE); + pctx->screen->fence_reference(pctx->screen, &fence, NULL); + } } VkResult result = vkMapMemory(screen->dev, staging_res->mem, -- 2.30.2