radv: compute radv_image::bindings::addr at bind time

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33524>
This commit is contained in:
Samuel Pitoiset
2025-02-11 17:41:53 +01:00
parent f234099d6d
commit 066467cf98
2 changed files with 7 additions and 6 deletions

View File

@@ -1294,8 +1294,8 @@ radv_destroy_image(struct radv_device *device, const VkAllocationCallbacks *pAll
if (!image->bindings[i].addr)
continue;
vk_address_binding_report(&instance->vk, &image->vk.base, image->bindings[i].addr + image->bindings[i].offset,
image->bindings[i].range, VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT);
vk_address_binding_report(&instance->vk, &image->vk.base, image->bindings[i].addr, image->bindings[i].range,
VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT);
}
radv_rmv_log_resource_destroy(device, (uint64_t)radv_image_to_handle(image));
@@ -1450,6 +1450,8 @@ radv_image_create(VkDevice _device, const struct radv_image_create_info *create_
radv_destroy_image(device, alloc, image);
return vk_error(device, result);
}
image->bindings[0].addr = radv_buffer_get_va(image->bindings[0].bo);
}
if (instance->debug_flags & RADV_DEBUG_IMG) {
@@ -1745,13 +1747,12 @@ radv_bind_image_memory(struct radv_device *device, struct radv_image *image, uin
image->bindings[bind_idx].bo = bo;
image->bindings[bind_idx].offset = offset;
image->bindings[bind_idx].addr = radv_buffer_get_va(bo);
image->bindings[bind_idx].addr = radv_buffer_get_va(bo) + offset;
image->bindings[bind_idx].range = range;
radv_rmv_log_image_bind(device, bind_idx, radv_image_to_handle(image));
vk_address_binding_report(&instance->vk, &image->vk.base,
image->bindings[bind_idx].addr + image->bindings[bind_idx].offset,
vk_address_binding_report(&instance->vk, &image->vk.base, image->bindings[bind_idx].addr,
image->bindings[bind_idx].range, VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT);
}

View File

@@ -78,7 +78,7 @@ VK_DEFINE_NONDISP_HANDLE_CASTS(radv_image, vk.base, VkImage, VK_OBJECT_TYPE_IMAG
static inline uint64_t
radv_image_get_va(const struct radv_image *image, uint32_t bind_idx)
{
return radv_buffer_get_va(image->bindings[bind_idx].bo) + image->bindings[bind_idx].offset;
return image->bindings[bind_idx].addr;
}
static inline bool