• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_encode_VkBindBufferMemoryDeviceGroupInfo_pnext(struct vn_cs_encoder * enc,const void * val)243 vn_encode_VkBindBufferMemoryDeviceGroupInfo_pnext(struct vn_cs_encoder *enc, const void *val)
244 {
245     /* no known/supported struct */
246     vn_encode_simple_pointer(enc, NULL);
247 }
248 
249 static inline void
vn_encode_VkBindBufferMemoryDeviceGroupInfo_self(struct vn_cs_encoder * enc,const VkBindBufferMemoryDeviceGroupInfo * val)250 vn_encode_VkBindBufferMemoryDeviceGroupInfo_self(struct vn_cs_encoder *enc, const VkBindBufferMemoryDeviceGroupInfo *val)
251 {
252     /* skip val->{sType,pNext} */
253     vn_encode_uint32_t(enc, &val->deviceIndexCount);
254     if (val->pDeviceIndices) {
255         vn_encode_array_size(enc, val->deviceIndexCount);
256         vn_encode_uint32_t_array(enc, val->pDeviceIndices, val->deviceIndexCount);
257     } else {
258         vn_encode_array_size(enc, 0);
259     }
260 }
261 
262 static inline void
vn_encode_VkBindBufferMemoryDeviceGroupInfo(struct vn_cs_encoder * enc,const VkBindBufferMemoryDeviceGroupInfo * val)263 vn_encode_VkBindBufferMemoryDeviceGroupInfo(struct vn_cs_encoder *enc, const VkBindBufferMemoryDeviceGroupInfo *val)
264 {
265     assert(val->sType == VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO);
266     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO });
267     vn_encode_VkBindBufferMemoryDeviceGroupInfo_pnext(enc, val->pNext);
268     vn_encode_VkBindBufferMemoryDeviceGroupInfo_self(enc, val);
269 }
270 
271 static inline void *
vn_decode_VkBindBufferMemoryDeviceGroupInfo_pnext_temp(struct vn_cs_decoder * dec)272 vn_decode_VkBindBufferMemoryDeviceGroupInfo_pnext_temp(struct vn_cs_decoder *dec)
273 {
274     /* no known/supported struct */
275     if (vn_decode_simple_pointer(dec))
276         vn_cs_decoder_set_fatal(dec);
277     return NULL;
278 }
279 
280 static inline void
vn_decode_VkBindBufferMemoryDeviceGroupInfo_self_temp(struct vn_cs_decoder * dec,VkBindBufferMemoryDeviceGroupInfo * val)281 vn_decode_VkBindBufferMemoryDeviceGroupInfo_self_temp(struct vn_cs_decoder *dec, VkBindBufferMemoryDeviceGroupInfo *val)
282 {
283     /* skip val->{sType,pNext} */
284     vn_decode_uint32_t(dec, &val->deviceIndexCount);
285     if (vn_peek_array_size(dec)) {
286         const size_t array_size = vn_decode_array_size(dec, val->deviceIndexCount);
287         val->pDeviceIndices = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pDeviceIndices) * array_size);
288         if (!val->pDeviceIndices) return;
289         vn_decode_uint32_t_array(dec, (uint32_t *)val->pDeviceIndices, array_size);
290     } else {
291         vn_decode_array_size(dec, val->deviceIndexCount);
292         val->pDeviceIndices = NULL;
293     }
294 }
295 
296 static inline void
vn_decode_VkBindBufferMemoryDeviceGroupInfo_temp(struct vn_cs_decoder * dec,VkBindBufferMemoryDeviceGroupInfo * val)297 vn_decode_VkBindBufferMemoryDeviceGroupInfo_temp(struct vn_cs_decoder *dec, VkBindBufferMemoryDeviceGroupInfo *val)
298 {
299     VkStructureType stype;
300     vn_decode_VkStructureType(dec, &stype);
301     if (stype != VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO)
302         vn_cs_decoder_set_fatal(dec);
303 
304     val->sType = stype;
305     val->pNext = vn_decode_VkBindBufferMemoryDeviceGroupInfo_pnext_temp(dec);
306     vn_decode_VkBindBufferMemoryDeviceGroupInfo_self_temp(dec, val);
307 }
308 
309 static inline void
vn_replace_VkBindBufferMemoryDeviceGroupInfo_handle_self(VkBindBufferMemoryDeviceGroupInfo * val)310 vn_replace_VkBindBufferMemoryDeviceGroupInfo_handle_self(VkBindBufferMemoryDeviceGroupInfo *val)
311 {
312     /* skip val->sType */
313     /* skip val->pNext */
314     /* skip val->deviceIndexCount */
315     /* skip val->pDeviceIndices */
316 }
317 
318 static inline void
vn_replace_VkBindBufferMemoryDeviceGroupInfo_handle(VkBindBufferMemoryDeviceGroupInfo * val)319 vn_replace_VkBindBufferMemoryDeviceGroupInfo_handle(VkBindBufferMemoryDeviceGroupInfo *val)
320 {
321     struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
322 
323     do {
324         switch ((int32_t)pnext->sType) {
325         case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:
326             vn_replace_VkBindBufferMemoryDeviceGroupInfo_handle_self((VkBindBufferMemoryDeviceGroupInfo *)pnext);
327             break;
328         default:
329             /* ignore unknown/unsupported struct */
330             break;
331         }
332         pnext = pnext->pNext;
333     } while (pnext);
334 }
335 
336 /* struct VkBindBufferMemoryInfo chain */
337 
338 static inline void
vn_encode_VkBindBufferMemoryInfo_pnext(struct vn_cs_encoder * enc,const void * val)339 vn_encode_VkBindBufferMemoryInfo_pnext(struct vn_cs_encoder *enc, const void *val)
340 {
341     const VkBaseInStructure *pnext = val;
342 
343     while (pnext) {
344         switch ((int32_t)pnext->sType) {
345         case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:
346             vn_encode_simple_pointer(enc, pnext);
347             vn_encode_VkStructureType(enc, &pnext->sType);
348             vn_encode_VkBindBufferMemoryInfo_pnext(enc, pnext->pNext);
349             vn_encode_VkBindBufferMemoryDeviceGroupInfo_self(enc, (const VkBindBufferMemoryDeviceGroupInfo *)pnext);
350             return;
351         default:
352             /* ignore unknown/unsupported struct */
353             break;
354         }
355         pnext = pnext->pNext;
356     }
357 
358     vn_encode_simple_pointer(enc, NULL);
359 }
360 
361 static inline void
vn_encode_VkBindBufferMemoryInfo_self(struct vn_cs_encoder * enc,const VkBindBufferMemoryInfo * val)362 vn_encode_VkBindBufferMemoryInfo_self(struct vn_cs_encoder *enc, const VkBindBufferMemoryInfo *val)
363 {
364     /* skip val->{sType,pNext} */
365     vn_encode_VkBuffer(enc, &val->buffer);
366     vn_encode_VkDeviceMemory(enc, &val->memory);
367     vn_encode_VkDeviceSize(enc, &val->memoryOffset);
368 }
369 
370 static inline void
vn_encode_VkBindBufferMemoryInfo(struct vn_cs_encoder * enc,const VkBindBufferMemoryInfo * val)371 vn_encode_VkBindBufferMemoryInfo(struct vn_cs_encoder *enc, const VkBindBufferMemoryInfo *val)
372 {
373     assert(val->sType == VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO);
374     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO });
375     vn_encode_VkBindBufferMemoryInfo_pnext(enc, val->pNext);
376     vn_encode_VkBindBufferMemoryInfo_self(enc, val);
377 }
378 
379 static inline void *
vn_decode_VkBindBufferMemoryInfo_pnext_temp(struct vn_cs_decoder * dec)380 vn_decode_VkBindBufferMemoryInfo_pnext_temp(struct vn_cs_decoder *dec)
381 {
382     VkBaseOutStructure *pnext;
383     VkStructureType stype;
384 
385     if (!vn_decode_simple_pointer(dec))
386         return NULL;
387 
388     vn_decode_VkStructureType(dec, &stype);
389     switch ((int32_t)stype) {
390     case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:
391         pnext = vn_cs_decoder_alloc_temp(dec, sizeof(VkBindBufferMemoryDeviceGroupInfo));
392         if (pnext) {
393             pnext->sType = stype;
394             pnext->pNext = vn_decode_VkBindBufferMemoryInfo_pnext_temp(dec);
395             vn_decode_VkBindBufferMemoryDeviceGroupInfo_self_temp(dec, (VkBindBufferMemoryDeviceGroupInfo *)pnext);
396         }
397         break;
398     default:
399         /* unexpected struct */
400         pnext = NULL;
401         vn_cs_decoder_set_fatal(dec);
402         break;
403     }
404 
405     return pnext;
406 }
407 
408 static inline void
vn_decode_VkBindBufferMemoryInfo_self_temp(struct vn_cs_decoder * dec,VkBindBufferMemoryInfo * val)409 vn_decode_VkBindBufferMemoryInfo_self_temp(struct vn_cs_decoder *dec, VkBindBufferMemoryInfo *val)
410 {
411     /* skip val->{sType,pNext} */
412     vn_decode_VkBuffer_lookup(dec, &val->buffer);
413     vn_decode_VkDeviceMemory_lookup(dec, &val->memory);
414     vn_decode_VkDeviceSize(dec, &val->memoryOffset);
415 }
416 
417 static inline void
vn_decode_VkBindBufferMemoryInfo_temp(struct vn_cs_decoder * dec,VkBindBufferMemoryInfo * val)418 vn_decode_VkBindBufferMemoryInfo_temp(struct vn_cs_decoder *dec, VkBindBufferMemoryInfo *val)
419 {
420     VkStructureType stype;
421     vn_decode_VkStructureType(dec, &stype);
422     if (stype != VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO)
423         vn_cs_decoder_set_fatal(dec);
424 
425     val->sType = stype;
426     val->pNext = vn_decode_VkBindBufferMemoryInfo_pnext_temp(dec);
427     vn_decode_VkBindBufferMemoryInfo_self_temp(dec, val);
428 }
429 
430 static inline void
vn_replace_VkBindBufferMemoryInfo_handle_self(VkBindBufferMemoryInfo * val)431 vn_replace_VkBindBufferMemoryInfo_handle_self(VkBindBufferMemoryInfo *val)
432 {
433     /* skip val->sType */
434     /* skip val->pNext */
435     vn_replace_VkBuffer_handle(&val->buffer);
436     vn_replace_VkDeviceMemory_handle(&val->memory);
437     /* skip val->memoryOffset */
438 }
439 
440 static inline void
vn_replace_VkBindBufferMemoryInfo_handle(VkBindBufferMemoryInfo * val)441 vn_replace_VkBindBufferMemoryInfo_handle(VkBindBufferMemoryInfo *val)
442 {
443     struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
444 
445     do {
446         switch ((int32_t)pnext->sType) {
447         case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO:
448             vn_replace_VkBindBufferMemoryInfo_handle_self((VkBindBufferMemoryInfo *)pnext);
449             break;
450         case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:
451             vn_replace_VkBindBufferMemoryDeviceGroupInfo_handle_self((VkBindBufferMemoryDeviceGroupInfo *)pnext);
452             break;
453         default:
454             /* ignore unknown/unsupported struct */
455             break;
456         }
457         pnext = pnext->pNext;
458     } while (pnext);
459 }
460 
461 /* struct VkBufferMemoryRequirementsInfo2 chain */
462 
463 static inline void *
vn_decode_VkBufferMemoryRequirementsInfo2_pnext_temp(struct vn_cs_decoder * dec)464 vn_decode_VkBufferMemoryRequirementsInfo2_pnext_temp(struct vn_cs_decoder *dec)
465 {
466     /* no known/supported struct */
467     if (vn_decode_simple_pointer(dec))
468         vn_cs_decoder_set_fatal(dec);
469     return NULL;
470 }
471 
472 static inline void
vn_decode_VkBufferMemoryRequirementsInfo2_self_temp(struct vn_cs_decoder * dec,VkBufferMemoryRequirementsInfo2 * val)473 vn_decode_VkBufferMemoryRequirementsInfo2_self_temp(struct vn_cs_decoder *dec, VkBufferMemoryRequirementsInfo2 *val)
474 {
475     /* skip val->{sType,pNext} */
476     vn_decode_VkBuffer_lookup(dec, &val->buffer);
477 }
478 
479 static inline void
vn_decode_VkBufferMemoryRequirementsInfo2_temp(struct vn_cs_decoder * dec,VkBufferMemoryRequirementsInfo2 * val)480 vn_decode_VkBufferMemoryRequirementsInfo2_temp(struct vn_cs_decoder *dec, VkBufferMemoryRequirementsInfo2 *val)
481 {
482     VkStructureType stype;
483     vn_decode_VkStructureType(dec, &stype);
484     if (stype != VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2)
485         vn_cs_decoder_set_fatal(dec);
486 
487     val->sType = stype;
488     val->pNext = vn_decode_VkBufferMemoryRequirementsInfo2_pnext_temp(dec);
489     vn_decode_VkBufferMemoryRequirementsInfo2_self_temp(dec, val);
490 }
491 
492 static inline void
vn_replace_VkBufferMemoryRequirementsInfo2_handle_self(VkBufferMemoryRequirementsInfo2 * val)493 vn_replace_VkBufferMemoryRequirementsInfo2_handle_self(VkBufferMemoryRequirementsInfo2 *val)
494 {
495     /* skip val->sType */
496     /* skip val->pNext */
497     vn_replace_VkBuffer_handle(&val->buffer);
498 }
499 
500 static inline void
vn_replace_VkBufferMemoryRequirementsInfo2_handle(VkBufferMemoryRequirementsInfo2 * val)501 vn_replace_VkBufferMemoryRequirementsInfo2_handle(VkBufferMemoryRequirementsInfo2 *val)
502 {
503     struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
504 
505     do {
506         switch ((int32_t)pnext->sType) {
507         case VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2:
508             vn_replace_VkBufferMemoryRequirementsInfo2_handle_self((VkBufferMemoryRequirementsInfo2 *)pnext);
509             break;
510         default:
511             /* ignore unknown/unsupported struct */
512             break;
513         }
514         pnext = pnext->pNext;
515     } while (pnext);
516 }
517 
518 /* struct VkBufferDeviceAddressInfo chain */
519 
520 static inline void
vn_encode_VkBufferDeviceAddressInfo_pnext(struct vn_cs_encoder * enc,const void * val)521 vn_encode_VkBufferDeviceAddressInfo_pnext(struct vn_cs_encoder *enc, const void *val)
522 {
523     /* no known/supported struct */
524     vn_encode_simple_pointer(enc, NULL);
525 }
526 
527 static inline void
vn_encode_VkBufferDeviceAddressInfo_self(struct vn_cs_encoder * enc,const VkBufferDeviceAddressInfo * val)528 vn_encode_VkBufferDeviceAddressInfo_self(struct vn_cs_encoder *enc, const VkBufferDeviceAddressInfo *val)
529 {
530     /* skip val->{sType,pNext} */
531     vn_encode_VkBuffer(enc, &val->buffer);
532 }
533 
534 static inline void
vn_encode_VkBufferDeviceAddressInfo(struct vn_cs_encoder * enc,const VkBufferDeviceAddressInfo * val)535 vn_encode_VkBufferDeviceAddressInfo(struct vn_cs_encoder *enc, const VkBufferDeviceAddressInfo *val)
536 {
537     assert(val->sType == VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO);
538     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO });
539     vn_encode_VkBufferDeviceAddressInfo_pnext(enc, val->pNext);
540     vn_encode_VkBufferDeviceAddressInfo_self(enc, val);
541 }
542 
543 static inline void *
vn_decode_VkBufferDeviceAddressInfo_pnext_temp(struct vn_cs_decoder * dec)544 vn_decode_VkBufferDeviceAddressInfo_pnext_temp(struct vn_cs_decoder *dec)
545 {
546     /* no known/supported struct */
547     if (vn_decode_simple_pointer(dec))
548         vn_cs_decoder_set_fatal(dec);
549     return NULL;
550 }
551 
552 static inline void
vn_decode_VkBufferDeviceAddressInfo_self_temp(struct vn_cs_decoder * dec,VkBufferDeviceAddressInfo * val)553 vn_decode_VkBufferDeviceAddressInfo_self_temp(struct vn_cs_decoder *dec, VkBufferDeviceAddressInfo *val)
554 {
555     /* skip val->{sType,pNext} */
556     vn_decode_VkBuffer_lookup(dec, &val->buffer);
557 }
558 
559 static inline void
vn_decode_VkBufferDeviceAddressInfo_temp(struct vn_cs_decoder * dec,VkBufferDeviceAddressInfo * val)560 vn_decode_VkBufferDeviceAddressInfo_temp(struct vn_cs_decoder *dec, VkBufferDeviceAddressInfo *val)
561 {
562     VkStructureType stype;
563     vn_decode_VkStructureType(dec, &stype);
564     if (stype != VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO)
565         vn_cs_decoder_set_fatal(dec);
566 
567     val->sType = stype;
568     val->pNext = vn_decode_VkBufferDeviceAddressInfo_pnext_temp(dec);
569     vn_decode_VkBufferDeviceAddressInfo_self_temp(dec, val);
570 }
571 
572 static inline void
vn_replace_VkBufferDeviceAddressInfo_handle_self(VkBufferDeviceAddressInfo * val)573 vn_replace_VkBufferDeviceAddressInfo_handle_self(VkBufferDeviceAddressInfo *val)
574 {
575     /* skip val->sType */
576     /* skip val->pNext */
577     vn_replace_VkBuffer_handle(&val->buffer);
578 }
579 
580 static inline void
vn_replace_VkBufferDeviceAddressInfo_handle(VkBufferDeviceAddressInfo * val)581 vn_replace_VkBufferDeviceAddressInfo_handle(VkBufferDeviceAddressInfo *val)
582 {
583     struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
584 
585     do {
586         switch ((int32_t)pnext->sType) {
587         case VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO:
588             vn_replace_VkBufferDeviceAddressInfo_handle_self((VkBufferDeviceAddressInfo *)pnext);
589             break;
590         default:
591             /* ignore unknown/unsupported struct */
592             break;
593         }
594         pnext = pnext->pNext;
595     } while (pnext);
596 }
597 
vn_decode_vkGetBufferMemoryRequirements_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkGetBufferMemoryRequirements * args)598 static inline void vn_decode_vkGetBufferMemoryRequirements_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkGetBufferMemoryRequirements *args)
599 {
600     vn_decode_VkDevice_lookup(dec, &args->device);
601     vn_decode_VkBuffer_lookup(dec, &args->buffer);
602     if (vn_decode_simple_pointer(dec)) {
603         args->pMemoryRequirements = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pMemoryRequirements));
604         if (!args->pMemoryRequirements) return;
605         vn_decode_VkMemoryRequirements_partial_temp(dec, args->pMemoryRequirements);
606     } else {
607         args->pMemoryRequirements = NULL;
608         vn_cs_decoder_set_fatal(dec);
609     }
610 }
611 
vn_replace_vkGetBufferMemoryRequirements_args_handle(struct vn_command_vkGetBufferMemoryRequirements * args)612 static inline void vn_replace_vkGetBufferMemoryRequirements_args_handle(struct vn_command_vkGetBufferMemoryRequirements *args)
613 {
614     vn_replace_VkDevice_handle(&args->device);
615     vn_replace_VkBuffer_handle(&args->buffer);
616     /* skip args->pMemoryRequirements */
617 }
618 
vn_encode_vkGetBufferMemoryRequirements_reply(struct vn_cs_encoder * enc,const struct vn_command_vkGetBufferMemoryRequirements * args)619 static inline void vn_encode_vkGetBufferMemoryRequirements_reply(struct vn_cs_encoder *enc, const struct vn_command_vkGetBufferMemoryRequirements *args)
620 {
621     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkGetBufferMemoryRequirements_EXT});
622 
623     /* skip args->device */
624     /* skip args->buffer */
625     if (vn_encode_simple_pointer(enc, args->pMemoryRequirements))
626         vn_encode_VkMemoryRequirements(enc, args->pMemoryRequirements);
627 }
628 
vn_decode_vkBindBufferMemory_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkBindBufferMemory * args)629 static inline void vn_decode_vkBindBufferMemory_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkBindBufferMemory *args)
630 {
631     vn_decode_VkDevice_lookup(dec, &args->device);
632     vn_decode_VkBuffer_lookup(dec, &args->buffer);
633     vn_decode_VkDeviceMemory_lookup(dec, &args->memory);
634     vn_decode_VkDeviceSize(dec, &args->memoryOffset);
635 }
636 
vn_replace_vkBindBufferMemory_args_handle(struct vn_command_vkBindBufferMemory * args)637 static inline void vn_replace_vkBindBufferMemory_args_handle(struct vn_command_vkBindBufferMemory *args)
638 {
639     vn_replace_VkDevice_handle(&args->device);
640     vn_replace_VkBuffer_handle(&args->buffer);
641     vn_replace_VkDeviceMemory_handle(&args->memory);
642     /* skip args->memoryOffset */
643 }
644 
vn_encode_vkBindBufferMemory_reply(struct vn_cs_encoder * enc,const struct vn_command_vkBindBufferMemory * args)645 static inline void vn_encode_vkBindBufferMemory_reply(struct vn_cs_encoder *enc, const struct vn_command_vkBindBufferMemory *args)
646 {
647     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkBindBufferMemory_EXT});
648 
649     vn_encode_VkResult(enc, &args->ret);
650     /* skip args->device */
651     /* skip args->buffer */
652     /* skip args->memory */
653     /* skip args->memoryOffset */
654 }
655 
vn_decode_vkCreateBuffer_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkCreateBuffer * args)656 static inline void vn_decode_vkCreateBuffer_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkCreateBuffer *args)
657 {
658     vn_decode_VkDevice_lookup(dec, &args->device);
659     if (vn_decode_simple_pointer(dec)) {
660         args->pCreateInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pCreateInfo));
661         if (!args->pCreateInfo) return;
662         vn_decode_VkBufferCreateInfo_temp(dec, (VkBufferCreateInfo *)args->pCreateInfo);
663     } else {
664         args->pCreateInfo = NULL;
665         vn_cs_decoder_set_fatal(dec);
666     }
667     if (vn_decode_simple_pointer(dec)) {
668         vn_cs_decoder_set_fatal(dec);
669     } else {
670         args->pAllocator = NULL;
671     }
672     if (vn_decode_simple_pointer(dec)) {
673         args->pBuffer = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pBuffer));
674         if (!args->pBuffer) return;
675         vn_decode_VkBuffer(dec, args->pBuffer);
676     } else {
677         args->pBuffer = NULL;
678         vn_cs_decoder_set_fatal(dec);
679     }
680 }
681 
vn_replace_vkCreateBuffer_args_handle(struct vn_command_vkCreateBuffer * args)682 static inline void vn_replace_vkCreateBuffer_args_handle(struct vn_command_vkCreateBuffer *args)
683 {
684     vn_replace_VkDevice_handle(&args->device);
685     if (args->pCreateInfo)
686         vn_replace_VkBufferCreateInfo_handle((VkBufferCreateInfo *)args->pCreateInfo);
687     /* skip args->pAllocator */
688     /* skip args->pBuffer */
689 }
690 
vn_encode_vkCreateBuffer_reply(struct vn_cs_encoder * enc,const struct vn_command_vkCreateBuffer * args)691 static inline void vn_encode_vkCreateBuffer_reply(struct vn_cs_encoder *enc, const struct vn_command_vkCreateBuffer *args)
692 {
693     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkCreateBuffer_EXT});
694 
695     vn_encode_VkResult(enc, &args->ret);
696     /* skip args->device */
697     /* skip args->pCreateInfo */
698     /* skip args->pAllocator */
699     if (vn_encode_simple_pointer(enc, args->pBuffer))
700         vn_encode_VkBuffer(enc, args->pBuffer);
701 }
702 
vn_decode_vkDestroyBuffer_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkDestroyBuffer * args)703 static inline void vn_decode_vkDestroyBuffer_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkDestroyBuffer *args)
704 {
705     vn_decode_VkDevice_lookup(dec, &args->device);
706     vn_decode_VkBuffer_lookup(dec, &args->buffer);
707     if (vn_decode_simple_pointer(dec)) {
708         vn_cs_decoder_set_fatal(dec);
709     } else {
710         args->pAllocator = NULL;
711     }
712 }
713 
vn_replace_vkDestroyBuffer_args_handle(struct vn_command_vkDestroyBuffer * args)714 static inline void vn_replace_vkDestroyBuffer_args_handle(struct vn_command_vkDestroyBuffer *args)
715 {
716     vn_replace_VkDevice_handle(&args->device);
717     vn_replace_VkBuffer_handle(&args->buffer);
718     /* skip args->pAllocator */
719 }
720 
vn_encode_vkDestroyBuffer_reply(struct vn_cs_encoder * enc,const struct vn_command_vkDestroyBuffer * args)721 static inline void vn_encode_vkDestroyBuffer_reply(struct vn_cs_encoder *enc, const struct vn_command_vkDestroyBuffer *args)
722 {
723     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkDestroyBuffer_EXT});
724 
725     /* skip args->device */
726     /* skip args->buffer */
727     /* skip args->pAllocator */
728 }
729 
vn_decode_vkBindBufferMemory2_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkBindBufferMemory2 * args)730 static inline void vn_decode_vkBindBufferMemory2_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkBindBufferMemory2 *args)
731 {
732     vn_decode_VkDevice_lookup(dec, &args->device);
733     vn_decode_uint32_t(dec, &args->bindInfoCount);
734     if (vn_peek_array_size(dec)) {
735         const uint32_t iter_count = vn_decode_array_size(dec, args->bindInfoCount);
736         args->pBindInfos = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pBindInfos) * iter_count);
737         if (!args->pBindInfos) return;
738         for (uint32_t i = 0; i < iter_count; i++)
739             vn_decode_VkBindBufferMemoryInfo_temp(dec, &((VkBindBufferMemoryInfo *)args->pBindInfos)[i]);
740     } else {
741         vn_decode_array_size(dec, args->bindInfoCount);
742         args->pBindInfos = NULL;
743     }
744 }
745 
vn_replace_vkBindBufferMemory2_args_handle(struct vn_command_vkBindBufferMemory2 * args)746 static inline void vn_replace_vkBindBufferMemory2_args_handle(struct vn_command_vkBindBufferMemory2 *args)
747 {
748     vn_replace_VkDevice_handle(&args->device);
749     /* skip args->bindInfoCount */
750     if (args->pBindInfos) {
751        for (uint32_t i = 0; i < args->bindInfoCount; i++)
752             vn_replace_VkBindBufferMemoryInfo_handle(&((VkBindBufferMemoryInfo *)args->pBindInfos)[i]);
753     }
754 }
755 
vn_encode_vkBindBufferMemory2_reply(struct vn_cs_encoder * enc,const struct vn_command_vkBindBufferMemory2 * args)756 static inline void vn_encode_vkBindBufferMemory2_reply(struct vn_cs_encoder *enc, const struct vn_command_vkBindBufferMemory2 *args)
757 {
758     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkBindBufferMemory2_EXT});
759 
760     vn_encode_VkResult(enc, &args->ret);
761     /* skip args->device */
762     /* skip args->bindInfoCount */
763     /* skip args->pBindInfos */
764 }
765 
vn_decode_vkGetBufferMemoryRequirements2_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkGetBufferMemoryRequirements2 * args)766 static inline void vn_decode_vkGetBufferMemoryRequirements2_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkGetBufferMemoryRequirements2 *args)
767 {
768     vn_decode_VkDevice_lookup(dec, &args->device);
769     if (vn_decode_simple_pointer(dec)) {
770         args->pInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pInfo));
771         if (!args->pInfo) return;
772         vn_decode_VkBufferMemoryRequirementsInfo2_temp(dec, (VkBufferMemoryRequirementsInfo2 *)args->pInfo);
773     } else {
774         args->pInfo = NULL;
775         vn_cs_decoder_set_fatal(dec);
776     }
777     if (vn_decode_simple_pointer(dec)) {
778         args->pMemoryRequirements = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pMemoryRequirements));
779         if (!args->pMemoryRequirements) return;
780         vn_decode_VkMemoryRequirements2_partial_temp(dec, args->pMemoryRequirements);
781     } else {
782         args->pMemoryRequirements = NULL;
783         vn_cs_decoder_set_fatal(dec);
784     }
785 }
786 
vn_replace_vkGetBufferMemoryRequirements2_args_handle(struct vn_command_vkGetBufferMemoryRequirements2 * args)787 static inline void vn_replace_vkGetBufferMemoryRequirements2_args_handle(struct vn_command_vkGetBufferMemoryRequirements2 *args)
788 {
789     vn_replace_VkDevice_handle(&args->device);
790     if (args->pInfo)
791         vn_replace_VkBufferMemoryRequirementsInfo2_handle((VkBufferMemoryRequirementsInfo2 *)args->pInfo);
792     /* skip args->pMemoryRequirements */
793 }
794 
vn_encode_vkGetBufferMemoryRequirements2_reply(struct vn_cs_encoder * enc,const struct vn_command_vkGetBufferMemoryRequirements2 * args)795 static inline void vn_encode_vkGetBufferMemoryRequirements2_reply(struct vn_cs_encoder *enc, const struct vn_command_vkGetBufferMemoryRequirements2 *args)
796 {
797     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkGetBufferMemoryRequirements2_EXT});
798 
799     /* skip args->device */
800     /* skip args->pInfo */
801     if (vn_encode_simple_pointer(enc, args->pMemoryRequirements))
802         vn_encode_VkMemoryRequirements2(enc, args->pMemoryRequirements);
803 }
804 
vn_decode_vkGetBufferOpaqueCaptureAddress_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkGetBufferOpaqueCaptureAddress * args)805 static inline void vn_decode_vkGetBufferOpaqueCaptureAddress_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkGetBufferOpaqueCaptureAddress *args)
806 {
807     vn_decode_VkDevice_lookup(dec, &args->device);
808     if (vn_decode_simple_pointer(dec)) {
809         args->pInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pInfo));
810         if (!args->pInfo) return;
811         vn_decode_VkBufferDeviceAddressInfo_temp(dec, (VkBufferDeviceAddressInfo *)args->pInfo);
812     } else {
813         args->pInfo = NULL;
814         vn_cs_decoder_set_fatal(dec);
815     }
816 }
817 
vn_replace_vkGetBufferOpaqueCaptureAddress_args_handle(struct vn_command_vkGetBufferOpaqueCaptureAddress * args)818 static inline void vn_replace_vkGetBufferOpaqueCaptureAddress_args_handle(struct vn_command_vkGetBufferOpaqueCaptureAddress *args)
819 {
820     vn_replace_VkDevice_handle(&args->device);
821     if (args->pInfo)
822         vn_replace_VkBufferDeviceAddressInfo_handle((VkBufferDeviceAddressInfo *)args->pInfo);
823 }
824 
vn_encode_vkGetBufferOpaqueCaptureAddress_reply(struct vn_cs_encoder * enc,const struct vn_command_vkGetBufferOpaqueCaptureAddress * args)825 static inline void vn_encode_vkGetBufferOpaqueCaptureAddress_reply(struct vn_cs_encoder *enc, const struct vn_command_vkGetBufferOpaqueCaptureAddress *args)
826 {
827     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkGetBufferOpaqueCaptureAddress_EXT});
828 
829     vn_encode_uint64_t(enc, &args->ret);
830     /* skip args->device */
831     /* skip args->pInfo */
832 }
833 
vn_decode_vkGetBufferDeviceAddress_args_temp(struct vn_cs_decoder * dec,struct vn_command_vkGetBufferDeviceAddress * args)834 static inline void vn_decode_vkGetBufferDeviceAddress_args_temp(struct vn_cs_decoder *dec, struct vn_command_vkGetBufferDeviceAddress *args)
835 {
836     vn_decode_VkDevice_lookup(dec, &args->device);
837     if (vn_decode_simple_pointer(dec)) {
838         args->pInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*args->pInfo));
839         if (!args->pInfo) return;
840         vn_decode_VkBufferDeviceAddressInfo_temp(dec, (VkBufferDeviceAddressInfo *)args->pInfo);
841     } else {
842         args->pInfo = NULL;
843         vn_cs_decoder_set_fatal(dec);
844     }
845 }
846 
vn_replace_vkGetBufferDeviceAddress_args_handle(struct vn_command_vkGetBufferDeviceAddress * args)847 static inline void vn_replace_vkGetBufferDeviceAddress_args_handle(struct vn_command_vkGetBufferDeviceAddress *args)
848 {
849     vn_replace_VkDevice_handle(&args->device);
850     if (args->pInfo)
851         vn_replace_VkBufferDeviceAddressInfo_handle((VkBufferDeviceAddressInfo *)args->pInfo);
852 }
853 
vn_encode_vkGetBufferDeviceAddress_reply(struct vn_cs_encoder * enc,const struct vn_command_vkGetBufferDeviceAddress * args)854 static inline void vn_encode_vkGetBufferDeviceAddress_reply(struct vn_cs_encoder *enc, const struct vn_command_vkGetBufferDeviceAddress *args)
855 {
856     vn_encode_VkCommandTypeEXT(enc, &(VkCommandTypeEXT){VK_COMMAND_TYPE_vkGetBufferDeviceAddress_EXT});
857 
858     vn_encode_VkDeviceAddress(enc, &args->ret);
859     /* skip args->device */
860     /* skip args->pInfo */
861 }
862 
vn_dispatch_vkGetBufferMemoryRequirements(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)863 static inline void vn_dispatch_vkGetBufferMemoryRequirements(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
864 {
865     struct vn_command_vkGetBufferMemoryRequirements args;
866 
867     if (!ctx->dispatch_vkGetBufferMemoryRequirements) {
868         vn_cs_decoder_set_fatal(ctx->decoder);
869         return;
870     }
871 
872     vn_decode_vkGetBufferMemoryRequirements_args_temp(ctx->decoder, &args);
873     if (!args.device) {
874         vn_cs_decoder_set_fatal(ctx->decoder);
875         return;
876     }
877 
878     if (!vn_cs_decoder_get_fatal(ctx->decoder))
879         ctx->dispatch_vkGetBufferMemoryRequirements(ctx, &args);
880 
881 
882     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
883        vn_encode_vkGetBufferMemoryRequirements_reply(ctx->encoder, &args);
884 
885     vn_cs_decoder_reset_temp_pool(ctx->decoder);
886 }
887 
vn_dispatch_vkBindBufferMemory(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)888 static inline void vn_dispatch_vkBindBufferMemory(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
889 {
890     struct vn_command_vkBindBufferMemory args;
891 
892     if (!ctx->dispatch_vkBindBufferMemory) {
893         vn_cs_decoder_set_fatal(ctx->decoder);
894         return;
895     }
896 
897     vn_decode_vkBindBufferMemory_args_temp(ctx->decoder, &args);
898     if (!args.device) {
899         vn_cs_decoder_set_fatal(ctx->decoder);
900         return;
901     }
902 
903     if (!vn_cs_decoder_get_fatal(ctx->decoder))
904         ctx->dispatch_vkBindBufferMemory(ctx, &args);
905 
906 #ifdef DEBUG
907     if (!vn_cs_decoder_get_fatal(ctx->decoder) && vn_dispatch_should_log_result(args.ret))
908         vn_dispatch_debug_log(ctx, "vkBindBufferMemory returned %d", args.ret);
909 #endif
910 
911     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
912        vn_encode_vkBindBufferMemory_reply(ctx->encoder, &args);
913 
914     vn_cs_decoder_reset_temp_pool(ctx->decoder);
915 }
916 
vn_dispatch_vkCreateBuffer(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)917 static inline void vn_dispatch_vkCreateBuffer(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
918 {
919     struct vn_command_vkCreateBuffer args;
920 
921     if (!ctx->dispatch_vkCreateBuffer) {
922         vn_cs_decoder_set_fatal(ctx->decoder);
923         return;
924     }
925 
926     vn_decode_vkCreateBuffer_args_temp(ctx->decoder, &args);
927     if (!args.device) {
928         vn_cs_decoder_set_fatal(ctx->decoder);
929         return;
930     }
931 
932     if (!vn_cs_decoder_get_fatal(ctx->decoder))
933         ctx->dispatch_vkCreateBuffer(ctx, &args);
934 
935 #ifdef DEBUG
936     if (!vn_cs_decoder_get_fatal(ctx->decoder) && vn_dispatch_should_log_result(args.ret))
937         vn_dispatch_debug_log(ctx, "vkCreateBuffer returned %d", args.ret);
938 #endif
939 
940     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
941        vn_encode_vkCreateBuffer_reply(ctx->encoder, &args);
942 
943     vn_cs_decoder_reset_temp_pool(ctx->decoder);
944 }
945 
vn_dispatch_vkDestroyBuffer(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)946 static inline void vn_dispatch_vkDestroyBuffer(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
947 {
948     struct vn_command_vkDestroyBuffer args;
949 
950     if (!ctx->dispatch_vkDestroyBuffer) {
951         vn_cs_decoder_set_fatal(ctx->decoder);
952         return;
953     }
954 
955     vn_decode_vkDestroyBuffer_args_temp(ctx->decoder, &args);
956     if (!args.device) {
957         vn_cs_decoder_set_fatal(ctx->decoder);
958         return;
959     }
960 
961     if (!vn_cs_decoder_get_fatal(ctx->decoder))
962         ctx->dispatch_vkDestroyBuffer(ctx, &args);
963 
964 
965     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
966        vn_encode_vkDestroyBuffer_reply(ctx->encoder, &args);
967 
968     vn_cs_decoder_reset_temp_pool(ctx->decoder);
969 }
970 
vn_dispatch_vkBindBufferMemory2(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)971 static inline void vn_dispatch_vkBindBufferMemory2(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
972 {
973     struct vn_command_vkBindBufferMemory2 args;
974 
975     if (!ctx->dispatch_vkBindBufferMemory2) {
976         vn_cs_decoder_set_fatal(ctx->decoder);
977         return;
978     }
979 
980     vn_decode_vkBindBufferMemory2_args_temp(ctx->decoder, &args);
981     if (!args.device) {
982         vn_cs_decoder_set_fatal(ctx->decoder);
983         return;
984     }
985 
986     if (!vn_cs_decoder_get_fatal(ctx->decoder))
987         ctx->dispatch_vkBindBufferMemory2(ctx, &args);
988 
989 #ifdef DEBUG
990     if (!vn_cs_decoder_get_fatal(ctx->decoder) && vn_dispatch_should_log_result(args.ret))
991         vn_dispatch_debug_log(ctx, "vkBindBufferMemory2 returned %d", args.ret);
992 #endif
993 
994     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
995        vn_encode_vkBindBufferMemory2_reply(ctx->encoder, &args);
996 
997     vn_cs_decoder_reset_temp_pool(ctx->decoder);
998 }
999 
vn_dispatch_vkGetBufferMemoryRequirements2(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)1000 static inline void vn_dispatch_vkGetBufferMemoryRequirements2(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
1001 {
1002     struct vn_command_vkGetBufferMemoryRequirements2 args;
1003 
1004     if (!ctx->dispatch_vkGetBufferMemoryRequirements2) {
1005         vn_cs_decoder_set_fatal(ctx->decoder);
1006         return;
1007     }
1008 
1009     vn_decode_vkGetBufferMemoryRequirements2_args_temp(ctx->decoder, &args);
1010     if (!args.device) {
1011         vn_cs_decoder_set_fatal(ctx->decoder);
1012         return;
1013     }
1014 
1015     if (!vn_cs_decoder_get_fatal(ctx->decoder))
1016         ctx->dispatch_vkGetBufferMemoryRequirements2(ctx, &args);
1017 
1018 
1019     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
1020        vn_encode_vkGetBufferMemoryRequirements2_reply(ctx->encoder, &args);
1021 
1022     vn_cs_decoder_reset_temp_pool(ctx->decoder);
1023 }
1024 
vn_dispatch_vkGetBufferOpaqueCaptureAddress(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)1025 static inline void vn_dispatch_vkGetBufferOpaqueCaptureAddress(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
1026 {
1027     struct vn_command_vkGetBufferOpaqueCaptureAddress args;
1028 
1029     if (!ctx->dispatch_vkGetBufferOpaqueCaptureAddress) {
1030         vn_cs_decoder_set_fatal(ctx->decoder);
1031         return;
1032     }
1033 
1034     vn_decode_vkGetBufferOpaqueCaptureAddress_args_temp(ctx->decoder, &args);
1035     if (!args.device) {
1036         vn_cs_decoder_set_fatal(ctx->decoder);
1037         return;
1038     }
1039 
1040     if (!vn_cs_decoder_get_fatal(ctx->decoder))
1041         ctx->dispatch_vkGetBufferOpaqueCaptureAddress(ctx, &args);
1042 
1043 
1044     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
1045        vn_encode_vkGetBufferOpaqueCaptureAddress_reply(ctx->encoder, &args);
1046 
1047     vn_cs_decoder_reset_temp_pool(ctx->decoder);
1048 }
1049 
vn_dispatch_vkGetBufferDeviceAddress(struct vn_dispatch_context * ctx,VkCommandFlagsEXT flags)1050 static inline void vn_dispatch_vkGetBufferDeviceAddress(struct vn_dispatch_context *ctx, VkCommandFlagsEXT flags)
1051 {
1052     struct vn_command_vkGetBufferDeviceAddress args;
1053 
1054     if (!ctx->dispatch_vkGetBufferDeviceAddress) {
1055         vn_cs_decoder_set_fatal(ctx->decoder);
1056         return;
1057     }
1058 
1059     vn_decode_vkGetBufferDeviceAddress_args_temp(ctx->decoder, &args);
1060     if (!args.device) {
1061         vn_cs_decoder_set_fatal(ctx->decoder);
1062         return;
1063     }
1064 
1065     if (!vn_cs_decoder_get_fatal(ctx->decoder))
1066         ctx->dispatch_vkGetBufferDeviceAddress(ctx, &args);
1067 
1068 
1069     if (!vn_cs_decoder_get_fatal(ctx->decoder) && (flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT))
1070        vn_encode_vkGetBufferDeviceAddress_reply(ctx->encoder, &args);
1071 
1072     vn_cs_decoder_reset_temp_pool(ctx->decoder);
1073 }
1074 
1075 #pragma GCC diagnostic pop
1076 
1077 #endif /* VN_PROTOCOL_RENDERER_BUFFER_H */
1078