From e388fae89873dd425b2f021c2e52cfc83e1f5a2c Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 13 Aug 2020 10:54:25 -0400 Subject: [PATCH] zink: flush all resources with persistent maps on work batch before draw/compute these require explicit memory sync on our part Reviewed-by: Erik Faye-Lund Part-of: --- src/gallium/drivers/zink/zink_batch.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/gallium/drivers/zink/zink_batch.c b/src/gallium/drivers/zink/zink_batch.c index 0ade85d13d1..a27e9bd681f 100644 --- a/src/gallium/drivers/zink/zink_batch.c +++ b/src/gallium/drivers/zink/zink_batch.c @@ -107,6 +107,19 @@ zink_end_batch(struct zink_context *ctx, struct zink_batch *batch) if (!batch->fence) return; + util_dynarray_foreach(&batch->persistent_resources, struct zink_resource*, res) { + struct zink_screen *screen = zink_screen(ctx->base.screen); + assert(!(*res)->offset); + VkMappedMemoryRange range = { + VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE, + NULL, + (*res)->mem, + (*res)->offset, + VK_WHOLE_SIZE, + }; + vkFlushMappedMemoryRanges(screen->dev, 1, &range); + } + VkSubmitInfo si = {}; si.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO; si.waitSemaphoreCount = 0;