zink: force image barriers after dmabuf import
authorMike Blumenkrantz <michael.blumenkrantz@gmail.com>
Thu, 3 Aug 2023 17:11:57 +0000 (13:11 -0400)
committerMarge Bot <emma+marge@anholt.net>
Mon, 7 Aug 2023 01:43:52 +0000 (01:43 +0000)
if the image will be used, then it has to be on the right queue

cc: mesa-stable

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24492>

src/gallium/drivers/zink/zink_synchronization.cpp

index 2942d57..381531e 100644 (file)
@@ -331,7 +331,8 @@ zink_resource_image_barrier(struct zink_context *ctx, struct zink_resource *res,
    if (!flags)
       flags = access_dst_flags(new_layout);
 
-   if (!res->obj->needs_zs_evaluate && !zink_resource_image_needs_barrier(res, new_layout, flags, pipeline))
+   if (!res->obj->needs_zs_evaluate && !zink_resource_image_needs_barrier(res, new_layout, flags, pipeline) &&
+       (res->queue == zink_screen(ctx->base.screen)->gfx_queue || res->queue == VK_QUEUE_FAMILY_IGNORED))
       return;
    bool is_write = zink_resource_access_is_write(flags);
    VkCommandBuffer cmdbuf;