xref: /aosp_15_r20/external/virglrenderer/src/venus/vkr_descriptor_set.h (revision bbecb9d118dfdb95f99bd754f8fa9be01f189df3)
1 /*
2  * Copyright 2020 Google LLC
3  * SPDX-License-Identifier: MIT
4  */
5 
6 #ifndef VKR_DESCRIPTOR_SET_H
7 #define VKR_DESCRIPTOR_SET_H
8 
9 #include "vkr_common.h"
10 
11 #include "vkr_context.h"
12 
13 struct vkr_descriptor_set_layout {
14    struct vkr_object base;
15 };
16 VKR_DEFINE_OBJECT_CAST(descriptor_set_layout,
17                        VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT,
18                        VkDescriptorSetLayout)
19 
20 struct vkr_descriptor_pool {
21    struct vkr_object base;
22 
23    VkDescriptorPoolCreateFlags flags;
24 
25    struct list_head descriptor_sets;
26 };
27 VKR_DEFINE_OBJECT_CAST(descriptor_pool, VK_OBJECT_TYPE_DESCRIPTOR_POOL, VkDescriptorPool)
28 
29 struct vkr_descriptor_set {
30    struct vkr_object base;
31 
32    struct vkr_device *device;
33 };
34 VKR_DEFINE_OBJECT_CAST(descriptor_set, VK_OBJECT_TYPE_DESCRIPTOR_SET, VkDescriptorSet)
35 
36 struct vkr_descriptor_update_template {
37    struct vkr_object base;
38 };
39 VKR_DEFINE_OBJECT_CAST(descriptor_update_template,
40                        VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
41                        VkDescriptorUpdateTemplate)
42 
43 void
44 vkr_context_init_descriptor_set_layout_dispatch(struct vkr_context *ctx);
45 
46 void
47 vkr_context_init_descriptor_pool_dispatch(struct vkr_context *ctx);
48 
49 void
50 vkr_context_init_descriptor_set_dispatch(struct vkr_context *ctx);
51 
52 void
53 vkr_context_init_descriptor_update_template_dispatch(struct vkr_context *ctx);
54 
55 static inline void
vkr_descriptor_pool_release(struct vkr_context * ctx,struct vkr_descriptor_pool * pool)56 vkr_descriptor_pool_release(struct vkr_context *ctx, struct vkr_descriptor_pool *pool)
57 {
58    vkr_context_remove_objects(ctx, &pool->descriptor_sets);
59 }
60 
61 #endif /* VKR_DESCRIPTOR_SET_H */
62