1/* This file is generated by venus-protocol.  See vn_protocol_driver.h. */
2
3/*
4 * Copyright 2020 Google LLC
5 * SPDX-License-Identifier: MIT
6 */
7
8#ifndef VN_PROTOCOL_DRIVER_BUFFER_H
9#define VN_PROTOCOL_DRIVER_BUFFER_H
10
11#include "vn_instance.h"
12#include "vn_protocol_driver_structs.h"
13
14/* struct VkExternalMemoryBufferCreateInfo chain */
15
16static inline size_t
17vn_sizeof_VkExternalMemoryBufferCreateInfo_pnext(const void *val)
18{
19    /* no known/supported struct */
20    return vn_sizeof_simple_pointer(NULL);
21}
22
23static inline size_t
24vn_sizeof_VkExternalMemoryBufferCreateInfo_self(const VkExternalMemoryBufferCreateInfo *val)
25{
26    size_t size = 0;
27    /* skip val->{sType,pNext} */
28    size += vn_sizeof_VkFlags(&val->handleTypes);
29    return size;
30}
31
32static inline size_t
33vn_sizeof_VkExternalMemoryBufferCreateInfo(const VkExternalMemoryBufferCreateInfo *val)
34{
35    size_t size = 0;
36
37    size += vn_sizeof_VkStructureType(&val->sType);
38    size += vn_sizeof_VkExternalMemoryBufferCreateInfo_pnext(val->pNext);
39    size += vn_sizeof_VkExternalMemoryBufferCreateInfo_self(val);
40
41    return size;
42}
43
44static inline void
45vn_encode_VkExternalMemoryBufferCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
46{
47    /* no known/supported struct */
48    vn_encode_simple_pointer(enc, NULL);
49}
50
51static inline void
52vn_encode_VkExternalMemoryBufferCreateInfo_self(struct vn_cs_encoder *enc, const VkExternalMemoryBufferCreateInfo *val)
53{
54    /* skip val->{sType,pNext} */
55    vn_encode_VkFlags(enc, &val->handleTypes);
56}
57
58static inline void
59vn_encode_VkExternalMemoryBufferCreateInfo(struct vn_cs_encoder *enc, const VkExternalMemoryBufferCreateInfo *val)
60{
61    assert(val->sType == VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO);
62    vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO });
63    vn_encode_VkExternalMemoryBufferCreateInfo_pnext(enc, val->pNext);
64    vn_encode_VkExternalMemoryBufferCreateInfo_self(enc, val);
65}
66
67/* struct VkBufferOpaqueCaptureAddressCreateInfo chain */
68
69static inline size_t
70vn_sizeof_VkBufferOpaqueCaptureAddressCreateInfo_pnext(const void *val)
71{
72    /* no known/supported struct */
73    return vn_sizeof_simple_pointer(NULL);
74}
75
76static inline size_t
77vn_sizeof_VkBufferOpaqueCaptureAddressCreateInfo_self(const VkBufferOpaqueCaptureAddressCreateInfo *val)
78{
79    size_t size = 0;
80    /* skip val->{sType,pNext} */
81    size += vn_sizeof_uint64_t(&val->opaqueCaptureAddress);
82    return size;
83}
84
85static inline size_t
86vn_sizeof_VkBufferOpaqueCaptureAddressCreateInfo(const VkBufferOpaqueCaptureAddressCreateInfo *val)
87{
88    size_t size = 0;
89
90    size += vn_sizeof_VkStructureType(&val->sType);
91    size += vn_sizeof_VkBufferOpaqueCaptureAddressCreateInfo_pnext(val->pNext);
92    size += vn_sizeof_VkBufferOpaqueCaptureAddressCreateInfo_self(val);
93
94    return size;
95}
96
97static inline void
98vn_encode_VkBufferOpaqueCaptureAddressCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
99{
100    /* no known/supported struct */
101    vn_encode_simple_pointer(enc, NULL);
102}
103
104static inline void
105vn_encode_VkBufferOpaqueCaptureAddressCreateInfo_self(struct vn_cs_encoder *enc, const VkBufferOpaqueCaptureAddressCreateInfo *val)
106{
107    /* skip val->{sType,pNext} */
108    vn_encode_uint64_t(enc, &val->opaqueCaptureAddress);
109}
110
111static inline void
112vn_encode_VkBufferOpaqueCaptureAddressCreateInfo(struct vn_cs_encoder *enc, const VkBufferOpaqueCaptureAddressCreateInfo *val)
113{
114    assert(val->sType == VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO);
115    vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO });
116    vn_encode_VkBufferOpaqueCaptureAddressCreateInfo_pnext(enc, val->pNext);
117    vn_encode_VkBufferOpaqueCaptureAddressCreateInfo_self(enc, val);
118}
119
120/* struct VkBufferCreateInfo chain */
121
122static inline size_t
123vn_sizeof_VkBufferCreateInfo_pnext(const void *val)
124{
125    const VkBaseInStructure *pnext = val;
126    size_t size = 0;
127
128    while (pnext) {
129        switch ((int32_t)pnext->sType) {
130        case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:
131            size += vn_sizeof_simple_pointer(pnext);
132            size += vn_sizeof_VkStructureType(&pnext->sType);
133            size += vn_sizeof_VkBufferCreateInfo_pnext(pnext->pNext);
134            size += vn_sizeof_VkExternalMemoryBufferCreateInfo_self((const VkExternalMemoryBufferCreateInfo *)pnext);
135            return size;
136        case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO:
137            size += vn_sizeof_simple_pointer(pnext);
138            size += vn_sizeof_VkStructureType(&pnext->sType);
139            size += vn_sizeof_VkBufferCreateInfo_pnext(pnext->pNext);
140            size += vn_sizeof_VkBufferOpaqueCaptureAddressCreateInfo_self((const VkBufferOpaqueCaptureAddressCreateInfo *)pnext);
141            return size;
142        default:
143            /* ignore unknown/unsupported struct */
144            break;
145        }
146        pnext = pnext->pNext;
147    }
148
149    return vn_sizeof_simple_pointer(NULL);
150}
151
152static inline size_t
153vn_sizeof_VkBufferCreateInfo_self(const VkBufferCreateInfo *val)
154{
155    size_t size = 0;
156    /* skip val->{sType,pNext} */
157    size += vn_sizeof_VkFlags(&val->flags);
158    size += vn_sizeof_VkDeviceSize(&val->size);
159    size += vn_sizeof_VkFlags(&val->usage);
160    size += vn_sizeof_VkSharingMode(&val->sharingMode);
161    size += vn_sizeof_uint32_t(&val->queueFamilyIndexCount);
162    if (val->pQueueFamilyIndices) {
163        size += vn_sizeof_array_size(val->queueFamilyIndexCount);
164        size += vn_sizeof_uint32_t_array(val->pQueueFamilyIndices, val->queueFamilyIndexCount);
165    } else {
166        size += vn_sizeof_array_size(0);
167    }
168    return size;
169}
170
171static inline size_t
172vn_sizeof_VkBufferCreateInfo(const VkBufferCreateInfo *val)
173{
174    size_t size = 0;
175
176    size += vn_sizeof_VkStructureType(&val->sType);
177    size += vn_sizeof_VkBufferCreateInfo_pnext(val->pNext);
178    size += vn_sizeof_VkBufferCreateInfo_self(val);
179
180    return size;
181}
182
183static inline void
184vn_encode_VkBufferCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
185{
186    const VkBaseInStructure *pnext = val;
187
188    while (pnext) {
189        switch ((int32_t)pnext->sType) {
190        case VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO:
191            vn_encode_simple_pointer(enc, pnext);
192            vn_encode_VkStructureType(enc, &pnext->sType);
193            vn_encode_VkBufferCreateInfo_pnext(enc, pnext->pNext);
194            vn_encode_VkExternalMemoryBufferCreateInfo_self(enc, (const VkExternalMemoryBufferCreateInfo *)pnext);
195            return;
196        case VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO:
197            vn_encode_simple_pointer(enc, pnext);
198            vn_encode_VkStructureType(enc, &pnext->sType);
199            vn_encode_VkBufferCreateInfo_pnext(enc, pnext->pNext);
200            vn_encode_VkBufferOpaqueCaptureAddressCreateInfo_self(enc, (const VkBufferOpaqueCaptureAddressCreateInfo *)pnext);
201            return;
202        default:
203            /* ignore unknown/unsupported struct */
204            break;
205        }
206        pnext = pnext->pNext;
207    }
208
209    vn_encode_simple_pointer(enc, NULL);
210}
211
212static inline void
213vn_encode_VkBufferCreateInfo_self(struct vn_cs_encoder *enc, const VkBufferCreateInfo *val)
214{
215    /* skip val->{sType,pNext} */
216    vn_encode_VkFlags(enc, &val->flags);
217    vn_encode_VkDeviceSize(enc, &val->size);
218    vn_encode_VkFlags(enc, &val->usage);
219    vn_encode_VkSharingMode(enc, &val->sharingMode);
220    vn_encode_uint32_t(enc, &val->queueFamilyIndexCount);
221    if (val->pQueueFamilyIndices) {
222        vn_encode_array_size(enc, val->queueFamilyIndexCount);
223        vn_encode_uint32_t_array(enc, val->pQueueFamilyIndices, val->queueFamilyIndexCount);
224    } else {
225        vn_encode_array_size(enc, 0);
226    }
227}
228
229static inline void
230vn_encode_VkBufferCreateInfo(struct vn_cs_encoder *enc, const VkBufferCreateInfo *val)
231{
232    assert(val->sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO);
233    vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO });
234    vn_encode_VkBufferCreateInfo_pnext(enc, val->pNext);
235    vn_encode_VkBufferCreateInfo_self(enc, val);
236}
237
238/* struct VkBindBufferMemoryDeviceGroupInfo chain */
239
240static inline size_t
241vn_sizeof_VkBindBufferMemoryDeviceGroupInfo_pnext(const void *val)
242{
243    /* no known/supported struct */
244    return vn_sizeof_simple_pointer(NULL);
245}
246
247static inline size_t
248vn_sizeof_VkBindBufferMemoryDeviceGroupInfo_self(const VkBindBufferMemoryDeviceGroupInfo *val)
249{
250    size_t size = 0;
251    /* skip val->{sType,pNext} */
252    size += vn_sizeof_uint32_t(&val->deviceIndexCount);
253    if (val->pDeviceIndices) {
254        size += vn_sizeof_array_size(val->deviceIndexCount);
255        size += vn_sizeof_uint32_t_array(val->pDeviceIndices, val->deviceIndexCount);
256    } else {
257        size += vn_sizeof_array_size(0);
258    }
259    return size;
260}
261
262static inline size_t
263vn_sizeof_VkBindBufferMemoryDeviceGroupInfo(const VkBindBufferMemoryDeviceGroupInfo *val)
264{
265    size_t size = 0;
266
267    size += vn_sizeof_VkStructureType(&val->sType);
268    size += vn_sizeof_VkBindBufferMemoryDeviceGroupInfo_pnext(val->pNext);
269    size += vn_sizeof_VkBindBufferMemoryDeviceGroupInfo_self(val);
270
271    return size;
272}
273
274static inline void
275vn_encode_VkBindBufferMemoryDeviceGroupInfo_pnext(struct vn_cs_encoder *enc, const void *val)
276{
277    /* no known/supported struct */
278    vn_encode_simple_pointer(enc, NULL);
279}
280
281static inline void
282vn_encode_VkBindBufferMemoryDeviceGroupInfo_self(struct vn_cs_encoder *enc, const VkBindBufferMemoryDeviceGroupInfo *val)
283{
284    /* skip val->{sType,pNext} */
285    vn_encode_uint32_t(enc, &val->deviceIndexCount);
286    if (val->pDeviceIndices) {
287        vn_encode_array_size(enc, val->deviceIndexCount);
288        vn_encode_uint32_t_array(enc, val->pDeviceIndices, val->deviceIndexCount);
289    } else {
290        vn_encode_array_size(enc, 0);
291    }
292}
293
294static inline void
295vn_encode_VkBindBufferMemoryDeviceGroupInfo(struct vn_cs_encoder *enc, const VkBindBufferMemoryDeviceGroupInfo *val)
296{
297    assert(val->sType == VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO);
298    vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO });
299    vn_encode_VkBindBufferMemoryDeviceGroupInfo_pnext(enc, val->pNext);
300    vn_encode_VkBindBufferMemoryDeviceGroupInfo_self(enc, val);
301}
302
303/* struct VkBindBufferMemoryInfo chain */
304
305static inline size_t
306vn_sizeof_VkBindBufferMemoryInfo_pnext(const void *val)
307{
308    const VkBaseInStructure *pnext = val;
309    size_t size = 0;
310
311    while (pnext) {
312        switch ((int32_t)pnext->sType) {
313        case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:
314            size += vn_sizeof_simple_pointer(pnext);
315            size += vn_sizeof_VkStructureType(&pnext->sType);
316            size += vn_sizeof_VkBindBufferMemoryInfo_pnext(pnext->pNext);
317            size += vn_sizeof_VkBindBufferMemoryDeviceGroupInfo_self((const VkBindBufferMemoryDeviceGroupInfo *)pnext);
318            return size;
319        default:
320            /* ignore unknown/unsupported struct */
321            break;
322        }
323        pnext = pnext->pNext;
324    }
325
326    return vn_sizeof_simple_pointer(NULL);
327}
328
329static inline size_t
330vn_sizeof_VkBindBufferMemoryInfo_self(const VkBindBufferMemoryInfo *val)
331{
332    size_t size = 0;
333    /* skip val->{sType,pNext} */
334    size += vn_sizeof_VkBuffer(&val->buffer);
335    size += vn_sizeof_VkDeviceMemory(&val->memory);
336    size += vn_sizeof_VkDeviceSize(&val->memoryOffset);
337    return size;
338}
339
340static inline size_t
341vn_sizeof_VkBindBufferMemoryInfo(const VkBindBufferMemoryInfo *val)
342{
343    size_t size = 0;
344
345    size += vn_sizeof_VkStructureType(&val->sType);
346    size += vn_sizeof_VkBindBufferMemoryInfo_pnext(val->pNext);
347    size += vn_sizeof_VkBindBufferMemoryInfo_self(val);
348
349    return size;
350}
351
352static inline void
353vn_encode_VkBindBufferMemoryInfo_pnext(struct vn_cs_encoder *enc, const void *val)
354{
355    const VkBaseInStructure *pnext = val;
356
357    while (pnext) {
358        switch ((int32_t)pnext->sType) {
359        case VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO:
360            vn_encode_simple_pointer(enc, pnext);
361            vn_encode_VkStructureType(enc, &pnext->sType);
362            vn_encode_VkBindBufferMemoryInfo_pnext(enc, pnext->pNext);
363            vn_encode_VkBindBufferMemoryDeviceGroupInfo_self(enc, (const VkBindBufferMemoryDeviceGroupInfo *)pnext);
364            return;
365        default:
366            /* ignore unknown/unsupported struct */
367            break;
368        }
369        pnext = pnext->pNext;
370    }
371
372    vn_encode_simple_pointer(enc, NULL);
373}
374
375static inline void
376vn_encode_VkBindBufferMemoryInfo_self(struct vn_cs_encoder *enc, const VkBindBufferMemoryInfo *val)
377{
378    /* skip val->{sType,pNext} */
379    vn_encode_VkBuffer(enc, &val->buffer);
380    vn_encode_VkDeviceMemory(enc, &val->memory);
381    vn_encode_VkDeviceSize(enc, &val->memoryOffset);
382}
383
384static inline void
385vn_encode_VkBindBufferMemoryInfo(struct vn_cs_encoder *enc, const VkBindBufferMemoryInfo *val)
386{
387    assert(val->sType == VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO);
388    vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO });
389    vn_encode_VkBindBufferMemoryInfo_pnext(enc, val->pNext);
390    vn_encode_VkBindBufferMemoryInfo_self(enc, val);
391}
392
393/* struct VkBufferMemoryRequirementsInfo2 chain */
394
395static inline size_t
396vn_sizeof_VkBufferMemoryRequirementsInfo2_pnext(const void *val)
397{
398    /* no known/supported struct */
399    return vn_sizeof_simple_pointer(NULL);
400}
401
402static inline size_t
403vn_sizeof_VkBufferMemoryRequirementsInfo2_self(const VkBufferMemoryRequirementsInfo2 *val)
404{
405    size_t size = 0;
406    /* skip val->{sType,pNext} */
407    size += vn_sizeof_VkBuffer(&val->buffer);
408    return size;
409}
410
411static inline size_t
412vn_sizeof_VkBufferMemoryRequirementsInfo2(const VkBufferMemoryRequirementsInfo2 *val)
413{
414    size_t size = 0;
415
416    size += vn_sizeof_VkStructureType(&val->sType);
417    size += vn_sizeof_VkBufferMemoryRequirementsInfo2_pnext(val->pNext);
418    size += vn_sizeof_VkBufferMemoryRequirementsInfo2_self(val);
419
420    return size;
421}
422
423static inline void
424vn_encode_VkBufferMemoryRequirementsInfo2_pnext(struct vn_cs_encoder *enc, const void *val)
425{
426    /* no known/supported struct */
427    vn_encode_simple_pointer(enc, NULL);
428}
429
430static inline void
431vn_encode_VkBufferMemoryRequirementsInfo2_self(struct vn_cs_encoder *enc, const VkBufferMemoryRequirementsInfo2 *val)
432{
433    /* skip val->{sType,pNext} */
434    vn_encode_VkBuffer(enc, &val->buffer);
435}
436
437static inline void
438vn_encode_VkBufferMemoryRequirementsInfo2(struct vn_cs_encoder *enc, const VkBufferMemoryRequirementsInfo2 *val)
439{
440    assert(val->sType == VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2);
441    vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 });
442    vn_encode_VkBufferMemoryRequirementsInfo2_pnext(enc, val->pNext);
443    vn_encode_VkBufferMemoryRequirementsInfo2_self(enc, val);
444}
445
446/* struct VkDeviceBufferMemoryRequirements chain */
447
448static inline size_t
449vn_sizeof_VkDeviceBufferMemoryRequirements_pnext(const void *val)
450{
451    /* no known/supported struct */
452    return vn_sizeof_simple_pointer(NULL);
453}
454
455static inline size_t
456vn_sizeof_VkDeviceBufferMemoryRequirements_self(const VkDeviceBufferMemoryRequirements *val)
457{
458    size_t size = 0;
459    /* skip val->{sType,pNext} */
460    size += vn_sizeof_simple_pointer(val->pCreateInfo);
461    if (val->pCreateInfo)
462        size += vn_sizeof_VkBufferCreateInfo(val->pCreateInfo);
463    return size;
464}
465
466static inline size_t
467vn_sizeof_VkDeviceBufferMemoryRequirements(const VkDeviceBufferMemoryRequirements *val)
468{
469    size_t size = 0;
470
471    size += vn_sizeof_VkStructureType(&val->sType);
472    size += vn_sizeof_VkDeviceBufferMemoryRequirements_pnext(val->pNext);
473    size += vn_sizeof_VkDeviceBufferMemoryRequirements_self(val);
474
475    return size;
476}
477
478static inline void
479vn_encode_VkDeviceBufferMemoryRequirements_pnext(struct vn_cs_encoder *enc, const void *val)
480{
481    /* no known/supported struct */
482    vn_encode_simple_pointer(enc, NULL);
483}
484
485static inline void
486vn_encode_VkDeviceBufferMemoryRequirements_self(struct vn_cs_encoder *enc, const VkDeviceBufferMemoryRequirements *val)
487{
488    /* skip val->{sType,pNext} */
489    if (vn_encode_simple_pointer(enc, val->pCreateInfo))
490        vn_encode_VkBufferCreateInfo(enc, val->pCreateInfo);
491}
492
493static inline void
494vn_encode_VkDeviceBufferMemoryRequirements(struct vn_cs_encoder *enc, const VkDeviceBufferMemoryRequirements *val)
495{
496    assert(val->sType == VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS);
497    vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS });
498    vn_encode_VkDeviceBufferMemoryRequirements_pnext(enc, val->pNext);
499    vn_encode_VkDeviceBufferMemoryRequirements_self(enc, val);
500}
501
502/* struct VkBufferDeviceAddressInfo chain */
503
504static inline size_t
505vn_sizeof_VkBufferDeviceAddressInfo_pnext(const void *val)
506{
507    /* no known/supported struct */
508    return vn_sizeof_simple_pointer(NULL);
509}
510
511static inline size_t
512vn_sizeof_VkBufferDeviceAddressInfo_self(const VkBufferDeviceAddressInfo *val)
513{
514    size_t size = 0;
515    /* skip val->{sType,pNext} */
516    size += vn_sizeof_VkBuffer(&val->buffer);
517    return size;
518}
519
520static inline size_t
521vn_sizeof_VkBufferDeviceAddressInfo(const VkBufferDeviceAddressInfo *val)
522{
523    size_t size = 0;
524
525    size += vn_sizeof_VkStructureType(&val->sType);
526    size += vn_sizeof_VkBufferDeviceAddressInfo_pnext(val->pNext);
527    size += vn_sizeof_VkBufferDeviceAddressInfo_self(val);
528
529    return size;
530}
531
532static inline void
533vn_encode_VkBufferDeviceAddressInfo_pnext(struct vn_cs_encoder *enc, const void *val)
534{
535    /* no known/supported struct */
536    vn_encode_simple_pointer(enc, NULL);
537}
538
539static inline void
540vn_encode_VkBufferDeviceAddressInfo_self(struct vn_cs_encoder *enc, const VkBufferDeviceAddressInfo *val)
541{
542    /* skip val->{sType,pNext} */
543    vn_encode_VkBuffer(enc, &val->buffer);
544}
545
546static inline void
547vn_encode_VkBufferDeviceAddressInfo(struct vn_cs_encoder *enc, const VkBufferDeviceAddressInfo *val)
548{
549    assert(val->sType == VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO);
550    vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO });
551    vn_encode_VkBufferDeviceAddressInfo_pnext(enc, val->pNext);
552    vn_encode_VkBufferDeviceAddressInfo_self(enc, val);
553}
554
555static inline size_t vn_sizeof_vkGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements)
556{
557    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferMemoryRequirements_EXT;
558    const VkFlags cmd_flags = 0;
559    size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
560
561    cmd_size += vn_sizeof_VkDevice(&device);
562    cmd_size += vn_sizeof_VkBuffer(&buffer);
563    cmd_size += vn_sizeof_simple_pointer(pMemoryRequirements);
564    if (pMemoryRequirements)
565        cmd_size += vn_sizeof_VkMemoryRequirements_partial(pMemoryRequirements);
566
567    return cmd_size;
568}
569
570static inline void vn_encode_vkGetBufferMemoryRequirements(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements)
571{
572    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferMemoryRequirements_EXT;
573
574    vn_encode_VkCommandTypeEXT(enc, &cmd_type);
575    vn_encode_VkFlags(enc, &cmd_flags);
576
577    vn_encode_VkDevice(enc, &device);
578    vn_encode_VkBuffer(enc, &buffer);
579    if (vn_encode_simple_pointer(enc, pMemoryRequirements))
580        vn_encode_VkMemoryRequirements_partial(enc, pMemoryRequirements);
581}
582
583static inline size_t vn_sizeof_vkGetBufferMemoryRequirements_reply(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements)
584{
585    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferMemoryRequirements_EXT;
586    size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
587
588    /* skip device */
589    /* skip buffer */
590    cmd_size += vn_sizeof_simple_pointer(pMemoryRequirements);
591    if (pMemoryRequirements)
592        cmd_size += vn_sizeof_VkMemoryRequirements(pMemoryRequirements);
593
594    return cmd_size;
595}
596
597static inline void vn_decode_vkGetBufferMemoryRequirements_reply(struct vn_cs_decoder *dec, VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements)
598{
599    VkCommandTypeEXT command_type;
600    vn_decode_VkCommandTypeEXT(dec, &command_type);
601    assert(command_type == VK_COMMAND_TYPE_vkGetBufferMemoryRequirements_EXT);
602
603    /* skip device */
604    /* skip buffer */
605    if (vn_decode_simple_pointer(dec)) {
606        vn_decode_VkMemoryRequirements(dec, pMemoryRequirements);
607    } else {
608        pMemoryRequirements = NULL;
609    }
610}
611
612static inline size_t vn_sizeof_vkBindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset)
613{
614    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkBindBufferMemory_EXT;
615    const VkFlags cmd_flags = 0;
616    size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
617
618    cmd_size += vn_sizeof_VkDevice(&device);
619    cmd_size += vn_sizeof_VkBuffer(&buffer);
620    cmd_size += vn_sizeof_VkDeviceMemory(&memory);
621    cmd_size += vn_sizeof_VkDeviceSize(&memoryOffset);
622
623    return cmd_size;
624}
625
626static inline void vn_encode_vkBindBufferMemory(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset)
627{
628    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkBindBufferMemory_EXT;
629
630    vn_encode_VkCommandTypeEXT(enc, &cmd_type);
631    vn_encode_VkFlags(enc, &cmd_flags);
632
633    vn_encode_VkDevice(enc, &device);
634    vn_encode_VkBuffer(enc, &buffer);
635    vn_encode_VkDeviceMemory(enc, &memory);
636    vn_encode_VkDeviceSize(enc, &memoryOffset);
637}
638
639static inline size_t vn_sizeof_vkBindBufferMemory_reply(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset)
640{
641    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkBindBufferMemory_EXT;
642    size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
643
644    VkResult ret;
645    cmd_size += vn_sizeof_VkResult(&ret);
646    /* skip device */
647    /* skip buffer */
648    /* skip memory */
649    /* skip memoryOffset */
650
651    return cmd_size;
652}
653
654static inline VkResult vn_decode_vkBindBufferMemory_reply(struct vn_cs_decoder *dec, VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset)
655{
656    VkCommandTypeEXT command_type;
657    vn_decode_VkCommandTypeEXT(dec, &command_type);
658    assert(command_type == VK_COMMAND_TYPE_vkBindBufferMemory_EXT);
659
660    VkResult ret;
661    vn_decode_VkResult(dec, &ret);
662    /* skip device */
663    /* skip buffer */
664    /* skip memory */
665    /* skip memoryOffset */
666
667    return ret;
668}
669
670static inline size_t vn_sizeof_vkCreateBuffer(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer)
671{
672    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateBuffer_EXT;
673    const VkFlags cmd_flags = 0;
674    size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
675
676    cmd_size += vn_sizeof_VkDevice(&device);
677    cmd_size += vn_sizeof_simple_pointer(pCreateInfo);
678    if (pCreateInfo)
679        cmd_size += vn_sizeof_VkBufferCreateInfo(pCreateInfo);
680    cmd_size += vn_sizeof_simple_pointer(pAllocator);
681    if (pAllocator)
682        assert(false);
683    cmd_size += vn_sizeof_simple_pointer(pBuffer);
684    if (pBuffer)
685        cmd_size += vn_sizeof_VkBuffer(pBuffer);
686
687    return cmd_size;
688}
689
690static inline void vn_encode_vkCreateBuffer(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer)
691{
692    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateBuffer_EXT;
693
694    vn_encode_VkCommandTypeEXT(enc, &cmd_type);
695    vn_encode_VkFlags(enc, &cmd_flags);
696
697    vn_encode_VkDevice(enc, &device);
698    if (vn_encode_simple_pointer(enc, pCreateInfo))
699        vn_encode_VkBufferCreateInfo(enc, pCreateInfo);
700    if (vn_encode_simple_pointer(enc, pAllocator))
701        assert(false);
702    if (vn_encode_simple_pointer(enc, pBuffer))
703        vn_encode_VkBuffer(enc, pBuffer);
704}
705
706static inline size_t vn_sizeof_vkCreateBuffer_reply(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer)
707{
708    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateBuffer_EXT;
709    size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
710
711    VkResult ret;
712    cmd_size += vn_sizeof_VkResult(&ret);
713    /* skip device */
714    /* skip pCreateInfo */
715    /* skip pAllocator */
716    cmd_size += vn_sizeof_simple_pointer(pBuffer);
717    if (pBuffer)
718        cmd_size += vn_sizeof_VkBuffer(pBuffer);
719
720    return cmd_size;
721}
722
723static inline VkResult vn_decode_vkCreateBuffer_reply(struct vn_cs_decoder *dec, VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer)
724{
725    VkCommandTypeEXT command_type;
726    vn_decode_VkCommandTypeEXT(dec, &command_type);
727    assert(command_type == VK_COMMAND_TYPE_vkCreateBuffer_EXT);
728
729    VkResult ret;
730    vn_decode_VkResult(dec, &ret);
731    /* skip device */
732    /* skip pCreateInfo */
733    /* skip pAllocator */
734    if (vn_decode_simple_pointer(dec)) {
735        vn_decode_VkBuffer(dec, pBuffer);
736    } else {
737        pBuffer = NULL;
738    }
739
740    return ret;
741}
742
743static inline size_t vn_sizeof_vkDestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator)
744{
745    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyBuffer_EXT;
746    const VkFlags cmd_flags = 0;
747    size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
748
749    cmd_size += vn_sizeof_VkDevice(&device);
750    cmd_size += vn_sizeof_VkBuffer(&buffer);
751    cmd_size += vn_sizeof_simple_pointer(pAllocator);
752    if (pAllocator)
753        assert(false);
754
755    return cmd_size;
756}
757
758static inline void vn_encode_vkDestroyBuffer(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator)
759{
760    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyBuffer_EXT;
761
762    vn_encode_VkCommandTypeEXT(enc, &cmd_type);
763    vn_encode_VkFlags(enc, &cmd_flags);
764
765    vn_encode_VkDevice(enc, &device);
766    vn_encode_VkBuffer(enc, &buffer);
767    if (vn_encode_simple_pointer(enc, pAllocator))
768        assert(false);
769}
770
771static inline size_t vn_sizeof_vkDestroyBuffer_reply(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator)
772{
773    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyBuffer_EXT;
774    size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
775
776    /* skip device */
777    /* skip buffer */
778    /* skip pAllocator */
779
780    return cmd_size;
781}
782
783static inline void vn_decode_vkDestroyBuffer_reply(struct vn_cs_decoder *dec, VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator)
784{
785    VkCommandTypeEXT command_type;
786    vn_decode_VkCommandTypeEXT(dec, &command_type);
787    assert(command_type == VK_COMMAND_TYPE_vkDestroyBuffer_EXT);
788
789    /* skip device */
790    /* skip buffer */
791    /* skip pAllocator */
792}
793
794static inline size_t vn_sizeof_vkBindBufferMemory2(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos)
795{
796    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkBindBufferMemory2_EXT;
797    const VkFlags cmd_flags = 0;
798    size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
799
800    cmd_size += vn_sizeof_VkDevice(&device);
801    cmd_size += vn_sizeof_uint32_t(&bindInfoCount);
802    if (pBindInfos) {
803        cmd_size += vn_sizeof_array_size(bindInfoCount);
804        for (uint32_t i = 0; i < bindInfoCount; i++)
805            cmd_size += vn_sizeof_VkBindBufferMemoryInfo(&pBindInfos[i]);
806    } else {
807        cmd_size += vn_sizeof_array_size(0);
808    }
809
810    return cmd_size;
811}
812
813static inline void vn_encode_vkBindBufferMemory2(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos)
814{
815    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkBindBufferMemory2_EXT;
816
817    vn_encode_VkCommandTypeEXT(enc, &cmd_type);
818    vn_encode_VkFlags(enc, &cmd_flags);
819
820    vn_encode_VkDevice(enc, &device);
821    vn_encode_uint32_t(enc, &bindInfoCount);
822    if (pBindInfos) {
823        vn_encode_array_size(enc, bindInfoCount);
824        for (uint32_t i = 0; i < bindInfoCount; i++)
825            vn_encode_VkBindBufferMemoryInfo(enc, &pBindInfos[i]);
826    } else {
827        vn_encode_array_size(enc, 0);
828    }
829}
830
831static inline size_t vn_sizeof_vkBindBufferMemory2_reply(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos)
832{
833    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkBindBufferMemory2_EXT;
834    size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
835
836    VkResult ret;
837    cmd_size += vn_sizeof_VkResult(&ret);
838    /* skip device */
839    /* skip bindInfoCount */
840    /* skip pBindInfos */
841
842    return cmd_size;
843}
844
845static inline VkResult vn_decode_vkBindBufferMemory2_reply(struct vn_cs_decoder *dec, VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos)
846{
847    VkCommandTypeEXT command_type;
848    vn_decode_VkCommandTypeEXT(dec, &command_type);
849    assert(command_type == VK_COMMAND_TYPE_vkBindBufferMemory2_EXT);
850
851    VkResult ret;
852    vn_decode_VkResult(dec, &ret);
853    /* skip device */
854    /* skip bindInfoCount */
855    /* skip pBindInfos */
856
857    return ret;
858}
859
860static inline size_t vn_sizeof_vkGetBufferMemoryRequirements2(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements)
861{
862    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferMemoryRequirements2_EXT;
863    const VkFlags cmd_flags = 0;
864    size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
865
866    cmd_size += vn_sizeof_VkDevice(&device);
867    cmd_size += vn_sizeof_simple_pointer(pInfo);
868    if (pInfo)
869        cmd_size += vn_sizeof_VkBufferMemoryRequirementsInfo2(pInfo);
870    cmd_size += vn_sizeof_simple_pointer(pMemoryRequirements);
871    if (pMemoryRequirements)
872        cmd_size += vn_sizeof_VkMemoryRequirements2_partial(pMemoryRequirements);
873
874    return cmd_size;
875}
876
877static inline void vn_encode_vkGetBufferMemoryRequirements2(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements)
878{
879    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferMemoryRequirements2_EXT;
880
881    vn_encode_VkCommandTypeEXT(enc, &cmd_type);
882    vn_encode_VkFlags(enc, &cmd_flags);
883
884    vn_encode_VkDevice(enc, &device);
885    if (vn_encode_simple_pointer(enc, pInfo))
886        vn_encode_VkBufferMemoryRequirementsInfo2(enc, pInfo);
887    if (vn_encode_simple_pointer(enc, pMemoryRequirements))
888        vn_encode_VkMemoryRequirements2_partial(enc, pMemoryRequirements);
889}
890
891static inline size_t vn_sizeof_vkGetBufferMemoryRequirements2_reply(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements)
892{
893    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferMemoryRequirements2_EXT;
894    size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
895
896    /* skip device */
897    /* skip pInfo */
898    cmd_size += vn_sizeof_simple_pointer(pMemoryRequirements);
899    if (pMemoryRequirements)
900        cmd_size += vn_sizeof_VkMemoryRequirements2(pMemoryRequirements);
901
902    return cmd_size;
903}
904
905static inline void vn_decode_vkGetBufferMemoryRequirements2_reply(struct vn_cs_decoder *dec, VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements)
906{
907    VkCommandTypeEXT command_type;
908    vn_decode_VkCommandTypeEXT(dec, &command_type);
909    assert(command_type == VK_COMMAND_TYPE_vkGetBufferMemoryRequirements2_EXT);
910
911    /* skip device */
912    /* skip pInfo */
913    if (vn_decode_simple_pointer(dec)) {
914        vn_decode_VkMemoryRequirements2(dec, pMemoryRequirements);
915    } else {
916        pMemoryRequirements = NULL;
917    }
918}
919
920static inline size_t vn_sizeof_vkGetDeviceBufferMemoryRequirements(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements)
921{
922    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetDeviceBufferMemoryRequirements_EXT;
923    const VkFlags cmd_flags = 0;
924    size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
925
926    cmd_size += vn_sizeof_VkDevice(&device);
927    cmd_size += vn_sizeof_simple_pointer(pInfo);
928    if (pInfo)
929        cmd_size += vn_sizeof_VkDeviceBufferMemoryRequirements(pInfo);
930    cmd_size += vn_sizeof_simple_pointer(pMemoryRequirements);
931    if (pMemoryRequirements)
932        cmd_size += vn_sizeof_VkMemoryRequirements2_partial(pMemoryRequirements);
933
934    return cmd_size;
935}
936
937static inline void vn_encode_vkGetDeviceBufferMemoryRequirements(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements)
938{
939    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetDeviceBufferMemoryRequirements_EXT;
940
941    vn_encode_VkCommandTypeEXT(enc, &cmd_type);
942    vn_encode_VkFlags(enc, &cmd_flags);
943
944    vn_encode_VkDevice(enc, &device);
945    if (vn_encode_simple_pointer(enc, pInfo))
946        vn_encode_VkDeviceBufferMemoryRequirements(enc, pInfo);
947    if (vn_encode_simple_pointer(enc, pMemoryRequirements))
948        vn_encode_VkMemoryRequirements2_partial(enc, pMemoryRequirements);
949}
950
951static inline size_t vn_sizeof_vkGetDeviceBufferMemoryRequirements_reply(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements)
952{
953    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetDeviceBufferMemoryRequirements_EXT;
954    size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
955
956    /* skip device */
957    /* skip pInfo */
958    cmd_size += vn_sizeof_simple_pointer(pMemoryRequirements);
959    if (pMemoryRequirements)
960        cmd_size += vn_sizeof_VkMemoryRequirements2(pMemoryRequirements);
961
962    return cmd_size;
963}
964
965static inline void vn_decode_vkGetDeviceBufferMemoryRequirements_reply(struct vn_cs_decoder *dec, VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements)
966{
967    VkCommandTypeEXT command_type;
968    vn_decode_VkCommandTypeEXT(dec, &command_type);
969    assert(command_type == VK_COMMAND_TYPE_vkGetDeviceBufferMemoryRequirements_EXT);
970
971    /* skip device */
972    /* skip pInfo */
973    if (vn_decode_simple_pointer(dec)) {
974        vn_decode_VkMemoryRequirements2(dec, pMemoryRequirements);
975    } else {
976        pMemoryRequirements = NULL;
977    }
978}
979
980static inline size_t vn_sizeof_vkGetBufferOpaqueCaptureAddress(VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
981{
982    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferOpaqueCaptureAddress_EXT;
983    const VkFlags cmd_flags = 0;
984    size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
985
986    cmd_size += vn_sizeof_VkDevice(&device);
987    cmd_size += vn_sizeof_simple_pointer(pInfo);
988    if (pInfo)
989        cmd_size += vn_sizeof_VkBufferDeviceAddressInfo(pInfo);
990
991    return cmd_size;
992}
993
994static inline void vn_encode_vkGetBufferOpaqueCaptureAddress(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
995{
996    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferOpaqueCaptureAddress_EXT;
997
998    vn_encode_VkCommandTypeEXT(enc, &cmd_type);
999    vn_encode_VkFlags(enc, &cmd_flags);
1000
1001    vn_encode_VkDevice(enc, &device);
1002    if (vn_encode_simple_pointer(enc, pInfo))
1003        vn_encode_VkBufferDeviceAddressInfo(enc, pInfo);
1004}
1005
1006static inline size_t vn_sizeof_vkGetBufferOpaqueCaptureAddress_reply(VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
1007{
1008    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferOpaqueCaptureAddress_EXT;
1009    size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
1010
1011    uint64_t ret;
1012    cmd_size += vn_sizeof_uint64_t(&ret);
1013    /* skip device */
1014    /* skip pInfo */
1015
1016    return cmd_size;
1017}
1018
1019static inline uint64_t vn_decode_vkGetBufferOpaqueCaptureAddress_reply(struct vn_cs_decoder *dec, VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
1020{
1021    VkCommandTypeEXT command_type;
1022    vn_decode_VkCommandTypeEXT(dec, &command_type);
1023    assert(command_type == VK_COMMAND_TYPE_vkGetBufferOpaqueCaptureAddress_EXT);
1024
1025    uint64_t ret;
1026    vn_decode_uint64_t(dec, &ret);
1027    /* skip device */
1028    /* skip pInfo */
1029
1030    return ret;
1031}
1032
1033static inline size_t vn_sizeof_vkGetBufferDeviceAddress(VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
1034{
1035    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferDeviceAddress_EXT;
1036    const VkFlags cmd_flags = 0;
1037    size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
1038
1039    cmd_size += vn_sizeof_VkDevice(&device);
1040    cmd_size += vn_sizeof_simple_pointer(pInfo);
1041    if (pInfo)
1042        cmd_size += vn_sizeof_VkBufferDeviceAddressInfo(pInfo);
1043
1044    return cmd_size;
1045}
1046
1047static inline void vn_encode_vkGetBufferDeviceAddress(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
1048{
1049    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferDeviceAddress_EXT;
1050
1051    vn_encode_VkCommandTypeEXT(enc, &cmd_type);
1052    vn_encode_VkFlags(enc, &cmd_flags);
1053
1054    vn_encode_VkDevice(enc, &device);
1055    if (vn_encode_simple_pointer(enc, pInfo))
1056        vn_encode_VkBufferDeviceAddressInfo(enc, pInfo);
1057}
1058
1059static inline size_t vn_sizeof_vkGetBufferDeviceAddress_reply(VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
1060{
1061    const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetBufferDeviceAddress_EXT;
1062    size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
1063
1064    VkDeviceAddress ret;
1065    cmd_size += vn_sizeof_VkDeviceAddress(&ret);
1066    /* skip device */
1067    /* skip pInfo */
1068
1069    return cmd_size;
1070}
1071
1072static inline VkDeviceAddress vn_decode_vkGetBufferDeviceAddress_reply(struct vn_cs_decoder *dec, VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
1073{
1074    VkCommandTypeEXT command_type;
1075    vn_decode_VkCommandTypeEXT(dec, &command_type);
1076    assert(command_type == VK_COMMAND_TYPE_vkGetBufferDeviceAddress_EXT);
1077
1078    VkDeviceAddress ret;
1079    vn_decode_VkDeviceAddress(dec, &ret);
1080    /* skip device */
1081    /* skip pInfo */
1082
1083    return ret;
1084}
1085
1086static inline void vn_submit_vkGetBufferMemoryRequirements(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements, struct vn_instance_submit_command *submit)
1087{
1088    uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
1089    void *cmd_data = local_cmd_data;
1090    size_t cmd_size = vn_sizeof_vkGetBufferMemoryRequirements(device, buffer, pMemoryRequirements);
1091    if (cmd_size > sizeof(local_cmd_data)) {
1092        cmd_data = malloc(cmd_size);
1093        if (!cmd_data)
1094            cmd_size = 0;
1095    }
1096    const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetBufferMemoryRequirements_reply(device, buffer, pMemoryRequirements) : 0;
1097
1098    struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
1099    if (cmd_size) {
1100        vn_encode_vkGetBufferMemoryRequirements(enc, cmd_flags, device, buffer, pMemoryRequirements);
1101        vn_instance_submit_command(vn_instance, submit);
1102        if (cmd_data != local_cmd_data)
1103            free(cmd_data);
1104    }
1105}
1106
1107static inline void vn_submit_vkBindBufferMemory(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset, struct vn_instance_submit_command *submit)
1108{
1109    uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
1110    void *cmd_data = local_cmd_data;
1111    size_t cmd_size = vn_sizeof_vkBindBufferMemory(device, buffer, memory, memoryOffset);
1112    if (cmd_size > sizeof(local_cmd_data)) {
1113        cmd_data = malloc(cmd_size);
1114        if (!cmd_data)
1115            cmd_size = 0;
1116    }
1117    const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkBindBufferMemory_reply(device, buffer, memory, memoryOffset) : 0;
1118
1119    struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
1120    if (cmd_size) {
1121        vn_encode_vkBindBufferMemory(enc, cmd_flags, device, buffer, memory, memoryOffset);
1122        vn_instance_submit_command(vn_instance, submit);
1123        if (cmd_data != local_cmd_data)
1124            free(cmd_data);
1125    }
1126}
1127
1128static inline void vn_submit_vkCreateBuffer(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer, struct vn_instance_submit_command *submit)
1129{
1130    uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
1131    void *cmd_data = local_cmd_data;
1132    size_t cmd_size = vn_sizeof_vkCreateBuffer(device, pCreateInfo, pAllocator, pBuffer);
1133    if (cmd_size > sizeof(local_cmd_data)) {
1134        cmd_data = malloc(cmd_size);
1135        if (!cmd_data)
1136            cmd_size = 0;
1137    }
1138    const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateBuffer_reply(device, pCreateInfo, pAllocator, pBuffer) : 0;
1139
1140    struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
1141    if (cmd_size) {
1142        vn_encode_vkCreateBuffer(enc, cmd_flags, device, pCreateInfo, pAllocator, pBuffer);
1143        vn_instance_submit_command(vn_instance, submit);
1144        if (cmd_data != local_cmd_data)
1145            free(cmd_data);
1146    }
1147}
1148
1149static inline void vn_submit_vkDestroyBuffer(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator, struct vn_instance_submit_command *submit)
1150{
1151    uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
1152    void *cmd_data = local_cmd_data;
1153    size_t cmd_size = vn_sizeof_vkDestroyBuffer(device, buffer, pAllocator);
1154    if (cmd_size > sizeof(local_cmd_data)) {
1155        cmd_data = malloc(cmd_size);
1156        if (!cmd_data)
1157            cmd_size = 0;
1158    }
1159    const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroyBuffer_reply(device, buffer, pAllocator) : 0;
1160
1161    struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
1162    if (cmd_size) {
1163        vn_encode_vkDestroyBuffer(enc, cmd_flags, device, buffer, pAllocator);
1164        vn_instance_submit_command(vn_instance, submit);
1165        if (cmd_data != local_cmd_data)
1166            free(cmd_data);
1167    }
1168}
1169
1170static inline void vn_submit_vkBindBufferMemory2(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos, struct vn_instance_submit_command *submit)
1171{
1172    uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
1173    void *cmd_data = local_cmd_data;
1174    size_t cmd_size = vn_sizeof_vkBindBufferMemory2(device, bindInfoCount, pBindInfos);
1175    if (cmd_size > sizeof(local_cmd_data)) {
1176        cmd_data = malloc(cmd_size);
1177        if (!cmd_data)
1178            cmd_size = 0;
1179    }
1180    const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkBindBufferMemory2_reply(device, bindInfoCount, pBindInfos) : 0;
1181
1182    struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
1183    if (cmd_size) {
1184        vn_encode_vkBindBufferMemory2(enc, cmd_flags, device, bindInfoCount, pBindInfos);
1185        vn_instance_submit_command(vn_instance, submit);
1186        if (cmd_data != local_cmd_data)
1187            free(cmd_data);
1188    }
1189}
1190
1191static inline void vn_submit_vkGetBufferMemoryRequirements2(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements, struct vn_instance_submit_command *submit)
1192{
1193    uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
1194    void *cmd_data = local_cmd_data;
1195    size_t cmd_size = vn_sizeof_vkGetBufferMemoryRequirements2(device, pInfo, pMemoryRequirements);
1196    if (cmd_size > sizeof(local_cmd_data)) {
1197        cmd_data = malloc(cmd_size);
1198        if (!cmd_data)
1199            cmd_size = 0;
1200    }
1201    const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetBufferMemoryRequirements2_reply(device, pInfo, pMemoryRequirements) : 0;
1202
1203    struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
1204    if (cmd_size) {
1205        vn_encode_vkGetBufferMemoryRequirements2(enc, cmd_flags, device, pInfo, pMemoryRequirements);
1206        vn_instance_submit_command(vn_instance, submit);
1207        if (cmd_data != local_cmd_data)
1208            free(cmd_data);
1209    }
1210}
1211
1212static inline void vn_submit_vkGetDeviceBufferMemoryRequirements(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements, struct vn_instance_submit_command *submit)
1213{
1214    uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
1215    void *cmd_data = local_cmd_data;
1216    size_t cmd_size = vn_sizeof_vkGetDeviceBufferMemoryRequirements(device, pInfo, pMemoryRequirements);
1217    if (cmd_size > sizeof(local_cmd_data)) {
1218        cmd_data = malloc(cmd_size);
1219        if (!cmd_data)
1220            cmd_size = 0;
1221    }
1222    const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetDeviceBufferMemoryRequirements_reply(device, pInfo, pMemoryRequirements) : 0;
1223
1224    struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
1225    if (cmd_size) {
1226        vn_encode_vkGetDeviceBufferMemoryRequirements(enc, cmd_flags, device, pInfo, pMemoryRequirements);
1227        vn_instance_submit_command(vn_instance, submit);
1228        if (cmd_data != local_cmd_data)
1229            free(cmd_data);
1230    }
1231}
1232
1233static inline void vn_submit_vkGetBufferOpaqueCaptureAddress(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkBufferDeviceAddressInfo* pInfo, struct vn_instance_submit_command *submit)
1234{
1235    uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
1236    void *cmd_data = local_cmd_data;
1237    size_t cmd_size = vn_sizeof_vkGetBufferOpaqueCaptureAddress(device, pInfo);
1238    if (cmd_size > sizeof(local_cmd_data)) {
1239        cmd_data = malloc(cmd_size);
1240        if (!cmd_data)
1241            cmd_size = 0;
1242    }
1243    const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetBufferOpaqueCaptureAddress_reply(device, pInfo) : 0;
1244
1245    struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
1246    if (cmd_size) {
1247        vn_encode_vkGetBufferOpaqueCaptureAddress(enc, cmd_flags, device, pInfo);
1248        vn_instance_submit_command(vn_instance, submit);
1249        if (cmd_data != local_cmd_data)
1250            free(cmd_data);
1251    }
1252}
1253
1254static inline void vn_submit_vkGetBufferDeviceAddress(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkBufferDeviceAddressInfo* pInfo, struct vn_instance_submit_command *submit)
1255{
1256    uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
1257    void *cmd_data = local_cmd_data;
1258    size_t cmd_size = vn_sizeof_vkGetBufferDeviceAddress(device, pInfo);
1259    if (cmd_size > sizeof(local_cmd_data)) {
1260        cmd_data = malloc(cmd_size);
1261        if (!cmd_data)
1262            cmd_size = 0;
1263    }
1264    const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetBufferDeviceAddress_reply(device, pInfo) : 0;
1265
1266    struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
1267    if (cmd_size) {
1268        vn_encode_vkGetBufferDeviceAddress(enc, cmd_flags, device, pInfo);
1269        vn_instance_submit_command(vn_instance, submit);
1270        if (cmd_data != local_cmd_data)
1271            free(cmd_data);
1272    }
1273}
1274
1275static inline void vn_call_vkGetBufferMemoryRequirements(struct vn_instance *vn_instance, VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements)
1276{
1277    VN_TRACE_FUNC();
1278
1279    struct vn_instance_submit_command submit;
1280    vn_submit_vkGetBufferMemoryRequirements(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, buffer, pMemoryRequirements, &submit);
1281    struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
1282    if (dec) {
1283        vn_decode_vkGetBufferMemoryRequirements_reply(dec, device, buffer, pMemoryRequirements);
1284        vn_instance_free_command_reply(vn_instance, &submit);
1285    }
1286}
1287
1288static inline void vn_async_vkGetBufferMemoryRequirements(struct vn_instance *vn_instance, VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements)
1289{
1290    struct vn_instance_submit_command submit;
1291    vn_submit_vkGetBufferMemoryRequirements(vn_instance, 0, device, buffer, pMemoryRequirements, &submit);
1292}
1293
1294static inline VkResult vn_call_vkBindBufferMemory(struct vn_instance *vn_instance, VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset)
1295{
1296    VN_TRACE_FUNC();
1297
1298    struct vn_instance_submit_command submit;
1299    vn_submit_vkBindBufferMemory(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, buffer, memory, memoryOffset, &submit);
1300    struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
1301    if (dec) {
1302        const VkResult ret = vn_decode_vkBindBufferMemory_reply(dec, device, buffer, memory, memoryOffset);
1303        vn_instance_free_command_reply(vn_instance, &submit);
1304        return ret;
1305    } else {
1306        return VK_ERROR_OUT_OF_HOST_MEMORY;
1307    }
1308}
1309
1310static inline void vn_async_vkBindBufferMemory(struct vn_instance *vn_instance, VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset)
1311{
1312    struct vn_instance_submit_command submit;
1313    vn_submit_vkBindBufferMemory(vn_instance, 0, device, buffer, memory, memoryOffset, &submit);
1314}
1315
1316static inline VkResult vn_call_vkCreateBuffer(struct vn_instance *vn_instance, VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer)
1317{
1318    VN_TRACE_FUNC();
1319
1320    struct vn_instance_submit_command submit;
1321    vn_submit_vkCreateBuffer(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pBuffer, &submit);
1322    struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
1323    if (dec) {
1324        const VkResult ret = vn_decode_vkCreateBuffer_reply(dec, device, pCreateInfo, pAllocator, pBuffer);
1325        vn_instance_free_command_reply(vn_instance, &submit);
1326        return ret;
1327    } else {
1328        return VK_ERROR_OUT_OF_HOST_MEMORY;
1329    }
1330}
1331
1332static inline void vn_async_vkCreateBuffer(struct vn_instance *vn_instance, VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer)
1333{
1334    struct vn_instance_submit_command submit;
1335    vn_submit_vkCreateBuffer(vn_instance, 0, device, pCreateInfo, pAllocator, pBuffer, &submit);
1336}
1337
1338static inline void vn_call_vkDestroyBuffer(struct vn_instance *vn_instance, VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator)
1339{
1340    VN_TRACE_FUNC();
1341
1342    struct vn_instance_submit_command submit;
1343    vn_submit_vkDestroyBuffer(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, buffer, pAllocator, &submit);
1344    struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
1345    if (dec) {
1346        vn_decode_vkDestroyBuffer_reply(dec, device, buffer, pAllocator);
1347        vn_instance_free_command_reply(vn_instance, &submit);
1348    }
1349}
1350
1351static inline void vn_async_vkDestroyBuffer(struct vn_instance *vn_instance, VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator)
1352{
1353    struct vn_instance_submit_command submit;
1354    vn_submit_vkDestroyBuffer(vn_instance, 0, device, buffer, pAllocator, &submit);
1355}
1356
1357static inline VkResult vn_call_vkBindBufferMemory2(struct vn_instance *vn_instance, VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos)
1358{
1359    VN_TRACE_FUNC();
1360
1361    struct vn_instance_submit_command submit;
1362    vn_submit_vkBindBufferMemory2(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, bindInfoCount, pBindInfos, &submit);
1363    struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
1364    if (dec) {
1365        const VkResult ret = vn_decode_vkBindBufferMemory2_reply(dec, device, bindInfoCount, pBindInfos);
1366        vn_instance_free_command_reply(vn_instance, &submit);
1367        return ret;
1368    } else {
1369        return VK_ERROR_OUT_OF_HOST_MEMORY;
1370    }
1371}
1372
1373static inline void vn_async_vkBindBufferMemory2(struct vn_instance *vn_instance, VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos)
1374{
1375    struct vn_instance_submit_command submit;
1376    vn_submit_vkBindBufferMemory2(vn_instance, 0, device, bindInfoCount, pBindInfos, &submit);
1377}
1378
1379static inline void vn_call_vkGetBufferMemoryRequirements2(struct vn_instance *vn_instance, VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements)
1380{
1381    VN_TRACE_FUNC();
1382
1383    struct vn_instance_submit_command submit;
1384    vn_submit_vkGetBufferMemoryRequirements2(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pInfo, pMemoryRequirements, &submit);
1385    struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
1386    if (dec) {
1387        vn_decode_vkGetBufferMemoryRequirements2_reply(dec, device, pInfo, pMemoryRequirements);
1388        vn_instance_free_command_reply(vn_instance, &submit);
1389    }
1390}
1391
1392static inline void vn_async_vkGetBufferMemoryRequirements2(struct vn_instance *vn_instance, VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements)
1393{
1394    struct vn_instance_submit_command submit;
1395    vn_submit_vkGetBufferMemoryRequirements2(vn_instance, 0, device, pInfo, pMemoryRequirements, &submit);
1396}
1397
1398static inline void vn_call_vkGetDeviceBufferMemoryRequirements(struct vn_instance *vn_instance, VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements)
1399{
1400    VN_TRACE_FUNC();
1401
1402    struct vn_instance_submit_command submit;
1403    vn_submit_vkGetDeviceBufferMemoryRequirements(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pInfo, pMemoryRequirements, &submit);
1404    struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
1405    if (dec) {
1406        vn_decode_vkGetDeviceBufferMemoryRequirements_reply(dec, device, pInfo, pMemoryRequirements);
1407        vn_instance_free_command_reply(vn_instance, &submit);
1408    }
1409}
1410
1411static inline void vn_async_vkGetDeviceBufferMemoryRequirements(struct vn_instance *vn_instance, VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements)
1412{
1413    struct vn_instance_submit_command submit;
1414    vn_submit_vkGetDeviceBufferMemoryRequirements(vn_instance, 0, device, pInfo, pMemoryRequirements, &submit);
1415}
1416
1417static inline uint64_t vn_call_vkGetBufferOpaqueCaptureAddress(struct vn_instance *vn_instance, VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
1418{
1419    VN_TRACE_FUNC();
1420
1421    struct vn_instance_submit_command submit;
1422    vn_submit_vkGetBufferOpaqueCaptureAddress(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pInfo, &submit);
1423    struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
1424    if (dec) {
1425        const uint64_t ret = vn_decode_vkGetBufferOpaqueCaptureAddress_reply(dec, device, pInfo);
1426        vn_instance_free_command_reply(vn_instance, &submit);
1427        return ret;
1428    } else {
1429        return VK_ERROR_OUT_OF_HOST_MEMORY;
1430    }
1431}
1432
1433static inline void vn_async_vkGetBufferOpaqueCaptureAddress(struct vn_instance *vn_instance, VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
1434{
1435    struct vn_instance_submit_command submit;
1436    vn_submit_vkGetBufferOpaqueCaptureAddress(vn_instance, 0, device, pInfo, &submit);
1437}
1438
1439static inline VkDeviceAddress vn_call_vkGetBufferDeviceAddress(struct vn_instance *vn_instance, VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
1440{
1441    VN_TRACE_FUNC();
1442
1443    struct vn_instance_submit_command submit;
1444    vn_submit_vkGetBufferDeviceAddress(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pInfo, &submit);
1445    struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
1446    if (dec) {
1447        const VkDeviceAddress ret = vn_decode_vkGetBufferDeviceAddress_reply(dec, device, pInfo);
1448        vn_instance_free_command_reply(vn_instance, &submit);
1449        return ret;
1450    } else {
1451        return VK_ERROR_OUT_OF_HOST_MEMORY;
1452    }
1453}
1454
1455static inline void vn_async_vkGetBufferDeviceAddress(struct vn_instance *vn_instance, VkDevice device, const VkBufferDeviceAddressInfo* pInfo)
1456{
1457    struct vn_instance_submit_command submit;
1458    vn_submit_vkGetBufferDeviceAddress(vn_instance, 0, device, pInfo, &submit);
1459}
1460
1461#endif /* VN_PROTOCOL_DRIVER_BUFFER_H */
1462