xref: /aosp_15_r20/external/mesa3d/src/virtio/venus-protocol/vn_protocol_driver_structs.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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_STRUCTS_H
9 #define VN_PROTOCOL_DRIVER_STRUCTS_H
10 
11 #include "vn_protocol_driver_handles.h"
12 
13 /*
14  * These structs/unions/commands are not included
15  *
16  *   VkAllocationCallbacks
17  */
18 
19 /* struct VkExtent3D */
20 
21 static inline size_t
vn_sizeof_VkExtent3D(const VkExtent3D * val)22 vn_sizeof_VkExtent3D(const VkExtent3D *val)
23 {
24     size_t size = 0;
25     size += vn_sizeof_uint32_t(&val->width);
26     size += vn_sizeof_uint32_t(&val->height);
27     size += vn_sizeof_uint32_t(&val->depth);
28     return size;
29 }
30 
31 static inline void
vn_encode_VkExtent3D(struct vn_cs_encoder * enc,const VkExtent3D * val)32 vn_encode_VkExtent3D(struct vn_cs_encoder *enc, const VkExtent3D *val)
33 {
34     vn_encode_uint32_t(enc, &val->width);
35     vn_encode_uint32_t(enc, &val->height);
36     vn_encode_uint32_t(enc, &val->depth);
37 }
38 
39 static inline void
vn_decode_VkExtent3D(struct vn_cs_decoder * dec,VkExtent3D * val)40 vn_decode_VkExtent3D(struct vn_cs_decoder *dec, VkExtent3D *val)
41 {
42     vn_decode_uint32_t(dec, &val->width);
43     vn_decode_uint32_t(dec, &val->height);
44     vn_decode_uint32_t(dec, &val->depth);
45 }
46 
47 static inline size_t
vn_sizeof_VkExtent3D_partial(const VkExtent3D * val)48 vn_sizeof_VkExtent3D_partial(const VkExtent3D *val)
49 {
50     size_t size = 0;
51     /* skip val->width */
52     /* skip val->height */
53     /* skip val->depth */
54     return size;
55 }
56 
57 static inline void
vn_encode_VkExtent3D_partial(struct vn_cs_encoder * enc,const VkExtent3D * val)58 vn_encode_VkExtent3D_partial(struct vn_cs_encoder *enc, const VkExtent3D *val)
59 {
60     /* skip val->width */
61     /* skip val->height */
62     /* skip val->depth */
63 }
64 
65 /* struct VkLayerProperties */
66 
67 static inline size_t
vn_sizeof_VkLayerProperties(const VkLayerProperties * val)68 vn_sizeof_VkLayerProperties(const VkLayerProperties *val)
69 {
70     size_t size = 0;
71     size += vn_sizeof_array_size(VK_MAX_EXTENSION_NAME_SIZE);
72     size += vn_sizeof_char_array(val->layerName, VK_MAX_EXTENSION_NAME_SIZE);
73     size += vn_sizeof_uint32_t(&val->specVersion);
74     size += vn_sizeof_uint32_t(&val->implementationVersion);
75     size += vn_sizeof_array_size(VK_MAX_DESCRIPTION_SIZE);
76     size += vn_sizeof_char_array(val->description, VK_MAX_DESCRIPTION_SIZE);
77     return size;
78 }
79 
80 static inline void
vn_decode_VkLayerProperties(struct vn_cs_decoder * dec,VkLayerProperties * val)81 vn_decode_VkLayerProperties(struct vn_cs_decoder *dec, VkLayerProperties *val)
82 {
83     {
84         const size_t array_size = vn_decode_array_size(dec, VK_MAX_EXTENSION_NAME_SIZE);
85         vn_decode_char_array(dec, val->layerName, array_size);
86     }
87     vn_decode_uint32_t(dec, &val->specVersion);
88     vn_decode_uint32_t(dec, &val->implementationVersion);
89     {
90         const size_t array_size = vn_decode_array_size(dec, VK_MAX_DESCRIPTION_SIZE);
91         vn_decode_char_array(dec, val->description, array_size);
92     }
93 }
94 
95 static inline size_t
vn_sizeof_VkLayerProperties_partial(const VkLayerProperties * val)96 vn_sizeof_VkLayerProperties_partial(const VkLayerProperties *val)
97 {
98     size_t size = 0;
99     /* skip val->layerName */
100     /* skip val->specVersion */
101     /* skip val->implementationVersion */
102     /* skip val->description */
103     return size;
104 }
105 
106 static inline void
vn_encode_VkLayerProperties_partial(struct vn_cs_encoder * enc,const VkLayerProperties * val)107 vn_encode_VkLayerProperties_partial(struct vn_cs_encoder *enc, const VkLayerProperties *val)
108 {
109     /* skip val->layerName */
110     /* skip val->specVersion */
111     /* skip val->implementationVersion */
112     /* skip val->description */
113 }
114 
115 /* struct VkExtensionProperties */
116 
117 static inline size_t
vn_sizeof_VkExtensionProperties(const VkExtensionProperties * val)118 vn_sizeof_VkExtensionProperties(const VkExtensionProperties *val)
119 {
120     size_t size = 0;
121     size += vn_sizeof_array_size(VK_MAX_EXTENSION_NAME_SIZE);
122     size += vn_sizeof_char_array(val->extensionName, VK_MAX_EXTENSION_NAME_SIZE);
123     size += vn_sizeof_uint32_t(&val->specVersion);
124     return size;
125 }
126 
127 static inline void
vn_encode_VkExtensionProperties(struct vn_cs_encoder * enc,const VkExtensionProperties * val)128 vn_encode_VkExtensionProperties(struct vn_cs_encoder *enc, const VkExtensionProperties *val)
129 {
130     vn_encode_array_size(enc, VK_MAX_EXTENSION_NAME_SIZE);
131     vn_encode_char_array(enc, val->extensionName, VK_MAX_EXTENSION_NAME_SIZE);
132     vn_encode_uint32_t(enc, &val->specVersion);
133 }
134 
135 static inline void
vn_decode_VkExtensionProperties(struct vn_cs_decoder * dec,VkExtensionProperties * val)136 vn_decode_VkExtensionProperties(struct vn_cs_decoder *dec, VkExtensionProperties *val)
137 {
138     {
139         const size_t array_size = vn_decode_array_size(dec, VK_MAX_EXTENSION_NAME_SIZE);
140         vn_decode_char_array(dec, val->extensionName, array_size);
141     }
142     vn_decode_uint32_t(dec, &val->specVersion);
143 }
144 
145 static inline size_t
vn_sizeof_VkExtensionProperties_partial(const VkExtensionProperties * val)146 vn_sizeof_VkExtensionProperties_partial(const VkExtensionProperties *val)
147 {
148     size_t size = 0;
149     /* skip val->extensionName */
150     /* skip val->specVersion */
151     return size;
152 }
153 
154 static inline void
vn_encode_VkExtensionProperties_partial(struct vn_cs_encoder * enc,const VkExtensionProperties * val)155 vn_encode_VkExtensionProperties_partial(struct vn_cs_encoder *enc, const VkExtensionProperties *val)
156 {
157     /* skip val->extensionName */
158     /* skip val->specVersion */
159 }
160 
161 /* struct VkMemoryRequirements */
162 
163 static inline size_t
vn_sizeof_VkMemoryRequirements(const VkMemoryRequirements * val)164 vn_sizeof_VkMemoryRequirements(const VkMemoryRequirements *val)
165 {
166     size_t size = 0;
167     size += vn_sizeof_VkDeviceSize(&val->size);
168     size += vn_sizeof_VkDeviceSize(&val->alignment);
169     size += vn_sizeof_uint32_t(&val->memoryTypeBits);
170     return size;
171 }
172 
173 static inline void
vn_decode_VkMemoryRequirements(struct vn_cs_decoder * dec,VkMemoryRequirements * val)174 vn_decode_VkMemoryRequirements(struct vn_cs_decoder *dec, VkMemoryRequirements *val)
175 {
176     vn_decode_VkDeviceSize(dec, &val->size);
177     vn_decode_VkDeviceSize(dec, &val->alignment);
178     vn_decode_uint32_t(dec, &val->memoryTypeBits);
179 }
180 
181 static inline size_t
vn_sizeof_VkMemoryRequirements_partial(const VkMemoryRequirements * val)182 vn_sizeof_VkMemoryRequirements_partial(const VkMemoryRequirements *val)
183 {
184     size_t size = 0;
185     /* skip val->size */
186     /* skip val->alignment */
187     /* skip val->memoryTypeBits */
188     return size;
189 }
190 
191 static inline void
vn_encode_VkMemoryRequirements_partial(struct vn_cs_encoder * enc,const VkMemoryRequirements * val)192 vn_encode_VkMemoryRequirements_partial(struct vn_cs_encoder *enc, const VkMemoryRequirements *val)
193 {
194     /* skip val->size */
195     /* skip val->alignment */
196     /* skip val->memoryTypeBits */
197 }
198 
199 /* struct VkSparseImageFormatProperties */
200 
201 static inline size_t
vn_sizeof_VkSparseImageFormatProperties(const VkSparseImageFormatProperties * val)202 vn_sizeof_VkSparseImageFormatProperties(const VkSparseImageFormatProperties *val)
203 {
204     size_t size = 0;
205     size += vn_sizeof_VkFlags(&val->aspectMask);
206     size += vn_sizeof_VkExtent3D(&val->imageGranularity);
207     size += vn_sizeof_VkFlags(&val->flags);
208     return size;
209 }
210 
211 static inline void
vn_decode_VkSparseImageFormatProperties(struct vn_cs_decoder * dec,VkSparseImageFormatProperties * val)212 vn_decode_VkSparseImageFormatProperties(struct vn_cs_decoder *dec, VkSparseImageFormatProperties *val)
213 {
214     vn_decode_VkFlags(dec, &val->aspectMask);
215     vn_decode_VkExtent3D(dec, &val->imageGranularity);
216     vn_decode_VkFlags(dec, &val->flags);
217 }
218 
219 static inline size_t
vn_sizeof_VkSparseImageFormatProperties_partial(const VkSparseImageFormatProperties * val)220 vn_sizeof_VkSparseImageFormatProperties_partial(const VkSparseImageFormatProperties *val)
221 {
222     size_t size = 0;
223     /* skip val->aspectMask */
224     size += vn_sizeof_VkExtent3D_partial(&val->imageGranularity);
225     /* skip val->flags */
226     return size;
227 }
228 
229 static inline void
vn_encode_VkSparseImageFormatProperties_partial(struct vn_cs_encoder * enc,const VkSparseImageFormatProperties * val)230 vn_encode_VkSparseImageFormatProperties_partial(struct vn_cs_encoder *enc, const VkSparseImageFormatProperties *val)
231 {
232     /* skip val->aspectMask */
233     vn_encode_VkExtent3D_partial(enc, &val->imageGranularity);
234     /* skip val->flags */
235 }
236 
237 /* struct VkImageSubresource */
238 
239 static inline size_t
vn_sizeof_VkImageSubresource(const VkImageSubresource * val)240 vn_sizeof_VkImageSubresource(const VkImageSubresource *val)
241 {
242     size_t size = 0;
243     size += vn_sizeof_VkFlags(&val->aspectMask);
244     size += vn_sizeof_uint32_t(&val->mipLevel);
245     size += vn_sizeof_uint32_t(&val->arrayLayer);
246     return size;
247 }
248 
249 static inline void
vn_encode_VkImageSubresource(struct vn_cs_encoder * enc,const VkImageSubresource * val)250 vn_encode_VkImageSubresource(struct vn_cs_encoder *enc, const VkImageSubresource *val)
251 {
252     vn_encode_VkFlags(enc, &val->aspectMask);
253     vn_encode_uint32_t(enc, &val->mipLevel);
254     vn_encode_uint32_t(enc, &val->arrayLayer);
255 }
256 
257 /* struct VkOffset3D */
258 
259 static inline size_t
vn_sizeof_VkOffset3D(const VkOffset3D * val)260 vn_sizeof_VkOffset3D(const VkOffset3D *val)
261 {
262     size_t size = 0;
263     size += vn_sizeof_int32_t(&val->x);
264     size += vn_sizeof_int32_t(&val->y);
265     size += vn_sizeof_int32_t(&val->z);
266     return size;
267 }
268 
269 static inline void
vn_encode_VkOffset3D(struct vn_cs_encoder * enc,const VkOffset3D * val)270 vn_encode_VkOffset3D(struct vn_cs_encoder *enc, const VkOffset3D *val)
271 {
272     vn_encode_int32_t(enc, &val->x);
273     vn_encode_int32_t(enc, &val->y);
274     vn_encode_int32_t(enc, &val->z);
275 }
276 
277 /* struct VkSemaphoreTypeCreateInfo chain */
278 
279 static inline size_t
vn_sizeof_VkSemaphoreTypeCreateInfo_pnext(const void * val)280 vn_sizeof_VkSemaphoreTypeCreateInfo_pnext(const void *val)
281 {
282     /* no known/supported struct */
283     return vn_sizeof_simple_pointer(NULL);
284 }
285 
286 static inline size_t
vn_sizeof_VkSemaphoreTypeCreateInfo_self(const VkSemaphoreTypeCreateInfo * val)287 vn_sizeof_VkSemaphoreTypeCreateInfo_self(const VkSemaphoreTypeCreateInfo *val)
288 {
289     size_t size = 0;
290     /* skip val->{sType,pNext} */
291     size += vn_sizeof_VkSemaphoreType(&val->semaphoreType);
292     size += vn_sizeof_uint64_t(&val->initialValue);
293     return size;
294 }
295 
296 static inline size_t
vn_sizeof_VkSemaphoreTypeCreateInfo(const VkSemaphoreTypeCreateInfo * val)297 vn_sizeof_VkSemaphoreTypeCreateInfo(const VkSemaphoreTypeCreateInfo *val)
298 {
299     size_t size = 0;
300 
301     size += vn_sizeof_VkStructureType(&val->sType);
302     size += vn_sizeof_VkSemaphoreTypeCreateInfo_pnext(val->pNext);
303     size += vn_sizeof_VkSemaphoreTypeCreateInfo_self(val);
304 
305     return size;
306 }
307 
308 static inline void
vn_encode_VkSemaphoreTypeCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)309 vn_encode_VkSemaphoreTypeCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
310 {
311     /* no known/supported struct */
312     vn_encode_simple_pointer(enc, NULL);
313 }
314 
315 static inline void
vn_encode_VkSemaphoreTypeCreateInfo_self(struct vn_cs_encoder * enc,const VkSemaphoreTypeCreateInfo * val)316 vn_encode_VkSemaphoreTypeCreateInfo_self(struct vn_cs_encoder *enc, const VkSemaphoreTypeCreateInfo *val)
317 {
318     /* skip val->{sType,pNext} */
319     vn_encode_VkSemaphoreType(enc, &val->semaphoreType);
320     vn_encode_uint64_t(enc, &val->initialValue);
321 }
322 
323 static inline void
vn_encode_VkSemaphoreTypeCreateInfo(struct vn_cs_encoder * enc,const VkSemaphoreTypeCreateInfo * val)324 vn_encode_VkSemaphoreTypeCreateInfo(struct vn_cs_encoder *enc, const VkSemaphoreTypeCreateInfo *val)
325 {
326     assert(val->sType == VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO);
327     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO });
328     vn_encode_VkSemaphoreTypeCreateInfo_pnext(enc, val->pNext);
329     vn_encode_VkSemaphoreTypeCreateInfo_self(enc, val);
330 }
331 
332 /* struct VkBufferUsageFlags2CreateInfoKHR chain */
333 
334 static inline size_t
vn_sizeof_VkBufferUsageFlags2CreateInfoKHR_pnext(const void * val)335 vn_sizeof_VkBufferUsageFlags2CreateInfoKHR_pnext(const void *val)
336 {
337     /* no known/supported struct */
338     return vn_sizeof_simple_pointer(NULL);
339 }
340 
341 static inline size_t
vn_sizeof_VkBufferUsageFlags2CreateInfoKHR_self(const VkBufferUsageFlags2CreateInfoKHR * val)342 vn_sizeof_VkBufferUsageFlags2CreateInfoKHR_self(const VkBufferUsageFlags2CreateInfoKHR *val)
343 {
344     size_t size = 0;
345     /* skip val->{sType,pNext} */
346     size += vn_sizeof_VkFlags64(&val->usage);
347     return size;
348 }
349 
350 static inline size_t
vn_sizeof_VkBufferUsageFlags2CreateInfoKHR(const VkBufferUsageFlags2CreateInfoKHR * val)351 vn_sizeof_VkBufferUsageFlags2CreateInfoKHR(const VkBufferUsageFlags2CreateInfoKHR *val)
352 {
353     size_t size = 0;
354 
355     size += vn_sizeof_VkStructureType(&val->sType);
356     size += vn_sizeof_VkBufferUsageFlags2CreateInfoKHR_pnext(val->pNext);
357     size += vn_sizeof_VkBufferUsageFlags2CreateInfoKHR_self(val);
358 
359     return size;
360 }
361 
362 static inline void
vn_encode_VkBufferUsageFlags2CreateInfoKHR_pnext(struct vn_cs_encoder * enc,const void * val)363 vn_encode_VkBufferUsageFlags2CreateInfoKHR_pnext(struct vn_cs_encoder *enc, const void *val)
364 {
365     /* no known/supported struct */
366     vn_encode_simple_pointer(enc, NULL);
367 }
368 
369 static inline void
vn_encode_VkBufferUsageFlags2CreateInfoKHR_self(struct vn_cs_encoder * enc,const VkBufferUsageFlags2CreateInfoKHR * val)370 vn_encode_VkBufferUsageFlags2CreateInfoKHR_self(struct vn_cs_encoder *enc, const VkBufferUsageFlags2CreateInfoKHR *val)
371 {
372     /* skip val->{sType,pNext} */
373     vn_encode_VkFlags64(enc, &val->usage);
374 }
375 
376 static inline void
vn_encode_VkBufferUsageFlags2CreateInfoKHR(struct vn_cs_encoder * enc,const VkBufferUsageFlags2CreateInfoKHR * val)377 vn_encode_VkBufferUsageFlags2CreateInfoKHR(struct vn_cs_encoder *enc, const VkBufferUsageFlags2CreateInfoKHR *val)
378 {
379     assert(val->sType == VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR);
380     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR });
381     vn_encode_VkBufferUsageFlags2CreateInfoKHR_pnext(enc, val->pNext);
382     vn_encode_VkBufferUsageFlags2CreateInfoKHR_self(enc, val);
383 }
384 
385 /* struct VkImageFormatListCreateInfo chain */
386 
387 static inline size_t
vn_sizeof_VkImageFormatListCreateInfo_pnext(const void * val)388 vn_sizeof_VkImageFormatListCreateInfo_pnext(const void *val)
389 {
390     /* no known/supported struct */
391     return vn_sizeof_simple_pointer(NULL);
392 }
393 
394 static inline size_t
vn_sizeof_VkImageFormatListCreateInfo_self(const VkImageFormatListCreateInfo * val)395 vn_sizeof_VkImageFormatListCreateInfo_self(const VkImageFormatListCreateInfo *val)
396 {
397     size_t size = 0;
398     /* skip val->{sType,pNext} */
399     size += vn_sizeof_uint32_t(&val->viewFormatCount);
400     if (val->pViewFormats) {
401         size += vn_sizeof_array_size(val->viewFormatCount);
402         size += vn_sizeof_VkFormat_array(val->pViewFormats, val->viewFormatCount);
403     } else {
404         size += vn_sizeof_array_size(0);
405     }
406     return size;
407 }
408 
409 static inline size_t
vn_sizeof_VkImageFormatListCreateInfo(const VkImageFormatListCreateInfo * val)410 vn_sizeof_VkImageFormatListCreateInfo(const VkImageFormatListCreateInfo *val)
411 {
412     size_t size = 0;
413 
414     size += vn_sizeof_VkStructureType(&val->sType);
415     size += vn_sizeof_VkImageFormatListCreateInfo_pnext(val->pNext);
416     size += vn_sizeof_VkImageFormatListCreateInfo_self(val);
417 
418     return size;
419 }
420 
421 static inline void
vn_encode_VkImageFormatListCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)422 vn_encode_VkImageFormatListCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
423 {
424     /* no known/supported struct */
425     vn_encode_simple_pointer(enc, NULL);
426 }
427 
428 static inline void
vn_encode_VkImageFormatListCreateInfo_self(struct vn_cs_encoder * enc,const VkImageFormatListCreateInfo * val)429 vn_encode_VkImageFormatListCreateInfo_self(struct vn_cs_encoder *enc, const VkImageFormatListCreateInfo *val)
430 {
431     /* skip val->{sType,pNext} */
432     vn_encode_uint32_t(enc, &val->viewFormatCount);
433     if (val->pViewFormats) {
434         vn_encode_array_size(enc, val->viewFormatCount);
435         vn_encode_VkFormat_array(enc, val->pViewFormats, val->viewFormatCount);
436     } else {
437         vn_encode_array_size(enc, 0);
438     }
439 }
440 
441 static inline void
vn_encode_VkImageFormatListCreateInfo(struct vn_cs_encoder * enc,const VkImageFormatListCreateInfo * val)442 vn_encode_VkImageFormatListCreateInfo(struct vn_cs_encoder *enc, const VkImageFormatListCreateInfo *val)
443 {
444     assert(val->sType == VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO);
445     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO });
446     vn_encode_VkImageFormatListCreateInfo_pnext(enc, val->pNext);
447     vn_encode_VkImageFormatListCreateInfo_self(enc, val);
448 }
449 
450 /* struct VkImageStencilUsageCreateInfo chain */
451 
452 static inline size_t
vn_sizeof_VkImageStencilUsageCreateInfo_pnext(const void * val)453 vn_sizeof_VkImageStencilUsageCreateInfo_pnext(const void *val)
454 {
455     /* no known/supported struct */
456     return vn_sizeof_simple_pointer(NULL);
457 }
458 
459 static inline size_t
vn_sizeof_VkImageStencilUsageCreateInfo_self(const VkImageStencilUsageCreateInfo * val)460 vn_sizeof_VkImageStencilUsageCreateInfo_self(const VkImageStencilUsageCreateInfo *val)
461 {
462     size_t size = 0;
463     /* skip val->{sType,pNext} */
464     size += vn_sizeof_VkFlags(&val->stencilUsage);
465     return size;
466 }
467 
468 static inline size_t
vn_sizeof_VkImageStencilUsageCreateInfo(const VkImageStencilUsageCreateInfo * val)469 vn_sizeof_VkImageStencilUsageCreateInfo(const VkImageStencilUsageCreateInfo *val)
470 {
471     size_t size = 0;
472 
473     size += vn_sizeof_VkStructureType(&val->sType);
474     size += vn_sizeof_VkImageStencilUsageCreateInfo_pnext(val->pNext);
475     size += vn_sizeof_VkImageStencilUsageCreateInfo_self(val);
476 
477     return size;
478 }
479 
480 static inline void
vn_encode_VkImageStencilUsageCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)481 vn_encode_VkImageStencilUsageCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
482 {
483     /* no known/supported struct */
484     vn_encode_simple_pointer(enc, NULL);
485 }
486 
487 static inline void
vn_encode_VkImageStencilUsageCreateInfo_self(struct vn_cs_encoder * enc,const VkImageStencilUsageCreateInfo * val)488 vn_encode_VkImageStencilUsageCreateInfo_self(struct vn_cs_encoder *enc, const VkImageStencilUsageCreateInfo *val)
489 {
490     /* skip val->{sType,pNext} */
491     vn_encode_VkFlags(enc, &val->stencilUsage);
492 }
493 
494 static inline void
vn_encode_VkImageStencilUsageCreateInfo(struct vn_cs_encoder * enc,const VkImageStencilUsageCreateInfo * val)495 vn_encode_VkImageStencilUsageCreateInfo(struct vn_cs_encoder *enc, const VkImageStencilUsageCreateInfo *val)
496 {
497     assert(val->sType == VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO);
498     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO });
499     vn_encode_VkImageStencilUsageCreateInfo_pnext(enc, val->pNext);
500     vn_encode_VkImageStencilUsageCreateInfo_self(enc, val);
501 }
502 
503 /* struct VkComponentMapping */
504 
505 static inline size_t
vn_sizeof_VkComponentMapping(const VkComponentMapping * val)506 vn_sizeof_VkComponentMapping(const VkComponentMapping *val)
507 {
508     size_t size = 0;
509     size += vn_sizeof_VkComponentSwizzle(&val->r);
510     size += vn_sizeof_VkComponentSwizzle(&val->g);
511     size += vn_sizeof_VkComponentSwizzle(&val->b);
512     size += vn_sizeof_VkComponentSwizzle(&val->a);
513     return size;
514 }
515 
516 static inline void
vn_encode_VkComponentMapping(struct vn_cs_encoder * enc,const VkComponentMapping * val)517 vn_encode_VkComponentMapping(struct vn_cs_encoder *enc, const VkComponentMapping *val)
518 {
519     vn_encode_VkComponentSwizzle(enc, &val->r);
520     vn_encode_VkComponentSwizzle(enc, &val->g);
521     vn_encode_VkComponentSwizzle(enc, &val->b);
522     vn_encode_VkComponentSwizzle(enc, &val->a);
523 }
524 
525 static inline void
vn_decode_VkComponentMapping(struct vn_cs_decoder * dec,VkComponentMapping * val)526 vn_decode_VkComponentMapping(struct vn_cs_decoder *dec, VkComponentMapping *val)
527 {
528     vn_decode_VkComponentSwizzle(dec, &val->r);
529     vn_decode_VkComponentSwizzle(dec, &val->g);
530     vn_decode_VkComponentSwizzle(dec, &val->b);
531     vn_decode_VkComponentSwizzle(dec, &val->a);
532 }
533 
534 static inline size_t
vn_sizeof_VkComponentMapping_partial(const VkComponentMapping * val)535 vn_sizeof_VkComponentMapping_partial(const VkComponentMapping *val)
536 {
537     size_t size = 0;
538     /* skip val->r */
539     /* skip val->g */
540     /* skip val->b */
541     /* skip val->a */
542     return size;
543 }
544 
545 static inline void
vn_encode_VkComponentMapping_partial(struct vn_cs_encoder * enc,const VkComponentMapping * val)546 vn_encode_VkComponentMapping_partial(struct vn_cs_encoder *enc, const VkComponentMapping *val)
547 {
548     /* skip val->r */
549     /* skip val->g */
550     /* skip val->b */
551     /* skip val->a */
552 }
553 
554 /* struct VkImageSubresourceRange */
555 
556 static inline size_t
vn_sizeof_VkImageSubresourceRange(const VkImageSubresourceRange * val)557 vn_sizeof_VkImageSubresourceRange(const VkImageSubresourceRange *val)
558 {
559     size_t size = 0;
560     size += vn_sizeof_VkFlags(&val->aspectMask);
561     size += vn_sizeof_uint32_t(&val->baseMipLevel);
562     size += vn_sizeof_uint32_t(&val->levelCount);
563     size += vn_sizeof_uint32_t(&val->baseArrayLayer);
564     size += vn_sizeof_uint32_t(&val->layerCount);
565     return size;
566 }
567 
568 static inline void
vn_encode_VkImageSubresourceRange(struct vn_cs_encoder * enc,const VkImageSubresourceRange * val)569 vn_encode_VkImageSubresourceRange(struct vn_cs_encoder *enc, const VkImageSubresourceRange *val)
570 {
571     vn_encode_VkFlags(enc, &val->aspectMask);
572     vn_encode_uint32_t(enc, &val->baseMipLevel);
573     vn_encode_uint32_t(enc, &val->levelCount);
574     vn_encode_uint32_t(enc, &val->baseArrayLayer);
575     vn_encode_uint32_t(enc, &val->layerCount);
576 }
577 
578 /* struct VkSamplerYcbcrConversionInfo chain */
579 
580 static inline size_t
vn_sizeof_VkSamplerYcbcrConversionInfo_pnext(const void * val)581 vn_sizeof_VkSamplerYcbcrConversionInfo_pnext(const void *val)
582 {
583     /* no known/supported struct */
584     return vn_sizeof_simple_pointer(NULL);
585 }
586 
587 static inline size_t
vn_sizeof_VkSamplerYcbcrConversionInfo_self(const VkSamplerYcbcrConversionInfo * val)588 vn_sizeof_VkSamplerYcbcrConversionInfo_self(const VkSamplerYcbcrConversionInfo *val)
589 {
590     size_t size = 0;
591     /* skip val->{sType,pNext} */
592     size += vn_sizeof_VkSamplerYcbcrConversion(&val->conversion);
593     return size;
594 }
595 
596 static inline size_t
vn_sizeof_VkSamplerYcbcrConversionInfo(const VkSamplerYcbcrConversionInfo * val)597 vn_sizeof_VkSamplerYcbcrConversionInfo(const VkSamplerYcbcrConversionInfo *val)
598 {
599     size_t size = 0;
600 
601     size += vn_sizeof_VkStructureType(&val->sType);
602     size += vn_sizeof_VkSamplerYcbcrConversionInfo_pnext(val->pNext);
603     size += vn_sizeof_VkSamplerYcbcrConversionInfo_self(val);
604 
605     return size;
606 }
607 
608 static inline void
vn_encode_VkSamplerYcbcrConversionInfo_pnext(struct vn_cs_encoder * enc,const void * val)609 vn_encode_VkSamplerYcbcrConversionInfo_pnext(struct vn_cs_encoder *enc, const void *val)
610 {
611     /* no known/supported struct */
612     vn_encode_simple_pointer(enc, NULL);
613 }
614 
615 static inline void
vn_encode_VkSamplerYcbcrConversionInfo_self(struct vn_cs_encoder * enc,const VkSamplerYcbcrConversionInfo * val)616 vn_encode_VkSamplerYcbcrConversionInfo_self(struct vn_cs_encoder *enc, const VkSamplerYcbcrConversionInfo *val)
617 {
618     /* skip val->{sType,pNext} */
619     vn_encode_VkSamplerYcbcrConversion(enc, &val->conversion);
620 }
621 
622 static inline void
vn_encode_VkSamplerYcbcrConversionInfo(struct vn_cs_encoder * enc,const VkSamplerYcbcrConversionInfo * val)623 vn_encode_VkSamplerYcbcrConversionInfo(struct vn_cs_encoder *enc, const VkSamplerYcbcrConversionInfo *val)
624 {
625     assert(val->sType == VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO);
626     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO });
627     vn_encode_VkSamplerYcbcrConversionInfo_pnext(enc, val->pNext);
628     vn_encode_VkSamplerYcbcrConversionInfo_self(enc, val);
629 }
630 
631 /* struct VkShaderModuleCreateInfo chain */
632 
633 static inline size_t
vn_sizeof_VkShaderModuleCreateInfo_pnext(const void * val)634 vn_sizeof_VkShaderModuleCreateInfo_pnext(const void *val)
635 {
636     /* no known/supported struct */
637     return vn_sizeof_simple_pointer(NULL);
638 }
639 
640 static inline size_t
vn_sizeof_VkShaderModuleCreateInfo_self(const VkShaderModuleCreateInfo * val)641 vn_sizeof_VkShaderModuleCreateInfo_self(const VkShaderModuleCreateInfo *val)
642 {
643     size_t size = 0;
644     /* skip val->{sType,pNext} */
645     size += vn_sizeof_VkFlags(&val->flags);
646     size += vn_sizeof_size_t(&val->codeSize);
647     if (val->pCode) {
648         size += vn_sizeof_array_size(val->codeSize / 4);
649         size += vn_sizeof_uint32_t_array(val->pCode, val->codeSize / 4);
650     } else {
651         size += vn_sizeof_array_size(0);
652     }
653     return size;
654 }
655 
656 static inline size_t
vn_sizeof_VkShaderModuleCreateInfo(const VkShaderModuleCreateInfo * val)657 vn_sizeof_VkShaderModuleCreateInfo(const VkShaderModuleCreateInfo *val)
658 {
659     size_t size = 0;
660 
661     size += vn_sizeof_VkStructureType(&val->sType);
662     size += vn_sizeof_VkShaderModuleCreateInfo_pnext(val->pNext);
663     size += vn_sizeof_VkShaderModuleCreateInfo_self(val);
664 
665     return size;
666 }
667 
668 static inline void
vn_encode_VkShaderModuleCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)669 vn_encode_VkShaderModuleCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
670 {
671     /* no known/supported struct */
672     vn_encode_simple_pointer(enc, NULL);
673 }
674 
675 static inline void
vn_encode_VkShaderModuleCreateInfo_self(struct vn_cs_encoder * enc,const VkShaderModuleCreateInfo * val)676 vn_encode_VkShaderModuleCreateInfo_self(struct vn_cs_encoder *enc, const VkShaderModuleCreateInfo *val)
677 {
678     /* skip val->{sType,pNext} */
679     vn_encode_VkFlags(enc, &val->flags);
680     vn_encode_size_t(enc, &val->codeSize);
681     if (val->pCode) {
682         vn_encode_array_size(enc, val->codeSize / 4);
683         vn_encode_uint32_t_array(enc, val->pCode, val->codeSize / 4);
684     } else {
685         vn_encode_array_size(enc, 0);
686     }
687 }
688 
689 static inline void
vn_encode_VkShaderModuleCreateInfo(struct vn_cs_encoder * enc,const VkShaderModuleCreateInfo * val)690 vn_encode_VkShaderModuleCreateInfo(struct vn_cs_encoder *enc, const VkShaderModuleCreateInfo *val)
691 {
692     assert(val->sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO);
693     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO });
694     vn_encode_VkShaderModuleCreateInfo_pnext(enc, val->pNext);
695     vn_encode_VkShaderModuleCreateInfo_self(enc, val);
696 }
697 
698 /* struct VkViewport */
699 
700 static inline size_t
vn_sizeof_VkViewport(const VkViewport * val)701 vn_sizeof_VkViewport(const VkViewport *val)
702 {
703     size_t size = 0;
704     size += vn_sizeof_float(&val->x);
705     size += vn_sizeof_float(&val->y);
706     size += vn_sizeof_float(&val->width);
707     size += vn_sizeof_float(&val->height);
708     size += vn_sizeof_float(&val->minDepth);
709     size += vn_sizeof_float(&val->maxDepth);
710     return size;
711 }
712 
713 static inline void
vn_encode_VkViewport(struct vn_cs_encoder * enc,const VkViewport * val)714 vn_encode_VkViewport(struct vn_cs_encoder *enc, const VkViewport *val)
715 {
716     vn_encode_float(enc, &val->x);
717     vn_encode_float(enc, &val->y);
718     vn_encode_float(enc, &val->width);
719     vn_encode_float(enc, &val->height);
720     vn_encode_float(enc, &val->minDepth);
721     vn_encode_float(enc, &val->maxDepth);
722 }
723 
724 /* struct VkOffset2D */
725 
726 static inline size_t
vn_sizeof_VkOffset2D(const VkOffset2D * val)727 vn_sizeof_VkOffset2D(const VkOffset2D *val)
728 {
729     size_t size = 0;
730     size += vn_sizeof_int32_t(&val->x);
731     size += vn_sizeof_int32_t(&val->y);
732     return size;
733 }
734 
735 static inline void
vn_encode_VkOffset2D(struct vn_cs_encoder * enc,const VkOffset2D * val)736 vn_encode_VkOffset2D(struct vn_cs_encoder *enc, const VkOffset2D *val)
737 {
738     vn_encode_int32_t(enc, &val->x);
739     vn_encode_int32_t(enc, &val->y);
740 }
741 
742 static inline void
vn_decode_VkOffset2D(struct vn_cs_decoder * dec,VkOffset2D * val)743 vn_decode_VkOffset2D(struct vn_cs_decoder *dec, VkOffset2D *val)
744 {
745     vn_decode_int32_t(dec, &val->x);
746     vn_decode_int32_t(dec, &val->y);
747 }
748 
749 static inline size_t
vn_sizeof_VkOffset2D_partial(const VkOffset2D * val)750 vn_sizeof_VkOffset2D_partial(const VkOffset2D *val)
751 {
752     size_t size = 0;
753     /* skip val->x */
754     /* skip val->y */
755     return size;
756 }
757 
758 static inline void
vn_encode_VkOffset2D_partial(struct vn_cs_encoder * enc,const VkOffset2D * val)759 vn_encode_VkOffset2D_partial(struct vn_cs_encoder *enc, const VkOffset2D *val)
760 {
761     /* skip val->x */
762     /* skip val->y */
763 }
764 
765 /* struct VkExtent2D */
766 
767 static inline size_t
vn_sizeof_VkExtent2D(const VkExtent2D * val)768 vn_sizeof_VkExtent2D(const VkExtent2D *val)
769 {
770     size_t size = 0;
771     size += vn_sizeof_uint32_t(&val->width);
772     size += vn_sizeof_uint32_t(&val->height);
773     return size;
774 }
775 
776 static inline void
vn_encode_VkExtent2D(struct vn_cs_encoder * enc,const VkExtent2D * val)777 vn_encode_VkExtent2D(struct vn_cs_encoder *enc, const VkExtent2D *val)
778 {
779     vn_encode_uint32_t(enc, &val->width);
780     vn_encode_uint32_t(enc, &val->height);
781 }
782 
783 static inline void
vn_decode_VkExtent2D(struct vn_cs_decoder * dec,VkExtent2D * val)784 vn_decode_VkExtent2D(struct vn_cs_decoder *dec, VkExtent2D *val)
785 {
786     vn_decode_uint32_t(dec, &val->width);
787     vn_decode_uint32_t(dec, &val->height);
788 }
789 
790 static inline size_t
vn_sizeof_VkExtent2D_partial(const VkExtent2D * val)791 vn_sizeof_VkExtent2D_partial(const VkExtent2D *val)
792 {
793     size_t size = 0;
794     /* skip val->width */
795     /* skip val->height */
796     return size;
797 }
798 
799 static inline void
vn_encode_VkExtent2D_partial(struct vn_cs_encoder * enc,const VkExtent2D * val)800 vn_encode_VkExtent2D_partial(struct vn_cs_encoder *enc, const VkExtent2D *val)
801 {
802     /* skip val->width */
803     /* skip val->height */
804 }
805 
806 /* struct VkRect2D */
807 
808 static inline size_t
vn_sizeof_VkRect2D(const VkRect2D * val)809 vn_sizeof_VkRect2D(const VkRect2D *val)
810 {
811     size_t size = 0;
812     size += vn_sizeof_VkOffset2D(&val->offset);
813     size += vn_sizeof_VkExtent2D(&val->extent);
814     return size;
815 }
816 
817 static inline void
vn_encode_VkRect2D(struct vn_cs_encoder * enc,const VkRect2D * val)818 vn_encode_VkRect2D(struct vn_cs_encoder *enc, const VkRect2D *val)
819 {
820     vn_encode_VkOffset2D(enc, &val->offset);
821     vn_encode_VkExtent2D(enc, &val->extent);
822 }
823 
824 static inline void
vn_decode_VkRect2D(struct vn_cs_decoder * dec,VkRect2D * val)825 vn_decode_VkRect2D(struct vn_cs_decoder *dec, VkRect2D *val)
826 {
827     vn_decode_VkOffset2D(dec, &val->offset);
828     vn_decode_VkExtent2D(dec, &val->extent);
829 }
830 
831 static inline size_t
vn_sizeof_VkRect2D_partial(const VkRect2D * val)832 vn_sizeof_VkRect2D_partial(const VkRect2D *val)
833 {
834     size_t size = 0;
835     size += vn_sizeof_VkOffset2D_partial(&val->offset);
836     size += vn_sizeof_VkExtent2D_partial(&val->extent);
837     return size;
838 }
839 
840 static inline void
vn_encode_VkRect2D_partial(struct vn_cs_encoder * enc,const VkRect2D * val)841 vn_encode_VkRect2D_partial(struct vn_cs_encoder *enc, const VkRect2D *val)
842 {
843     vn_encode_VkOffset2D_partial(enc, &val->offset);
844     vn_encode_VkExtent2D_partial(enc, &val->extent);
845 }
846 
847 /* union VkClearColorValue */
848 
849 static inline size_t
vn_sizeof_VkClearColorValue_tag(const VkClearColorValue * val,uint32_t tag)850 vn_sizeof_VkClearColorValue_tag(const VkClearColorValue *val, uint32_t tag)
851 {
852     size_t size = vn_sizeof_uint32_t(&tag);
853     switch (tag) {
854     case 0:
855         size += vn_sizeof_array_size(4);
856         size += vn_sizeof_float_array(val->float32, 4);
857         break;
858     case 1:
859         size += vn_sizeof_array_size(4);
860         size += vn_sizeof_int32_t_array(val->int32, 4);
861         break;
862     case 2:
863         size += vn_sizeof_array_size(4);
864         size += vn_sizeof_uint32_t_array(val->uint32, 4);
865         break;
866     default:
867         assert(false);
868         break;
869     }
870     return size;
871 }
872 
873 static inline size_t
vn_sizeof_VkClearColorValue(const VkClearColorValue * val)874 vn_sizeof_VkClearColorValue(const VkClearColorValue *val)
875 {
876     return vn_sizeof_VkClearColorValue_tag(val, 2);
877 }
878 
879 static inline void
vn_encode_VkClearColorValue_tag(struct vn_cs_encoder * enc,const VkClearColorValue * val,uint32_t tag)880 vn_encode_VkClearColorValue_tag(struct vn_cs_encoder *enc, const VkClearColorValue *val, uint32_t tag)
881 {
882     vn_encode_uint32_t(enc, &tag);
883     switch (tag) {
884     case 0:
885         vn_encode_array_size(enc, 4);
886         vn_encode_float_array(enc, val->float32, 4);
887         break;
888     case 1:
889         vn_encode_array_size(enc, 4);
890         vn_encode_int32_t_array(enc, val->int32, 4);
891         break;
892     case 2:
893         vn_encode_array_size(enc, 4);
894         vn_encode_uint32_t_array(enc, val->uint32, 4);
895         break;
896     default:
897         assert(false);
898         break;
899     }
900 }
901 
902 static inline void
vn_encode_VkClearColorValue(struct vn_cs_encoder * enc,const VkClearColorValue * val)903 vn_encode_VkClearColorValue(struct vn_cs_encoder *enc, const VkClearColorValue *val)
904 {
905     vn_encode_VkClearColorValue_tag(enc, val, 2); /* union with default tag */
906 }
907 
908 /* struct VkMutableDescriptorTypeListEXT */
909 
910 static inline size_t
vn_sizeof_VkMutableDescriptorTypeListEXT(const VkMutableDescriptorTypeListEXT * val)911 vn_sizeof_VkMutableDescriptorTypeListEXT(const VkMutableDescriptorTypeListEXT *val)
912 {
913     size_t size = 0;
914     size += vn_sizeof_uint32_t(&val->descriptorTypeCount);
915     if (val->pDescriptorTypes) {
916         size += vn_sizeof_array_size(val->descriptorTypeCount);
917         size += vn_sizeof_VkDescriptorType_array(val->pDescriptorTypes, val->descriptorTypeCount);
918     } else {
919         size += vn_sizeof_array_size(0);
920     }
921     return size;
922 }
923 
924 static inline void
vn_encode_VkMutableDescriptorTypeListEXT(struct vn_cs_encoder * enc,const VkMutableDescriptorTypeListEXT * val)925 vn_encode_VkMutableDescriptorTypeListEXT(struct vn_cs_encoder *enc, const VkMutableDescriptorTypeListEXT *val)
926 {
927     vn_encode_uint32_t(enc, &val->descriptorTypeCount);
928     if (val->pDescriptorTypes) {
929         vn_encode_array_size(enc, val->descriptorTypeCount);
930         vn_encode_VkDescriptorType_array(enc, val->pDescriptorTypes, val->descriptorTypeCount);
931     } else {
932         vn_encode_array_size(enc, 0);
933     }
934 }
935 
936 /* struct VkMutableDescriptorTypeCreateInfoEXT chain */
937 
938 static inline size_t
vn_sizeof_VkMutableDescriptorTypeCreateInfoEXT_pnext(const void * val)939 vn_sizeof_VkMutableDescriptorTypeCreateInfoEXT_pnext(const void *val)
940 {
941     /* no known/supported struct */
942     return vn_sizeof_simple_pointer(NULL);
943 }
944 
945 static inline size_t
vn_sizeof_VkMutableDescriptorTypeCreateInfoEXT_self(const VkMutableDescriptorTypeCreateInfoEXT * val)946 vn_sizeof_VkMutableDescriptorTypeCreateInfoEXT_self(const VkMutableDescriptorTypeCreateInfoEXT *val)
947 {
948     size_t size = 0;
949     /* skip val->{sType,pNext} */
950     size += vn_sizeof_uint32_t(&val->mutableDescriptorTypeListCount);
951     if (val->pMutableDescriptorTypeLists) {
952         size += vn_sizeof_array_size(val->mutableDescriptorTypeListCount);
953         for (uint32_t i = 0; i < val->mutableDescriptorTypeListCount; i++)
954             size += vn_sizeof_VkMutableDescriptorTypeListEXT(&val->pMutableDescriptorTypeLists[i]);
955     } else {
956         size += vn_sizeof_array_size(0);
957     }
958     return size;
959 }
960 
961 static inline size_t
vn_sizeof_VkMutableDescriptorTypeCreateInfoEXT(const VkMutableDescriptorTypeCreateInfoEXT * val)962 vn_sizeof_VkMutableDescriptorTypeCreateInfoEXT(const VkMutableDescriptorTypeCreateInfoEXT *val)
963 {
964     size_t size = 0;
965 
966     size += vn_sizeof_VkStructureType(&val->sType);
967     size += vn_sizeof_VkMutableDescriptorTypeCreateInfoEXT_pnext(val->pNext);
968     size += vn_sizeof_VkMutableDescriptorTypeCreateInfoEXT_self(val);
969 
970     return size;
971 }
972 
973 static inline void
vn_encode_VkMutableDescriptorTypeCreateInfoEXT_pnext(struct vn_cs_encoder * enc,const void * val)974 vn_encode_VkMutableDescriptorTypeCreateInfoEXT_pnext(struct vn_cs_encoder *enc, const void *val)
975 {
976     /* no known/supported struct */
977     vn_encode_simple_pointer(enc, NULL);
978 }
979 
980 static inline void
vn_encode_VkMutableDescriptorTypeCreateInfoEXT_self(struct vn_cs_encoder * enc,const VkMutableDescriptorTypeCreateInfoEXT * val)981 vn_encode_VkMutableDescriptorTypeCreateInfoEXT_self(struct vn_cs_encoder *enc, const VkMutableDescriptorTypeCreateInfoEXT *val)
982 {
983     /* skip val->{sType,pNext} */
984     vn_encode_uint32_t(enc, &val->mutableDescriptorTypeListCount);
985     if (val->pMutableDescriptorTypeLists) {
986         vn_encode_array_size(enc, val->mutableDescriptorTypeListCount);
987         for (uint32_t i = 0; i < val->mutableDescriptorTypeListCount; i++)
988             vn_encode_VkMutableDescriptorTypeListEXT(enc, &val->pMutableDescriptorTypeLists[i]);
989     } else {
990         vn_encode_array_size(enc, 0);
991     }
992 }
993 
994 static inline void
vn_encode_VkMutableDescriptorTypeCreateInfoEXT(struct vn_cs_encoder * enc,const VkMutableDescriptorTypeCreateInfoEXT * val)995 vn_encode_VkMutableDescriptorTypeCreateInfoEXT(struct vn_cs_encoder *enc, const VkMutableDescriptorTypeCreateInfoEXT *val)
996 {
997     assert(val->sType == VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT);
998     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT });
999     vn_encode_VkMutableDescriptorTypeCreateInfoEXT_pnext(enc, val->pNext);
1000     vn_encode_VkMutableDescriptorTypeCreateInfoEXT_self(enc, val);
1001 }
1002 
1003 /* struct VkDescriptorImageInfo */
1004 
1005 static inline size_t
vn_sizeof_VkDescriptorImageInfo(const VkDescriptorImageInfo * val)1006 vn_sizeof_VkDescriptorImageInfo(const VkDescriptorImageInfo *val)
1007 {
1008     size_t size = 0;
1009     size += vn_sizeof_VkSampler(&val->sampler);
1010     size += vn_sizeof_VkImageView(&val->imageView);
1011     size += vn_sizeof_VkImageLayout(&val->imageLayout);
1012     return size;
1013 }
1014 
1015 static inline void
vn_encode_VkDescriptorImageInfo(struct vn_cs_encoder * enc,const VkDescriptorImageInfo * val)1016 vn_encode_VkDescriptorImageInfo(struct vn_cs_encoder *enc, const VkDescriptorImageInfo *val)
1017 {
1018     vn_encode_VkSampler(enc, &val->sampler);
1019     vn_encode_VkImageView(enc, &val->imageView);
1020     vn_encode_VkImageLayout(enc, &val->imageLayout);
1021 }
1022 
1023 /* struct VkDescriptorBufferInfo */
1024 
1025 static inline size_t
vn_sizeof_VkDescriptorBufferInfo(const VkDescriptorBufferInfo * val)1026 vn_sizeof_VkDescriptorBufferInfo(const VkDescriptorBufferInfo *val)
1027 {
1028     size_t size = 0;
1029     size += vn_sizeof_VkBuffer(&val->buffer);
1030     size += vn_sizeof_VkDeviceSize(&val->offset);
1031     size += vn_sizeof_VkDeviceSize(&val->range);
1032     return size;
1033 }
1034 
1035 static inline void
vn_encode_VkDescriptorBufferInfo(struct vn_cs_encoder * enc,const VkDescriptorBufferInfo * val)1036 vn_encode_VkDescriptorBufferInfo(struct vn_cs_encoder *enc, const VkDescriptorBufferInfo *val)
1037 {
1038     vn_encode_VkBuffer(enc, &val->buffer);
1039     vn_encode_VkDeviceSize(enc, &val->offset);
1040     vn_encode_VkDeviceSize(enc, &val->range);
1041 }
1042 
1043 /* struct VkWriteDescriptorSetInlineUniformBlock chain */
1044 
1045 static inline size_t
vn_sizeof_VkWriteDescriptorSetInlineUniformBlock_pnext(const void * val)1046 vn_sizeof_VkWriteDescriptorSetInlineUniformBlock_pnext(const void *val)
1047 {
1048     /* no known/supported struct */
1049     return vn_sizeof_simple_pointer(NULL);
1050 }
1051 
1052 static inline size_t
vn_sizeof_VkWriteDescriptorSetInlineUniformBlock_self(const VkWriteDescriptorSetInlineUniformBlock * val)1053 vn_sizeof_VkWriteDescriptorSetInlineUniformBlock_self(const VkWriteDescriptorSetInlineUniformBlock *val)
1054 {
1055     size_t size = 0;
1056     /* skip val->{sType,pNext} */
1057     size += vn_sizeof_uint32_t(&val->dataSize);
1058     if (val->pData) {
1059         size += vn_sizeof_array_size(val->dataSize);
1060         size += vn_sizeof_blob_array(val->pData, val->dataSize);
1061     } else {
1062         size += vn_sizeof_array_size(0);
1063     }
1064     return size;
1065 }
1066 
1067 static inline size_t
vn_sizeof_VkWriteDescriptorSetInlineUniformBlock(const VkWriteDescriptorSetInlineUniformBlock * val)1068 vn_sizeof_VkWriteDescriptorSetInlineUniformBlock(const VkWriteDescriptorSetInlineUniformBlock *val)
1069 {
1070     size_t size = 0;
1071 
1072     size += vn_sizeof_VkStructureType(&val->sType);
1073     size += vn_sizeof_VkWriteDescriptorSetInlineUniformBlock_pnext(val->pNext);
1074     size += vn_sizeof_VkWriteDescriptorSetInlineUniformBlock_self(val);
1075 
1076     return size;
1077 }
1078 
1079 static inline void
vn_encode_VkWriteDescriptorSetInlineUniformBlock_pnext(struct vn_cs_encoder * enc,const void * val)1080 vn_encode_VkWriteDescriptorSetInlineUniformBlock_pnext(struct vn_cs_encoder *enc, const void *val)
1081 {
1082     /* no known/supported struct */
1083     vn_encode_simple_pointer(enc, NULL);
1084 }
1085 
1086 static inline void
vn_encode_VkWriteDescriptorSetInlineUniformBlock_self(struct vn_cs_encoder * enc,const VkWriteDescriptorSetInlineUniformBlock * val)1087 vn_encode_VkWriteDescriptorSetInlineUniformBlock_self(struct vn_cs_encoder *enc, const VkWriteDescriptorSetInlineUniformBlock *val)
1088 {
1089     /* skip val->{sType,pNext} */
1090     vn_encode_uint32_t(enc, &val->dataSize);
1091     if (val->pData) {
1092         vn_encode_array_size(enc, val->dataSize);
1093         vn_encode_blob_array(enc, val->pData, val->dataSize);
1094     } else {
1095         vn_encode_array_size(enc, 0);
1096     }
1097 }
1098 
1099 static inline void
vn_encode_VkWriteDescriptorSetInlineUniformBlock(struct vn_cs_encoder * enc,const VkWriteDescriptorSetInlineUniformBlock * val)1100 vn_encode_VkWriteDescriptorSetInlineUniformBlock(struct vn_cs_encoder *enc, const VkWriteDescriptorSetInlineUniformBlock *val)
1101 {
1102     assert(val->sType == VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK);
1103     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK });
1104     vn_encode_VkWriteDescriptorSetInlineUniformBlock_pnext(enc, val->pNext);
1105     vn_encode_VkWriteDescriptorSetInlineUniformBlock_self(enc, val);
1106 }
1107 
1108 /* struct VkWriteDescriptorSet chain */
1109 
1110 static inline size_t
vn_sizeof_VkWriteDescriptorSet_pnext(const void * val)1111 vn_sizeof_VkWriteDescriptorSet_pnext(const void *val)
1112 {
1113     const VkBaseInStructure *pnext = val;
1114     size_t size = 0;
1115 
1116     while (pnext) {
1117         switch ((int32_t)pnext->sType) {
1118         case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK:
1119             if (!vn_cs_renderer_protocol_has_extension(139 /* VK_EXT_inline_uniform_block */))
1120                 break;
1121             size += vn_sizeof_simple_pointer(pnext);
1122             size += vn_sizeof_VkStructureType(&pnext->sType);
1123             size += vn_sizeof_VkWriteDescriptorSet_pnext(pnext->pNext);
1124             size += vn_sizeof_VkWriteDescriptorSetInlineUniformBlock_self((const VkWriteDescriptorSetInlineUniformBlock *)pnext);
1125             return size;
1126         default:
1127             /* ignore unknown/unsupported struct */
1128             break;
1129         }
1130         pnext = pnext->pNext;
1131     }
1132 
1133     return vn_sizeof_simple_pointer(NULL);
1134 }
1135 
1136 static inline size_t
vn_sizeof_VkWriteDescriptorSet_self(const VkWriteDescriptorSet * val)1137 vn_sizeof_VkWriteDescriptorSet_self(const VkWriteDescriptorSet *val)
1138 {
1139     size_t size = 0;
1140     /* skip val->{sType,pNext} */
1141     size += vn_sizeof_VkDescriptorSet(&val->dstSet);
1142     size += vn_sizeof_uint32_t(&val->dstBinding);
1143     size += vn_sizeof_uint32_t(&val->dstArrayElement);
1144     size += vn_sizeof_uint32_t(&val->descriptorCount);
1145     size += vn_sizeof_VkDescriptorType(&val->descriptorType);
1146     if (val->pImageInfo) {
1147         size += vn_sizeof_array_size(val->descriptorCount);
1148         for (uint32_t i = 0; i < val->descriptorCount; i++)
1149             size += vn_sizeof_VkDescriptorImageInfo(&val->pImageInfo[i]);
1150     } else {
1151         size += vn_sizeof_array_size(0);
1152     }
1153     if (val->pBufferInfo) {
1154         size += vn_sizeof_array_size(val->descriptorCount);
1155         for (uint32_t i = 0; i < val->descriptorCount; i++)
1156             size += vn_sizeof_VkDescriptorBufferInfo(&val->pBufferInfo[i]);
1157     } else {
1158         size += vn_sizeof_array_size(0);
1159     }
1160     if (val->pTexelBufferView) {
1161         size += vn_sizeof_array_size(val->descriptorCount);
1162         for (uint32_t i = 0; i < val->descriptorCount; i++)
1163             size += vn_sizeof_VkBufferView(&val->pTexelBufferView[i]);
1164     } else {
1165         size += vn_sizeof_array_size(0);
1166     }
1167     return size;
1168 }
1169 
1170 static inline size_t
vn_sizeof_VkWriteDescriptorSet(const VkWriteDescriptorSet * val)1171 vn_sizeof_VkWriteDescriptorSet(const VkWriteDescriptorSet *val)
1172 {
1173     size_t size = 0;
1174 
1175     size += vn_sizeof_VkStructureType(&val->sType);
1176     size += vn_sizeof_VkWriteDescriptorSet_pnext(val->pNext);
1177     size += vn_sizeof_VkWriteDescriptorSet_self(val);
1178 
1179     return size;
1180 }
1181 
1182 static inline void
vn_encode_VkWriteDescriptorSet_pnext(struct vn_cs_encoder * enc,const void * val)1183 vn_encode_VkWriteDescriptorSet_pnext(struct vn_cs_encoder *enc, const void *val)
1184 {
1185     const VkBaseInStructure *pnext = val;
1186 
1187     while (pnext) {
1188         switch ((int32_t)pnext->sType) {
1189         case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK:
1190             if (!vn_cs_renderer_protocol_has_extension(139 /* VK_EXT_inline_uniform_block */))
1191                 break;
1192             vn_encode_simple_pointer(enc, pnext);
1193             vn_encode_VkStructureType(enc, &pnext->sType);
1194             vn_encode_VkWriteDescriptorSet_pnext(enc, pnext->pNext);
1195             vn_encode_VkWriteDescriptorSetInlineUniformBlock_self(enc, (const VkWriteDescriptorSetInlineUniformBlock *)pnext);
1196             return;
1197         default:
1198             /* ignore unknown/unsupported struct */
1199             break;
1200         }
1201         pnext = pnext->pNext;
1202     }
1203 
1204     vn_encode_simple_pointer(enc, NULL);
1205 }
1206 
1207 static inline void
vn_encode_VkWriteDescriptorSet_self(struct vn_cs_encoder * enc,const VkWriteDescriptorSet * val)1208 vn_encode_VkWriteDescriptorSet_self(struct vn_cs_encoder *enc, const VkWriteDescriptorSet *val)
1209 {
1210     /* skip val->{sType,pNext} */
1211     vn_encode_VkDescriptorSet(enc, &val->dstSet);
1212     vn_encode_uint32_t(enc, &val->dstBinding);
1213     vn_encode_uint32_t(enc, &val->dstArrayElement);
1214     vn_encode_uint32_t(enc, &val->descriptorCount);
1215     vn_encode_VkDescriptorType(enc, &val->descriptorType);
1216     if (val->pImageInfo) {
1217         vn_encode_array_size(enc, val->descriptorCount);
1218         for (uint32_t i = 0; i < val->descriptorCount; i++)
1219             vn_encode_VkDescriptorImageInfo(enc, &val->pImageInfo[i]);
1220     } else {
1221         vn_encode_array_size(enc, 0);
1222     }
1223     if (val->pBufferInfo) {
1224         vn_encode_array_size(enc, val->descriptorCount);
1225         for (uint32_t i = 0; i < val->descriptorCount; i++)
1226             vn_encode_VkDescriptorBufferInfo(enc, &val->pBufferInfo[i]);
1227     } else {
1228         vn_encode_array_size(enc, 0);
1229     }
1230     if (val->pTexelBufferView) {
1231         vn_encode_array_size(enc, val->descriptorCount);
1232         for (uint32_t i = 0; i < val->descriptorCount; i++)
1233             vn_encode_VkBufferView(enc, &val->pTexelBufferView[i]);
1234     } else {
1235         vn_encode_array_size(enc, 0);
1236     }
1237 }
1238 
1239 static inline void
vn_encode_VkWriteDescriptorSet(struct vn_cs_encoder * enc,const VkWriteDescriptorSet * val)1240 vn_encode_VkWriteDescriptorSet(struct vn_cs_encoder *enc, const VkWriteDescriptorSet *val)
1241 {
1242     assert(val->sType == VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET);
1243     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET });
1244     vn_encode_VkWriteDescriptorSet_pnext(enc, val->pNext);
1245     vn_encode_VkWriteDescriptorSet_self(enc, val);
1246 }
1247 
1248 /* struct VkMemoryDedicatedRequirements chain */
1249 
1250 static inline size_t
vn_sizeof_VkMemoryDedicatedRequirements_pnext(const void * val)1251 vn_sizeof_VkMemoryDedicatedRequirements_pnext(const void *val)
1252 {
1253     /* no known/supported struct */
1254     return vn_sizeof_simple_pointer(NULL);
1255 }
1256 
1257 static inline size_t
vn_sizeof_VkMemoryDedicatedRequirements_self(const VkMemoryDedicatedRequirements * val)1258 vn_sizeof_VkMemoryDedicatedRequirements_self(const VkMemoryDedicatedRequirements *val)
1259 {
1260     size_t size = 0;
1261     /* skip val->{sType,pNext} */
1262     size += vn_sizeof_VkBool32(&val->prefersDedicatedAllocation);
1263     size += vn_sizeof_VkBool32(&val->requiresDedicatedAllocation);
1264     return size;
1265 }
1266 
1267 static inline size_t
vn_sizeof_VkMemoryDedicatedRequirements(const VkMemoryDedicatedRequirements * val)1268 vn_sizeof_VkMemoryDedicatedRequirements(const VkMemoryDedicatedRequirements *val)
1269 {
1270     size_t size = 0;
1271 
1272     size += vn_sizeof_VkStructureType(&val->sType);
1273     size += vn_sizeof_VkMemoryDedicatedRequirements_pnext(val->pNext);
1274     size += vn_sizeof_VkMemoryDedicatedRequirements_self(val);
1275 
1276     return size;
1277 }
1278 
1279 static inline void
vn_decode_VkMemoryDedicatedRequirements_pnext(struct vn_cs_decoder * dec,const void * val)1280 vn_decode_VkMemoryDedicatedRequirements_pnext(struct vn_cs_decoder *dec, const void *val)
1281 {
1282     /* no known/supported struct */
1283     if (vn_decode_simple_pointer(dec))
1284         assert(false);
1285 }
1286 
1287 static inline void
vn_decode_VkMemoryDedicatedRequirements_self(struct vn_cs_decoder * dec,VkMemoryDedicatedRequirements * val)1288 vn_decode_VkMemoryDedicatedRequirements_self(struct vn_cs_decoder *dec, VkMemoryDedicatedRequirements *val)
1289 {
1290     /* skip val->{sType,pNext} */
1291     vn_decode_VkBool32(dec, &val->prefersDedicatedAllocation);
1292     vn_decode_VkBool32(dec, &val->requiresDedicatedAllocation);
1293 }
1294 
1295 static inline void
vn_decode_VkMemoryDedicatedRequirements(struct vn_cs_decoder * dec,VkMemoryDedicatedRequirements * val)1296 vn_decode_VkMemoryDedicatedRequirements(struct vn_cs_decoder *dec, VkMemoryDedicatedRequirements *val)
1297 {
1298     VkStructureType stype;
1299     vn_decode_VkStructureType(dec, &stype);
1300     assert(stype == VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS);
1301 
1302     assert(val->sType == stype);
1303     vn_decode_VkMemoryDedicatedRequirements_pnext(dec, val->pNext);
1304     vn_decode_VkMemoryDedicatedRequirements_self(dec, val);
1305 }
1306 
1307 static inline size_t
vn_sizeof_VkMemoryDedicatedRequirements_pnext_partial(const void * val)1308 vn_sizeof_VkMemoryDedicatedRequirements_pnext_partial(const void *val)
1309 {
1310     /* no known/supported struct */
1311     return vn_sizeof_simple_pointer(NULL);
1312 }
1313 
1314 static inline size_t
vn_sizeof_VkMemoryDedicatedRequirements_self_partial(const VkMemoryDedicatedRequirements * val)1315 vn_sizeof_VkMemoryDedicatedRequirements_self_partial(const VkMemoryDedicatedRequirements *val)
1316 {
1317     size_t size = 0;
1318     /* skip val->{sType,pNext} */
1319     /* skip val->prefersDedicatedAllocation */
1320     /* skip val->requiresDedicatedAllocation */
1321     return size;
1322 }
1323 
1324 static inline size_t
vn_sizeof_VkMemoryDedicatedRequirements_partial(const VkMemoryDedicatedRequirements * val)1325 vn_sizeof_VkMemoryDedicatedRequirements_partial(const VkMemoryDedicatedRequirements *val)
1326 {
1327     size_t size = 0;
1328 
1329     size += vn_sizeof_VkStructureType(&val->sType);
1330     size += vn_sizeof_VkMemoryDedicatedRequirements_pnext_partial(val->pNext);
1331     size += vn_sizeof_VkMemoryDedicatedRequirements_self_partial(val);
1332 
1333     return size;
1334 }
1335 
1336 static inline void
vn_encode_VkMemoryDedicatedRequirements_pnext_partial(struct vn_cs_encoder * enc,const void * val)1337 vn_encode_VkMemoryDedicatedRequirements_pnext_partial(struct vn_cs_encoder *enc, const void *val)
1338 {
1339     /* no known/supported struct */
1340     vn_encode_simple_pointer(enc, NULL);
1341 }
1342 
1343 static inline void
vn_encode_VkMemoryDedicatedRequirements_self_partial(struct vn_cs_encoder * enc,const VkMemoryDedicatedRequirements * val)1344 vn_encode_VkMemoryDedicatedRequirements_self_partial(struct vn_cs_encoder *enc, const VkMemoryDedicatedRequirements *val)
1345 {
1346     /* skip val->{sType,pNext} */
1347     /* skip val->prefersDedicatedAllocation */
1348     /* skip val->requiresDedicatedAllocation */
1349 }
1350 
1351 static inline void
vn_encode_VkMemoryDedicatedRequirements_partial(struct vn_cs_encoder * enc,const VkMemoryDedicatedRequirements * val)1352 vn_encode_VkMemoryDedicatedRequirements_partial(struct vn_cs_encoder *enc, const VkMemoryDedicatedRequirements *val)
1353 {
1354     assert(val->sType == VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS);
1355     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS });
1356     vn_encode_VkMemoryDedicatedRequirements_pnext_partial(enc, val->pNext);
1357     vn_encode_VkMemoryDedicatedRequirements_self_partial(enc, val);
1358 }
1359 
1360 /* struct VkMemoryRequirements2 chain */
1361 
1362 static inline size_t
vn_sizeof_VkMemoryRequirements2_pnext(const void * val)1363 vn_sizeof_VkMemoryRequirements2_pnext(const void *val)
1364 {
1365     const VkBaseInStructure *pnext = val;
1366     size_t size = 0;
1367 
1368     while (pnext) {
1369         switch ((int32_t)pnext->sType) {
1370         case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
1371             size += vn_sizeof_simple_pointer(pnext);
1372             size += vn_sizeof_VkStructureType(&pnext->sType);
1373             size += vn_sizeof_VkMemoryRequirements2_pnext(pnext->pNext);
1374             size += vn_sizeof_VkMemoryDedicatedRequirements_self((const VkMemoryDedicatedRequirements *)pnext);
1375             return size;
1376         default:
1377             /* ignore unknown/unsupported struct */
1378             break;
1379         }
1380         pnext = pnext->pNext;
1381     }
1382 
1383     return vn_sizeof_simple_pointer(NULL);
1384 }
1385 
1386 static inline size_t
vn_sizeof_VkMemoryRequirements2_self(const VkMemoryRequirements2 * val)1387 vn_sizeof_VkMemoryRequirements2_self(const VkMemoryRequirements2 *val)
1388 {
1389     size_t size = 0;
1390     /* skip val->{sType,pNext} */
1391     size += vn_sizeof_VkMemoryRequirements(&val->memoryRequirements);
1392     return size;
1393 }
1394 
1395 static inline size_t
vn_sizeof_VkMemoryRequirements2(const VkMemoryRequirements2 * val)1396 vn_sizeof_VkMemoryRequirements2(const VkMemoryRequirements2 *val)
1397 {
1398     size_t size = 0;
1399 
1400     size += vn_sizeof_VkStructureType(&val->sType);
1401     size += vn_sizeof_VkMemoryRequirements2_pnext(val->pNext);
1402     size += vn_sizeof_VkMemoryRequirements2_self(val);
1403 
1404     return size;
1405 }
1406 
1407 static inline void
vn_decode_VkMemoryRequirements2_pnext(struct vn_cs_decoder * dec,const void * val)1408 vn_decode_VkMemoryRequirements2_pnext(struct vn_cs_decoder *dec, const void *val)
1409 {
1410     VkBaseOutStructure *pnext = (VkBaseOutStructure *)val;
1411     VkStructureType stype;
1412 
1413     if (!vn_decode_simple_pointer(dec))
1414         return;
1415 
1416     vn_decode_VkStructureType(dec, &stype);
1417     while (true) {
1418         assert(pnext);
1419         if (pnext->sType == stype)
1420             break;
1421 
1422         pnext = pnext->pNext;
1423     }
1424 
1425     switch ((int32_t)pnext->sType) {
1426     case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
1427         vn_decode_VkMemoryRequirements2_pnext(dec, pnext->pNext);
1428         vn_decode_VkMemoryDedicatedRequirements_self(dec, (VkMemoryDedicatedRequirements *)pnext);
1429         break;
1430     default:
1431         assert(false);
1432         break;
1433     }
1434 }
1435 
1436 static inline void
vn_decode_VkMemoryRequirements2_self(struct vn_cs_decoder * dec,VkMemoryRequirements2 * val)1437 vn_decode_VkMemoryRequirements2_self(struct vn_cs_decoder *dec, VkMemoryRequirements2 *val)
1438 {
1439     /* skip val->{sType,pNext} */
1440     vn_decode_VkMemoryRequirements(dec, &val->memoryRequirements);
1441 }
1442 
1443 static inline void
vn_decode_VkMemoryRequirements2(struct vn_cs_decoder * dec,VkMemoryRequirements2 * val)1444 vn_decode_VkMemoryRequirements2(struct vn_cs_decoder *dec, VkMemoryRequirements2 *val)
1445 {
1446     VkStructureType stype;
1447     vn_decode_VkStructureType(dec, &stype);
1448     assert(stype == VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2);
1449 
1450     assert(val->sType == stype);
1451     vn_decode_VkMemoryRequirements2_pnext(dec, val->pNext);
1452     vn_decode_VkMemoryRequirements2_self(dec, val);
1453 }
1454 
1455 static inline size_t
vn_sizeof_VkMemoryRequirements2_pnext_partial(const void * val)1456 vn_sizeof_VkMemoryRequirements2_pnext_partial(const void *val)
1457 {
1458     const VkBaseInStructure *pnext = val;
1459     size_t size = 0;
1460 
1461     while (pnext) {
1462         switch ((int32_t)pnext->sType) {
1463         case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
1464             size += vn_sizeof_simple_pointer(pnext);
1465             size += vn_sizeof_VkStructureType(&pnext->sType);
1466             size += vn_sizeof_VkMemoryRequirements2_pnext_partial(pnext->pNext);
1467             size += vn_sizeof_VkMemoryDedicatedRequirements_self_partial((const VkMemoryDedicatedRequirements *)pnext);
1468             return size;
1469         default:
1470             /* ignore unknown/unsupported struct */
1471             break;
1472         }
1473         pnext = pnext->pNext;
1474     }
1475 
1476     return vn_sizeof_simple_pointer(NULL);
1477 }
1478 
1479 static inline size_t
vn_sizeof_VkMemoryRequirements2_self_partial(const VkMemoryRequirements2 * val)1480 vn_sizeof_VkMemoryRequirements2_self_partial(const VkMemoryRequirements2 *val)
1481 {
1482     size_t size = 0;
1483     /* skip val->{sType,pNext} */
1484     size += vn_sizeof_VkMemoryRequirements_partial(&val->memoryRequirements);
1485     return size;
1486 }
1487 
1488 static inline size_t
vn_sizeof_VkMemoryRequirements2_partial(const VkMemoryRequirements2 * val)1489 vn_sizeof_VkMemoryRequirements2_partial(const VkMemoryRequirements2 *val)
1490 {
1491     size_t size = 0;
1492 
1493     size += vn_sizeof_VkStructureType(&val->sType);
1494     size += vn_sizeof_VkMemoryRequirements2_pnext_partial(val->pNext);
1495     size += vn_sizeof_VkMemoryRequirements2_self_partial(val);
1496 
1497     return size;
1498 }
1499 
1500 static inline void
vn_encode_VkMemoryRequirements2_pnext_partial(struct vn_cs_encoder * enc,const void * val)1501 vn_encode_VkMemoryRequirements2_pnext_partial(struct vn_cs_encoder *enc, const void *val)
1502 {
1503     const VkBaseInStructure *pnext = val;
1504 
1505     while (pnext) {
1506         switch ((int32_t)pnext->sType) {
1507         case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
1508             vn_encode_simple_pointer(enc, pnext);
1509             vn_encode_VkStructureType(enc, &pnext->sType);
1510             vn_encode_VkMemoryRequirements2_pnext_partial(enc, pnext->pNext);
1511             vn_encode_VkMemoryDedicatedRequirements_self_partial(enc, (const VkMemoryDedicatedRequirements *)pnext);
1512             return;
1513         default:
1514             /* ignore unknown/unsupported struct */
1515             break;
1516         }
1517         pnext = pnext->pNext;
1518     }
1519 
1520     vn_encode_simple_pointer(enc, NULL);
1521 }
1522 
1523 static inline void
vn_encode_VkMemoryRequirements2_self_partial(struct vn_cs_encoder * enc,const VkMemoryRequirements2 * val)1524 vn_encode_VkMemoryRequirements2_self_partial(struct vn_cs_encoder *enc, const VkMemoryRequirements2 *val)
1525 {
1526     /* skip val->{sType,pNext} */
1527     vn_encode_VkMemoryRequirements_partial(enc, &val->memoryRequirements);
1528 }
1529 
1530 static inline void
vn_encode_VkMemoryRequirements2_partial(struct vn_cs_encoder * enc,const VkMemoryRequirements2 * val)1531 vn_encode_VkMemoryRequirements2_partial(struct vn_cs_encoder *enc, const VkMemoryRequirements2 *val)
1532 {
1533     assert(val->sType == VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2);
1534     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 });
1535     vn_encode_VkMemoryRequirements2_pnext_partial(enc, val->pNext);
1536     vn_encode_VkMemoryRequirements2_self_partial(enc, val);
1537 }
1538 
1539 /* struct VkMemoryBarrier2 chain */
1540 
1541 static inline size_t
vn_sizeof_VkMemoryBarrier2_pnext(const void * val)1542 vn_sizeof_VkMemoryBarrier2_pnext(const void *val)
1543 {
1544     /* no known/supported struct */
1545     return vn_sizeof_simple_pointer(NULL);
1546 }
1547 
1548 static inline size_t
vn_sizeof_VkMemoryBarrier2_self(const VkMemoryBarrier2 * val)1549 vn_sizeof_VkMemoryBarrier2_self(const VkMemoryBarrier2 *val)
1550 {
1551     size_t size = 0;
1552     /* skip val->{sType,pNext} */
1553     size += vn_sizeof_VkFlags64(&val->srcStageMask);
1554     size += vn_sizeof_VkFlags64(&val->srcAccessMask);
1555     size += vn_sizeof_VkFlags64(&val->dstStageMask);
1556     size += vn_sizeof_VkFlags64(&val->dstAccessMask);
1557     return size;
1558 }
1559 
1560 static inline size_t
vn_sizeof_VkMemoryBarrier2(const VkMemoryBarrier2 * val)1561 vn_sizeof_VkMemoryBarrier2(const VkMemoryBarrier2 *val)
1562 {
1563     size_t size = 0;
1564 
1565     size += vn_sizeof_VkStructureType(&val->sType);
1566     size += vn_sizeof_VkMemoryBarrier2_pnext(val->pNext);
1567     size += vn_sizeof_VkMemoryBarrier2_self(val);
1568 
1569     return size;
1570 }
1571 
1572 static inline void
vn_encode_VkMemoryBarrier2_pnext(struct vn_cs_encoder * enc,const void * val)1573 vn_encode_VkMemoryBarrier2_pnext(struct vn_cs_encoder *enc, const void *val)
1574 {
1575     /* no known/supported struct */
1576     vn_encode_simple_pointer(enc, NULL);
1577 }
1578 
1579 static inline void
vn_encode_VkMemoryBarrier2_self(struct vn_cs_encoder * enc,const VkMemoryBarrier2 * val)1580 vn_encode_VkMemoryBarrier2_self(struct vn_cs_encoder *enc, const VkMemoryBarrier2 *val)
1581 {
1582     /* skip val->{sType,pNext} */
1583     vn_encode_VkFlags64(enc, &val->srcStageMask);
1584     vn_encode_VkFlags64(enc, &val->srcAccessMask);
1585     vn_encode_VkFlags64(enc, &val->dstStageMask);
1586     vn_encode_VkFlags64(enc, &val->dstAccessMask);
1587 }
1588 
1589 static inline void
vn_encode_VkMemoryBarrier2(struct vn_cs_encoder * enc,const VkMemoryBarrier2 * val)1590 vn_encode_VkMemoryBarrier2(struct vn_cs_encoder *enc, const VkMemoryBarrier2 *val)
1591 {
1592     assert(val->sType == VK_STRUCTURE_TYPE_MEMORY_BARRIER_2);
1593     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_MEMORY_BARRIER_2 });
1594     vn_encode_VkMemoryBarrier2_pnext(enc, val->pNext);
1595     vn_encode_VkMemoryBarrier2_self(enc, val);
1596 }
1597 
1598 #endif /* VN_PROTOCOL_DRIVER_STRUCTS_H */
1599