From 94c81f2f60902c1a3a0949b781a6471e1f4f66fb Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Mon, 27 Apr 2026 12:05:41 +0200 Subject: [PATCH] radv: add missing VkMemoryRangeBarriersInfoKHR from DAC This is used to declare barrier dependencies for an addr range (because no VkBuffer with DAC). This fixes new dEQP-VK.api.device_address.misc.memory_range_barrier. Fixes: a97c889a7b5 ("radv: implement VK_KHR_device_address_commands") Signed-off-by: Samuel Pitoiset (cherry picked from commit d1a428606e0f0867648c8187bc16f6e7d73e3737) Part-of: --- .pick_status.json | 2 +- src/amd/vulkan/radv_cmd_buffer.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/.pick_status.json b/.pick_status.json index 618781ea57a..2f82e4ec119 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -744,7 +744,7 @@ "description": "radv: add missing VkMemoryRangeBarriersInfoKHR from DAC", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "a97c889a7b554009bb7c144d62437f35a593ad00", "notes": null diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index ea33a52d3e4..3b50f51703b 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -15223,6 +15223,21 @@ radv_barrier(struct radv_cmd_buffer *cmd_buffer, uint32_t dep_count, const VkDep } has_image_transitions |= dep_info->imageMemoryBarrierCount > 0; + + const VkMemoryRangeBarriersInfoKHR *mem_barriers_info = + vk_find_struct_const(dep_info->pNext, MEMORY_RANGE_BARRIERS_INFO_KHR); + if (mem_barriers_info) { + for (uint32_t i = 0; i < mem_barriers_info->memoryRangeBarrierCount; i++) { + const VkMemoryRangeBarrierKHR *barrier = &mem_barriers_info->pMemoryRangeBarriers[i]; + + src_stage_mask |= barrier->srcStageMask; + src_flush_bits |= radv_get_src_access_flush(cmd_buffer, barrier->srcStageMask, barrier->srcAccessMask, NULL, + NULL, barrier->pNext); + dst_stage_mask |= barrier->dstStageMask; + dst_flush_bits |= radv_get_dst_access_flush(cmd_buffer, barrier->dstStageMask, barrier->dstAccessMask, NULL, + NULL, barrier->pNext); + } + } } /* Only optimize BOTTOM_OF_PIPE/NONE as dst when there is no image layout transitions because it might