From 5a340c0929a49dc716d19a72a3ff202f6745befe Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Fri, 19 Feb 2021 17:05:52 +1000 Subject: [PATCH] vulkan/util: add api to reset object magic + private data. This will be used to for reissuing dispatchable objects like command buffers. Cc: mesa-stable@lists.freedesktop.org Reviewed-by: Bas Nieuwenhuizen Part-of: --- src/vulkan/util/vk_object.c | 17 +++++++++++++++-- src/vulkan/util/vk_object.h | 1 + 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/vulkan/util/vk_object.c b/src/vulkan/util/vk_object.c index 85fa036..4d2ab2c 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 27d8d29..750c040 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, -- 2.7.4