From: Erik Faye-Lund Date: Fri, 12 Jul 2019 10:58:49 +0000 (+0200) Subject: zink: wait for transfer when reading X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=97f4827e2ec9c311a669f1e64827ce52b12b4250;p=mesa.git zink: wait for transfer when reading TODO: this could really benefit from a separate transfer-queue, I think. Acked-by: Jordan Justen --- 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,