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