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 <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8942>
This commit is contained in:
Mike Blumenkrantz 2020-08-13 10:54:25 -04:00 committed by Marge Bot
parent 564bb1410c
commit e388fae898

View file

@ -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;