diff --git a/src/vulkan/util/vk_object.c b/src/vulkan/util/vk_object.c index 85fa036ff1c..4d2ab2c12f7 100644 --- a/src/vulkan/util/vk_object.c +++ b/src/vulkan/util/vk_object.c @@ -29,15 +29,21 @@ #include "util/hash_table.h" #include "util/ralloc.h" +static void +vk_object_base_reinit(struct vk_object_base *base) +{ + base->_loader_data.loaderMagic = ICD_LOADER_MAGIC; + util_sparse_array_init(&base->private_data, sizeof(uint64_t), 8); +} + void vk_object_base_init(struct vk_device *device, struct vk_object_base *base, UNUSED VkObjectType obj_type) { - base->_loader_data.loaderMagic = ICD_LOADER_MAGIC; + vk_object_base_reinit(base); base->type = obj_type; base->device = device; - util_sparse_array_init(&base->private_data, sizeof(uint64_t), 8); } void @@ -46,6 +52,13 @@ vk_object_base_finish(struct vk_object_base *base) util_sparse_array_finish(&base->private_data); } +void +vk_object_base_reset(struct vk_object_base *base) +{ + vk_object_base_finish(base); + vk_object_base_reinit(base); +} + void * vk_object_alloc(struct vk_device *device, const VkAllocationCallbacks *alloc, diff --git a/src/vulkan/util/vk_object.h b/src/vulkan/util/vk_object.h index 27d8d2949e9..750c0409d34 100644 --- a/src/vulkan/util/vk_object.h +++ b/src/vulkan/util/vk_object.h @@ -52,6 +52,7 @@ void vk_object_base_init(UNUSED struct vk_device *device, struct vk_object_base *base, UNUSED VkObjectType obj_type); void vk_object_base_finish(UNUSED struct vk_object_base *base); +void vk_object_base_reset(struct vk_object_base *base); static inline void vk_object_base_assert_valid(ASSERTED struct vk_object_base *base,