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