1 /*
2 * Copyright 2024 Google LLC
3 * SPDX-License-Identifier: MIT
4 */
5
6 #ifndef VK_META_OBJECT_LIST_H
7 #define VK_META_OBJECT_LIST_H
8
9 #include "vk_object.h"
10
11 #include "util/u_dynarray.h"
12
13 struct vk_device;
14
15 struct vk_meta_object_list {
16 struct util_dynarray arr;
17 };
18
19 void vk_meta_object_list_init(struct vk_meta_object_list *mol);
20 void vk_meta_object_list_reset(struct vk_device *device,
21 struct vk_meta_object_list *mol);
22 void vk_meta_object_list_finish(struct vk_device *device,
23 struct vk_meta_object_list *mol);
24
25 static inline void
vk_meta_object_list_add_obj(struct vk_meta_object_list * mol,struct vk_object_base * obj)26 vk_meta_object_list_add_obj(struct vk_meta_object_list *mol,
27 struct vk_object_base *obj)
28 {
29 util_dynarray_append(&mol->arr, struct vk_object_base *, obj);
30 }
31
32 static inline void
vk_meta_object_list_add_handle(struct vk_meta_object_list * mol,VkObjectType obj_type,uint64_t handle)33 vk_meta_object_list_add_handle(struct vk_meta_object_list *mol,
34 VkObjectType obj_type,
35 uint64_t handle)
36 {
37 vk_meta_object_list_add_obj(mol,
38 vk_object_base_from_u64_handle(handle, obj_type));
39 }
40
41 void vk_meta_destroy_object(struct vk_device *device,
42 struct vk_object_base *obj);
43
44 #endif
45