xref: /aosp_15_r20/external/mesa3d/src/vulkan/runtime/vk_meta_object_list.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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