From 0fd58b4537a92d72c7eb7d86a14033356adc24fa Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 10 Sep 2020 14:45:04 -0400 Subject: [PATCH] zink: be more explicit with image barriers for copy operations we know the access and pipeline stage here, so we can pass those along to ensure synchronization Reviewed-by: Bas Nieuwenhuizen Part-of: --- src/gallium/drivers/zink/zink_resource.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index d657b2f..6ef422d 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -757,17 +757,20 @@ zink_resource_setup_transfer_layouts(struct zink_batch *batch, struct zink_resou * VK_IMAGE_LAYOUT_GENERAL. And since this isn't a present-related * operation, VK_IMAGE_LAYOUT_GENERAL seems most appropriate. */ - if (src->layout != VK_IMAGE_LAYOUT_GENERAL) - zink_resource_image_barrier(batch, src, - VK_IMAGE_LAYOUT_GENERAL, 0, VK_PIPELINE_STAGE_TRANSFER_BIT); + zink_resource_image_barrier(batch, src, + VK_IMAGE_LAYOUT_GENERAL, + VK_ACCESS_TRANSFER_READ_BIT | VK_ACCESS_TRANSFER_WRITE_BIT, + VK_PIPELINE_STAGE_TRANSFER_BIT); } else { - if (src->layout != VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL) - zink_resource_image_barrier(batch, src, - VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, 0, VK_PIPELINE_STAGE_TRANSFER_BIT); - - if (dst->layout != VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL) - zink_resource_image_barrier(batch, dst, - VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 0, VK_PIPELINE_STAGE_TRANSFER_BIT); + zink_resource_image_barrier(batch, src, + VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, + VK_ACCESS_TRANSFER_READ_BIT, + VK_PIPELINE_STAGE_TRANSFER_BIT); + + zink_resource_image_barrier(batch, dst, + VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, + VK_ACCESS_TRANSFER_WRITE_BIT, + VK_PIPELINE_STAGE_TRANSFER_BIT); } } -- 2.7.4