vulkan/util: add api to reset object magic + private data.
authorDave Airlie <airlied@redhat.com>
Fri, 19 Feb 2021 07:05:52 +0000 (17:05 +1000)
committerDave Airlie <airlied@redhat.com>
Sun, 21 Feb 2021 23:32:13 +0000 (09:32 +1000)
This will be used to for reissuing dispatchable objects like
command buffers.

Cc: mesa-stable@lists.freedesktop.org
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9145>

src/vulkan/util/vk_object.c
src/vulkan/util/vk_object.h

index 85fa036..4d2ab2c 100644 (file)
 #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,
index 27d8d29..750c040 100644 (file)
@@ -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,