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