From 11651c18df857d742f3d90c297b4998c81885c18 Mon Sep 17 00:00:00 2001 From: Yiwei Zhang Date: Wed, 14 Jan 2026 20:49:51 -0800 Subject: [PATCH] vulkan/wsi: avoid host stage when blit to foreign queue For mitigating the below VVL violation: > VUID-vkCmdPipelineBarrier-srcStageMask-09634 > > vkCmdPipelineBarrier(): dstStageMask is VK_PIPELINE_STAGE_HOST_BIT > but srcQueueFamilyIndex (0) != dstQueueFamilyIndex (4294967293). > > The Vulkan spec states: If either srcStageMask or dstStageMask > includes VK_PIPELINE_STAGE_HOST_BIT, for any element of > pBufferMemoryBarriers, srcQueueFamilyIndex and dstQueueFamilyIndex > must be equal Fixes: 153857fb64b ("vulkan/wsi: amend barriers for blit dst buffer going to foreign queue") Reviewed-by: Hans-Kristian Arntzen (cherry picked from commit be9caf8ed62870691c6a27ab1a45594be987b0a8) Part-of: --- .pick_status.json | 2 +- src/vulkan/wsi/wsi_common.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 572f8dddcb2..a6c1f103c6a 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -734,7 +734,7 @@ "description": "vulkan/wsi: avoid host stage when blit to foreign queue", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "153857fb64b7d2521a8b402854afed97bf247b39", "notes": null diff --git a/src/vulkan/wsi/wsi_common.c b/src/vulkan/wsi/wsi_common.c index 0c4a4ce652e..b1bb88b9cbc 100644 --- a/src/vulkan/wsi/wsi_common.c +++ b/src/vulkan/wsi/wsi_common.c @@ -2170,7 +2170,9 @@ wsi_cmd_blit_image_to_buffer(VkCommandBuffer cmd_buffer, }; wsi->CmdPipelineBarrier(cmd_buffer, VK_PIPELINE_STAGE_TRANSFER_BIT, - VK_PIPELINE_STAGE_HOST_BIT, + image->blit.to_foreign_queue + ? VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT + : VK_PIPELINE_STAGE_HOST_BIT, 0, 0, NULL, 1, &buf_mem_barrier,