• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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