From fe46a2ae9b33159ba7edb86ffd45dca2f2d9a83e Mon Sep 17 00:00:00 2001 From: Aditya Swarup Date: Mon, 16 Feb 2026 23:12:41 -0800 Subject: [PATCH] anv: Add helper macros for address binding report extension These macros provide support for reporting device address binding info for VK_EXT_device_address_binding_report. Reviewed-by: Lionel Landwerlin Part-of: --- src/intel/vulkan/anv_private.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index b1d6574bac0..9e973bfcfc3 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -7155,6 +7155,29 @@ anv_emit_device_memory_report(struct vk_device* device, #define ANV_DMR_SP_FREE(_obj, _pool, _state) \ ANV_DMR_SP_REPORT(_obj, _pool, _state, VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT) +/* Address binding report macro helpers for VK_EXT_device_address_binding_report. + * + * Macros with _ADDR variants for usage with struct anv_address + */ + +#define ANV_ADDR_BINDING_REPORT_ADDR(_device, _vk_obj_base, _addr, _size, _type) \ + do { \ + struct anv_address __addr = (_addr); \ + uint64_t __va = anv_address_physical(__addr); \ + if (__va != 0) { \ + vk_address_binding_report(&(_device)->physical->instance->vk, \ + (_vk_obj_base), __va, (_size), (_type)); \ + } \ + } while (0) + +#define ANV_ADDR_BINDING_REPORT_ADDR_BIND(_device, _vk_obj_base, _addr, _size) \ + ANV_ADDR_BINDING_REPORT_ADDR((_device), (_vk_obj_base), (_addr), (_size), \ + VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT) + +#define ANV_ADDR_BINDING_REPORT_ADDR_UNBIND(_device, _vk_obj_base, _addr, _size) \ + ANV_ADDR_BINDING_REPORT_ADDR((_device), (_vk_obj_base), (_addr), (_size), \ + VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT) + #ifdef __cplusplus } #endif