diff --git a/src/vulkan/wsi/wsi_common.c b/src/vulkan/wsi/wsi_common.c index 2f8879ea75d..f4c23b19d55 100644 --- a/src/vulkan/wsi/wsi_common.c +++ b/src/vulkan/wsi/wsi_common.c @@ -1984,12 +1984,24 @@ wsi_cmd_blit_image_to_buffer(VkCommandBuffer cmd_buffer, img_mem_barrier.dstAccessMask = 0; img_mem_barrier.oldLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL; img_mem_barrier.newLayout = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR; + + const VkBufferMemoryBarrier buf_mem_barrier = { + .sType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER, + .pNext = NULL, + .srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT, + .dstAccessMask = VK_ACCESS_HOST_READ_BIT, + .srcQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .dstQueueFamilyIndex = VK_QUEUE_FAMILY_IGNORED, + .buffer = image->blit.buffer, + .offset = 0, + .size = VK_WHOLE_SIZE, + }; wsi->CmdPipelineBarrier(cmd_buffer, VK_PIPELINE_STAGE_TRANSFER_BIT, - VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, + VK_PIPELINE_STAGE_HOST_BIT, 0, 0, NULL, - 0, NULL, + 1, &buf_mem_barrier, 1, &img_mem_barrier); }