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