1 /* This file is generated by venus-protocol. See vn_protocol_renderer.h. */
2
3 /*
4 * Copyright 2020 Google LLC
5 * SPDX-License-Identifier: MIT
6 */
7
8 #ifndef VN_PROTOCOL_RENDERER_DESCRIPTOR_UPDATE_TEMPLATE_H
9 #define VN_PROTOCOL_RENDERER_DESCRIPTOR_UPDATE_TEMPLATE_H
10
11 #include "vn_protocol_renderer_structs.h"
12
13 #pragma GCC diagnostic push
14 #pragma GCC diagnostic ignored "-Wpointer-arith"
15 #pragma GCC diagnostic ignored "-Wunused-parameter"
16
17 /* struct VkDescriptorUpdateTemplateEntry */
18
19 static inline void
vn_decode_VkDescriptorUpdateTemplateEntry_temp(struct vn_cs_decoder * dec,VkDescriptorUpdateTemplateEntry * val)20 vn_decode_VkDescriptorUpdateTemplateEntry_temp(struct vn_cs_decoder *dec, VkDescriptorUpdateTemplateEntry *val)
21 {
22 vn_decode_uint32_t(dec, &val->dstBinding);
23 vn_decode_uint32_t(dec, &val->dstArrayElement);
24 vn_decode_uint32_t(dec, &val->descriptorCount);
25 vn_decode_VkDescriptorType(dec, &val->descriptorType);
26 vn_decode_size_t(dec, &val->offset);
27 vn_decode_size_t(dec, &val->stride);
28 }
29
30 static inline void
vn_replace_VkDescriptorUpdateTemplateEntry_handle(VkDescriptorUpdateTemplateEntry * val)31 vn_replace_VkDescriptorUpdateTemplateEntry_handle(VkDescriptorUpdateTemplateEntry *val)
32 {
33 /* skip val->dstBinding */
34 /* skip val->dstArrayElement */
35 /* skip val->descriptorCount */
36 /* skip val->descriptorType */
37 /* skip val->offset */
38 /* skip val->stride */
39 }
40
41 /* struct VkDescriptorUpdateTemplateCreateInfo chain */
42
43 static inline void *
vn_decode_VkDescriptorUpdateTemplateCreateInfo_pnext_temp(struct vn_cs_decoder * dec)44 vn_decode_VkDescriptorUpdateTemplateCreateInfo_pnext_temp(struct vn_cs_decoder *dec)
45 {
46 /* no known/supported struct */
47 if (vn_decode_simple_pointer(dec))
48 vn_cs_decoder_set_fatal(dec);
49 return NULL;
50 }
51
52 static inline void
vn_decode_VkDescriptorUpdateTemplateCreateInfo_self_temp(struct vn_cs_decoder * dec,VkDescriptorUpdateTemplateCreateInfo * val)53 vn_decode_VkDescriptorUpdateTemplateCreateInfo_self_temp(struct vn_cs_decoder *dec, VkDescriptorUpdateTemplateCreateInfo *val)
54 {
55 /* skip val->{sType,pNext} */
56 vn_decode_VkFlags(dec, &val->flags);
57 vn_decode_uint32_t(dec, &val->descriptorUpdateEntryCount);
58 if (vn_peek_array_size(dec)) {
59 const uint32_t iter_count = vn_decode_array_size(dec, val->descriptorUpdateEntryCount);
60 val->pDescriptorUpdateEntries = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pDescriptorUpdateEntries) * iter_count);
61 if (!val->pDescriptorUpdateEntries) return;
62 for (uint32_t i = 0; i < iter_count; i++)
63 vn_decode_VkDescriptorUpdateTemplateEntry_temp(dec, &((VkDescriptorUpdateTemplateEntry *)val->pDescriptorUpdateEntries)[i]);
64 } else {
65 vn_decode_array_size(dec, val->descriptorUpdateEntryCount);
66 val->pDescriptorUpdateEntries = NULL;
67 }
68 vn_decode_VkDescriptorUpdateTemplateType(dec, &val->templateType);
69 vn_decode_VkDescriptorSetLayout_lookup(dec, &val->descriptorSetLayout);
70 vn_decode_VkPipelineBindPoint(dec, &val->pipelineBindPoint);
71 vn_decode_VkPipelineLayout_lookup(dec, &val->pipelineLayout);
72 vn_decode_uint32_t(dec, &val->set);
73 }
74
75 static inline void
vn_decode_VkDescriptorUpdateTemplateCreateInfo_temp(struct vn_cs_decoder * dec,VkDescriptorUpdateTemplateCreateInfo * val)76 vn_decode_VkDescriptorUpdateTemplateCreateInfo_temp(struct vn_cs_decoder *dec, VkDescriptorUpdateTemplateCreateInfo *val)
77 {
78 VkStructureType stype;
79 vn_decode_VkStructureType(dec, &stype);
80 if (stype != VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO)
81 vn_cs_decoder_set_fatal(dec);
82
83 val->sType = stype;
84 val->pNext = vn_decode_VkDescriptorUpdateTemplateCreateInfo_pnext_temp(dec);
85 vn_decode_VkDescriptorUpdateTemplateCreateInfo_self_temp(dec, val);
86 }
87
88 static inline void
vn_replace_VkDescriptorUpdateTemplateCreateInfo_handle_self(VkDescriptorUpdateTemplateCreateInfo * val)89 vn_replace_VkDescriptorUpdateTemplateCreateInfo_handle_self(VkDescriptorUpdateTemplateCreateInfo *val)
90 {
91 /* skip val->sType */
92 /* skip val->pNext */
93 /* skip val->flags */
94 /* skip val->descriptorUpdateEntryCount */
95 if (val->pDescriptorUpdateEntries) {
96 for (uint32_t i = 0; i < val->descriptorUpdateEntryCount; i++)
97 vn_replace_VkDescriptorUpdateTemplateEntry_handle(&((VkDescriptorUpdateTemplateEntry *)val->pDescriptorUpdateEntries)[i]);
98 }
99 /* skip val->templateType */
100 vn_replace_VkDescriptorSetLayout_handle(&val->descriptorSetLayout);
101 /* skip val->pipelineBindPoint */
102 vn_replace_VkPipelineLayout_handle(&val->pipelineLayout);
103 /* skip val->set */
104 }
105
106 static inline void
vn_replace_VkDescriptorUpdateTemplateCreateInfo_handle(VkDescriptorUpdateTemplateCreateInfo * val)107 vn_replace_VkDescriptorUpdateTemplateCreateInfo_handle(VkDescriptorUpdateTemplateCreateInfo *val)
108 {
109 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
110
111 do {
112 switch ((int32_t)pnext->sType) {
113 case VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO:
114 vn_replace_VkDescriptorUpdateTemplateCreateInfo_handle_self((VkDescriptorUpdateTemplateCreateInfo *)pnext);
115 break;
116 default:
117 /* ignore unknown/unsupported struct */
118 break;
119 }
120 pnext = pnext->pNext;
121 } while (pnext);
122 }
123
vn_decode_vkCreateDescriptorUpdateTemplate_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkCreateDescriptorUpdateTemplate * args)124 static inline void vn_decode_vkCreateDescriptorUpdateTemplate_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkCreateDescriptorUpdateTemplate *args)
125 {
126 vn_decode_VkDevice_lookup(dec, &args->device);
127 if (vn_decode_simple_pointer(dec)) {
128 args->pCreateInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pCreateInfo));
129 if (!args->pCreateInfo) return;
130 vn_decode_VkDescriptorUpdateTemplateCreateInfo_temp(dec, (VkDescriptorUpdateTemplateCreateInfo *)args->pCreateInfo);
131 } else {
132 args->pCreateInfo = NULL;
133 vn_cs_decoder_set_fatal(dec);
134 }
135 if (vn_decode_simple_pointer(dec)) {
136 vn_cs_decoder_set_fatal(dec);
137 } else {
138 args->pAllocator = NULL;
139 }
140 if (vn_decode_simple_pointer(dec)) {
141 args->pDescriptorUpdateTemplate = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pDescriptorUpdateTemplate));
142 if (!args->pDescriptorUpdateTemplate) return;
143 vn_decode_VkDescriptorUpdateTemplate(dec, args->pDescriptorUpdateTemplate);
144 } else {
145 args->pDescriptorUpdateTemplate = NULL;
146 vn_cs_decoder_set_fatal(dec);
147 }
148 }
149
vn_replace_vkCreateDescriptorUpdateTemplate_args_handle(struct vn_command_vkCreateDescriptorUpdateTemplate * args)150 static inline void vn_replace_vkCreateDescriptorUpdateTemplate_args_handle(struct vn_command_vkCreateDescriptorUpdateTemplate *args)
151 {
152 vn_replace_VkDevice_handle(&args->device);
153 if (args->pCreateInfo)
154 vn_replace_VkDescriptorUpdateTemplateCreateInfo_handle((VkDescriptorUpdateTemplateCreateInfo *)args->pCreateInfo);
155 /* skip args->pAllocator */
156 /* skip args->pDescriptorUpdateTemplate */
157 }
158
vn_encode_vkCreateDescriptorUpdateTemplate_reply(struct vn_cs_encoder * enc,const struct vn_command_vkCreateDescriptorUpdateTemplate * args)159 static inline void vn_encode_vkCreateDescriptorUpdateTemplate_reply(struct vn_cs_encoder *enc, const struct vn_command_vkCreateDescriptorUpdateTemplate *args)
160 {
161 vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkCreateDescriptorUpdateTemplate_EXT});
162
163 vn_encode_VkResult(enc, &args->ret);
164 /* skip args->device */
165 /* skip args->pCreateInfo */
166 /* skip args->pAllocator */
167 if (vn_encode_simple_pointer(enc, args->pDescriptorUpdateTemplate))
168 vn_encode_VkDescriptorUpdateTemplate(enc, args->pDescriptorUpdateTemplate);
169 }
170
vn_decode_vkDestroyDescriptorUpdateTemplate_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkDestroyDescriptorUpdateTemplate * args)171 static inline void vn_decode_vkDestroyDescriptorUpdateTemplate_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkDestroyDescriptorUpdateTemplate *args)
172 {
173 vn_decode_VkDevice_lookup(dec, &args->device);
174 vn_decode_VkDescriptorUpdateTemplate_lookup(dec, &args->descriptorUpdateTemplate);
175 if (vn_decode_simple_pointer(dec)) {
176 vn_cs_decoder_set_fatal(dec);
177 } else {
178 args->pAllocator = NULL;
179 }
180 }
181
vn_replace_vkDestroyDescriptorUpdateTemplate_args_handle(struct vn_command_vkDestroyDescriptorUpdateTemplate * args)182 static inline void vn_replace_vkDestroyDescriptorUpdateTemplate_args_handle(struct vn_command_vkDestroyDescriptorUpdateTemplate *args)
183 {
184 vn_replace_VkDevice_handle(&args->device);
185 vn_replace_VkDescriptorUpdateTemplate_handle(&args->descriptorUpdateTemplate);
186 /* skip args->pAllocator */
187 }
188
vn_encode_vkDestroyDescriptorUpdateTemplate_reply(struct vn_cs_encoder * enc,const struct vn_command_vkDestroyDescriptorUpdateTemplate * args)189 static inline void vn_encode_vkDestroyDescriptorUpdateTemplate_reply(struct vn_cs_encoder *enc, const struct vn_command_vkDestroyDescriptorUpdateTemplate *args)
190 {
191 vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkDestroyDescriptorUpdateTemplate_EXT});
192
193 /* skip args->device */
194 /* skip args->descriptorUpdateTemplate */
195 /* skip args->pAllocator */
196 }
197
vn_dispatch_vkCreateDescriptorUpdateTemplate(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)198 static inline void vn_dispatch_vkCreateDescriptorUpdateTemplate(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
199 {
200 struct vn_command_vkCreateDescriptorUpdateTemplate args;
201
202 if (!ctx->dispatch_vkCreateDescriptorUpdateTemplate) {
203 vn_cs_decoder_set_fatal(ctx->decoder);
204 return;
205 }
206
207 vn_decode_vkCreateDescriptorUpdateTemplate_args_temp(ctx->decoder, &args);
208 if (!args.device) {
209 vn_cs_decoder_set_fatal(ctx->decoder);
210 return;
211 }
212
213 if (!vn_cs_decoder_get_fatal(ctx->decoder))
214 ctx->dispatch_vkCreateDescriptorUpdateTemplate(ctx, &args);
215
216 #ifdef DEBUG
217 if (!vn_cs_decoder_get_fatal(ctx->decoder) && vn_dispatch_should_log_result(args.ret))
218 vn_dispatch_debug_log(ctx, "vkCreateDescriptorUpdateTemplate returned %d", args.ret);
219 #endif
220
221 if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
222 vn_encode_vkCreateDescriptorUpdateTemplate_reply(ctx->encoder, &args);
223
224 vn_cs_decoder_reset_temp_pool(ctx->decoder);
225 }
226
vn_dispatch_vkDestroyDescriptorUpdateTemplate(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)227 static inline void vn_dispatch_vkDestroyDescriptorUpdateTemplate(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
228 {
229 struct vn_command_vkDestroyDescriptorUpdateTemplate args;
230
231 if (!ctx->dispatch_vkDestroyDescriptorUpdateTemplate) {
232 vn_cs_decoder_set_fatal(ctx->decoder);
233 return;
234 }
235
236 vn_decode_vkDestroyDescriptorUpdateTemplate_args_temp(ctx->decoder, &args);
237 if (!args.device) {
238 vn_cs_decoder_set_fatal(ctx->decoder);
239 return;
240 }
241
242 if (!vn_cs_decoder_get_fatal(ctx->decoder))
243 ctx->dispatch_vkDestroyDescriptorUpdateTemplate(ctx, &args);
244
245
246 if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
247 vn_encode_vkDestroyDescriptorUpdateTemplate_reply(ctx->encoder, &args);
248
249 vn_cs_decoder_reset_temp_pool(ctx->decoder);
250 }
251
252 #pragma GCC diagnostic pop
253
254 #endif /* VN_PROTOCOL_RENDERER_DESCRIPTOR_UPDATE_TEMPLATE_H */
255