1 /* This file is generated by venus-protocol. See vn_protocol_renderer.h. */
2
3 /*
4 * Copyright 2020 Google LLC
5 * SPDX-License-Identifier: MIT
6 */
7
8 #ifndef VN_PROTOCOL_RENDERER_STRUCTS_H
9 #define VN_PROTOCOL_RENDERER_STRUCTS_H
10
11 #include "vn_protocol_renderer_handles.h"
12
13 #pragma GCC diagnostic push
14 #pragma GCC diagnostic ignored "-Wpointer-arith"
15 #pragma GCC diagnostic ignored "-Wunused-parameter"
16
17 /*
18 * These structs/unions/commands are not included
19 *
20 * VkAllocationCallbacks
21 */
22
23 /* struct VkExtent3D */
24
25 static inline void
vn_encode_VkExtent3D(struct vn_cs_encoder * enc,const VkExtent3D * val)26 vn_encode_VkExtent3D(struct vn_cs_encoder *enc, const VkExtent3D *val)
27 {
28 vn_encode_uint32_t(enc, &val->width);
29 vn_encode_uint32_t(enc, &val->height);
30 vn_encode_uint32_t(enc, &val->depth);
31 }
32
33 static inline void
vn_decode_VkExtent3D_temp(struct vn_cs_decoder * dec,VkExtent3D * val)34 vn_decode_VkExtent3D_temp(struct vn_cs_decoder *dec, VkExtent3D *val)
35 {
36 vn_decode_uint32_t(dec, &val->width);
37 vn_decode_uint32_t(dec, &val->height);
38 vn_decode_uint32_t(dec, &val->depth);
39 }
40
41 static inline void
vn_decode_VkExtent3D_partial_temp(struct vn_cs_decoder * dec,VkExtent3D * val)42 vn_decode_VkExtent3D_partial_temp(struct vn_cs_decoder *dec, VkExtent3D *val)
43 {
44 /* skip val->width */
45 /* skip val->height */
46 /* skip val->depth */
47 }
48
49 static inline void
vn_replace_VkExtent3D_handle(VkExtent3D * val)50 vn_replace_VkExtent3D_handle(VkExtent3D *val)
51 {
52 /* skip val->width */
53 /* skip val->height */
54 /* skip val->depth */
55 }
56
57 /* struct VkLayerProperties */
58
59 static inline void
vn_encode_VkLayerProperties(struct vn_cs_encoder * enc,const VkLayerProperties * val)60 vn_encode_VkLayerProperties(struct vn_cs_encoder *enc, const VkLayerProperties *val)
61 {
62 vn_encode_array_size(enc, VK_MAX_EXTENSION_NAME_SIZE);
63 vn_encode_char_array(enc, val->layerName, VK_MAX_EXTENSION_NAME_SIZE);
64 vn_encode_uint32_t(enc, &val->specVersion);
65 vn_encode_uint32_t(enc, &val->implementationVersion);
66 vn_encode_array_size(enc, VK_MAX_DESCRIPTION_SIZE);
67 vn_encode_char_array(enc, val->description, VK_MAX_DESCRIPTION_SIZE);
68 }
69
70 static inline void
vn_decode_VkLayerProperties_partial_temp(struct vn_cs_decoder * dec,VkLayerProperties * val)71 vn_decode_VkLayerProperties_partial_temp(struct vn_cs_decoder *dec, VkLayerProperties *val)
72 {
73 /* skip val->layerName */
74 /* skip val->specVersion */
75 /* skip val->implementationVersion */
76 /* skip val->description */
77 }
78
79 /* struct VkExtensionProperties */
80
81 static inline void
vn_encode_VkExtensionProperties(struct vn_cs_encoder * enc,const VkExtensionProperties * val)82 vn_encode_VkExtensionProperties(struct vn_cs_encoder *enc, const VkExtensionProperties *val)
83 {
84 vn_encode_array_size(enc, VK_MAX_EXTENSION_NAME_SIZE);
85 vn_encode_char_array(enc, val->extensionName, VK_MAX_EXTENSION_NAME_SIZE);
86 vn_encode_uint32_t(enc, &val->specVersion);
87 }
88
89 static inline void
vn_decode_VkExtensionProperties_temp(struct vn_cs_decoder * dec,VkExtensionProperties * val)90 vn_decode_VkExtensionProperties_temp(struct vn_cs_decoder *dec, VkExtensionProperties *val)
91 {
92 {
93 const size_t array_size = vn_decode_array_size(dec, VK_MAX_EXTENSION_NAME_SIZE);
94 vn_decode_char_array(dec, val->extensionName, array_size);
95 }
96 vn_decode_uint32_t(dec, &val->specVersion);
97 }
98
99 static inline void
vn_decode_VkExtensionProperties_partial_temp(struct vn_cs_decoder * dec,VkExtensionProperties * val)100 vn_decode_VkExtensionProperties_partial_temp(struct vn_cs_decoder *dec, VkExtensionProperties *val)
101 {
102 /* skip val->extensionName */
103 /* skip val->specVersion */
104 }
105
106 static inline void
vn_replace_VkExtensionProperties_handle(VkExtensionProperties * val)107 vn_replace_VkExtensionProperties_handle(VkExtensionProperties *val)
108 {
109 /* skip val->extensionName */
110 /* skip val->specVersion */
111 }
112
113 /* struct VkMemoryRequirements */
114
115 static inline void
vn_encode_VkMemoryRequirements(struct vn_cs_encoder * enc,const VkMemoryRequirements * val)116 vn_encode_VkMemoryRequirements(struct vn_cs_encoder *enc, const VkMemoryRequirements *val)
117 {
118 vn_encode_VkDeviceSize(enc, &val->size);
119 vn_encode_VkDeviceSize(enc, &val->alignment);
120 vn_encode_uint32_t(enc, &val->memoryTypeBits);
121 }
122
123 static inline void
vn_decode_VkMemoryRequirements_partial_temp(struct vn_cs_decoder * dec,VkMemoryRequirements * val)124 vn_decode_VkMemoryRequirements_partial_temp(struct vn_cs_decoder *dec, VkMemoryRequirements *val)
125 {
126 /* skip val->size */
127 /* skip val->alignment */
128 /* skip val->memoryTypeBits */
129 }
130
131 /* struct VkSparseImageFormatProperties */
132
133 static inline void
vn_encode_VkSparseImageFormatProperties(struct vn_cs_encoder * enc,const VkSparseImageFormatProperties * val)134 vn_encode_VkSparseImageFormatProperties(struct vn_cs_encoder *enc, const VkSparseImageFormatProperties *val)
135 {
136 vn_encode_VkFlags(enc, &val->aspectMask);
137 vn_encode_VkExtent3D(enc, &val->imageGranularity);
138 vn_encode_VkFlags(enc, &val->flags);
139 }
140
141 static inline void
vn_decode_VkSparseImageFormatProperties_partial_temp(struct vn_cs_decoder * dec,VkSparseImageFormatProperties * val)142 vn_decode_VkSparseImageFormatProperties_partial_temp(struct vn_cs_decoder *dec, VkSparseImageFormatProperties *val)
143 {
144 /* skip val->aspectMask */
145 vn_decode_VkExtent3D_partial_temp(dec, &val->imageGranularity);
146 /* skip val->flags */
147 }
148
149 /* struct VkImageSubresource */
150
151 static inline void
vn_decode_VkImageSubresource_temp(struct vn_cs_decoder * dec,VkImageSubresource * val)152 vn_decode_VkImageSubresource_temp(struct vn_cs_decoder *dec, VkImageSubresource *val)
153 {
154 vn_decode_VkFlags(dec, &val->aspectMask);
155 vn_decode_uint32_t(dec, &val->mipLevel);
156 vn_decode_uint32_t(dec, &val->arrayLayer);
157 }
158
159 static inline void
vn_replace_VkImageSubresource_handle(VkImageSubresource * val)160 vn_replace_VkImageSubresource_handle(VkImageSubresource *val)
161 {
162 /* skip val->aspectMask */
163 /* skip val->mipLevel */
164 /* skip val->arrayLayer */
165 }
166
167 /* struct VkOffset3D */
168
169 static inline void
vn_decode_VkOffset3D_temp(struct vn_cs_decoder * dec,VkOffset3D * val)170 vn_decode_VkOffset3D_temp(struct vn_cs_decoder *dec, VkOffset3D *val)
171 {
172 vn_decode_int32_t(dec, &val->x);
173 vn_decode_int32_t(dec, &val->y);
174 vn_decode_int32_t(dec, &val->z);
175 }
176
177 static inline void
vn_replace_VkOffset3D_handle(VkOffset3D * val)178 vn_replace_VkOffset3D_handle(VkOffset3D *val)
179 {
180 /* skip val->x */
181 /* skip val->y */
182 /* skip val->z */
183 }
184
185 /* struct VkSemaphoreTypeCreateInfo chain */
186
187 static inline void *
vn_decode_VkSemaphoreTypeCreateInfo_pnext_temp(struct vn_cs_decoder * dec)188 vn_decode_VkSemaphoreTypeCreateInfo_pnext_temp(struct vn_cs_decoder *dec)
189 {
190 /* no known/supported struct */
191 if (vn_decode_simple_pointer(dec))
192 vn_cs_decoder_set_fatal(dec);
193 return NULL;
194 }
195
196 static inline void
vn_decode_VkSemaphoreTypeCreateInfo_self_temp(struct vn_cs_decoder * dec,VkSemaphoreTypeCreateInfo * val)197 vn_decode_VkSemaphoreTypeCreateInfo_self_temp(struct vn_cs_decoder *dec, VkSemaphoreTypeCreateInfo *val)
198 {
199 /* skip val->{sType,pNext} */
200 vn_decode_VkSemaphoreType(dec, &val->semaphoreType);
201 vn_decode_uint64_t(dec, &val->initialValue);
202 }
203
204 static inline void
vn_decode_VkSemaphoreTypeCreateInfo_temp(struct vn_cs_decoder * dec,VkSemaphoreTypeCreateInfo * val)205 vn_decode_VkSemaphoreTypeCreateInfo_temp(struct vn_cs_decoder *dec, VkSemaphoreTypeCreateInfo *val)
206 {
207 VkStructureType stype;
208 vn_decode_VkStructureType(dec, &stype);
209 if (stype != VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO)
210 vn_cs_decoder_set_fatal(dec);
211
212 val->sType = stype;
213 val->pNext = vn_decode_VkSemaphoreTypeCreateInfo_pnext_temp(dec);
214 vn_decode_VkSemaphoreTypeCreateInfo_self_temp(dec, val);
215 }
216
217 static inline void
vn_replace_VkSemaphoreTypeCreateInfo_handle_self(VkSemaphoreTypeCreateInfo * val)218 vn_replace_VkSemaphoreTypeCreateInfo_handle_self(VkSemaphoreTypeCreateInfo *val)
219 {
220 /* skip val->sType */
221 /* skip val->pNext */
222 /* skip val->semaphoreType */
223 /* skip val->initialValue */
224 }
225
226 static inline void
vn_replace_VkSemaphoreTypeCreateInfo_handle(VkSemaphoreTypeCreateInfo * val)227 vn_replace_VkSemaphoreTypeCreateInfo_handle(VkSemaphoreTypeCreateInfo *val)
228 {
229 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
230
231 do {
232 switch ((int32_t)pnext->sType) {
233 case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO:
234 vn_replace_VkSemaphoreTypeCreateInfo_handle_self((VkSemaphoreTypeCreateInfo *)pnext);
235 break;
236 default:
237 /* ignore unknown/unsupported struct */
238 break;
239 }
240 pnext = pnext->pNext;
241 } while (pnext);
242 }
243
244 /* struct VkImageFormatListCreateInfo chain */
245
246 static inline void *
vn_decode_VkImageFormatListCreateInfo_pnext_temp(struct vn_cs_decoder * dec)247 vn_decode_VkImageFormatListCreateInfo_pnext_temp(struct vn_cs_decoder *dec)
248 {
249 /* no known/supported struct */
250 if (vn_decode_simple_pointer(dec))
251 vn_cs_decoder_set_fatal(dec);
252 return NULL;
253 }
254
255 static inline void
vn_decode_VkImageFormatListCreateInfo_self_temp(struct vn_cs_decoder * dec,VkImageFormatListCreateInfo * val)256 vn_decode_VkImageFormatListCreateInfo_self_temp(struct vn_cs_decoder *dec, VkImageFormatListCreateInfo *val)
257 {
258 /* skip val->{sType,pNext} */
259 vn_decode_uint32_t(dec, &val->viewFormatCount);
260 if (vn_peek_array_size(dec)) {
261 const size_t array_size = vn_decode_array_size(dec, val->viewFormatCount);
262 val->pViewFormats = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pViewFormats) * array_size);
263 if (!val->pViewFormats) return;
264 vn_decode_VkFormat_array(dec, (VkFormat *)val->pViewFormats, array_size);
265 } else {
266 vn_decode_array_size(dec, val->viewFormatCount);
267 val->pViewFormats = NULL;
268 }
269 }
270
271 static inline void
vn_decode_VkImageFormatListCreateInfo_temp(struct vn_cs_decoder * dec,VkImageFormatListCreateInfo * val)272 vn_decode_VkImageFormatListCreateInfo_temp(struct vn_cs_decoder *dec, VkImageFormatListCreateInfo *val)
273 {
274 VkStructureType stype;
275 vn_decode_VkStructureType(dec, &stype);
276 if (stype != VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO)
277 vn_cs_decoder_set_fatal(dec);
278
279 val->sType = stype;
280 val->pNext = vn_decode_VkImageFormatListCreateInfo_pnext_temp(dec);
281 vn_decode_VkImageFormatListCreateInfo_self_temp(dec, val);
282 }
283
284 static inline void
vn_replace_VkImageFormatListCreateInfo_handle_self(VkImageFormatListCreateInfo * val)285 vn_replace_VkImageFormatListCreateInfo_handle_self(VkImageFormatListCreateInfo *val)
286 {
287 /* skip val->sType */
288 /* skip val->pNext */
289 /* skip val->viewFormatCount */
290 /* skip val->pViewFormats */
291 }
292
293 static inline void
vn_replace_VkImageFormatListCreateInfo_handle(VkImageFormatListCreateInfo * val)294 vn_replace_VkImageFormatListCreateInfo_handle(VkImageFormatListCreateInfo *val)
295 {
296 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
297
298 do {
299 switch ((int32_t)pnext->sType) {
300 case VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO:
301 vn_replace_VkImageFormatListCreateInfo_handle_self((VkImageFormatListCreateInfo *)pnext);
302 break;
303 default:
304 /* ignore unknown/unsupported struct */
305 break;
306 }
307 pnext = pnext->pNext;
308 } while (pnext);
309 }
310
311 /* struct VkImageStencilUsageCreateInfo chain */
312
313 static inline void *
vn_decode_VkImageStencilUsageCreateInfo_pnext_temp(struct vn_cs_decoder * dec)314 vn_decode_VkImageStencilUsageCreateInfo_pnext_temp(struct vn_cs_decoder *dec)
315 {
316 /* no known/supported struct */
317 if (vn_decode_simple_pointer(dec))
318 vn_cs_decoder_set_fatal(dec);
319 return NULL;
320 }
321
322 static inline void
vn_decode_VkImageStencilUsageCreateInfo_self_temp(struct vn_cs_decoder * dec,VkImageStencilUsageCreateInfo * val)323 vn_decode_VkImageStencilUsageCreateInfo_self_temp(struct vn_cs_decoder *dec, VkImageStencilUsageCreateInfo *val)
324 {
325 /* skip val->{sType,pNext} */
326 vn_decode_VkFlags(dec, &val->stencilUsage);
327 }
328
329 static inline void
vn_decode_VkImageStencilUsageCreateInfo_temp(struct vn_cs_decoder * dec,VkImageStencilUsageCreateInfo * val)330 vn_decode_VkImageStencilUsageCreateInfo_temp(struct vn_cs_decoder *dec, VkImageStencilUsageCreateInfo *val)
331 {
332 VkStructureType stype;
333 vn_decode_VkStructureType(dec, &stype);
334 if (stype != VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO)
335 vn_cs_decoder_set_fatal(dec);
336
337 val->sType = stype;
338 val->pNext = vn_decode_VkImageStencilUsageCreateInfo_pnext_temp(dec);
339 vn_decode_VkImageStencilUsageCreateInfo_self_temp(dec, val);
340 }
341
342 static inline void
vn_replace_VkImageStencilUsageCreateInfo_handle_self(VkImageStencilUsageCreateInfo * val)343 vn_replace_VkImageStencilUsageCreateInfo_handle_self(VkImageStencilUsageCreateInfo *val)
344 {
345 /* skip val->sType */
346 /* skip val->pNext */
347 /* skip val->stencilUsage */
348 }
349
350 static inline void
vn_replace_VkImageStencilUsageCreateInfo_handle(VkImageStencilUsageCreateInfo * val)351 vn_replace_VkImageStencilUsageCreateInfo_handle(VkImageStencilUsageCreateInfo *val)
352 {
353 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
354
355 do {
356 switch ((int32_t)pnext->sType) {
357 case VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO:
358 vn_replace_VkImageStencilUsageCreateInfo_handle_self((VkImageStencilUsageCreateInfo *)pnext);
359 break;
360 default:
361 /* ignore unknown/unsupported struct */
362 break;
363 }
364 pnext = pnext->pNext;
365 } while (pnext);
366 }
367
368 /* struct VkComponentMapping */
369
370 static inline void
vn_encode_VkComponentMapping(struct vn_cs_encoder * enc,const VkComponentMapping * val)371 vn_encode_VkComponentMapping(struct vn_cs_encoder *enc, const VkComponentMapping *val)
372 {
373 vn_encode_VkComponentSwizzle(enc, &val->r);
374 vn_encode_VkComponentSwizzle(enc, &val->g);
375 vn_encode_VkComponentSwizzle(enc, &val->b);
376 vn_encode_VkComponentSwizzle(enc, &val->a);
377 }
378
379 static inline void
vn_decode_VkComponentMapping_temp(struct vn_cs_decoder * dec,VkComponentMapping * val)380 vn_decode_VkComponentMapping_temp(struct vn_cs_decoder *dec, VkComponentMapping *val)
381 {
382 vn_decode_VkComponentSwizzle(dec, &val->r);
383 vn_decode_VkComponentSwizzle(dec, &val->g);
384 vn_decode_VkComponentSwizzle(dec, &val->b);
385 vn_decode_VkComponentSwizzle(dec, &val->a);
386 }
387
388 static inline void
vn_decode_VkComponentMapping_partial_temp(struct vn_cs_decoder * dec,VkComponentMapping * val)389 vn_decode_VkComponentMapping_partial_temp(struct vn_cs_decoder *dec, VkComponentMapping *val)
390 {
391 /* skip val->r */
392 /* skip val->g */
393 /* skip val->b */
394 /* skip val->a */
395 }
396
397 static inline void
vn_replace_VkComponentMapping_handle(VkComponentMapping * val)398 vn_replace_VkComponentMapping_handle(VkComponentMapping *val)
399 {
400 /* skip val->r */
401 /* skip val->g */
402 /* skip val->b */
403 /* skip val->a */
404 }
405
406 /* struct VkImageSubresourceRange */
407
408 static inline void
vn_decode_VkImageSubresourceRange_temp(struct vn_cs_decoder * dec,VkImageSubresourceRange * val)409 vn_decode_VkImageSubresourceRange_temp(struct vn_cs_decoder *dec, VkImageSubresourceRange *val)
410 {
411 vn_decode_VkFlags(dec, &val->aspectMask);
412 vn_decode_uint32_t(dec, &val->baseMipLevel);
413 vn_decode_uint32_t(dec, &val->levelCount);
414 vn_decode_uint32_t(dec, &val->baseArrayLayer);
415 vn_decode_uint32_t(dec, &val->layerCount);
416 }
417
418 static inline void
vn_replace_VkImageSubresourceRange_handle(VkImageSubresourceRange * val)419 vn_replace_VkImageSubresourceRange_handle(VkImageSubresourceRange *val)
420 {
421 /* skip val->aspectMask */
422 /* skip val->baseMipLevel */
423 /* skip val->levelCount */
424 /* skip val->baseArrayLayer */
425 /* skip val->layerCount */
426 }
427
428 /* struct VkSamplerYcbcrConversionInfo chain */
429
430 static inline void *
vn_decode_VkSamplerYcbcrConversionInfo_pnext_temp(struct vn_cs_decoder * dec)431 vn_decode_VkSamplerYcbcrConversionInfo_pnext_temp(struct vn_cs_decoder *dec)
432 {
433 /* no known/supported struct */
434 if (vn_decode_simple_pointer(dec))
435 vn_cs_decoder_set_fatal(dec);
436 return NULL;
437 }
438
439 static inline void
vn_decode_VkSamplerYcbcrConversionInfo_self_temp(struct vn_cs_decoder * dec,VkSamplerYcbcrConversionInfo * val)440 vn_decode_VkSamplerYcbcrConversionInfo_self_temp(struct vn_cs_decoder *dec, VkSamplerYcbcrConversionInfo *val)
441 {
442 /* skip val->{sType,pNext} */
443 vn_decode_VkSamplerYcbcrConversion_lookup(dec, &val->conversion);
444 }
445
446 static inline void
vn_decode_VkSamplerYcbcrConversionInfo_temp(struct vn_cs_decoder * dec,VkSamplerYcbcrConversionInfo * val)447 vn_decode_VkSamplerYcbcrConversionInfo_temp(struct vn_cs_decoder *dec, VkSamplerYcbcrConversionInfo *val)
448 {
449 VkStructureType stype;
450 vn_decode_VkStructureType(dec, &stype);
451 if (stype != VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO)
452 vn_cs_decoder_set_fatal(dec);
453
454 val->sType = stype;
455 val->pNext = vn_decode_VkSamplerYcbcrConversionInfo_pnext_temp(dec);
456 vn_decode_VkSamplerYcbcrConversionInfo_self_temp(dec, val);
457 }
458
459 static inline void
vn_replace_VkSamplerYcbcrConversionInfo_handle_self(VkSamplerYcbcrConversionInfo * val)460 vn_replace_VkSamplerYcbcrConversionInfo_handle_self(VkSamplerYcbcrConversionInfo *val)
461 {
462 /* skip val->sType */
463 /* skip val->pNext */
464 vn_replace_VkSamplerYcbcrConversion_handle(&val->conversion);
465 }
466
467 static inline void
vn_replace_VkSamplerYcbcrConversionInfo_handle(VkSamplerYcbcrConversionInfo * val)468 vn_replace_VkSamplerYcbcrConversionInfo_handle(VkSamplerYcbcrConversionInfo *val)
469 {
470 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
471
472 do {
473 switch ((int32_t)pnext->sType) {
474 case VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO:
475 vn_replace_VkSamplerYcbcrConversionInfo_handle_self((VkSamplerYcbcrConversionInfo *)pnext);
476 break;
477 default:
478 /* ignore unknown/unsupported struct */
479 break;
480 }
481 pnext = pnext->pNext;
482 } while (pnext);
483 }
484
485 /* struct VkShaderModuleCreateInfo chain */
486
487 static inline void *
vn_decode_VkShaderModuleCreateInfo_pnext_temp(struct vn_cs_decoder * dec)488 vn_decode_VkShaderModuleCreateInfo_pnext_temp(struct vn_cs_decoder *dec)
489 {
490 /* no known/supported struct */
491 if (vn_decode_simple_pointer(dec))
492 vn_cs_decoder_set_fatal(dec);
493 return NULL;
494 }
495
496 static inline void
vn_decode_VkShaderModuleCreateInfo_self_temp(struct vn_cs_decoder * dec,VkShaderModuleCreateInfo * val)497 vn_decode_VkShaderModuleCreateInfo_self_temp(struct vn_cs_decoder *dec, VkShaderModuleCreateInfo *val)
498 {
499 /* skip val->{sType,pNext} */
500 vn_decode_VkFlags(dec, &val->flags);
501 vn_decode_size_t(dec, &val->codeSize);
502 if (vn_peek_array_size(dec)) {
503 const size_t array_size = vn_decode_array_size(dec, val->codeSize / 4);
504 val->pCode = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pCode) * array_size);
505 if (!val->pCode) return;
506 vn_decode_uint32_t_array(dec, (uint32_t *)val->pCode, array_size);
507 } else {
508 vn_decode_array_size(dec, val->codeSize / 4);
509 val->pCode = NULL;
510 }
511 }
512
513 static inline void
vn_decode_VkShaderModuleCreateInfo_temp(struct vn_cs_decoder * dec,VkShaderModuleCreateInfo * val)514 vn_decode_VkShaderModuleCreateInfo_temp(struct vn_cs_decoder *dec, VkShaderModuleCreateInfo *val)
515 {
516 VkStructureType stype;
517 vn_decode_VkStructureType(dec, &stype);
518 if (stype != VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO)
519 vn_cs_decoder_set_fatal(dec);
520
521 val->sType = stype;
522 val->pNext = vn_decode_VkShaderModuleCreateInfo_pnext_temp(dec);
523 vn_decode_VkShaderModuleCreateInfo_self_temp(dec, val);
524 }
525
526 static inline void
vn_replace_VkShaderModuleCreateInfo_handle_self(VkShaderModuleCreateInfo * val)527 vn_replace_VkShaderModuleCreateInfo_handle_self(VkShaderModuleCreateInfo *val)
528 {
529 /* skip val->sType */
530 /* skip val->pNext */
531 /* skip val->flags */
532 /* skip val->codeSize */
533 /* skip val->pCode */
534 }
535
536 static inline void
vn_replace_VkShaderModuleCreateInfo_handle(VkShaderModuleCreateInfo * val)537 vn_replace_VkShaderModuleCreateInfo_handle(VkShaderModuleCreateInfo *val)
538 {
539 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
540
541 do {
542 switch ((int32_t)pnext->sType) {
543 case VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO:
544 vn_replace_VkShaderModuleCreateInfo_handle_self((VkShaderModuleCreateInfo *)pnext);
545 break;
546 default:
547 /* ignore unknown/unsupported struct */
548 break;
549 }
550 pnext = pnext->pNext;
551 } while (pnext);
552 }
553
554 /* struct VkViewport */
555
556 static inline void
vn_decode_VkViewport_temp(struct vn_cs_decoder * dec,VkViewport * val)557 vn_decode_VkViewport_temp(struct vn_cs_decoder *dec, VkViewport *val)
558 {
559 vn_decode_float(dec, &val->x);
560 vn_decode_float(dec, &val->y);
561 vn_decode_float(dec, &val->width);
562 vn_decode_float(dec, &val->height);
563 vn_decode_float(dec, &val->minDepth);
564 vn_decode_float(dec, &val->maxDepth);
565 }
566
567 static inline void
vn_replace_VkViewport_handle(VkViewport * val)568 vn_replace_VkViewport_handle(VkViewport *val)
569 {
570 /* skip val->x */
571 /* skip val->y */
572 /* skip val->width */
573 /* skip val->height */
574 /* skip val->minDepth */
575 /* skip val->maxDepth */
576 }
577
578 /* struct VkOffset2D */
579
580 static inline void
vn_encode_VkOffset2D(struct vn_cs_encoder * enc,const VkOffset2D * val)581 vn_encode_VkOffset2D(struct vn_cs_encoder *enc, const VkOffset2D *val)
582 {
583 vn_encode_int32_t(enc, &val->x);
584 vn_encode_int32_t(enc, &val->y);
585 }
586
587 static inline void
vn_decode_VkOffset2D_temp(struct vn_cs_decoder * dec,VkOffset2D * val)588 vn_decode_VkOffset2D_temp(struct vn_cs_decoder *dec, VkOffset2D *val)
589 {
590 vn_decode_int32_t(dec, &val->x);
591 vn_decode_int32_t(dec, &val->y);
592 }
593
594 static inline void
vn_decode_VkOffset2D_partial_temp(struct vn_cs_decoder * dec,VkOffset2D * val)595 vn_decode_VkOffset2D_partial_temp(struct vn_cs_decoder *dec, VkOffset2D *val)
596 {
597 /* skip val->x */
598 /* skip val->y */
599 }
600
601 static inline void
vn_replace_VkOffset2D_handle(VkOffset2D * val)602 vn_replace_VkOffset2D_handle(VkOffset2D *val)
603 {
604 /* skip val->x */
605 /* skip val->y */
606 }
607
608 /* struct VkExtent2D */
609
610 static inline void
vn_encode_VkExtent2D(struct vn_cs_encoder * enc,const VkExtent2D * val)611 vn_encode_VkExtent2D(struct vn_cs_encoder *enc, const VkExtent2D *val)
612 {
613 vn_encode_uint32_t(enc, &val->width);
614 vn_encode_uint32_t(enc, &val->height);
615 }
616
617 static inline void
vn_decode_VkExtent2D_temp(struct vn_cs_decoder * dec,VkExtent2D * val)618 vn_decode_VkExtent2D_temp(struct vn_cs_decoder *dec, VkExtent2D *val)
619 {
620 vn_decode_uint32_t(dec, &val->width);
621 vn_decode_uint32_t(dec, &val->height);
622 }
623
624 static inline void
vn_decode_VkExtent2D_partial_temp(struct vn_cs_decoder * dec,VkExtent2D * val)625 vn_decode_VkExtent2D_partial_temp(struct vn_cs_decoder *dec, VkExtent2D *val)
626 {
627 /* skip val->width */
628 /* skip val->height */
629 }
630
631 static inline void
vn_replace_VkExtent2D_handle(VkExtent2D * val)632 vn_replace_VkExtent2D_handle(VkExtent2D *val)
633 {
634 /* skip val->width */
635 /* skip val->height */
636 }
637
638 /* struct VkRect2D */
639
640 static inline void
vn_encode_VkRect2D(struct vn_cs_encoder * enc,const VkRect2D * val)641 vn_encode_VkRect2D(struct vn_cs_encoder *enc, const VkRect2D *val)
642 {
643 vn_encode_VkOffset2D(enc, &val->offset);
644 vn_encode_VkExtent2D(enc, &val->extent);
645 }
646
647 static inline void
vn_decode_VkRect2D_temp(struct vn_cs_decoder * dec,VkRect2D * val)648 vn_decode_VkRect2D_temp(struct vn_cs_decoder *dec, VkRect2D *val)
649 {
650 vn_decode_VkOffset2D_temp(dec, &val->offset);
651 vn_decode_VkExtent2D_temp(dec, &val->extent);
652 }
653
654 static inline void
vn_decode_VkRect2D_partial_temp(struct vn_cs_decoder * dec,VkRect2D * val)655 vn_decode_VkRect2D_partial_temp(struct vn_cs_decoder *dec, VkRect2D *val)
656 {
657 vn_decode_VkOffset2D_partial_temp(dec, &val->offset);
658 vn_decode_VkExtent2D_partial_temp(dec, &val->extent);
659 }
660
661 static inline void
vn_replace_VkRect2D_handle(VkRect2D * val)662 vn_replace_VkRect2D_handle(VkRect2D *val)
663 {
664 vn_replace_VkOffset2D_handle(&val->offset);
665 vn_replace_VkExtent2D_handle(&val->extent);
666 }
667
668 /* union VkClearColorValue */
669
670 static inline void
vn_decode_VkClearColorValue_temp(struct vn_cs_decoder * dec,VkClearColorValue * val)671 vn_decode_VkClearColorValue_temp(struct vn_cs_decoder *dec, VkClearColorValue *val)
672 {
673 uint32_t tag;
674 vn_decode_uint32_t(dec, &tag);
675 switch (tag) {
676 case 0:
677 {
678 const size_t array_size = vn_decode_array_size(dec, 4);
679 vn_decode_float_array(dec, val->float32, array_size);
680 }
681 break;
682 case 1:
683 {
684 const size_t array_size = vn_decode_array_size(dec, 4);
685 vn_decode_int32_t_array(dec, val->int32, array_size);
686 }
687 break;
688 case 2:
689 {
690 const size_t array_size = vn_decode_array_size(dec, 4);
691 vn_decode_uint32_t_array(dec, val->uint32, array_size);
692 }
693 break;
694 default:
695 vn_cs_decoder_set_fatal(dec);
696 break;
697 }
698 }
699
700 /* struct VkMutableDescriptorTypeListEXT */
701
702 static inline void
vn_decode_VkMutableDescriptorTypeListEXT_temp(struct vn_cs_decoder * dec,VkMutableDescriptorTypeListEXT * val)703 vn_decode_VkMutableDescriptorTypeListEXT_temp(struct vn_cs_decoder *dec, VkMutableDescriptorTypeListEXT *val)
704 {
705 vn_decode_uint32_t(dec, &val->descriptorTypeCount);
706 if (vn_peek_array_size(dec)) {
707 const size_t array_size = vn_decode_array_size(dec, val->descriptorTypeCount);
708 val->pDescriptorTypes = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pDescriptorTypes) * array_size);
709 if (!val->pDescriptorTypes) return;
710 vn_decode_VkDescriptorType_array(dec, (VkDescriptorType *)val->pDescriptorTypes, array_size);
711 } else {
712 vn_decode_array_size(dec, val->descriptorTypeCount);
713 val->pDescriptorTypes = NULL;
714 }
715 }
716
717 static inline void
vn_replace_VkMutableDescriptorTypeListEXT_handle(VkMutableDescriptorTypeListEXT * val)718 vn_replace_VkMutableDescriptorTypeListEXT_handle(VkMutableDescriptorTypeListEXT *val)
719 {
720 /* skip val->descriptorTypeCount */
721 /* skip val->pDescriptorTypes */
722 }
723
724 /* struct VkMutableDescriptorTypeCreateInfoEXT chain */
725
726 static inline void *
vn_decode_VkMutableDescriptorTypeCreateInfoEXT_pnext_temp(struct vn_cs_decoder * dec)727 vn_decode_VkMutableDescriptorTypeCreateInfoEXT_pnext_temp(struct vn_cs_decoder *dec)
728 {
729 /* no known/supported struct */
730 if (vn_decode_simple_pointer(dec))
731 vn_cs_decoder_set_fatal(dec);
732 return NULL;
733 }
734
735 static inline void
vn_decode_VkMutableDescriptorTypeCreateInfoEXT_self_temp(struct vn_cs_decoder * dec,VkMutableDescriptorTypeCreateInfoEXT * val)736 vn_decode_VkMutableDescriptorTypeCreateInfoEXT_self_temp(struct vn_cs_decoder *dec, VkMutableDescriptorTypeCreateInfoEXT *val)
737 {
738 /* skip val->{sType,pNext} */
739 vn_decode_uint32_t(dec, &val->mutableDescriptorTypeListCount);
740 if (vn_peek_array_size(dec)) {
741 const uint32_t iter_count = vn_decode_array_size(dec, val->mutableDescriptorTypeListCount);
742 val->pMutableDescriptorTypeLists = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pMutableDescriptorTypeLists) * iter_count);
743 if (!val->pMutableDescriptorTypeLists) return;
744 for (uint32_t i = 0; i < iter_count; i++)
745 vn_decode_VkMutableDescriptorTypeListEXT_temp(dec, &((VkMutableDescriptorTypeListEXT *)val->pMutableDescriptorTypeLists)[i]);
746 } else {
747 vn_decode_array_size(dec, val->mutableDescriptorTypeListCount);
748 val->pMutableDescriptorTypeLists = NULL;
749 }
750 }
751
752 static inline void
vn_decode_VkMutableDescriptorTypeCreateInfoEXT_temp(struct vn_cs_decoder * dec,VkMutableDescriptorTypeCreateInfoEXT * val)753 vn_decode_VkMutableDescriptorTypeCreateInfoEXT_temp(struct vn_cs_decoder *dec, VkMutableDescriptorTypeCreateInfoEXT *val)
754 {
755 VkStructureType stype;
756 vn_decode_VkStructureType(dec, &stype);
757 if (stype != VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT)
758 vn_cs_decoder_set_fatal(dec);
759
760 val->sType = stype;
761 val->pNext = vn_decode_VkMutableDescriptorTypeCreateInfoEXT_pnext_temp(dec);
762 vn_decode_VkMutableDescriptorTypeCreateInfoEXT_self_temp(dec, val);
763 }
764
765 static inline void
vn_replace_VkMutableDescriptorTypeCreateInfoEXT_handle_self(VkMutableDescriptorTypeCreateInfoEXT * val)766 vn_replace_VkMutableDescriptorTypeCreateInfoEXT_handle_self(VkMutableDescriptorTypeCreateInfoEXT *val)
767 {
768 /* skip val->sType */
769 /* skip val->pNext */
770 /* skip val->mutableDescriptorTypeListCount */
771 if (val->pMutableDescriptorTypeLists) {
772 for (uint32_t i = 0; i < val->mutableDescriptorTypeListCount; i++)
773 vn_replace_VkMutableDescriptorTypeListEXT_handle(&((VkMutableDescriptorTypeListEXT *)val->pMutableDescriptorTypeLists)[i]);
774 }
775 }
776
777 static inline void
vn_replace_VkMutableDescriptorTypeCreateInfoEXT_handle(VkMutableDescriptorTypeCreateInfoEXT * val)778 vn_replace_VkMutableDescriptorTypeCreateInfoEXT_handle(VkMutableDescriptorTypeCreateInfoEXT *val)
779 {
780 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
781
782 do {
783 switch ((int32_t)pnext->sType) {
784 case VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT:
785 vn_replace_VkMutableDescriptorTypeCreateInfoEXT_handle_self((VkMutableDescriptorTypeCreateInfoEXT *)pnext);
786 break;
787 default:
788 /* ignore unknown/unsupported struct */
789 break;
790 }
791 pnext = pnext->pNext;
792 } while (pnext);
793 }
794
795 /* struct VkDescriptorImageInfo */
796
797 static inline void
vn_decode_VkDescriptorImageInfo_temp(struct vn_cs_decoder * dec,VkDescriptorImageInfo * val)798 vn_decode_VkDescriptorImageInfo_temp(struct vn_cs_decoder *dec, VkDescriptorImageInfo *val)
799 {
800 vn_decode_VkSampler_lookup(dec, &val->sampler);
801 vn_decode_VkImageView_lookup(dec, &val->imageView);
802 vn_decode_VkImageLayout(dec, &val->imageLayout);
803 }
804
805 static inline void
vn_replace_VkDescriptorImageInfo_handle(VkDescriptorImageInfo * val)806 vn_replace_VkDescriptorImageInfo_handle(VkDescriptorImageInfo *val)
807 {
808 vn_replace_VkSampler_handle(&val->sampler);
809 vn_replace_VkImageView_handle(&val->imageView);
810 /* skip val->imageLayout */
811 }
812
813 /* struct VkDescriptorBufferInfo */
814
815 static inline void
vn_decode_VkDescriptorBufferInfo_temp(struct vn_cs_decoder * dec,VkDescriptorBufferInfo * val)816 vn_decode_VkDescriptorBufferInfo_temp(struct vn_cs_decoder *dec, VkDescriptorBufferInfo *val)
817 {
818 vn_decode_VkBuffer_lookup(dec, &val->buffer);
819 vn_decode_VkDeviceSize(dec, &val->offset);
820 vn_decode_VkDeviceSize(dec, &val->range);
821 }
822
823 static inline void
vn_replace_VkDescriptorBufferInfo_handle(VkDescriptorBufferInfo * val)824 vn_replace_VkDescriptorBufferInfo_handle(VkDescriptorBufferInfo *val)
825 {
826 vn_replace_VkBuffer_handle(&val->buffer);
827 /* skip val->offset */
828 /* skip val->range */
829 }
830
831 /* struct VkWriteDescriptorSetInlineUniformBlock chain */
832
833 static inline void *
vn_decode_VkWriteDescriptorSetInlineUniformBlock_pnext_temp(struct vn_cs_decoder * dec)834 vn_decode_VkWriteDescriptorSetInlineUniformBlock_pnext_temp(struct vn_cs_decoder *dec)
835 {
836 /* no known/supported struct */
837 if (vn_decode_simple_pointer(dec))
838 vn_cs_decoder_set_fatal(dec);
839 return NULL;
840 }
841
842 static inline void
vn_decode_VkWriteDescriptorSetInlineUniformBlock_self_temp(struct vn_cs_decoder * dec,VkWriteDescriptorSetInlineUniformBlock * val)843 vn_decode_VkWriteDescriptorSetInlineUniformBlock_self_temp(struct vn_cs_decoder *dec, VkWriteDescriptorSetInlineUniformBlock *val)
844 {
845 /* skip val->{sType,pNext} */
846 vn_decode_uint32_t(dec, &val->dataSize);
847 if (vn_peek_array_size(dec)) {
848 const size_t array_size = vn_decode_array_size(dec, val->dataSize);
849 val->pData = vn_cs_decoder_alloc_temp(dec, array_size);
850 if (!val->pData) return;
851 vn_decode_blob_array(dec, (void *)val->pData, array_size);
852 } else {
853 vn_decode_array_size(dec, val->dataSize);
854 val->pData = NULL;
855 }
856 }
857
858 static inline void
vn_decode_VkWriteDescriptorSetInlineUniformBlock_temp(struct vn_cs_decoder * dec,VkWriteDescriptorSetInlineUniformBlock * val)859 vn_decode_VkWriteDescriptorSetInlineUniformBlock_temp(struct vn_cs_decoder *dec, VkWriteDescriptorSetInlineUniformBlock *val)
860 {
861 VkStructureType stype;
862 vn_decode_VkStructureType(dec, &stype);
863 if (stype != VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK)
864 vn_cs_decoder_set_fatal(dec);
865
866 val->sType = stype;
867 val->pNext = vn_decode_VkWriteDescriptorSetInlineUniformBlock_pnext_temp(dec);
868 vn_decode_VkWriteDescriptorSetInlineUniformBlock_self_temp(dec, val);
869 }
870
871 static inline void
vn_replace_VkWriteDescriptorSetInlineUniformBlock_handle_self(VkWriteDescriptorSetInlineUniformBlock * val)872 vn_replace_VkWriteDescriptorSetInlineUniformBlock_handle_self(VkWriteDescriptorSetInlineUniformBlock *val)
873 {
874 /* skip val->sType */
875 /* skip val->pNext */
876 /* skip val->dataSize */
877 /* skip val->pData */
878 }
879
880 static inline void
vn_replace_VkWriteDescriptorSetInlineUniformBlock_handle(VkWriteDescriptorSetInlineUniformBlock * val)881 vn_replace_VkWriteDescriptorSetInlineUniformBlock_handle(VkWriteDescriptorSetInlineUniformBlock *val)
882 {
883 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
884
885 do {
886 switch ((int32_t)pnext->sType) {
887 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK:
888 vn_replace_VkWriteDescriptorSetInlineUniformBlock_handle_self((VkWriteDescriptorSetInlineUniformBlock *)pnext);
889 break;
890 default:
891 /* ignore unknown/unsupported struct */
892 break;
893 }
894 pnext = pnext->pNext;
895 } while (pnext);
896 }
897
898 /* struct VkWriteDescriptorSet chain */
899
900 static inline void *
vn_decode_VkWriteDescriptorSet_pnext_temp(struct vn_cs_decoder * dec)901 vn_decode_VkWriteDescriptorSet_pnext_temp(struct vn_cs_decoder *dec)
902 {
903 VkBaseOutStructure *pnext;
904 VkStructureType stype;
905
906 if (!vn_decode_simple_pointer(dec))
907 return NULL;
908
909 vn_decode_VkStructureType(dec, &stype);
910 switch ((int32_t)stype) {
911 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK:
912 pnext = vn_cs_decoder_alloc_temp(dec, sizeof(VkWriteDescriptorSetInlineUniformBlock));
913 if (pnext) {
914 pnext->sType = stype;
915 pnext->pNext = vn_decode_VkWriteDescriptorSet_pnext_temp(dec);
916 vn_decode_VkWriteDescriptorSetInlineUniformBlock_self_temp(dec, (VkWriteDescriptorSetInlineUniformBlock *)pnext);
917 }
918 break;
919 default:
920 /* unexpected struct */
921 pnext = NULL;
922 vn_cs_decoder_set_fatal(dec);
923 break;
924 }
925
926 return pnext;
927 }
928
929 static inline void
vn_decode_VkWriteDescriptorSet_self_temp(struct vn_cs_decoder * dec,VkWriteDescriptorSet * val)930 vn_decode_VkWriteDescriptorSet_self_temp(struct vn_cs_decoder *dec, VkWriteDescriptorSet *val)
931 {
932 /* skip val->{sType,pNext} */
933 vn_decode_VkDescriptorSet_lookup(dec, &val->dstSet);
934 vn_decode_uint32_t(dec, &val->dstBinding);
935 vn_decode_uint32_t(dec, &val->dstArrayElement);
936 vn_decode_uint32_t(dec, &val->descriptorCount);
937 vn_decode_VkDescriptorType(dec, &val->descriptorType);
938 if (vn_peek_array_size(dec)) {
939 const uint32_t iter_count = vn_decode_array_size(dec, val->descriptorCount);
940 val->pImageInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pImageInfo) * iter_count);
941 if (!val->pImageInfo) return;
942 for (uint32_t i = 0; i < iter_count; i++)
943 vn_decode_VkDescriptorImageInfo_temp(dec, &((VkDescriptorImageInfo *)val->pImageInfo)[i]);
944 } else {
945 vn_decode_array_size_unchecked(dec);
946 val->pImageInfo = NULL;
947 }
948 if (vn_peek_array_size(dec)) {
949 const uint32_t iter_count = vn_decode_array_size(dec, val->descriptorCount);
950 val->pBufferInfo = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pBufferInfo) * iter_count);
951 if (!val->pBufferInfo) return;
952 for (uint32_t i = 0; i < iter_count; i++)
953 vn_decode_VkDescriptorBufferInfo_temp(dec, &((VkDescriptorBufferInfo *)val->pBufferInfo)[i]);
954 } else {
955 vn_decode_array_size_unchecked(dec);
956 val->pBufferInfo = NULL;
957 }
958 if (vn_peek_array_size(dec)) {
959 const uint32_t iter_count = vn_decode_array_size(dec, val->descriptorCount);
960 val->pTexelBufferView = vn_cs_decoder_alloc_temp(dec, sizeof(*val->pTexelBufferView) * iter_count);
961 if (!val->pTexelBufferView) return;
962 for (uint32_t i = 0; i < iter_count; i++)
963 vn_decode_VkBufferView_lookup(dec, &((VkBufferView *)val->pTexelBufferView)[i]);
964 } else {
965 vn_decode_array_size_unchecked(dec);
966 val->pTexelBufferView = NULL;
967 }
968 }
969
970 static inline void
vn_decode_VkWriteDescriptorSet_temp(struct vn_cs_decoder * dec,VkWriteDescriptorSet * val)971 vn_decode_VkWriteDescriptorSet_temp(struct vn_cs_decoder *dec, VkWriteDescriptorSet *val)
972 {
973 VkStructureType stype;
974 vn_decode_VkStructureType(dec, &stype);
975 if (stype != VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET)
976 vn_cs_decoder_set_fatal(dec);
977
978 val->sType = stype;
979 val->pNext = vn_decode_VkWriteDescriptorSet_pnext_temp(dec);
980 vn_decode_VkWriteDescriptorSet_self_temp(dec, val);
981 }
982
983 static inline void
vn_replace_VkWriteDescriptorSet_handle_self(VkWriteDescriptorSet * val)984 vn_replace_VkWriteDescriptorSet_handle_self(VkWriteDescriptorSet *val)
985 {
986 /* skip val->sType */
987 /* skip val->pNext */
988 vn_replace_VkDescriptorSet_handle(&val->dstSet);
989 /* skip val->dstBinding */
990 /* skip val->dstArrayElement */
991 /* skip val->descriptorCount */
992 /* skip val->descriptorType */
993 if (val->pImageInfo) {
994 for (uint32_t i = 0; i < val->descriptorCount; i++)
995 vn_replace_VkDescriptorImageInfo_handle(&((VkDescriptorImageInfo *)val->pImageInfo)[i]);
996 }
997 if (val->pBufferInfo) {
998 for (uint32_t i = 0; i < val->descriptorCount; i++)
999 vn_replace_VkDescriptorBufferInfo_handle(&((VkDescriptorBufferInfo *)val->pBufferInfo)[i]);
1000 }
1001 if (val->pTexelBufferView) {
1002 for (uint32_t i = 0; i < val->descriptorCount; i++)
1003 vn_replace_VkBufferView_handle(&((VkBufferView *)val->pTexelBufferView)[i]);
1004 }
1005 }
1006
1007 static inline void
vn_replace_VkWriteDescriptorSet_handle(VkWriteDescriptorSet * val)1008 vn_replace_VkWriteDescriptorSet_handle(VkWriteDescriptorSet *val)
1009 {
1010 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
1011
1012 do {
1013 switch ((int32_t)pnext->sType) {
1014 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET:
1015 vn_replace_VkWriteDescriptorSet_handle_self((VkWriteDescriptorSet *)pnext);
1016 break;
1017 case VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK:
1018 vn_replace_VkWriteDescriptorSetInlineUniformBlock_handle_self((VkWriteDescriptorSetInlineUniformBlock *)pnext);
1019 break;
1020 default:
1021 /* ignore unknown/unsupported struct */
1022 break;
1023 }
1024 pnext = pnext->pNext;
1025 } while (pnext);
1026 }
1027
1028 /* struct VkMemoryDedicatedRequirements chain */
1029
1030 static inline void
vn_encode_VkMemoryDedicatedRequirements_pnext(struct vn_cs_encoder * enc,const void * val)1031 vn_encode_VkMemoryDedicatedRequirements_pnext(struct vn_cs_encoder *enc, const void *val)
1032 {
1033 /* no known/supported struct */
1034 vn_encode_simple_pointer(enc, NULL);
1035 }
1036
1037 static inline void
vn_encode_VkMemoryDedicatedRequirements_self(struct vn_cs_encoder * enc,const VkMemoryDedicatedRequirements * val)1038 vn_encode_VkMemoryDedicatedRequirements_self(struct vn_cs_encoder *enc, const VkMemoryDedicatedRequirements *val)
1039 {
1040 /* skip val->{sType,pNext} */
1041 vn_encode_VkBool32(enc, &val->prefersDedicatedAllocation);
1042 vn_encode_VkBool32(enc, &val->requiresDedicatedAllocation);
1043 }
1044
1045 static inline void
vn_encode_VkMemoryDedicatedRequirements(struct vn_cs_encoder * enc,const VkMemoryDedicatedRequirements * val)1046 vn_encode_VkMemoryDedicatedRequirements(struct vn_cs_encoder *enc, const VkMemoryDedicatedRequirements *val)
1047 {
1048 assert(val->sType == VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS);
1049 vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS });
1050 vn_encode_VkMemoryDedicatedRequirements_pnext(enc, val->pNext);
1051 vn_encode_VkMemoryDedicatedRequirements_self(enc, val);
1052 }
1053
1054 static inline void *
vn_decode_VkMemoryDedicatedRequirements_pnext_partial_temp(struct vn_cs_decoder * dec)1055 vn_decode_VkMemoryDedicatedRequirements_pnext_partial_temp(struct vn_cs_decoder *dec)
1056 {
1057 /* no known/supported struct */
1058 if (vn_decode_simple_pointer(dec))
1059 vn_cs_decoder_set_fatal(dec);
1060 return NULL;
1061 }
1062
1063 static inline void
vn_decode_VkMemoryDedicatedRequirements_self_partial_temp(struct vn_cs_decoder * dec,VkMemoryDedicatedRequirements * val)1064 vn_decode_VkMemoryDedicatedRequirements_self_partial_temp(struct vn_cs_decoder *dec, VkMemoryDedicatedRequirements *val)
1065 {
1066 /* skip val->{sType,pNext} */
1067 /* skip val->prefersDedicatedAllocation */
1068 /* skip val->requiresDedicatedAllocation */
1069 }
1070
1071 static inline void
vn_decode_VkMemoryDedicatedRequirements_partial_temp(struct vn_cs_decoder * dec,VkMemoryDedicatedRequirements * val)1072 vn_decode_VkMemoryDedicatedRequirements_partial_temp(struct vn_cs_decoder *dec, VkMemoryDedicatedRequirements *val)
1073 {
1074 VkStructureType stype;
1075 vn_decode_VkStructureType(dec, &stype);
1076 if (stype != VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS)
1077 vn_cs_decoder_set_fatal(dec);
1078
1079 val->sType = stype;
1080 val->pNext = vn_decode_VkMemoryDedicatedRequirements_pnext_partial_temp(dec);
1081 vn_decode_VkMemoryDedicatedRequirements_self_partial_temp(dec, val);
1082 }
1083
1084 /* struct VkMemoryRequirements2 chain */
1085
1086 static inline void
vn_encode_VkMemoryRequirements2_pnext(struct vn_cs_encoder * enc,const void * val)1087 vn_encode_VkMemoryRequirements2_pnext(struct vn_cs_encoder *enc, const void *val)
1088 {
1089 const VkBaseInStructure *pnext = val;
1090
1091 while (pnext) {
1092 switch ((int32_t)pnext->sType) {
1093 case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
1094 vn_encode_simple_pointer(enc, pnext);
1095 vn_encode_VkStructureType(enc, &pnext->sType);
1096 vn_encode_VkMemoryRequirements2_pnext(enc, pnext->pNext);
1097 vn_encode_VkMemoryDedicatedRequirements_self(enc, (const VkMemoryDedicatedRequirements *)pnext);
1098 return;
1099 default:
1100 /* ignore unknown/unsupported struct */
1101 break;
1102 }
1103 pnext = pnext->pNext;
1104 }
1105
1106 vn_encode_simple_pointer(enc, NULL);
1107 }
1108
1109 static inline void
vn_encode_VkMemoryRequirements2_self(struct vn_cs_encoder * enc,const VkMemoryRequirements2 * val)1110 vn_encode_VkMemoryRequirements2_self(struct vn_cs_encoder *enc, const VkMemoryRequirements2 *val)
1111 {
1112 /* skip val->{sType,pNext} */
1113 vn_encode_VkMemoryRequirements(enc, &val->memoryRequirements);
1114 }
1115
1116 static inline void
vn_encode_VkMemoryRequirements2(struct vn_cs_encoder * enc,const VkMemoryRequirements2 * val)1117 vn_encode_VkMemoryRequirements2(struct vn_cs_encoder *enc, const VkMemoryRequirements2 *val)
1118 {
1119 assert(val->sType == VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2);
1120 vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 });
1121 vn_encode_VkMemoryRequirements2_pnext(enc, val->pNext);
1122 vn_encode_VkMemoryRequirements2_self(enc, val);
1123 }
1124
1125 static inline void *
vn_decode_VkMemoryRequirements2_pnext_partial_temp(struct vn_cs_decoder * dec)1126 vn_decode_VkMemoryRequirements2_pnext_partial_temp(struct vn_cs_decoder *dec)
1127 {
1128 VkBaseOutStructure *pnext;
1129 VkStructureType stype;
1130
1131 if (!vn_decode_simple_pointer(dec))
1132 return NULL;
1133
1134 vn_decode_VkStructureType(dec, &stype);
1135 switch ((int32_t)stype) {
1136 case VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS:
1137 pnext = vn_cs_decoder_alloc_temp(dec, sizeof(VkMemoryDedicatedRequirements));
1138 if (pnext) {
1139 pnext->sType = stype;
1140 pnext->pNext = vn_decode_VkMemoryRequirements2_pnext_partial_temp(dec);
1141 vn_decode_VkMemoryDedicatedRequirements_self_partial_temp(dec, (VkMemoryDedicatedRequirements *)pnext);
1142 }
1143 break;
1144 default:
1145 /* unexpected struct */
1146 pnext = NULL;
1147 vn_cs_decoder_set_fatal(dec);
1148 break;
1149 }
1150
1151 return pnext;
1152 }
1153
1154 static inline void
vn_decode_VkMemoryRequirements2_self_partial_temp(struct vn_cs_decoder * dec,VkMemoryRequirements2 * val)1155 vn_decode_VkMemoryRequirements2_self_partial_temp(struct vn_cs_decoder *dec, VkMemoryRequirements2 *val)
1156 {
1157 /* skip val->{sType,pNext} */
1158 vn_decode_VkMemoryRequirements_partial_temp(dec, &val->memoryRequirements);
1159 }
1160
1161 static inline void
vn_decode_VkMemoryRequirements2_partial_temp(struct vn_cs_decoder * dec,VkMemoryRequirements2 * val)1162 vn_decode_VkMemoryRequirements2_partial_temp(struct vn_cs_decoder *dec, VkMemoryRequirements2 *val)
1163 {
1164 VkStructureType stype;
1165 vn_decode_VkStructureType(dec, &stype);
1166 if (stype != VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2)
1167 vn_cs_decoder_set_fatal(dec);
1168
1169 val->sType = stype;
1170 val->pNext = vn_decode_VkMemoryRequirements2_pnext_partial_temp(dec);
1171 vn_decode_VkMemoryRequirements2_self_partial_temp(dec, val);
1172 }
1173
1174 /* struct VkMemoryBarrier2 chain */
1175
1176 static inline void *
vn_decode_VkMemoryBarrier2_pnext_temp(struct vn_cs_decoder * dec)1177 vn_decode_VkMemoryBarrier2_pnext_temp(struct vn_cs_decoder *dec)
1178 {
1179 /* no known/supported struct */
1180 if (vn_decode_simple_pointer(dec))
1181 vn_cs_decoder_set_fatal(dec);
1182 return NULL;
1183 }
1184
1185 static inline void
vn_decode_VkMemoryBarrier2_self_temp(struct vn_cs_decoder * dec,VkMemoryBarrier2 * val)1186 vn_decode_VkMemoryBarrier2_self_temp(struct vn_cs_decoder *dec, VkMemoryBarrier2 *val)
1187 {
1188 /* skip val->{sType,pNext} */
1189 vn_decode_VkFlags64(dec, &val->srcStageMask);
1190 vn_decode_VkFlags64(dec, &val->srcAccessMask);
1191 vn_decode_VkFlags64(dec, &val->dstStageMask);
1192 vn_decode_VkFlags64(dec, &val->dstAccessMask);
1193 }
1194
1195 static inline void
vn_decode_VkMemoryBarrier2_temp(struct vn_cs_decoder * dec,VkMemoryBarrier2 * val)1196 vn_decode_VkMemoryBarrier2_temp(struct vn_cs_decoder *dec, VkMemoryBarrier2 *val)
1197 {
1198 VkStructureType stype;
1199 vn_decode_VkStructureType(dec, &stype);
1200 if (stype != VK_STRUCTURE_TYPE_MEMORY_BARRIER_2)
1201 vn_cs_decoder_set_fatal(dec);
1202
1203 val->sType = stype;
1204 val->pNext = vn_decode_VkMemoryBarrier2_pnext_temp(dec);
1205 vn_decode_VkMemoryBarrier2_self_temp(dec, val);
1206 }
1207
1208 static inline void
vn_replace_VkMemoryBarrier2_handle_self(VkMemoryBarrier2 * val)1209 vn_replace_VkMemoryBarrier2_handle_self(VkMemoryBarrier2 *val)
1210 {
1211 /* skip val->sType */
1212 /* skip val->pNext */
1213 /* skip val->srcStageMask */
1214 /* skip val->srcAccessMask */
1215 /* skip val->dstStageMask */
1216 /* skip val->dstAccessMask */
1217 }
1218
1219 static inline void
vn_replace_VkMemoryBarrier2_handle(VkMemoryBarrier2 * val)1220 vn_replace_VkMemoryBarrier2_handle(VkMemoryBarrier2 *val)
1221 {
1222 struct VkBaseOutStructure *pnext = (struct VkBaseOutStructure *)val;
1223
1224 do {
1225 switch ((int32_t)pnext->sType) {
1226 case VK_STRUCTURE_TYPE_MEMORY_BARRIER_2:
1227 vn_replace_VkMemoryBarrier2_handle_self((VkMemoryBarrier2 *)pnext);
1228 break;
1229 default:
1230 /* ignore unknown/unsupported struct */
1231 break;
1232 }
1233 pnext = pnext->pNext;
1234 } while (pnext);
1235 }
1236
1237 #pragma GCC diagnostic pop
1238
1239 #endif /* VN_PROTOCOL_RENDERER_STRUCTS_H */
1240