xref: /aosp_15_r20/external/virglrenderer/src/venus/venus-protocol/vn_protocol_renderer_buffer.h (revision bbecb9d118dfdb95f99bd754f8fa9be01f189df3)
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_BUFFER_H
9 #define VN_PROTOCOL_RENDERER_BUFFER_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 VkExternalMemoryBufferCreateInfo chain */
18 
19 static inline void *
vn_decode_VkExternalMemoryBufferCreateInfo_pnext_temp(struct vn_cs_decoder * dec)20 vn_decode_VkExternalMemoryBufferCreateInfo_pnext_temp(struct vn_cs_decoder *dec)
21 {
22     /* no known/supported struct */
23     if (vn_decode_simple_pointer(dec))
24         vn_cs_decoder_set_fatal(dec);
25     return NULL;
26 }
27 
28 static inline void
vn_decode_VkExternalMemoryBufferCreateInfo_self_temp(struct vn_cs_decoder * dec,VkExternalMemoryBufferCreateInfo * val)29 vn_decode_VkExternalMemoryBufferCreateInfo_self_temp(struct vn_cs_decoder *dec, VkExternalMemoryBufferCreateInfo *val)
30 {
31     /* skip val->{sType,pNext} */
32     vn_decode_VkFlags(dec, &val->handleTypes);
33 }
34 
35 static inline void
vn_decode_VkExternalMemoryBufferCreateInfo_temp(struct vn_cs_decoder * dec,VkExternalMemoryBufferCreateInfo * val)36 vn_decode_VkExternalMemoryBufferCreateInfo_temp(struct vn_cs_decoder *dec, VkExternalMemoryBufferCreateInfo *val)
37 {
38     VkStructureType stype;
39     vn_decode_VkStructureType(dec, &stype);
40     if (stype != VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO)
41         vn_cs_decoder_set_fatal(dec);
42 
43     val->sType = stype;
44     val->pNext = vn_decode_VkExternalMemoryBufferCreateInfo_pnext_temp(dec);
45     vn_decode_VkExternalMemoryBufferCreateInfo_self_temp(dec, val);
46 }
47 
48 static inline void
vn_replace_VkExternalMemoryBufferCreateInfo_handle_self(VkExternalMemoryBufferCreateInfo * val)49 vn_replace_VkExternalMemoryBufferCreateInfo_handle_self(VkExternalMemoryBufferCreateInfo *val)
50 {
51     /* skip val->sType */
52     /* skip val->pNext */
53     /* skip val->handleTypes */
54 }
55 
56 static inline void
vn_replace_VkExternalMemoryBufferCreateInfo_handle(VkExternalMemoryBufferCreateInfo * val)57 vn_replace_VkExternalMemoryBufferCreateInfo_handle(VkExternalMemoryBufferCreateInfo *val)
58 {
59     struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
60 
61     do {
62         switch ((int32_t)pnext->sType) {
63         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:
64             vn_replace_VkExternalMemoryBufferCreateInfo_handle_self((VkExternalMemoryBufferCreateInfo *)pnext);
65             break;
66         default:
67             /* ignore unknown/unsupported struct */
68             break;
69         }
70         pnext = pnext->pNext;
71     } while (pnext);
72 }
73 
74 /* struct VkBufferOpaqueCaptureAddressCreateInfo chain */
75 
76 static inline void *
vn_decode_VkBufferOpaqueCaptureAddressCreateInfo_pnext_temp(struct vn_cs_decoder * dec)77 vn_decode_VkBufferOpaqueCaptureAddressCreateInfo_pnext_temp(struct vn_cs_decoder *dec)
78 {
79     /* no known/supported struct */
80     if (vn_decode_simple_pointer(dec))
81         vn_cs_decoder_set_fatal(dec);
82     return NULL;
83 }
84 
85 static inline void
vn_decode_VkBufferOpaqueCaptureAddressCreateInfo_self_temp(struct vn_cs_decoder * dec,VkBufferOpaqueCaptureAddressCreateInfo * val)86 vn_decode_VkBufferOpaqueCaptureAddressCreateInfo_self_temp(struct vn_cs_decoder *dec, VkBufferOpaqueCaptureAddressCreateInfo *val)
87 {
88     /* skip val->{sType,pNext} */
89     vn_decode_uint64_t(dec, &val->opaqueCaptureAddress);
90 }
91 
92 static inline void
vn_decode_VkBufferOpaqueCaptureAddressCreateInfo_temp(struct vn_cs_decoder * dec,VkBufferOpaqueCaptureAddressCreateInfo * val)93 vn_decode_VkBufferOpaqueCaptureAddressCreateInfo_temp(struct vn_cs_decoder *dec, VkBufferOpaqueCaptureAddressCreateInfo *val)
94 {
95     VkStructureType stype;
96     vn_decode_VkStructureType(dec, &stype);
97     if (stype != VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO)
98         vn_cs_decoder_set_fatal(dec);
99 
100     val->sType = stype;
101     val->pNext = vn_decode_VkBufferOpaqueCaptureAddressCreateInfo_pnext_temp(dec);
102     vn_decode_VkBufferOpaqueCaptureAddressCreateInfo_self_temp(dec, val);
103 }
104 
105 static inline void
vn_replace_VkBufferOpaqueCaptureAddressCreateInfo_handle_self(VkBufferOpaqueCaptureAddressCreateInfo * val)106 vn_replace_VkBufferOpaqueCaptureAddressCreateInfo_handle_self(VkBufferOpaqueCaptureAddressCreateInfo *val)
107 {
108     /* skip val->sType */
109     /* skip val->pNext */
110     /* skip val->opaqueCaptureAddress */
111 }
112 
113 static inline void
vn_replace_VkBufferOpaqueCaptureAddressCreateInfo_handle(VkBufferOpaqueCaptureAddressCreateInfo * val)114 vn_replace_VkBufferOpaqueCaptureAddressCreateInfo_handle(VkBufferOpaqueCaptureAddressCreateInfo *val)
115 {
116     struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
117 
118     do {
119         switch ((int32_t)pnext->sType) {
120         case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO:
121             vn_replace_VkBufferOpaqueCaptureAddressCreateInfo_handle_self((VkBufferOpaqueCaptureAddressCreateInfo *)pnext);
122             break;
123         default:
124             /* ignore unknown/unsupported struct */
125             break;
126         }
127         pnext = pnext->pNext;
128     } while (pnext);
129 }
130 
131 /* struct VkBufferCreateInfo chain */
132 
133 static inline void *
vn_decode_VkBufferCreateInfo_pnext_temp(struct vn_cs_decoder * dec)134 vn_decode_VkBufferCreateInfo_pnext_temp(struct vn_cs_decoder *dec)
135 {
136     VkBaseOutStructure *pnext;
137     VkStructureType stype;
138 
139     if (!vn_decode_simple_pointer(dec))
140         return NULL;
141 
142     vn_decode_VkStructureType(dec, &stype);
143     switch ((int32_t)stype) {
144     case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:
145         pnext = vn_cs_decoder_alloc_temp(dec, sizeof(VkExternalMemoryBufferCreateInfo));
146         if (pnext) {
147             pnext->sType = stype;
148             pnext->pNext = vn_decode_VkBufferCreateInfo_pnext_temp(dec);
149             vn_decode_VkExternalMemoryBufferCreateInfo_self_temp(dec, (VkExternalMemoryBufferCreateInfo *)pnext);
150         }
151         break;
152     case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO:
153         pnext = vn_cs_decoder_alloc_temp(dec, sizeof(VkBufferOpaqueCaptureAddressCreateInfo));
154         if (pnext) {
155             pnext->sType = stype;
156             pnext->pNext = vn_decode_VkBufferCreateInfo_pnext_temp(dec);
157             vn_decode_VkBufferOpaqueCaptureAddressCreateInfo_self_temp(dec, (VkBufferOpaqueCaptureAddressCreateInfo *)pnext);
158         }
159         break;
160     default:
161         /* unexpected struct */
162         pnext = NULL;
163         vn_cs_decoder_set_fatal(dec);
164         break;
165     }
166 
167     return pnext;
168 }
169 
170 static inline void
vn_decode_VkBufferCreateInfo_self_temp(struct vn_cs_decoder * dec,VkBufferCreateInfo * val)171 vn_decode_VkBufferCreateInfo_self_temp(struct vn_cs_decoder *dec, VkBufferCreateInfo *val)
172 {
173     /* skip val->{sType,pNext} */
174     vn_decode_VkFlags(dec, &val->flags);
175     vn_decode_VkDeviceSize(dec, &val->size);
176     vn_decode_VkFlags(dec, &val->usage);
177     vn_decode_VkSharingMode(dec, &val->sharingMode);
178     vn_decode_uint32_t(dec, &val->queueFamilyIndexCount);
179     if (vn_peek_array_size(dec)) {
180         const size_t array_size = vn_decode_array_size(dec, val->queueFamilyIndexCount);
181         val->pQueueFamilyIndices = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pQueueFamilyIndices) * array_size);
182         if (!val->pQueueFamilyIndices) return;
183         vn_decode_uint32_t_array(dec, (uint32_t *)val->pQueueFamilyIndices, array_size);
184     } else {
185         vn_decode_array_size_unchecked(dec);
186         val->pQueueFamilyIndices = NULL;
187     }
188 }
189 
190 static inline void
vn_decode_VkBufferCreateInfo_temp(struct vn_cs_decoder * dec,VkBufferCreateInfo * val)191 vn_decode_VkBufferCreateInfo_temp(struct vn_cs_decoder *dec, VkBufferCreateInfo *val)
192 {
193     VkStructureType stype;
194     vn_decode_VkStructureType(dec, &stype);
195     if (stype != VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO)
196         vn_cs_decoder_set_fatal(dec);
197 
198     val->sType = stype;
199     val->pNext = vn_decode_VkBufferCreateInfo_pnext_temp(dec);
200     vn_decode_VkBufferCreateInfo_self_temp(dec, val);
201 }
202 
203 static inline void
vn_replace_VkBufferCreateInfo_handle_self(VkBufferCreateInfo * val)204 vn_replace_VkBufferCreateInfo_handle_self(VkBufferCreateInfo *val)
205 {
206     /* skip val->sType */
207     /* skip val->pNext */
208     /* skip val->flags */
209     /* skip val->size */
210     /* skip val->usage */
211     /* skip val->sharingMode */
212     /* skip val->queueFamilyIndexCount */
213     /* skip val->pQueueFamilyIndices */
214 }
215 
216 static inline void
vn_replace_VkBufferCreateInfo_handle(VkBufferCreateInfo * val)217 vn_replace_VkBufferCreateInfo_handle(VkBufferCreateInfo *val)
218 {
219     struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
220 
221     do {
222         switch ((int32_t)pnext->sType) {
223         case VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO:
224             vn_replace_VkBufferCreateInfo_handle_self((VkBufferCreateInfo *)pnext);
225             break;
226         case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:
227             vn_replace_VkExternalMemoryBufferCreateInfo_handle_self((VkExternalMemoryBufferCreateInfo *)pnext);
228             break;
229         case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO:
230             vn_replace_VkBufferOpaqueCaptureAddressCreateInfo_handle_self((VkBufferOpaqueCaptureAddressCreateInfo *)pnext);
231             break;
232         default:
233             /* ignore unknown/unsupported struct */
234             break;
235         }
236         pnext = pnext->pNext;
237     } while (pnext);
238 }
239 
240 /* struct VkBindBufferMemoryDeviceGroupInfo chain */
241 
242 static inline void *
vn_decode_VkBindBufferMemoryDeviceGroupInfo_pnext_temp(struct vn_cs_decoder * dec)243 vn_decode_VkBindBufferMemoryDeviceGroupInfo_pnext_temp(struct vn_cs_decoder *dec)
244 {
245     /* no known/supported struct */
246     if (vn_decode_simple_pointer(dec))
247         vn_cs_decoder_set_fatal(dec);
248     return NULL;
249 }
250 
251 static inline void
vn_decode_VkBindBufferMemoryDeviceGroupInfo_self_temp(struct vn_cs_decoder * dec,VkBindBufferMemoryDeviceGroupInfo * val)252 vn_decode_VkBindBufferMemoryDeviceGroupInfo_self_temp(struct vn_cs_decoder *dec, VkBindBufferMemoryDeviceGroupInfo *val)
253 {
254     /* skip val->{sType,pNext} */
255     vn_decode_uint32_t(dec, &val->deviceIndexCount);
256     if (vn_peek_array_size(dec)) {
257         const size_t array_size = vn_decode_array_size(dec, val->deviceIndexCount);
258         val->pDeviceIndices = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pDeviceIndices) * array_size);
259         if (!val->pDeviceIndices) return;
260         vn_decode_uint32_t_array(dec, (uint32_t *)val->pDeviceIndices, array_size);
261     } else {
262         vn_decode_array_size(dec, val->deviceIndexCount);
263         val->pDeviceIndices = NULL;
264     }
265 }
266 
267 static inline void
vn_decode_VkBindBufferMemoryDeviceGroupInfo_temp(struct vn_cs_decoder * dec,VkBindBufferMemoryDeviceGroupInfo * val)268 vn_decode_VkBindBufferMemoryDeviceGroupInfo_temp(struct vn_cs_decoder *dec, VkBindBufferMemoryDeviceGroupInfo *val)
269 {
270     VkStructureType stype;
271     vn_decode_VkStructureType(dec, &stype);
272     if (stype != VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO)
273         vn_cs_decoder_set_fatal(dec);
274 
275     val->sType = stype;
276     val->pNext = vn_decode_VkBindBufferMemoryDeviceGroupInfo_pnext_temp(dec);
277     vn_decode_VkBindBufferMemoryDeviceGroupInfo_self_temp(dec, val);
278 }
279 
280 static inline void
vn_replace_VkBindBufferMemoryDeviceGroupInfo_handle_self(VkBindBufferMemoryDeviceGroupInfo * val)281 vn_replace_VkBindBufferMemoryDeviceGroupInfo_handle_self(VkBindBufferMemoryDeviceGroupInfo *val)
282 {
283     /* skip val->sType */
284     /* skip val->pNext */
285     /* skip val->deviceIndexCount */
286     /* skip val->pDeviceIndices */
287 }
288 
289 static inline void
vn_replace_VkBindBufferMemoryDeviceGroupInfo_handle(VkBindBufferMemoryDeviceGroupInfo * val)290 vn_replace_VkBindBufferMemoryDeviceGroupInfo_handle(VkBindBufferMemoryDeviceGroupInfo *val)
291 {
292     struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
293 
294     do {
295         switch ((int32_t)pnext->sType) {
296         case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:
297             vn_replace_VkBindBufferMemoryDeviceGroupInfo_handle_self((VkBindBufferMemoryDeviceGroupInfo *)pnext);
298             break;
299         default:
300             /* ignore unknown/unsupported struct */
301             break;
302         }
303         pnext = pnext->pNext;
304     } while (pnext);
305 }
306 
307 /* struct VkBindBufferMemoryInfo chain */
308 
309 static inline void *
vn_decode_VkBindBufferMemoryInfo_pnext_temp(struct vn_cs_decoder * dec)310 vn_decode_VkBindBufferMemoryInfo_pnext_temp(struct vn_cs_decoder *dec)
311 {
312     VkBaseOutStructure *pnext;
313     VkStructureType stype;
314 
315     if (!vn_decode_simple_pointer(dec))
316         return NULL;
317 
318     vn_decode_VkStructureType(dec, &stype);
319     switch ((int32_t)stype) {
320     case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:
321         pnext = vn_cs_decoder_alloc_temp(dec, sizeof(VkBindBufferMemoryDeviceGroupInfo));
322         if (pnext) {
323             pnext->sType = stype;
324             pnext->pNext = vn_decode_VkBindBufferMemoryInfo_pnext_temp(dec);
325             vn_decode_VkBindBufferMemoryDeviceGroupInfo_self_temp(dec, (VkBindBufferMemoryDeviceGroupInfo *)pnext);
326         }
327         break;
328     default:
329         /* unexpected struct */
330         pnext = NULL;
331         vn_cs_decoder_set_fatal(dec);
332         break;
333     }
334 
335     return pnext;
336 }
337 
338 static inline void
vn_decode_VkBindBufferMemoryInfo_self_temp(struct vn_cs_decoder * dec,VkBindBufferMemoryInfo * val)339 vn_decode_VkBindBufferMemoryInfo_self_temp(struct vn_cs_decoder *dec, VkBindBufferMemoryInfo *val)
340 {
341     /* skip val->{sType,pNext} */
342     vn_decode_VkBuffer_lookup(dec, &val->buffer);
343     vn_decode_VkDeviceMemory_lookup(dec, &val->memory);
344     vn_decode_VkDeviceSize(dec, &val->memoryOffset);
345 }
346 
347 static inline void
vn_decode_VkBindBufferMemoryInfo_temp(struct vn_cs_decoder * dec,VkBindBufferMemoryInfo * val)348 vn_decode_VkBindBufferMemoryInfo_temp(struct vn_cs_decoder *dec, VkBindBufferMemoryInfo *val)
349 {
350     VkStructureType stype;
351     vn_decode_VkStructureType(dec, &stype);
352     if (stype != VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO)
353         vn_cs_decoder_set_fatal(dec);
354 
355     val->sType = stype;
356     val->pNext = vn_decode_VkBindBufferMemoryInfo_pnext_temp(dec);
357     vn_decode_VkBindBufferMemoryInfo_self_temp(dec, val);
358 }
359 
360 static inline void
vn_replace_VkBindBufferMemoryInfo_handle_self(VkBindBufferMemoryInfo * val)361 vn_replace_VkBindBufferMemoryInfo_handle_self(VkBindBufferMemoryInfo *val)
362 {
363     /* skip val->sType */
364     /* skip val->pNext */
365     vn_replace_VkBuffer_handle(&val->buffer);
366     vn_replace_VkDeviceMemory_handle(&val->memory);
367     /* skip val->memoryOffset */
368 }
369 
370 static inline void
vn_replace_VkBindBufferMemoryInfo_handle(VkBindBufferMemoryInfo * val)371 vn_replace_VkBindBufferMemoryInfo_handle(VkBindBufferMemoryInfo *val)
372 {
373     struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
374 
375     do {
376         switch ((int32_t)pnext->sType) {
377         case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO:
378             vn_replace_VkBindBufferMemoryInfo_handle_self((VkBindBufferMemoryInfo *)pnext);
379             break;
380         case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:
381             vn_replace_VkBindBufferMemoryDeviceGroupInfo_handle_self((VkBindBufferMemoryDeviceGroupInfo *)pnext);
382             break;
383         default:
384             /* ignore unknown/unsupported struct */
385             break;
386         }
387         pnext = pnext->pNext;
388     } while (pnext);
389 }
390 
391 /* struct VkBufferMemoryRequirementsInfo2 chain */
392 
393 static inline void *
vn_decode_VkBufferMemoryRequirementsInfo2_pnext_temp(struct vn_cs_decoder * dec)394 vn_decode_VkBufferMemoryRequirementsInfo2_pnext_temp(struct vn_cs_decoder *dec)
395 {
396     /* no known/supported struct */
397     if (vn_decode_simple_pointer(dec))
398         vn_cs_decoder_set_fatal(dec);
399     return NULL;
400 }
401 
402 static inline void
vn_decode_VkBufferMemoryRequirementsInfo2_self_temp(struct vn_cs_decoder * dec,VkBufferMemoryRequirementsInfo2 * val)403 vn_decode_VkBufferMemoryRequirementsInfo2_self_temp(struct vn_cs_decoder *dec, VkBufferMemoryRequirementsInfo2 *val)
404 {
405     /* skip val->{sType,pNext} */
406     vn_decode_VkBuffer_lookup(dec, &val->buffer);
407 }
408 
409 static inline void
vn_decode_VkBufferMemoryRequirementsInfo2_temp(struct vn_cs_decoder * dec,VkBufferMemoryRequirementsInfo2 * val)410 vn_decode_VkBufferMemoryRequirementsInfo2_temp(struct vn_cs_decoder *dec, VkBufferMemoryRequirementsInfo2 *val)
411 {
412     VkStructureType stype;
413     vn_decode_VkStructureType(dec, &stype);
414     if (stype != VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2)
415         vn_cs_decoder_set_fatal(dec);
416 
417     val->sType = stype;
418     val->pNext = vn_decode_VkBufferMemoryRequirementsInfo2_pnext_temp(dec);
419     vn_decode_VkBufferMemoryRequirementsInfo2_self_temp(dec, val);
420 }
421 
422 static inline void
vn_replace_VkBufferMemoryRequirementsInfo2_handle_self(VkBufferMemoryRequirementsInfo2 * val)423 vn_replace_VkBufferMemoryRequirementsInfo2_handle_self(VkBufferMemoryRequirementsInfo2 *val)
424 {
425     /* skip val->sType */
426     /* skip val->pNext */
427     vn_replace_VkBuffer_handle(&val->buffer);
428 }
429 
430 static inline void
vn_replace_VkBufferMemoryRequirementsInfo2_handle(VkBufferMemoryRequirementsInfo2 * val)431 vn_replace_VkBufferMemoryRequirementsInfo2_handle(VkBufferMemoryRequirementsInfo2 *val)
432 {
433     struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
434 
435     do {
436         switch ((int32_t)pnext->sType) {
437         case VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2:
438             vn_replace_VkBufferMemoryRequirementsInfo2_handle_self((VkBufferMemoryRequirementsInfo2 *)pnext);
439             break;
440         default:
441             /* ignore unknown/unsupported struct */
442             break;
443         }
444         pnext = pnext->pNext;
445     } while (pnext);
446 }
447 
448 /* struct VkDeviceBufferMemoryRequirements chain */
449 
450 static inline void *
vn_decode_VkDeviceBufferMemoryRequirements_pnext_temp(struct vn_cs_decoder * dec)451 vn_decode_VkDeviceBufferMemoryRequirements_pnext_temp(struct vn_cs_decoder *dec)
452 {
453     /* no known/supported struct */
454     if (vn_decode_simple_pointer(dec))
455         vn_cs_decoder_set_fatal(dec);
456     return NULL;
457 }
458 
459 static inline void
vn_decode_VkDeviceBufferMemoryRequirements_self_temp(struct vn_cs_decoder * dec,VkDeviceBufferMemoryRequirements * val)460 vn_decode_VkDeviceBufferMemoryRequirements_self_temp(struct vn_cs_decoder *dec, VkDeviceBufferMemoryRequirements *val)
461 {
462     /* skip val->{sType,pNext} */
463     if (vn_decode_simple_pointer(dec)) {
464         val->pCreateInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pCreateInfo));
465         if (!val->pCreateInfo) return;
466         vn_decode_VkBufferCreateInfo_temp(dec, (VkBufferCreateInfo *)val->pCreateInfo);
467     } else {
468         val->pCreateInfo = NULL;
469         vn_cs_decoder_set_fatal(dec);
470     }
471 }
472 
473 static inline void
vn_decode_VkDeviceBufferMemoryRequirements_temp(struct vn_cs_decoder * dec,VkDeviceBufferMemoryRequirements * val)474 vn_decode_VkDeviceBufferMemoryRequirements_temp(struct vn_cs_decoder *dec, VkDeviceBufferMemoryRequirements *val)
475 {
476     VkStructureType stype;
477     vn_decode_VkStructureType(dec, &stype);
478     if (stype != VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS)
479         vn_cs_decoder_set_fatal(dec);
480 
481     val->sType = stype;
482     val->pNext = vn_decode_VkDeviceBufferMemoryRequirements_pnext_temp(dec);
483     vn_decode_VkDeviceBufferMemoryRequirements_self_temp(dec, val);
484 }
485 
486 static inline void
vn_replace_VkDeviceBufferMemoryRequirements_handle_self(VkDeviceBufferMemoryRequirements * val)487 vn_replace_VkDeviceBufferMemoryRequirements_handle_self(VkDeviceBufferMemoryRequirements *val)
488 {
489     /* skip val->sType */
490     /* skip val->pNext */
491     if (val->pCreateInfo)
492         vn_replace_VkBufferCreateInfo_handle((VkBufferCreateInfo *)val->pCreateInfo);
493 }
494 
495 static inline void
vn_replace_VkDeviceBufferMemoryRequirements_handle(VkDeviceBufferMemoryRequirements * val)496 vn_replace_VkDeviceBufferMemoryRequirements_handle(VkDeviceBufferMemoryRequirements *val)
497 {
498     struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
499 
500     do {
501         switch ((int32_t)pnext->sType) {
502         case VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS:
503             vn_replace_VkDeviceBufferMemoryRequirements_handle_self((VkDeviceBufferMemoryRequirements *)pnext);
504             break;
505         default:
506             /* ignore unknown/unsupported struct */
507             break;
508         }
509         pnext = pnext->pNext;
510     } while (pnext);
511 }
512 
513 /* struct VkBufferDeviceAddressInfo chain */
514 
515 static inline void *
vn_decode_VkBufferDeviceAddressInfo_pnext_temp(struct vn_cs_decoder * dec)516 vn_decode_VkBufferDeviceAddressInfo_pnext_temp(struct vn_cs_decoder *dec)
517 {
518     /* no known/supported struct */
519     if (vn_decode_simple_pointer(dec))
520         vn_cs_decoder_set_fatal(dec);
521     return NULL;
522 }
523 
524 static inline void
vn_decode_VkBufferDeviceAddressInfo_self_temp(struct vn_cs_decoder * dec,VkBufferDeviceAddressInfo * val)525 vn_decode_VkBufferDeviceAddressInfo_self_temp(struct vn_cs_decoder *dec, VkBufferDeviceAddressInfo *val)
526 {
527     /* skip val->{sType,pNext} */
528     vn_decode_VkBuffer_lookup(dec, &val->buffer);
529 }
530 
531 static inline void
vn_decode_VkBufferDeviceAddressInfo_temp(struct vn_cs_decoder * dec,VkBufferDeviceAddressInfo * val)532 vn_decode_VkBufferDeviceAddressInfo_temp(struct vn_cs_decoder *dec, VkBufferDeviceAddressInfo *val)
533 {
534     VkStructureType stype;
535     vn_decode_VkStructureType(dec, &stype);
536     if (stype != VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO)
537         vn_cs_decoder_set_fatal(dec);
538 
539     val->sType = stype;
540     val->pNext = vn_decode_VkBufferDeviceAddressInfo_pnext_temp(dec);
541     vn_decode_VkBufferDeviceAddressInfo_self_temp(dec, val);
542 }
543 
544 static inline void
vn_replace_VkBufferDeviceAddressInfo_handle_self(VkBufferDeviceAddressInfo * val)545 vn_replace_VkBufferDeviceAddressInfo_handle_self(VkBufferDeviceAddressInfo *val)
546 {
547     /* skip val->sType */
548     /* skip val->pNext */
549     vn_replace_VkBuffer_handle(&val->buffer);
550 }
551 
552 static inline void
vn_replace_VkBufferDeviceAddressInfo_handle(VkBufferDeviceAddressInfo * val)553 vn_replace_VkBufferDeviceAddressInfo_handle(VkBufferDeviceAddressInfo *val)
554 {
555     struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
556 
557     do {
558         switch ((int32_t)pnext->sType) {
559         case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO:
560             vn_replace_VkBufferDeviceAddressInfo_handle_self((VkBufferDeviceAddressInfo *)pnext);
561             break;
562         default:
563             /* ignore unknown/unsupported struct */
564             break;
565         }
566         pnext = pnext->pNext;
567     } while (pnext);
568 }
569 
vn_decode_vkGetBufferMemoryRequirements_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkGetBufferMemoryRequirements * args)570 static inline void vn_decode_vkGetBufferMemoryRequirements_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkGetBufferMemoryRequirements *args)
571 {
572     vn_decode_VkDevice_lookup(dec, &args->device);
573     vn_decode_VkBuffer_lookup(dec, &args->buffer);
574     if (vn_decode_simple_pointer(dec)) {
575         args->pMemoryRequirements = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pMemoryRequirements));
576         if (!args->pMemoryRequirements) return;
577         vn_decode_VkMemoryRequirements_partial_temp(dec, args->pMemoryRequirements);
578     } else {
579         args->pMemoryRequirements = NULL;
580         vn_cs_decoder_set_fatal(dec);
581     }
582 }
583 
vn_replace_vkGetBufferMemoryRequirements_args_handle(struct vn_command_vkGetBufferMemoryRequirements * args)584 static inline void vn_replace_vkGetBufferMemoryRequirements_args_handle(struct vn_command_vkGetBufferMemoryRequirements *args)
585 {
586     vn_replace_VkDevice_handle(&args->device);
587     vn_replace_VkBuffer_handle(&args->buffer);
588     /* skip args->pMemoryRequirements */
589 }
590 
vn_encode_vkGetBufferMemoryRequirements_reply(struct vn_cs_encoder * enc,const struct vn_command_vkGetBufferMemoryRequirements * args)591 static inline void vn_encode_vkGetBufferMemoryRequirements_reply(struct vn_cs_encoder *enc, const struct vn_command_vkGetBufferMemoryRequirements *args)
592 {
593     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkGetBufferMemoryRequirements_EXT});
594 
595     /* skip args->device */
596     /* skip args->buffer */
597     if (vn_encode_simple_pointer(enc, args->pMemoryRequirements))
598         vn_encode_VkMemoryRequirements(enc, args->pMemoryRequirements);
599 }
600 
vn_decode_vkBindBufferMemory_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkBindBufferMemory * args)601 static inline void vn_decode_vkBindBufferMemory_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkBindBufferMemory *args)
602 {
603     vn_decode_VkDevice_lookup(dec, &args->device);
604     vn_decode_VkBuffer_lookup(dec, &args->buffer);
605     vn_decode_VkDeviceMemory_lookup(dec, &args->memory);
606     vn_decode_VkDeviceSize(dec, &args->memoryOffset);
607 }
608 
vn_replace_vkBindBufferMemory_args_handle(struct vn_command_vkBindBufferMemory * args)609 static inline void vn_replace_vkBindBufferMemory_args_handle(struct vn_command_vkBindBufferMemory *args)
610 {
611     vn_replace_VkDevice_handle(&args->device);
612     vn_replace_VkBuffer_handle(&args->buffer);
613     vn_replace_VkDeviceMemory_handle(&args->memory);
614     /* skip args->memoryOffset */
615 }
616 
vn_encode_vkBindBufferMemory_reply(struct vn_cs_encoder * enc,const struct vn_command_vkBindBufferMemory * args)617 static inline void vn_encode_vkBindBufferMemory_reply(struct vn_cs_encoder *enc, const struct vn_command_vkBindBufferMemory *args)
618 {
619     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkBindBufferMemory_EXT});
620 
621     vn_encode_VkResult(enc, &args->ret);
622     /* skip args->device */
623     /* skip args->buffer */
624     /* skip args->memory */
625     /* skip args->memoryOffset */
626 }
627 
vn_decode_vkCreateBuffer_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkCreateBuffer * args)628 static inline void vn_decode_vkCreateBuffer_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkCreateBuffer *args)
629 {
630     vn_decode_VkDevice_lookup(dec, &args->device);
631     if (vn_decode_simple_pointer(dec)) {
632         args->pCreateInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pCreateInfo));
633         if (!args->pCreateInfo) return;
634         vn_decode_VkBufferCreateInfo_temp(dec, (VkBufferCreateInfo *)args->pCreateInfo);
635     } else {
636         args->pCreateInfo = NULL;
637         vn_cs_decoder_set_fatal(dec);
638     }
639     if (vn_decode_simple_pointer(dec)) {
640         vn_cs_decoder_set_fatal(dec);
641     } else {
642         args->pAllocator = NULL;
643     }
644     if (vn_decode_simple_pointer(dec)) {
645         args->pBuffer = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pBuffer));
646         if (!args->pBuffer) return;
647         vn_decode_VkBuffer(dec, args->pBuffer);
648     } else {
649         args->pBuffer = NULL;
650         vn_cs_decoder_set_fatal(dec);
651     }
652 }
653 
vn_replace_vkCreateBuffer_args_handle(struct vn_command_vkCreateBuffer * args)654 static inline void vn_replace_vkCreateBuffer_args_handle(struct vn_command_vkCreateBuffer *args)
655 {
656     vn_replace_VkDevice_handle(&args->device);
657     if (args->pCreateInfo)
658         vn_replace_VkBufferCreateInfo_handle((VkBufferCreateInfo *)args->pCreateInfo);
659     /* skip args->pAllocator */
660     /* skip args->pBuffer */
661 }
662 
vn_encode_vkCreateBuffer_reply(struct vn_cs_encoder * enc,const struct vn_command_vkCreateBuffer * args)663 static inline void vn_encode_vkCreateBuffer_reply(struct vn_cs_encoder *enc, const struct vn_command_vkCreateBuffer *args)
664 {
665     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkCreateBuffer_EXT});
666 
667     vn_encode_VkResult(enc, &args->ret);
668     /* skip args->device */
669     /* skip args->pCreateInfo */
670     /* skip args->pAllocator */
671     if (vn_encode_simple_pointer(enc, args->pBuffer))
672         vn_encode_VkBuffer(enc, args->pBuffer);
673 }
674 
vn_decode_vkDestroyBuffer_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkDestroyBuffer * args)675 static inline void vn_decode_vkDestroyBuffer_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkDestroyBuffer *args)
676 {
677     vn_decode_VkDevice_lookup(dec, &args->device);
678     vn_decode_VkBuffer_lookup(dec, &args->buffer);
679     if (vn_decode_simple_pointer(dec)) {
680         vn_cs_decoder_set_fatal(dec);
681     } else {
682         args->pAllocator = NULL;
683     }
684 }
685 
vn_replace_vkDestroyBuffer_args_handle(struct vn_command_vkDestroyBuffer * args)686 static inline void vn_replace_vkDestroyBuffer_args_handle(struct vn_command_vkDestroyBuffer *args)
687 {
688     vn_replace_VkDevice_handle(&args->device);
689     vn_replace_VkBuffer_handle(&args->buffer);
690     /* skip args->pAllocator */
691 }
692 
vn_encode_vkDestroyBuffer_reply(struct vn_cs_encoder * enc,const struct vn_command_vkDestroyBuffer * args)693 static inline void vn_encode_vkDestroyBuffer_reply(struct vn_cs_encoder *enc, const struct vn_command_vkDestroyBuffer *args)
694 {
695     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkDestroyBuffer_EXT});
696 
697     /* skip args->device */
698     /* skip args->buffer */
699     /* skip args->pAllocator */
700 }
701 
vn_decode_vkBindBufferMemory2_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkBindBufferMemory2 * args)702 static inline void vn_decode_vkBindBufferMemory2_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkBindBufferMemory2 *args)
703 {
704     vn_decode_VkDevice_lookup(dec, &args->device);
705     vn_decode_uint32_t(dec, &args->bindInfoCount);
706     if (vn_peek_array_size(dec)) {
707         const uint32_t iter_count = vn_decode_array_size(dec, args->bindInfoCount);
708         args->pBindInfos = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pBindInfos) * iter_count);
709         if (!args->pBindInfos) return;
710         for (uint32_t i = 0; i < iter_count; i++)
711             vn_decode_VkBindBufferMemoryInfo_temp(dec, &((VkBindBufferMemoryInfo *)args->pBindInfos)[i]);
712     } else {
713         vn_decode_array_size(dec, args->bindInfoCount);
714         args->pBindInfos = NULL;
715     }
716 }
717 
vn_replace_vkBindBufferMemory2_args_handle(struct vn_command_vkBindBufferMemory2 * args)718 static inline void vn_replace_vkBindBufferMemory2_args_handle(struct vn_command_vkBindBufferMemory2 *args)
719 {
720     vn_replace_VkDevice_handle(&args->device);
721     /* skip args->bindInfoCount */
722     if (args->pBindInfos) {
723        for (uint32_t i = 0; i < args->bindInfoCount; i++)
724             vn_replace_VkBindBufferMemoryInfo_handle(&((VkBindBufferMemoryInfo *)args->pBindInfos)[i]);
725     }
726 }
727 
vn_encode_vkBindBufferMemory2_reply(struct vn_cs_encoder * enc,const struct vn_command_vkBindBufferMemory2 * args)728 static inline void vn_encode_vkBindBufferMemory2_reply(struct vn_cs_encoder *enc, const struct vn_command_vkBindBufferMemory2 *args)
729 {
730     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkBindBufferMemory2_EXT});
731 
732     vn_encode_VkResult(enc, &args->ret);
733     /* skip args->device */
734     /* skip args->bindInfoCount */
735     /* skip args->pBindInfos */
736 }
737 
vn_decode_vkGetBufferMemoryRequirements2_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkGetBufferMemoryRequirements2 * args)738 static inline void vn_decode_vkGetBufferMemoryRequirements2_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkGetBufferMemoryRequirements2 *args)
739 {
740     vn_decode_VkDevice_lookup(dec, &args->device);
741     if (vn_decode_simple_pointer(dec)) {
742         args->pInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pInfo));
743         if (!args->pInfo) return;
744         vn_decode_VkBufferMemoryRequirementsInfo2_temp(dec, (VkBufferMemoryRequirementsInfo2 *)args->pInfo);
745     } else {
746         args->pInfo = NULL;
747         vn_cs_decoder_set_fatal(dec);
748     }
749     if (vn_decode_simple_pointer(dec)) {
750         args->pMemoryRequirements = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pMemoryRequirements));
751         if (!args->pMemoryRequirements) return;
752         vn_decode_VkMemoryRequirements2_partial_temp(dec, args->pMemoryRequirements);
753     } else {
754         args->pMemoryRequirements = NULL;
755         vn_cs_decoder_set_fatal(dec);
756     }
757 }
758 
vn_replace_vkGetBufferMemoryRequirements2_args_handle(struct vn_command_vkGetBufferMemoryRequirements2 * args)759 static inline void vn_replace_vkGetBufferMemoryRequirements2_args_handle(struct vn_command_vkGetBufferMemoryRequirements2 *args)
760 {
761     vn_replace_VkDevice_handle(&args->device);
762     if (args->pInfo)
763         vn_replace_VkBufferMemoryRequirementsInfo2_handle((VkBufferMemoryRequirementsInfo2 *)args->pInfo);
764     /* skip args->pMemoryRequirements */
765 }
766 
vn_encode_vkGetBufferMemoryRequirements2_reply(struct vn_cs_encoder * enc,const struct vn_command_vkGetBufferMemoryRequirements2 * args)767 static inline void vn_encode_vkGetBufferMemoryRequirements2_reply(struct vn_cs_encoder *enc, const struct vn_command_vkGetBufferMemoryRequirements2 *args)
768 {
769     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkGetBufferMemoryRequirements2_EXT});
770 
771     /* skip args->device */
772     /* skip args->pInfo */
773     if (vn_encode_simple_pointer(enc, args->pMemoryRequirements))
774         vn_encode_VkMemoryRequirements2(enc, args->pMemoryRequirements);
775 }
776 
vn_decode_vkGetDeviceBufferMemoryRequirements_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkGetDeviceBufferMemoryRequirements * args)777 static inline void vn_decode_vkGetDeviceBufferMemoryRequirements_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkGetDeviceBufferMemoryRequirements *args)
778 {
779     vn_decode_VkDevice_lookup(dec, &args->device);
780     if (vn_decode_simple_pointer(dec)) {
781         args->pInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pInfo));
782         if (!args->pInfo) return;
783         vn_decode_VkDeviceBufferMemoryRequirements_temp(dec, (VkDeviceBufferMemoryRequirements *)args->pInfo);
784     } else {
785         args->pInfo = NULL;
786         vn_cs_decoder_set_fatal(dec);
787     }
788     if (vn_decode_simple_pointer(dec)) {
789         args->pMemoryRequirements = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pMemoryRequirements));
790         if (!args->pMemoryRequirements) return;
791         vn_decode_VkMemoryRequirements2_partial_temp(dec, args->pMemoryRequirements);
792     } else {
793         args->pMemoryRequirements = NULL;
794         vn_cs_decoder_set_fatal(dec);
795     }
796 }
797 
vn_replace_vkGetDeviceBufferMemoryRequirements_args_handle(struct vn_command_vkGetDeviceBufferMemoryRequirements * args)798 static inline void vn_replace_vkGetDeviceBufferMemoryRequirements_args_handle(struct vn_command_vkGetDeviceBufferMemoryRequirements *args)
799 {
800     vn_replace_VkDevice_handle(&args->device);
801     if (args->pInfo)
802         vn_replace_VkDeviceBufferMemoryRequirements_handle((VkDeviceBufferMemoryRequirements *)args->pInfo);
803     /* skip args->pMemoryRequirements */
804 }
805 
vn_encode_vkGetDeviceBufferMemoryRequirements_reply(struct vn_cs_encoder * enc,const struct vn_command_vkGetDeviceBufferMemoryRequirements * args)806 static inline void vn_encode_vkGetDeviceBufferMemoryRequirements_reply(struct vn_cs_encoder *enc, const struct vn_command_vkGetDeviceBufferMemoryRequirements *args)
807 {
808     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkGetDeviceBufferMemoryRequirements_EXT});
809 
810     /* skip args->device */
811     /* skip args->pInfo */
812     if (vn_encode_simple_pointer(enc, args->pMemoryRequirements))
813         vn_encode_VkMemoryRequirements2(enc, args->pMemoryRequirements);
814 }
815 
vn_decode_vkGetBufferOpaqueCaptureAddress_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkGetBufferOpaqueCaptureAddress * args)816 static inline void vn_decode_vkGetBufferOpaqueCaptureAddress_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkGetBufferOpaqueCaptureAddress *args)
817 {
818     vn_decode_VkDevice_lookup(dec, &args->device);
819     if (vn_decode_simple_pointer(dec)) {
820         args->pInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pInfo));
821         if (!args->pInfo) return;
822         vn_decode_VkBufferDeviceAddressInfo_temp(dec, (VkBufferDeviceAddressInfo *)args->pInfo);
823     } else {
824         args->pInfo = NULL;
825         vn_cs_decoder_set_fatal(dec);
826     }
827 }
828 
vn_replace_vkGetBufferOpaqueCaptureAddress_args_handle(struct vn_command_vkGetBufferOpaqueCaptureAddress * args)829 static inline void vn_replace_vkGetBufferOpaqueCaptureAddress_args_handle(struct vn_command_vkGetBufferOpaqueCaptureAddress *args)
830 {
831     vn_replace_VkDevice_handle(&args->device);
832     if (args->pInfo)
833         vn_replace_VkBufferDeviceAddressInfo_handle((VkBufferDeviceAddressInfo *)args->pInfo);
834 }
835 
vn_encode_vkGetBufferOpaqueCaptureAddress_reply(struct vn_cs_encoder * enc,const struct vn_command_vkGetBufferOpaqueCaptureAddress * args)836 static inline void vn_encode_vkGetBufferOpaqueCaptureAddress_reply(struct vn_cs_encoder *enc, const struct vn_command_vkGetBufferOpaqueCaptureAddress *args)
837 {
838     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkGetBufferOpaqueCaptureAddress_EXT});
839 
840     vn_encode_uint64_t(enc, &args->ret);
841     /* skip args->device */
842     /* skip args->pInfo */
843 }
844 
vn_decode_vkGetBufferDeviceAddress_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkGetBufferDeviceAddress * args)845 static inline void vn_decode_vkGetBufferDeviceAddress_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkGetBufferDeviceAddress *args)
846 {
847     vn_decode_VkDevice_lookup(dec, &args->device);
848     if (vn_decode_simple_pointer(dec)) {
849         args->pInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pInfo));
850         if (!args->pInfo) return;
851         vn_decode_VkBufferDeviceAddressInfo_temp(dec, (VkBufferDeviceAddressInfo *)args->pInfo);
852     } else {
853         args->pInfo = NULL;
854         vn_cs_decoder_set_fatal(dec);
855     }
856 }
857 
vn_replace_vkGetBufferDeviceAddress_args_handle(struct vn_command_vkGetBufferDeviceAddress * args)858 static inline void vn_replace_vkGetBufferDeviceAddress_args_handle(struct vn_command_vkGetBufferDeviceAddress *args)
859 {
860     vn_replace_VkDevice_handle(&args->device);
861     if (args->pInfo)
862         vn_replace_VkBufferDeviceAddressInfo_handle((VkBufferDeviceAddressInfo *)args->pInfo);
863 }
864 
vn_encode_vkGetBufferDeviceAddress_reply(struct vn_cs_encoder * enc,const struct vn_command_vkGetBufferDeviceAddress * args)865 static inline void vn_encode_vkGetBufferDeviceAddress_reply(struct vn_cs_encoder *enc, const struct vn_command_vkGetBufferDeviceAddress *args)
866 {
867     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkGetBufferDeviceAddress_EXT});
868 
869     vn_encode_VkDeviceAddress(enc, &args->ret);
870     /* skip args->device */
871     /* skip args->pInfo */
872 }
873 
vn_dispatch_vkGetBufferMemoryRequirements(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)874 static inline void vn_dispatch_vkGetBufferMemoryRequirements(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
875 {
876     struct vn_command_vkGetBufferMemoryRequirements args;
877 
878     if (!ctx->dispatch_vkGetBufferMemoryRequirements) {
879         vn_cs_decoder_set_fatal(ctx->decoder);
880         return;
881     }
882 
883     vn_decode_vkGetBufferMemoryRequirements_args_temp(ctx->decoder, &args);
884     if (!args.device) {
885         vn_cs_decoder_set_fatal(ctx->decoder);
886         return;
887     }
888 
889     if (!vn_cs_decoder_get_fatal(ctx->decoder))
890         ctx->dispatch_vkGetBufferMemoryRequirements(ctx, &args);
891 
892 
893     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
894        vn_encode_vkGetBufferMemoryRequirements_reply(ctx->encoder, &args);
895 
896     vn_cs_decoder_reset_temp_pool(ctx->decoder);
897 }
898 
vn_dispatch_vkBindBufferMemory(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)899 static inline void vn_dispatch_vkBindBufferMemory(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
900 {
901     struct vn_command_vkBindBufferMemory args;
902 
903     if (!ctx->dispatch_vkBindBufferMemory) {
904         vn_cs_decoder_set_fatal(ctx->decoder);
905         return;
906     }
907 
908     vn_decode_vkBindBufferMemory_args_temp(ctx->decoder, &args);
909     if (!args.device) {
910         vn_cs_decoder_set_fatal(ctx->decoder);
911         return;
912     }
913 
914     if (!vn_cs_decoder_get_fatal(ctx->decoder))
915         ctx->dispatch_vkBindBufferMemory(ctx, &args);
916 
917 #ifdef DEBUG
918     if (!vn_cs_decoder_get_fatal(ctx->decoder) && vn_dispatch_should_log_result(args.ret))
919         vn_dispatch_debug_log(ctx, "vkBindBufferMemory returned %d", args.ret);
920 #endif
921 
922     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
923        vn_encode_vkBindBufferMemory_reply(ctx->encoder, &args);
924 
925     vn_cs_decoder_reset_temp_pool(ctx->decoder);
926 }
927 
vn_dispatch_vkCreateBuffer(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)928 static inline void vn_dispatch_vkCreateBuffer(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
929 {
930     struct vn_command_vkCreateBuffer args;
931 
932     if (!ctx->dispatch_vkCreateBuffer) {
933         vn_cs_decoder_set_fatal(ctx->decoder);
934         return;
935     }
936 
937     vn_decode_vkCreateBuffer_args_temp(ctx->decoder, &args);
938     if (!args.device) {
939         vn_cs_decoder_set_fatal(ctx->decoder);
940         return;
941     }
942 
943     if (!vn_cs_decoder_get_fatal(ctx->decoder))
944         ctx->dispatch_vkCreateBuffer(ctx, &args);
945 
946 #ifdef DEBUG
947     if (!vn_cs_decoder_get_fatal(ctx->decoder) && vn_dispatch_should_log_result(args.ret))
948         vn_dispatch_debug_log(ctx, "vkCreateBuffer returned %d", args.ret);
949 #endif
950 
951     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
952        vn_encode_vkCreateBuffer_reply(ctx->encoder, &args);
953 
954     vn_cs_decoder_reset_temp_pool(ctx->decoder);
955 }
956 
vn_dispatch_vkDestroyBuffer(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)957 static inline void vn_dispatch_vkDestroyBuffer(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
958 {
959     struct vn_command_vkDestroyBuffer args;
960 
961     if (!ctx->dispatch_vkDestroyBuffer) {
962         vn_cs_decoder_set_fatal(ctx->decoder);
963         return;
964     }
965 
966     vn_decode_vkDestroyBuffer_args_temp(ctx->decoder, &args);
967     if (!args.device) {
968         vn_cs_decoder_set_fatal(ctx->decoder);
969         return;
970     }
971 
972     if (!vn_cs_decoder_get_fatal(ctx->decoder))
973         ctx->dispatch_vkDestroyBuffer(ctx, &args);
974 
975 
976     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
977        vn_encode_vkDestroyBuffer_reply(ctx->encoder, &args);
978 
979     vn_cs_decoder_reset_temp_pool(ctx->decoder);
980 }
981 
vn_dispatch_vkBindBufferMemory2(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)982 static inline void vn_dispatch_vkBindBufferMemory2(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
983 {
984     struct vn_command_vkBindBufferMemory2 args;
985 
986     if (!ctx->dispatch_vkBindBufferMemory2) {
987         vn_cs_decoder_set_fatal(ctx->decoder);
988         return;
989     }
990 
991     vn_decode_vkBindBufferMemory2_args_temp(ctx->decoder, &args);
992     if (!args.device) {
993         vn_cs_decoder_set_fatal(ctx->decoder);
994         return;
995     }
996 
997     if (!vn_cs_decoder_get_fatal(ctx->decoder))
998         ctx->dispatch_vkBindBufferMemory2(ctx, &args);
999 
1000 #ifdef DEBUG
1001     if (!vn_cs_decoder_get_fatal(ctx->decoder) && vn_dispatch_should_log_result(args.ret))
1002         vn_dispatch_debug_log(ctx, "vkBindBufferMemory2 returned %d", args.ret);
1003 #endif
1004 
1005     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
1006        vn_encode_vkBindBufferMemory2_reply(ctx->encoder, &args);
1007 
1008     vn_cs_decoder_reset_temp_pool(ctx->decoder);
1009 }
1010 
vn_dispatch_vkGetBufferMemoryRequirements2(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)1011 static inline void vn_dispatch_vkGetBufferMemoryRequirements2(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
1012 {
1013     struct vn_command_vkGetBufferMemoryRequirements2 args;
1014 
1015     if (!ctx->dispatch_vkGetBufferMemoryRequirements2) {
1016         vn_cs_decoder_set_fatal(ctx->decoder);
1017         return;
1018     }
1019 
1020     vn_decode_vkGetBufferMemoryRequirements2_args_temp(ctx->decoder, &args);
1021     if (!args.device) {
1022         vn_cs_decoder_set_fatal(ctx->decoder);
1023         return;
1024     }
1025 
1026     if (!vn_cs_decoder_get_fatal(ctx->decoder))
1027         ctx->dispatch_vkGetBufferMemoryRequirements2(ctx, &args);
1028 
1029 
1030     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
1031        vn_encode_vkGetBufferMemoryRequirements2_reply(ctx->encoder, &args);
1032 
1033     vn_cs_decoder_reset_temp_pool(ctx->decoder);
1034 }
1035 
vn_dispatch_vkGetDeviceBufferMemoryRequirements(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)1036 static inline void vn_dispatch_vkGetDeviceBufferMemoryRequirements(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
1037 {
1038     struct vn_command_vkGetDeviceBufferMemoryRequirements args;
1039 
1040     if (!ctx->dispatch_vkGetDeviceBufferMemoryRequirements) {
1041         vn_cs_decoder_set_fatal(ctx->decoder);
1042         return;
1043     }
1044 
1045     vn_decode_vkGetDeviceBufferMemoryRequirements_args_temp(ctx->decoder, &args);
1046     if (!args.device) {
1047         vn_cs_decoder_set_fatal(ctx->decoder);
1048         return;
1049     }
1050 
1051     if (!vn_cs_decoder_get_fatal(ctx->decoder))
1052         ctx->dispatch_vkGetDeviceBufferMemoryRequirements(ctx, &args);
1053 
1054 
1055     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
1056        vn_encode_vkGetDeviceBufferMemoryRequirements_reply(ctx->encoder, &args);
1057 
1058     vn_cs_decoder_reset_temp_pool(ctx->decoder);
1059 }
1060 
vn_dispatch_vkGetBufferOpaqueCaptureAddress(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)1061 static inline void vn_dispatch_vkGetBufferOpaqueCaptureAddress(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
1062 {
1063     struct vn_command_vkGetBufferOpaqueCaptureAddress args;
1064 
1065     if (!ctx->dispatch_vkGetBufferOpaqueCaptureAddress) {
1066         vn_cs_decoder_set_fatal(ctx->decoder);
1067         return;
1068     }
1069 
1070     vn_decode_vkGetBufferOpaqueCaptureAddress_args_temp(ctx->decoder, &args);
1071     if (!args.device) {
1072         vn_cs_decoder_set_fatal(ctx->decoder);
1073         return;
1074     }
1075 
1076     if (!vn_cs_decoder_get_fatal(ctx->decoder))
1077         ctx->dispatch_vkGetBufferOpaqueCaptureAddress(ctx, &args);
1078 
1079 
1080     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
1081        vn_encode_vkGetBufferOpaqueCaptureAddress_reply(ctx->encoder, &args);
1082 
1083     vn_cs_decoder_reset_temp_pool(ctx->decoder);
1084 }
1085 
vn_dispatch_vkGetBufferDeviceAddress(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)1086 static inline void vn_dispatch_vkGetBufferDeviceAddress(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
1087 {
1088     struct vn_command_vkGetBufferDeviceAddress args;
1089 
1090     if (!ctx->dispatch_vkGetBufferDeviceAddress) {
1091         vn_cs_decoder_set_fatal(ctx->decoder);
1092         return;
1093     }
1094 
1095     vn_decode_vkGetBufferDeviceAddress_args_temp(ctx->decoder, &args);
1096     if (!args.device) {
1097         vn_cs_decoder_set_fatal(ctx->decoder);
1098         return;
1099     }
1100 
1101     if (!vn_cs_decoder_get_fatal(ctx->decoder))
1102         ctx->dispatch_vkGetBufferDeviceAddress(ctx, &args);
1103 
1104 
1105     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
1106        vn_encode_vkGetBufferDeviceAddress_reply(ctx->encoder, &args);
1107 
1108     vn_cs_decoder_reset_temp_pool(ctx->decoder);
1109 }
1110 
1111 #pragma GCC diagnostic pop
1112 
1113 #endif /* VN_PROTOCOL_RENDERER_BUFFER_H */
1114