From d1a428606e0f0867648c8187bc16f6e7d73e3737 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 Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index d8dd3116e58..22314dc70d3 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -15225,6 +15225,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