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_PIPELINE_H
9 #define VN_PROTOCOL_DRIVER_PIPELINE_H
10 
11 #include "vn_instance.h"
12 #include "vn_protocol_driver_structs.h"
13 
14 /* struct VkSpecializationMapEntry */
15 
16 static inline size_t
vn_sizeof_VkSpecializationMapEntry(const VkSpecializationMapEntry * val)17 vn_sizeof_VkSpecializationMapEntry(const VkSpecializationMapEntry *val)
18 {
19     size_t size = 0;
20     size += vn_sizeof_uint32_t(&val->constantID);
21     size += vn_sizeof_uint32_t(&val->offset);
22     size += vn_sizeof_size_t(&val->size);
23     return size;
24 }
25 
26 static inline void
vn_encode_VkSpecializationMapEntry(struct vn_cs_encoder * enc,const VkSpecializationMapEntry * val)27 vn_encode_VkSpecializationMapEntry(struct vn_cs_encoder *enc, const VkSpecializationMapEntry *val)
28 {
29     vn_encode_uint32_t(enc, &val->constantID);
30     vn_encode_uint32_t(enc, &val->offset);
31     vn_encode_size_t(enc, &val->size);
32 }
33 
34 /* struct VkSpecializationInfo */
35 
36 static inline size_t
vn_sizeof_VkSpecializationInfo(const VkSpecializationInfo * val)37 vn_sizeof_VkSpecializationInfo(const VkSpecializationInfo *val)
38 {
39     size_t size = 0;
40     size += vn_sizeof_uint32_t(&val->mapEntryCount);
41     if (val->pMapEntries) {
42         size += vn_sizeof_array_size(val->mapEntryCount);
43         for (uint32_t i = 0; i < val->mapEntryCount; i++)
44             size += vn_sizeof_VkSpecializationMapEntry(&val->pMapEntries[i]);
45     } else {
46         size += vn_sizeof_array_size(0);
47     }
48     size += vn_sizeof_size_t(&val->dataSize);
49     if (val->pData) {
50         size += vn_sizeof_array_size(val->dataSize);
51         size += vn_sizeof_blob_array(val->pData, val->dataSize);
52     } else {
53         size += vn_sizeof_array_size(0);
54     }
55     return size;
56 }
57 
58 static inline void
vn_encode_VkSpecializationInfo(struct vn_cs_encoder * enc,const VkSpecializationInfo * val)59 vn_encode_VkSpecializationInfo(struct vn_cs_encoder *enc, const VkSpecializationInfo *val)
60 {
61     vn_encode_uint32_t(enc, &val->mapEntryCount);
62     if (val->pMapEntries) {
63         vn_encode_array_size(enc, val->mapEntryCount);
64         for (uint32_t i = 0; i < val->mapEntryCount; i++)
65             vn_encode_VkSpecializationMapEntry(enc, &val->pMapEntries[i]);
66     } else {
67         vn_encode_array_size(enc, 0);
68     }
69     vn_encode_size_t(enc, &val->dataSize);
70     if (val->pData) {
71         vn_encode_array_size(enc, val->dataSize);
72         vn_encode_blob_array(enc, val->pData, val->dataSize);
73     } else {
74         vn_encode_array_size(enc, 0);
75     }
76 }
77 
78 /* struct VkPipelineShaderStageCreateInfo chain */
79 
80 static inline size_t
vn_sizeof_VkPipelineShaderStageCreateInfo_pnext(const void * val)81 vn_sizeof_VkPipelineShaderStageCreateInfo_pnext(const void *val)
82 {
83     /* no known/supported struct */
84     return vn_sizeof_simple_pointer(NULL);
85 }
86 
87 static inline size_t
vn_sizeof_VkPipelineShaderStageCreateInfo_self(const VkPipelineShaderStageCreateInfo * val)88 vn_sizeof_VkPipelineShaderStageCreateInfo_self(const VkPipelineShaderStageCreateInfo *val)
89 {
90     size_t size = 0;
91     /* skip val->{sType,pNext} */
92     size += vn_sizeof_VkFlags(&val->flags);
93     size += vn_sizeof_VkShaderStageFlagBits(&val->stage);
94     size += vn_sizeof_VkShaderModule(&val->module);
95     if (val->pName) {
96         const size_t string_size = strlen(val->pName) + 1;
97         size += vn_sizeof_array_size(string_size);
98         size += vn_sizeof_char_array(val->pName, string_size);
99     } else {
100         size += vn_sizeof_array_size(0);
101     }
102     size += vn_sizeof_simple_pointer(val->pSpecializationInfo);
103     if (val->pSpecializationInfo)
104         size += vn_sizeof_VkSpecializationInfo(val->pSpecializationInfo);
105     return size;
106 }
107 
108 static inline size_t
vn_sizeof_VkPipelineShaderStageCreateInfo(const VkPipelineShaderStageCreateInfo * val)109 vn_sizeof_VkPipelineShaderStageCreateInfo(const VkPipelineShaderStageCreateInfo *val)
110 {
111     size_t size = 0;
112 
113     size += vn_sizeof_VkStructureType(&val->sType);
114     size += vn_sizeof_VkPipelineShaderStageCreateInfo_pnext(val->pNext);
115     size += vn_sizeof_VkPipelineShaderStageCreateInfo_self(val);
116 
117     return size;
118 }
119 
120 static inline void
vn_encode_VkPipelineShaderStageCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)121 vn_encode_VkPipelineShaderStageCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
122 {
123     /* no known/supported struct */
124     vn_encode_simple_pointer(enc, NULL);
125 }
126 
127 static inline void
vn_encode_VkPipelineShaderStageCreateInfo_self(struct vn_cs_encoder * enc,const VkPipelineShaderStageCreateInfo * val)128 vn_encode_VkPipelineShaderStageCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineShaderStageCreateInfo *val)
129 {
130     /* skip val->{sType,pNext} */
131     vn_encode_VkFlags(enc, &val->flags);
132     vn_encode_VkShaderStageFlagBits(enc, &val->stage);
133     vn_encode_VkShaderModule(enc, &val->module);
134     if (val->pName) {
135         const size_t string_size = strlen(val->pName) + 1;
136         vn_encode_array_size(enc, string_size);
137         vn_encode_char_array(enc, val->pName, string_size);
138     } else {
139         vn_encode_array_size(enc, 0);
140     }
141     if (vn_encode_simple_pointer(enc, val->pSpecializationInfo))
142         vn_encode_VkSpecializationInfo(enc, val->pSpecializationInfo);
143 }
144 
145 static inline void
vn_encode_VkPipelineShaderStageCreateInfo(struct vn_cs_encoder * enc,const VkPipelineShaderStageCreateInfo * val)146 vn_encode_VkPipelineShaderStageCreateInfo(struct vn_cs_encoder *enc, const VkPipelineShaderStageCreateInfo *val)
147 {
148     assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO);
149     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO });
150     vn_encode_VkPipelineShaderStageCreateInfo_pnext(enc, val->pNext);
151     vn_encode_VkPipelineShaderStageCreateInfo_self(enc, val);
152 }
153 
154 /* struct VkVertexInputBindingDescription */
155 
156 static inline size_t
vn_sizeof_VkVertexInputBindingDescription(const VkVertexInputBindingDescription * val)157 vn_sizeof_VkVertexInputBindingDescription(const VkVertexInputBindingDescription *val)
158 {
159     size_t size = 0;
160     size += vn_sizeof_uint32_t(&val->binding);
161     size += vn_sizeof_uint32_t(&val->stride);
162     size += vn_sizeof_VkVertexInputRate(&val->inputRate);
163     return size;
164 }
165 
166 static inline void
vn_encode_VkVertexInputBindingDescription(struct vn_cs_encoder * enc,const VkVertexInputBindingDescription * val)167 vn_encode_VkVertexInputBindingDescription(struct vn_cs_encoder *enc, const VkVertexInputBindingDescription *val)
168 {
169     vn_encode_uint32_t(enc, &val->binding);
170     vn_encode_uint32_t(enc, &val->stride);
171     vn_encode_VkVertexInputRate(enc, &val->inputRate);
172 }
173 
174 /* struct VkVertexInputAttributeDescription */
175 
176 static inline size_t
vn_sizeof_VkVertexInputAttributeDescription(const VkVertexInputAttributeDescription * val)177 vn_sizeof_VkVertexInputAttributeDescription(const VkVertexInputAttributeDescription *val)
178 {
179     size_t size = 0;
180     size += vn_sizeof_uint32_t(&val->location);
181     size += vn_sizeof_uint32_t(&val->binding);
182     size += vn_sizeof_VkFormat(&val->format);
183     size += vn_sizeof_uint32_t(&val->offset);
184     return size;
185 }
186 
187 static inline void
vn_encode_VkVertexInputAttributeDescription(struct vn_cs_encoder * enc,const VkVertexInputAttributeDescription * val)188 vn_encode_VkVertexInputAttributeDescription(struct vn_cs_encoder *enc, const VkVertexInputAttributeDescription *val)
189 {
190     vn_encode_uint32_t(enc, &val->location);
191     vn_encode_uint32_t(enc, &val->binding);
192     vn_encode_VkFormat(enc, &val->format);
193     vn_encode_uint32_t(enc, &val->offset);
194 }
195 
196 /* struct VkPipelineVertexInputStateCreateInfo chain */
197 
198 static inline size_t
vn_sizeof_VkPipelineVertexInputStateCreateInfo_pnext(const void * val)199 vn_sizeof_VkPipelineVertexInputStateCreateInfo_pnext(const void *val)
200 {
201     /* no known/supported struct */
202     return vn_sizeof_simple_pointer(NULL);
203 }
204 
205 static inline size_t
vn_sizeof_VkPipelineVertexInputStateCreateInfo_self(const VkPipelineVertexInputStateCreateInfo * val)206 vn_sizeof_VkPipelineVertexInputStateCreateInfo_self(const VkPipelineVertexInputStateCreateInfo *val)
207 {
208     size_t size = 0;
209     /* skip val->{sType,pNext} */
210     size += vn_sizeof_VkFlags(&val->flags);
211     size += vn_sizeof_uint32_t(&val->vertexBindingDescriptionCount);
212     if (val->pVertexBindingDescriptions) {
213         size += vn_sizeof_array_size(val->vertexBindingDescriptionCount);
214         for (uint32_t i = 0; i < val->vertexBindingDescriptionCount; i++)
215             size += vn_sizeof_VkVertexInputBindingDescription(&val->pVertexBindingDescriptions[i]);
216     } else {
217         size += vn_sizeof_array_size(0);
218     }
219     size += vn_sizeof_uint32_t(&val->vertexAttributeDescriptionCount);
220     if (val->pVertexAttributeDescriptions) {
221         size += vn_sizeof_array_size(val->vertexAttributeDescriptionCount);
222         for (uint32_t i = 0; i < val->vertexAttributeDescriptionCount; i++)
223             size += vn_sizeof_VkVertexInputAttributeDescription(&val->pVertexAttributeDescriptions[i]);
224     } else {
225         size += vn_sizeof_array_size(0);
226     }
227     return size;
228 }
229 
230 static inline size_t
vn_sizeof_VkPipelineVertexInputStateCreateInfo(const VkPipelineVertexInputStateCreateInfo * val)231 vn_sizeof_VkPipelineVertexInputStateCreateInfo(const VkPipelineVertexInputStateCreateInfo *val)
232 {
233     size_t size = 0;
234 
235     size += vn_sizeof_VkStructureType(&val->sType);
236     size += vn_sizeof_VkPipelineVertexInputStateCreateInfo_pnext(val->pNext);
237     size += vn_sizeof_VkPipelineVertexInputStateCreateInfo_self(val);
238 
239     return size;
240 }
241 
242 static inline void
vn_encode_VkPipelineVertexInputStateCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)243 vn_encode_VkPipelineVertexInputStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
244 {
245     /* no known/supported struct */
246     vn_encode_simple_pointer(enc, NULL);
247 }
248 
249 static inline void
vn_encode_VkPipelineVertexInputStateCreateInfo_self(struct vn_cs_encoder * enc,const VkPipelineVertexInputStateCreateInfo * val)250 vn_encode_VkPipelineVertexInputStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineVertexInputStateCreateInfo *val)
251 {
252     /* skip val->{sType,pNext} */
253     vn_encode_VkFlags(enc, &val->flags);
254     vn_encode_uint32_t(enc, &val->vertexBindingDescriptionCount);
255     if (val->pVertexBindingDescriptions) {
256         vn_encode_array_size(enc, val->vertexBindingDescriptionCount);
257         for (uint32_t i = 0; i < val->vertexBindingDescriptionCount; i++)
258             vn_encode_VkVertexInputBindingDescription(enc, &val->pVertexBindingDescriptions[i]);
259     } else {
260         vn_encode_array_size(enc, 0);
261     }
262     vn_encode_uint32_t(enc, &val->vertexAttributeDescriptionCount);
263     if (val->pVertexAttributeDescriptions) {
264         vn_encode_array_size(enc, val->vertexAttributeDescriptionCount);
265         for (uint32_t i = 0; i < val->vertexAttributeDescriptionCount; i++)
266             vn_encode_VkVertexInputAttributeDescription(enc, &val->pVertexAttributeDescriptions[i]);
267     } else {
268         vn_encode_array_size(enc, 0);
269     }
270 }
271 
272 static inline void
vn_encode_VkPipelineVertexInputStateCreateInfo(struct vn_cs_encoder * enc,const VkPipelineVertexInputStateCreateInfo * val)273 vn_encode_VkPipelineVertexInputStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineVertexInputStateCreateInfo *val)
274 {
275     assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO);
276     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO });
277     vn_encode_VkPipelineVertexInputStateCreateInfo_pnext(enc, val->pNext);
278     vn_encode_VkPipelineVertexInputStateCreateInfo_self(enc, val);
279 }
280 
281 /* struct VkPipelineInputAssemblyStateCreateInfo chain */
282 
283 static inline size_t
vn_sizeof_VkPipelineInputAssemblyStateCreateInfo_pnext(const void * val)284 vn_sizeof_VkPipelineInputAssemblyStateCreateInfo_pnext(const void *val)
285 {
286     /* no known/supported struct */
287     return vn_sizeof_simple_pointer(NULL);
288 }
289 
290 static inline size_t
vn_sizeof_VkPipelineInputAssemblyStateCreateInfo_self(const VkPipelineInputAssemblyStateCreateInfo * val)291 vn_sizeof_VkPipelineInputAssemblyStateCreateInfo_self(const VkPipelineInputAssemblyStateCreateInfo *val)
292 {
293     size_t size = 0;
294     /* skip val->{sType,pNext} */
295     size += vn_sizeof_VkFlags(&val->flags);
296     size += vn_sizeof_VkPrimitiveTopology(&val->topology);
297     size += vn_sizeof_VkBool32(&val->primitiveRestartEnable);
298     return size;
299 }
300 
301 static inline size_t
vn_sizeof_VkPipelineInputAssemblyStateCreateInfo(const VkPipelineInputAssemblyStateCreateInfo * val)302 vn_sizeof_VkPipelineInputAssemblyStateCreateInfo(const VkPipelineInputAssemblyStateCreateInfo *val)
303 {
304     size_t size = 0;
305 
306     size += vn_sizeof_VkStructureType(&val->sType);
307     size += vn_sizeof_VkPipelineInputAssemblyStateCreateInfo_pnext(val->pNext);
308     size += vn_sizeof_VkPipelineInputAssemblyStateCreateInfo_self(val);
309 
310     return size;
311 }
312 
313 static inline void
vn_encode_VkPipelineInputAssemblyStateCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)314 vn_encode_VkPipelineInputAssemblyStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
315 {
316     /* no known/supported struct */
317     vn_encode_simple_pointer(enc, NULL);
318 }
319 
320 static inline void
vn_encode_VkPipelineInputAssemblyStateCreateInfo_self(struct vn_cs_encoder * enc,const VkPipelineInputAssemblyStateCreateInfo * val)321 vn_encode_VkPipelineInputAssemblyStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineInputAssemblyStateCreateInfo *val)
322 {
323     /* skip val->{sType,pNext} */
324     vn_encode_VkFlags(enc, &val->flags);
325     vn_encode_VkPrimitiveTopology(enc, &val->topology);
326     vn_encode_VkBool32(enc, &val->primitiveRestartEnable);
327 }
328 
329 static inline void
vn_encode_VkPipelineInputAssemblyStateCreateInfo(struct vn_cs_encoder * enc,const VkPipelineInputAssemblyStateCreateInfo * val)330 vn_encode_VkPipelineInputAssemblyStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineInputAssemblyStateCreateInfo *val)
331 {
332     assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO);
333     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO });
334     vn_encode_VkPipelineInputAssemblyStateCreateInfo_pnext(enc, val->pNext);
335     vn_encode_VkPipelineInputAssemblyStateCreateInfo_self(enc, val);
336 }
337 
338 /* struct VkPipelineTessellationDomainOriginStateCreateInfo chain */
339 
340 static inline size_t
vn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo_pnext(const void * val)341 vn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo_pnext(const void *val)
342 {
343     /* no known/supported struct */
344     return vn_sizeof_simple_pointer(NULL);
345 }
346 
347 static inline size_t
vn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo_self(const VkPipelineTessellationDomainOriginStateCreateInfo * val)348 vn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo_self(const VkPipelineTessellationDomainOriginStateCreateInfo *val)
349 {
350     size_t size = 0;
351     /* skip val->{sType,pNext} */
352     size += vn_sizeof_VkTessellationDomainOrigin(&val->domainOrigin);
353     return size;
354 }
355 
356 static inline size_t
vn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo(const VkPipelineTessellationDomainOriginStateCreateInfo * val)357 vn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo(const VkPipelineTessellationDomainOriginStateCreateInfo *val)
358 {
359     size_t size = 0;
360 
361     size += vn_sizeof_VkStructureType(&val->sType);
362     size += vn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo_pnext(val->pNext);
363     size += vn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo_self(val);
364 
365     return size;
366 }
367 
368 static inline void
vn_encode_VkPipelineTessellationDomainOriginStateCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)369 vn_encode_VkPipelineTessellationDomainOriginStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
370 {
371     /* no known/supported struct */
372     vn_encode_simple_pointer(enc, NULL);
373 }
374 
375 static inline void
vn_encode_VkPipelineTessellationDomainOriginStateCreateInfo_self(struct vn_cs_encoder * enc,const VkPipelineTessellationDomainOriginStateCreateInfo * val)376 vn_encode_VkPipelineTessellationDomainOriginStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineTessellationDomainOriginStateCreateInfo *val)
377 {
378     /* skip val->{sType,pNext} */
379     vn_encode_VkTessellationDomainOrigin(enc, &val->domainOrigin);
380 }
381 
382 static inline void
vn_encode_VkPipelineTessellationDomainOriginStateCreateInfo(struct vn_cs_encoder * enc,const VkPipelineTessellationDomainOriginStateCreateInfo * val)383 vn_encode_VkPipelineTessellationDomainOriginStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineTessellationDomainOriginStateCreateInfo *val)
384 {
385     assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO);
386     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO });
387     vn_encode_VkPipelineTessellationDomainOriginStateCreateInfo_pnext(enc, val->pNext);
388     vn_encode_VkPipelineTessellationDomainOriginStateCreateInfo_self(enc, val);
389 }
390 
391 /* struct VkPipelineTessellationStateCreateInfo chain */
392 
393 static inline size_t
vn_sizeof_VkPipelineTessellationStateCreateInfo_pnext(const void * val)394 vn_sizeof_VkPipelineTessellationStateCreateInfo_pnext(const void *val)
395 {
396     const VkBaseInStructure *pnext = val;
397     size_t size = 0;
398 
399     while (pnext) {
400         switch ((int32_t)pnext->sType) {
401         case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO:
402             size += vn_sizeof_simple_pointer(pnext);
403             size += vn_sizeof_VkStructureType(&pnext->sType);
404             size += vn_sizeof_VkPipelineTessellationStateCreateInfo_pnext(pnext->pNext);
405             size += vn_sizeof_VkPipelineTessellationDomainOriginStateCreateInfo_self((const VkPipelineTessellationDomainOriginStateCreateInfo *)pnext);
406             return size;
407         default:
408             /* ignore unknown/unsupported struct */
409             break;
410         }
411         pnext = pnext->pNext;
412     }
413 
414     return vn_sizeof_simple_pointer(NULL);
415 }
416 
417 static inline size_t
vn_sizeof_VkPipelineTessellationStateCreateInfo_self(const VkPipelineTessellationStateCreateInfo * val)418 vn_sizeof_VkPipelineTessellationStateCreateInfo_self(const VkPipelineTessellationStateCreateInfo *val)
419 {
420     size_t size = 0;
421     /* skip val->{sType,pNext} */
422     size += vn_sizeof_VkFlags(&val->flags);
423     size += vn_sizeof_uint32_t(&val->patchControlPoints);
424     return size;
425 }
426 
427 static inline size_t
vn_sizeof_VkPipelineTessellationStateCreateInfo(const VkPipelineTessellationStateCreateInfo * val)428 vn_sizeof_VkPipelineTessellationStateCreateInfo(const VkPipelineTessellationStateCreateInfo *val)
429 {
430     size_t size = 0;
431 
432     size += vn_sizeof_VkStructureType(&val->sType);
433     size += vn_sizeof_VkPipelineTessellationStateCreateInfo_pnext(val->pNext);
434     size += vn_sizeof_VkPipelineTessellationStateCreateInfo_self(val);
435 
436     return size;
437 }
438 
439 static inline void
vn_encode_VkPipelineTessellationStateCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)440 vn_encode_VkPipelineTessellationStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
441 {
442     const VkBaseInStructure *pnext = val;
443 
444     while (pnext) {
445         switch ((int32_t)pnext->sType) {
446         case VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO:
447             vn_encode_simple_pointer(enc, pnext);
448             vn_encode_VkStructureType(enc, &pnext->sType);
449             vn_encode_VkPipelineTessellationStateCreateInfo_pnext(enc, pnext->pNext);
450             vn_encode_VkPipelineTessellationDomainOriginStateCreateInfo_self(enc, (const VkPipelineTessellationDomainOriginStateCreateInfo *)pnext);
451             return;
452         default:
453             /* ignore unknown/unsupported struct */
454             break;
455         }
456         pnext = pnext->pNext;
457     }
458 
459     vn_encode_simple_pointer(enc, NULL);
460 }
461 
462 static inline void
vn_encode_VkPipelineTessellationStateCreateInfo_self(struct vn_cs_encoder * enc,const VkPipelineTessellationStateCreateInfo * val)463 vn_encode_VkPipelineTessellationStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineTessellationStateCreateInfo *val)
464 {
465     /* skip val->{sType,pNext} */
466     vn_encode_VkFlags(enc, &val->flags);
467     vn_encode_uint32_t(enc, &val->patchControlPoints);
468 }
469 
470 static inline void
vn_encode_VkPipelineTessellationStateCreateInfo(struct vn_cs_encoder * enc,const VkPipelineTessellationStateCreateInfo * val)471 vn_encode_VkPipelineTessellationStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineTessellationStateCreateInfo *val)
472 {
473     assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO);
474     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO });
475     vn_encode_VkPipelineTessellationStateCreateInfo_pnext(enc, val->pNext);
476     vn_encode_VkPipelineTessellationStateCreateInfo_self(enc, val);
477 }
478 
479 /* struct VkPipelineViewportStateCreateInfo chain */
480 
481 static inline size_t
vn_sizeof_VkPipelineViewportStateCreateInfo_pnext(const void * val)482 vn_sizeof_VkPipelineViewportStateCreateInfo_pnext(const void *val)
483 {
484     /* no known/supported struct */
485     return vn_sizeof_simple_pointer(NULL);
486 }
487 
488 static inline size_t
vn_sizeof_VkPipelineViewportStateCreateInfo_self(const VkPipelineViewportStateCreateInfo * val)489 vn_sizeof_VkPipelineViewportStateCreateInfo_self(const VkPipelineViewportStateCreateInfo *val)
490 {
491     size_t size = 0;
492     /* skip val->{sType,pNext} */
493     size += vn_sizeof_VkFlags(&val->flags);
494     size += vn_sizeof_uint32_t(&val->viewportCount);
495     if (val->pViewports) {
496         size += vn_sizeof_array_size(val->viewportCount);
497         for (uint32_t i = 0; i < val->viewportCount; i++)
498             size += vn_sizeof_VkViewport(&val->pViewports[i]);
499     } else {
500         size += vn_sizeof_array_size(0);
501     }
502     size += vn_sizeof_uint32_t(&val->scissorCount);
503     if (val->pScissors) {
504         size += vn_sizeof_array_size(val->scissorCount);
505         for (uint32_t i = 0; i < val->scissorCount; i++)
506             size += vn_sizeof_VkRect2D(&val->pScissors[i]);
507     } else {
508         size += vn_sizeof_array_size(0);
509     }
510     return size;
511 }
512 
513 static inline size_t
vn_sizeof_VkPipelineViewportStateCreateInfo(const VkPipelineViewportStateCreateInfo * val)514 vn_sizeof_VkPipelineViewportStateCreateInfo(const VkPipelineViewportStateCreateInfo *val)
515 {
516     size_t size = 0;
517 
518     size += vn_sizeof_VkStructureType(&val->sType);
519     size += vn_sizeof_VkPipelineViewportStateCreateInfo_pnext(val->pNext);
520     size += vn_sizeof_VkPipelineViewportStateCreateInfo_self(val);
521 
522     return size;
523 }
524 
525 static inline void
vn_encode_VkPipelineViewportStateCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)526 vn_encode_VkPipelineViewportStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
527 {
528     /* no known/supported struct */
529     vn_encode_simple_pointer(enc, NULL);
530 }
531 
532 static inline void
vn_encode_VkPipelineViewportStateCreateInfo_self(struct vn_cs_encoder * enc,const VkPipelineViewportStateCreateInfo * val)533 vn_encode_VkPipelineViewportStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineViewportStateCreateInfo *val)
534 {
535     /* skip val->{sType,pNext} */
536     vn_encode_VkFlags(enc, &val->flags);
537     vn_encode_uint32_t(enc, &val->viewportCount);
538     if (val->pViewports) {
539         vn_encode_array_size(enc, val->viewportCount);
540         for (uint32_t i = 0; i < val->viewportCount; i++)
541             vn_encode_VkViewport(enc, &val->pViewports[i]);
542     } else {
543         vn_encode_array_size(enc, 0);
544     }
545     vn_encode_uint32_t(enc, &val->scissorCount);
546     if (val->pScissors) {
547         vn_encode_array_size(enc, val->scissorCount);
548         for (uint32_t i = 0; i < val->scissorCount; i++)
549             vn_encode_VkRect2D(enc, &val->pScissors[i]);
550     } else {
551         vn_encode_array_size(enc, 0);
552     }
553 }
554 
555 static inline void
vn_encode_VkPipelineViewportStateCreateInfo(struct vn_cs_encoder * enc,const VkPipelineViewportStateCreateInfo * val)556 vn_encode_VkPipelineViewportStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineViewportStateCreateInfo *val)
557 {
558     assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO);
559     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO });
560     vn_encode_VkPipelineViewportStateCreateInfo_pnext(enc, val->pNext);
561     vn_encode_VkPipelineViewportStateCreateInfo_self(enc, val);
562 }
563 
564 /* struct VkPipelineRasterizationStateStreamCreateInfoEXT chain */
565 
566 static inline size_t
vn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT_pnext(const void * val)567 vn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT_pnext(const void *val)
568 {
569     /* no known/supported struct */
570     return vn_sizeof_simple_pointer(NULL);
571 }
572 
573 static inline size_t
vn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT_self(const VkPipelineRasterizationStateStreamCreateInfoEXT * val)574 vn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT_self(const VkPipelineRasterizationStateStreamCreateInfoEXT *val)
575 {
576     size_t size = 0;
577     /* skip val->{sType,pNext} */
578     size += vn_sizeof_VkFlags(&val->flags);
579     size += vn_sizeof_uint32_t(&val->rasterizationStream);
580     return size;
581 }
582 
583 static inline size_t
vn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT(const VkPipelineRasterizationStateStreamCreateInfoEXT * val)584 vn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT(const VkPipelineRasterizationStateStreamCreateInfoEXT *val)
585 {
586     size_t size = 0;
587 
588     size += vn_sizeof_VkStructureType(&val->sType);
589     size += vn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT_pnext(val->pNext);
590     size += vn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT_self(val);
591 
592     return size;
593 }
594 
595 static inline void
vn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT_pnext(struct vn_cs_encoder * enc,const void * val)596 vn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT_pnext(struct vn_cs_encoder *enc, const void *val)
597 {
598     /* no known/supported struct */
599     vn_encode_simple_pointer(enc, NULL);
600 }
601 
602 static inline void
vn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT_self(struct vn_cs_encoder * enc,const VkPipelineRasterizationStateStreamCreateInfoEXT * val)603 vn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT_self(struct vn_cs_encoder *enc, const VkPipelineRasterizationStateStreamCreateInfoEXT *val)
604 {
605     /* skip val->{sType,pNext} */
606     vn_encode_VkFlags(enc, &val->flags);
607     vn_encode_uint32_t(enc, &val->rasterizationStream);
608 }
609 
610 static inline void
vn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT(struct vn_cs_encoder * enc,const VkPipelineRasterizationStateStreamCreateInfoEXT * val)611 vn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT(struct vn_cs_encoder *enc, const VkPipelineRasterizationStateStreamCreateInfoEXT *val)
612 {
613     assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT);
614     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT });
615     vn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT_pnext(enc, val->pNext);
616     vn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT_self(enc, val);
617 }
618 
619 /* struct VkPipelineRasterizationStateCreateInfo chain */
620 
621 static inline size_t
vn_sizeof_VkPipelineRasterizationStateCreateInfo_pnext(const void * val)622 vn_sizeof_VkPipelineRasterizationStateCreateInfo_pnext(const void *val)
623 {
624     const VkBaseInStructure *pnext = val;
625     size_t size = 0;
626 
627     while (pnext) {
628         switch ((int32_t)pnext->sType) {
629         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT:
630             size += vn_sizeof_simple_pointer(pnext);
631             size += vn_sizeof_VkStructureType(&pnext->sType);
632             size += vn_sizeof_VkPipelineRasterizationStateCreateInfo_pnext(pnext->pNext);
633             size += vn_sizeof_VkPipelineRasterizationStateStreamCreateInfoEXT_self((const VkPipelineRasterizationStateStreamCreateInfoEXT *)pnext);
634             return size;
635         default:
636             /* ignore unknown/unsupported struct */
637             break;
638         }
639         pnext = pnext->pNext;
640     }
641 
642     return vn_sizeof_simple_pointer(NULL);
643 }
644 
645 static inline size_t
vn_sizeof_VkPipelineRasterizationStateCreateInfo_self(const VkPipelineRasterizationStateCreateInfo * val)646 vn_sizeof_VkPipelineRasterizationStateCreateInfo_self(const VkPipelineRasterizationStateCreateInfo *val)
647 {
648     size_t size = 0;
649     /* skip val->{sType,pNext} */
650     size += vn_sizeof_VkFlags(&val->flags);
651     size += vn_sizeof_VkBool32(&val->depthClampEnable);
652     size += vn_sizeof_VkBool32(&val->rasterizerDiscardEnable);
653     size += vn_sizeof_VkPolygonMode(&val->polygonMode);
654     size += vn_sizeof_VkFlags(&val->cullMode);
655     size += vn_sizeof_VkFrontFace(&val->frontFace);
656     size += vn_sizeof_VkBool32(&val->depthBiasEnable);
657     size += vn_sizeof_float(&val->depthBiasConstantFactor);
658     size += vn_sizeof_float(&val->depthBiasClamp);
659     size += vn_sizeof_float(&val->depthBiasSlopeFactor);
660     size += vn_sizeof_float(&val->lineWidth);
661     return size;
662 }
663 
664 static inline size_t
vn_sizeof_VkPipelineRasterizationStateCreateInfo(const VkPipelineRasterizationStateCreateInfo * val)665 vn_sizeof_VkPipelineRasterizationStateCreateInfo(const VkPipelineRasterizationStateCreateInfo *val)
666 {
667     size_t size = 0;
668 
669     size += vn_sizeof_VkStructureType(&val->sType);
670     size += vn_sizeof_VkPipelineRasterizationStateCreateInfo_pnext(val->pNext);
671     size += vn_sizeof_VkPipelineRasterizationStateCreateInfo_self(val);
672 
673     return size;
674 }
675 
676 static inline void
vn_encode_VkPipelineRasterizationStateCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)677 vn_encode_VkPipelineRasterizationStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
678 {
679     const VkBaseInStructure *pnext = val;
680 
681     while (pnext) {
682         switch ((int32_t)pnext->sType) {
683         case VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT:
684             vn_encode_simple_pointer(enc, pnext);
685             vn_encode_VkStructureType(enc, &pnext->sType);
686             vn_encode_VkPipelineRasterizationStateCreateInfo_pnext(enc, pnext->pNext);
687             vn_encode_VkPipelineRasterizationStateStreamCreateInfoEXT_self(enc, (const VkPipelineRasterizationStateStreamCreateInfoEXT *)pnext);
688             return;
689         default:
690             /* ignore unknown/unsupported struct */
691             break;
692         }
693         pnext = pnext->pNext;
694     }
695 
696     vn_encode_simple_pointer(enc, NULL);
697 }
698 
699 static inline void
vn_encode_VkPipelineRasterizationStateCreateInfo_self(struct vn_cs_encoder * enc,const VkPipelineRasterizationStateCreateInfo * val)700 vn_encode_VkPipelineRasterizationStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineRasterizationStateCreateInfo *val)
701 {
702     /* skip val->{sType,pNext} */
703     vn_encode_VkFlags(enc, &val->flags);
704     vn_encode_VkBool32(enc, &val->depthClampEnable);
705     vn_encode_VkBool32(enc, &val->rasterizerDiscardEnable);
706     vn_encode_VkPolygonMode(enc, &val->polygonMode);
707     vn_encode_VkFlags(enc, &val->cullMode);
708     vn_encode_VkFrontFace(enc, &val->frontFace);
709     vn_encode_VkBool32(enc, &val->depthBiasEnable);
710     vn_encode_float(enc, &val->depthBiasConstantFactor);
711     vn_encode_float(enc, &val->depthBiasClamp);
712     vn_encode_float(enc, &val->depthBiasSlopeFactor);
713     vn_encode_float(enc, &val->lineWidth);
714 }
715 
716 static inline void
vn_encode_VkPipelineRasterizationStateCreateInfo(struct vn_cs_encoder * enc,const VkPipelineRasterizationStateCreateInfo * val)717 vn_encode_VkPipelineRasterizationStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineRasterizationStateCreateInfo *val)
718 {
719     assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO);
720     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO });
721     vn_encode_VkPipelineRasterizationStateCreateInfo_pnext(enc, val->pNext);
722     vn_encode_VkPipelineRasterizationStateCreateInfo_self(enc, val);
723 }
724 
725 /* struct VkPipelineMultisampleStateCreateInfo chain */
726 
727 static inline size_t
vn_sizeof_VkPipelineMultisampleStateCreateInfo_pnext(const void * val)728 vn_sizeof_VkPipelineMultisampleStateCreateInfo_pnext(const void *val)
729 {
730     /* no known/supported struct */
731     return vn_sizeof_simple_pointer(NULL);
732 }
733 
734 static inline size_t
vn_sizeof_VkPipelineMultisampleStateCreateInfo_self(const VkPipelineMultisampleStateCreateInfo * val)735 vn_sizeof_VkPipelineMultisampleStateCreateInfo_self(const VkPipelineMultisampleStateCreateInfo *val)
736 {
737     size_t size = 0;
738     /* skip val->{sType,pNext} */
739     size += vn_sizeof_VkFlags(&val->flags);
740     size += vn_sizeof_VkSampleCountFlagBits(&val->rasterizationSamples);
741     size += vn_sizeof_VkBool32(&val->sampleShadingEnable);
742     size += vn_sizeof_float(&val->minSampleShading);
743     if (val->pSampleMask) {
744         size += vn_sizeof_array_size((val->rasterizationSamples + 31) / 32);
745         size += vn_sizeof_VkSampleMask_array(val->pSampleMask, (val->rasterizationSamples + 31) / 32);
746     } else {
747         size += vn_sizeof_array_size(0);
748     }
749     size += vn_sizeof_VkBool32(&val->alphaToCoverageEnable);
750     size += vn_sizeof_VkBool32(&val->alphaToOneEnable);
751     return size;
752 }
753 
754 static inline size_t
vn_sizeof_VkPipelineMultisampleStateCreateInfo(const VkPipelineMultisampleStateCreateInfo * val)755 vn_sizeof_VkPipelineMultisampleStateCreateInfo(const VkPipelineMultisampleStateCreateInfo *val)
756 {
757     size_t size = 0;
758 
759     size += vn_sizeof_VkStructureType(&val->sType);
760     size += vn_sizeof_VkPipelineMultisampleStateCreateInfo_pnext(val->pNext);
761     size += vn_sizeof_VkPipelineMultisampleStateCreateInfo_self(val);
762 
763     return size;
764 }
765 
766 static inline void
vn_encode_VkPipelineMultisampleStateCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)767 vn_encode_VkPipelineMultisampleStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
768 {
769     /* no known/supported struct */
770     vn_encode_simple_pointer(enc, NULL);
771 }
772 
773 static inline void
vn_encode_VkPipelineMultisampleStateCreateInfo_self(struct vn_cs_encoder * enc,const VkPipelineMultisampleStateCreateInfo * val)774 vn_encode_VkPipelineMultisampleStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineMultisampleStateCreateInfo *val)
775 {
776     /* skip val->{sType,pNext} */
777     vn_encode_VkFlags(enc, &val->flags);
778     vn_encode_VkSampleCountFlagBits(enc, &val->rasterizationSamples);
779     vn_encode_VkBool32(enc, &val->sampleShadingEnable);
780     vn_encode_float(enc, &val->minSampleShading);
781     if (val->pSampleMask) {
782         vn_encode_array_size(enc, (val->rasterizationSamples + 31) / 32);
783         vn_encode_VkSampleMask_array(enc, val->pSampleMask, (val->rasterizationSamples + 31) / 32);
784     } else {
785         vn_encode_array_size(enc, 0);
786     }
787     vn_encode_VkBool32(enc, &val->alphaToCoverageEnable);
788     vn_encode_VkBool32(enc, &val->alphaToOneEnable);
789 }
790 
791 static inline void
vn_encode_VkPipelineMultisampleStateCreateInfo(struct vn_cs_encoder * enc,const VkPipelineMultisampleStateCreateInfo * val)792 vn_encode_VkPipelineMultisampleStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineMultisampleStateCreateInfo *val)
793 {
794     assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO);
795     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO });
796     vn_encode_VkPipelineMultisampleStateCreateInfo_pnext(enc, val->pNext);
797     vn_encode_VkPipelineMultisampleStateCreateInfo_self(enc, val);
798 }
799 
800 /* struct VkStencilOpState */
801 
802 static inline size_t
vn_sizeof_VkStencilOpState(const VkStencilOpState * val)803 vn_sizeof_VkStencilOpState(const VkStencilOpState *val)
804 {
805     size_t size = 0;
806     size += vn_sizeof_VkStencilOp(&val->failOp);
807     size += vn_sizeof_VkStencilOp(&val->passOp);
808     size += vn_sizeof_VkStencilOp(&val->depthFailOp);
809     size += vn_sizeof_VkCompareOp(&val->compareOp);
810     size += vn_sizeof_uint32_t(&val->compareMask);
811     size += vn_sizeof_uint32_t(&val->writeMask);
812     size += vn_sizeof_uint32_t(&val->reference);
813     return size;
814 }
815 
816 static inline void
vn_encode_VkStencilOpState(struct vn_cs_encoder * enc,const VkStencilOpState * val)817 vn_encode_VkStencilOpState(struct vn_cs_encoder *enc, const VkStencilOpState *val)
818 {
819     vn_encode_VkStencilOp(enc, &val->failOp);
820     vn_encode_VkStencilOp(enc, &val->passOp);
821     vn_encode_VkStencilOp(enc, &val->depthFailOp);
822     vn_encode_VkCompareOp(enc, &val->compareOp);
823     vn_encode_uint32_t(enc, &val->compareMask);
824     vn_encode_uint32_t(enc, &val->writeMask);
825     vn_encode_uint32_t(enc, &val->reference);
826 }
827 
828 /* struct VkPipelineDepthStencilStateCreateInfo chain */
829 
830 static inline size_t
vn_sizeof_VkPipelineDepthStencilStateCreateInfo_pnext(const void * val)831 vn_sizeof_VkPipelineDepthStencilStateCreateInfo_pnext(const void *val)
832 {
833     /* no known/supported struct */
834     return vn_sizeof_simple_pointer(NULL);
835 }
836 
837 static inline size_t
vn_sizeof_VkPipelineDepthStencilStateCreateInfo_self(const VkPipelineDepthStencilStateCreateInfo * val)838 vn_sizeof_VkPipelineDepthStencilStateCreateInfo_self(const VkPipelineDepthStencilStateCreateInfo *val)
839 {
840     size_t size = 0;
841     /* skip val->{sType,pNext} */
842     size += vn_sizeof_VkFlags(&val->flags);
843     size += vn_sizeof_VkBool32(&val->depthTestEnable);
844     size += vn_sizeof_VkBool32(&val->depthWriteEnable);
845     size += vn_sizeof_VkCompareOp(&val->depthCompareOp);
846     size += vn_sizeof_VkBool32(&val->depthBoundsTestEnable);
847     size += vn_sizeof_VkBool32(&val->stencilTestEnable);
848     size += vn_sizeof_VkStencilOpState(&val->front);
849     size += vn_sizeof_VkStencilOpState(&val->back);
850     size += vn_sizeof_float(&val->minDepthBounds);
851     size += vn_sizeof_float(&val->maxDepthBounds);
852     return size;
853 }
854 
855 static inline size_t
vn_sizeof_VkPipelineDepthStencilStateCreateInfo(const VkPipelineDepthStencilStateCreateInfo * val)856 vn_sizeof_VkPipelineDepthStencilStateCreateInfo(const VkPipelineDepthStencilStateCreateInfo *val)
857 {
858     size_t size = 0;
859 
860     size += vn_sizeof_VkStructureType(&val->sType);
861     size += vn_sizeof_VkPipelineDepthStencilStateCreateInfo_pnext(val->pNext);
862     size += vn_sizeof_VkPipelineDepthStencilStateCreateInfo_self(val);
863 
864     return size;
865 }
866 
867 static inline void
vn_encode_VkPipelineDepthStencilStateCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)868 vn_encode_VkPipelineDepthStencilStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
869 {
870     /* no known/supported struct */
871     vn_encode_simple_pointer(enc, NULL);
872 }
873 
874 static inline void
vn_encode_VkPipelineDepthStencilStateCreateInfo_self(struct vn_cs_encoder * enc,const VkPipelineDepthStencilStateCreateInfo * val)875 vn_encode_VkPipelineDepthStencilStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineDepthStencilStateCreateInfo *val)
876 {
877     /* skip val->{sType,pNext} */
878     vn_encode_VkFlags(enc, &val->flags);
879     vn_encode_VkBool32(enc, &val->depthTestEnable);
880     vn_encode_VkBool32(enc, &val->depthWriteEnable);
881     vn_encode_VkCompareOp(enc, &val->depthCompareOp);
882     vn_encode_VkBool32(enc, &val->depthBoundsTestEnable);
883     vn_encode_VkBool32(enc, &val->stencilTestEnable);
884     vn_encode_VkStencilOpState(enc, &val->front);
885     vn_encode_VkStencilOpState(enc, &val->back);
886     vn_encode_float(enc, &val->minDepthBounds);
887     vn_encode_float(enc, &val->maxDepthBounds);
888 }
889 
890 static inline void
vn_encode_VkPipelineDepthStencilStateCreateInfo(struct vn_cs_encoder * enc,const VkPipelineDepthStencilStateCreateInfo * val)891 vn_encode_VkPipelineDepthStencilStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineDepthStencilStateCreateInfo *val)
892 {
893     assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO);
894     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO });
895     vn_encode_VkPipelineDepthStencilStateCreateInfo_pnext(enc, val->pNext);
896     vn_encode_VkPipelineDepthStencilStateCreateInfo_self(enc, val);
897 }
898 
899 /* struct VkPipelineColorBlendAttachmentState */
900 
901 static inline size_t
vn_sizeof_VkPipelineColorBlendAttachmentState(const VkPipelineColorBlendAttachmentState * val)902 vn_sizeof_VkPipelineColorBlendAttachmentState(const VkPipelineColorBlendAttachmentState *val)
903 {
904     size_t size = 0;
905     size += vn_sizeof_VkBool32(&val->blendEnable);
906     size += vn_sizeof_VkBlendFactor(&val->srcColorBlendFactor);
907     size += vn_sizeof_VkBlendFactor(&val->dstColorBlendFactor);
908     size += vn_sizeof_VkBlendOp(&val->colorBlendOp);
909     size += vn_sizeof_VkBlendFactor(&val->srcAlphaBlendFactor);
910     size += vn_sizeof_VkBlendFactor(&val->dstAlphaBlendFactor);
911     size += vn_sizeof_VkBlendOp(&val->alphaBlendOp);
912     size += vn_sizeof_VkFlags(&val->colorWriteMask);
913     return size;
914 }
915 
916 static inline void
vn_encode_VkPipelineColorBlendAttachmentState(struct vn_cs_encoder * enc,const VkPipelineColorBlendAttachmentState * val)917 vn_encode_VkPipelineColorBlendAttachmentState(struct vn_cs_encoder *enc, const VkPipelineColorBlendAttachmentState *val)
918 {
919     vn_encode_VkBool32(enc, &val->blendEnable);
920     vn_encode_VkBlendFactor(enc, &val->srcColorBlendFactor);
921     vn_encode_VkBlendFactor(enc, &val->dstColorBlendFactor);
922     vn_encode_VkBlendOp(enc, &val->colorBlendOp);
923     vn_encode_VkBlendFactor(enc, &val->srcAlphaBlendFactor);
924     vn_encode_VkBlendFactor(enc, &val->dstAlphaBlendFactor);
925     vn_encode_VkBlendOp(enc, &val->alphaBlendOp);
926     vn_encode_VkFlags(enc, &val->colorWriteMask);
927 }
928 
929 /* struct VkPipelineColorBlendStateCreateInfo chain */
930 
931 static inline size_t
vn_sizeof_VkPipelineColorBlendStateCreateInfo_pnext(const void * val)932 vn_sizeof_VkPipelineColorBlendStateCreateInfo_pnext(const void *val)
933 {
934     /* no known/supported struct */
935     return vn_sizeof_simple_pointer(NULL);
936 }
937 
938 static inline size_t
vn_sizeof_VkPipelineColorBlendStateCreateInfo_self(const VkPipelineColorBlendStateCreateInfo * val)939 vn_sizeof_VkPipelineColorBlendStateCreateInfo_self(const VkPipelineColorBlendStateCreateInfo *val)
940 {
941     size_t size = 0;
942     /* skip val->{sType,pNext} */
943     size += vn_sizeof_VkFlags(&val->flags);
944     size += vn_sizeof_VkBool32(&val->logicOpEnable);
945     size += vn_sizeof_VkLogicOp(&val->logicOp);
946     size += vn_sizeof_uint32_t(&val->attachmentCount);
947     if (val->pAttachments) {
948         size += vn_sizeof_array_size(val->attachmentCount);
949         for (uint32_t i = 0; i < val->attachmentCount; i++)
950             size += vn_sizeof_VkPipelineColorBlendAttachmentState(&val->pAttachments[i]);
951     } else {
952         size += vn_sizeof_array_size(0);
953     }
954     size += vn_sizeof_array_size(4);
955     size += vn_sizeof_float_array(val->blendConstants, 4);
956     return size;
957 }
958 
959 static inline size_t
vn_sizeof_VkPipelineColorBlendStateCreateInfo(const VkPipelineColorBlendStateCreateInfo * val)960 vn_sizeof_VkPipelineColorBlendStateCreateInfo(const VkPipelineColorBlendStateCreateInfo *val)
961 {
962     size_t size = 0;
963 
964     size += vn_sizeof_VkStructureType(&val->sType);
965     size += vn_sizeof_VkPipelineColorBlendStateCreateInfo_pnext(val->pNext);
966     size += vn_sizeof_VkPipelineColorBlendStateCreateInfo_self(val);
967 
968     return size;
969 }
970 
971 static inline void
vn_encode_VkPipelineColorBlendStateCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)972 vn_encode_VkPipelineColorBlendStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
973 {
974     /* no known/supported struct */
975     vn_encode_simple_pointer(enc, NULL);
976 }
977 
978 static inline void
vn_encode_VkPipelineColorBlendStateCreateInfo_self(struct vn_cs_encoder * enc,const VkPipelineColorBlendStateCreateInfo * val)979 vn_encode_VkPipelineColorBlendStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineColorBlendStateCreateInfo *val)
980 {
981     /* skip val->{sType,pNext} */
982     vn_encode_VkFlags(enc, &val->flags);
983     vn_encode_VkBool32(enc, &val->logicOpEnable);
984     vn_encode_VkLogicOp(enc, &val->logicOp);
985     vn_encode_uint32_t(enc, &val->attachmentCount);
986     if (val->pAttachments) {
987         vn_encode_array_size(enc, val->attachmentCount);
988         for (uint32_t i = 0; i < val->attachmentCount; i++)
989             vn_encode_VkPipelineColorBlendAttachmentState(enc, &val->pAttachments[i]);
990     } else {
991         vn_encode_array_size(enc, 0);
992     }
993     vn_encode_array_size(enc, 4);
994     vn_encode_float_array(enc, val->blendConstants, 4);
995 }
996 
997 static inline void
vn_encode_VkPipelineColorBlendStateCreateInfo(struct vn_cs_encoder * enc,const VkPipelineColorBlendStateCreateInfo * val)998 vn_encode_VkPipelineColorBlendStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineColorBlendStateCreateInfo *val)
999 {
1000     assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO);
1001     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO });
1002     vn_encode_VkPipelineColorBlendStateCreateInfo_pnext(enc, val->pNext);
1003     vn_encode_VkPipelineColorBlendStateCreateInfo_self(enc, val);
1004 }
1005 
1006 /* struct VkPipelineDynamicStateCreateInfo chain */
1007 
1008 static inline size_t
vn_sizeof_VkPipelineDynamicStateCreateInfo_pnext(const void * val)1009 vn_sizeof_VkPipelineDynamicStateCreateInfo_pnext(const void *val)
1010 {
1011     /* no known/supported struct */
1012     return vn_sizeof_simple_pointer(NULL);
1013 }
1014 
1015 static inline size_t
vn_sizeof_VkPipelineDynamicStateCreateInfo_self(const VkPipelineDynamicStateCreateInfo * val)1016 vn_sizeof_VkPipelineDynamicStateCreateInfo_self(const VkPipelineDynamicStateCreateInfo *val)
1017 {
1018     size_t size = 0;
1019     /* skip val->{sType,pNext} */
1020     size += vn_sizeof_VkFlags(&val->flags);
1021     size += vn_sizeof_uint32_t(&val->dynamicStateCount);
1022     if (val->pDynamicStates) {
1023         size += vn_sizeof_array_size(val->dynamicStateCount);
1024         size += vn_sizeof_VkDynamicState_array(val->pDynamicStates, val->dynamicStateCount);
1025     } else {
1026         size += vn_sizeof_array_size(0);
1027     }
1028     return size;
1029 }
1030 
1031 static inline size_t
vn_sizeof_VkPipelineDynamicStateCreateInfo(const VkPipelineDynamicStateCreateInfo * val)1032 vn_sizeof_VkPipelineDynamicStateCreateInfo(const VkPipelineDynamicStateCreateInfo *val)
1033 {
1034     size_t size = 0;
1035 
1036     size += vn_sizeof_VkStructureType(&val->sType);
1037     size += vn_sizeof_VkPipelineDynamicStateCreateInfo_pnext(val->pNext);
1038     size += vn_sizeof_VkPipelineDynamicStateCreateInfo_self(val);
1039 
1040     return size;
1041 }
1042 
1043 static inline void
vn_encode_VkPipelineDynamicStateCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)1044 vn_encode_VkPipelineDynamicStateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
1045 {
1046     /* no known/supported struct */
1047     vn_encode_simple_pointer(enc, NULL);
1048 }
1049 
1050 static inline void
vn_encode_VkPipelineDynamicStateCreateInfo_self(struct vn_cs_encoder * enc,const VkPipelineDynamicStateCreateInfo * val)1051 vn_encode_VkPipelineDynamicStateCreateInfo_self(struct vn_cs_encoder *enc, const VkPipelineDynamicStateCreateInfo *val)
1052 {
1053     /* skip val->{sType,pNext} */
1054     vn_encode_VkFlags(enc, &val->flags);
1055     vn_encode_uint32_t(enc, &val->dynamicStateCount);
1056     if (val->pDynamicStates) {
1057         vn_encode_array_size(enc, val->dynamicStateCount);
1058         vn_encode_VkDynamicState_array(enc, val->pDynamicStates, val->dynamicStateCount);
1059     } else {
1060         vn_encode_array_size(enc, 0);
1061     }
1062 }
1063 
1064 static inline void
vn_encode_VkPipelineDynamicStateCreateInfo(struct vn_cs_encoder * enc,const VkPipelineDynamicStateCreateInfo * val)1065 vn_encode_VkPipelineDynamicStateCreateInfo(struct vn_cs_encoder *enc, const VkPipelineDynamicStateCreateInfo *val)
1066 {
1067     assert(val->sType == VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO);
1068     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO });
1069     vn_encode_VkPipelineDynamicStateCreateInfo_pnext(enc, val->pNext);
1070     vn_encode_VkPipelineDynamicStateCreateInfo_self(enc, val);
1071 }
1072 
1073 /* struct VkGraphicsPipelineCreateInfo chain */
1074 
1075 static inline size_t
vn_sizeof_VkGraphicsPipelineCreateInfo_pnext(const void * val)1076 vn_sizeof_VkGraphicsPipelineCreateInfo_pnext(const void *val)
1077 {
1078     /* no known/supported struct */
1079     return vn_sizeof_simple_pointer(NULL);
1080 }
1081 
1082 static inline size_t
vn_sizeof_VkGraphicsPipelineCreateInfo_self(const VkGraphicsPipelineCreateInfo * val)1083 vn_sizeof_VkGraphicsPipelineCreateInfo_self(const VkGraphicsPipelineCreateInfo *val)
1084 {
1085     size_t size = 0;
1086     /* skip val->{sType,pNext} */
1087     size += vn_sizeof_VkFlags(&val->flags);
1088     size += vn_sizeof_uint32_t(&val->stageCount);
1089     if (val->pStages) {
1090         size += vn_sizeof_array_size(val->stageCount);
1091         for (uint32_t i = 0; i < val->stageCount; i++)
1092             size += vn_sizeof_VkPipelineShaderStageCreateInfo(&val->pStages[i]);
1093     } else {
1094         size += vn_sizeof_array_size(0);
1095     }
1096     size += vn_sizeof_simple_pointer(val->pVertexInputState);
1097     if (val->pVertexInputState)
1098         size += vn_sizeof_VkPipelineVertexInputStateCreateInfo(val->pVertexInputState);
1099     size += vn_sizeof_simple_pointer(val->pInputAssemblyState);
1100     if (val->pInputAssemblyState)
1101         size += vn_sizeof_VkPipelineInputAssemblyStateCreateInfo(val->pInputAssemblyState);
1102     size += vn_sizeof_simple_pointer(val->pTessellationState);
1103     if (val->pTessellationState)
1104         size += vn_sizeof_VkPipelineTessellationStateCreateInfo(val->pTessellationState);
1105     size += vn_sizeof_simple_pointer(val->pViewportState);
1106     if (val->pViewportState)
1107         size += vn_sizeof_VkPipelineViewportStateCreateInfo(val->pViewportState);
1108     size += vn_sizeof_simple_pointer(val->pRasterizationState);
1109     if (val->pRasterizationState)
1110         size += vn_sizeof_VkPipelineRasterizationStateCreateInfo(val->pRasterizationState);
1111     size += vn_sizeof_simple_pointer(val->pMultisampleState);
1112     if (val->pMultisampleState)
1113         size += vn_sizeof_VkPipelineMultisampleStateCreateInfo(val->pMultisampleState);
1114     size += vn_sizeof_simple_pointer(val->pDepthStencilState);
1115     if (val->pDepthStencilState)
1116         size += vn_sizeof_VkPipelineDepthStencilStateCreateInfo(val->pDepthStencilState);
1117     size += vn_sizeof_simple_pointer(val->pColorBlendState);
1118     if (val->pColorBlendState)
1119         size += vn_sizeof_VkPipelineColorBlendStateCreateInfo(val->pColorBlendState);
1120     size += vn_sizeof_simple_pointer(val->pDynamicState);
1121     if (val->pDynamicState)
1122         size += vn_sizeof_VkPipelineDynamicStateCreateInfo(val->pDynamicState);
1123     size += vn_sizeof_VkPipelineLayout(&val->layout);
1124     size += vn_sizeof_VkRenderPass(&val->renderPass);
1125     size += vn_sizeof_uint32_t(&val->subpass);
1126     size += vn_sizeof_VkPipeline(&val->basePipelineHandle);
1127     size += vn_sizeof_int32_t(&val->basePipelineIndex);
1128     return size;
1129 }
1130 
1131 static inline size_t
vn_sizeof_VkGraphicsPipelineCreateInfo(const VkGraphicsPipelineCreateInfo * val)1132 vn_sizeof_VkGraphicsPipelineCreateInfo(const VkGraphicsPipelineCreateInfo *val)
1133 {
1134     size_t size = 0;
1135 
1136     size += vn_sizeof_VkStructureType(&val->sType);
1137     size += vn_sizeof_VkGraphicsPipelineCreateInfo_pnext(val->pNext);
1138     size += vn_sizeof_VkGraphicsPipelineCreateInfo_self(val);
1139 
1140     return size;
1141 }
1142 
1143 static inline void
vn_encode_VkGraphicsPipelineCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)1144 vn_encode_VkGraphicsPipelineCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
1145 {
1146     /* no known/supported struct */
1147     vn_encode_simple_pointer(enc, NULL);
1148 }
1149 
1150 static inline void
vn_encode_VkGraphicsPipelineCreateInfo_self(struct vn_cs_encoder * enc,const VkGraphicsPipelineCreateInfo * val)1151 vn_encode_VkGraphicsPipelineCreateInfo_self(struct vn_cs_encoder *enc, const VkGraphicsPipelineCreateInfo *val)
1152 {
1153     /* skip val->{sType,pNext} */
1154     vn_encode_VkFlags(enc, &val->flags);
1155     vn_encode_uint32_t(enc, &val->stageCount);
1156     if (val->pStages) {
1157         vn_encode_array_size(enc, val->stageCount);
1158         for (uint32_t i = 0; i < val->stageCount; i++)
1159             vn_encode_VkPipelineShaderStageCreateInfo(enc, &val->pStages[i]);
1160     } else {
1161         vn_encode_array_size(enc, 0);
1162     }
1163     if (vn_encode_simple_pointer(enc, val->pVertexInputState))
1164         vn_encode_VkPipelineVertexInputStateCreateInfo(enc, val->pVertexInputState);
1165     if (vn_encode_simple_pointer(enc, val->pInputAssemblyState))
1166         vn_encode_VkPipelineInputAssemblyStateCreateInfo(enc, val->pInputAssemblyState);
1167     if (vn_encode_simple_pointer(enc, val->pTessellationState))
1168         vn_encode_VkPipelineTessellationStateCreateInfo(enc, val->pTessellationState);
1169     if (vn_encode_simple_pointer(enc, val->pViewportState))
1170         vn_encode_VkPipelineViewportStateCreateInfo(enc, val->pViewportState);
1171     if (vn_encode_simple_pointer(enc, val->pRasterizationState))
1172         vn_encode_VkPipelineRasterizationStateCreateInfo(enc, val->pRasterizationState);
1173     if (vn_encode_simple_pointer(enc, val->pMultisampleState))
1174         vn_encode_VkPipelineMultisampleStateCreateInfo(enc, val->pMultisampleState);
1175     if (vn_encode_simple_pointer(enc, val->pDepthStencilState))
1176         vn_encode_VkPipelineDepthStencilStateCreateInfo(enc, val->pDepthStencilState);
1177     if (vn_encode_simple_pointer(enc, val->pColorBlendState))
1178         vn_encode_VkPipelineColorBlendStateCreateInfo(enc, val->pColorBlendState);
1179     if (vn_encode_simple_pointer(enc, val->pDynamicState))
1180         vn_encode_VkPipelineDynamicStateCreateInfo(enc, val->pDynamicState);
1181     vn_encode_VkPipelineLayout(enc, &val->layout);
1182     vn_encode_VkRenderPass(enc, &val->renderPass);
1183     vn_encode_uint32_t(enc, &val->subpass);
1184     vn_encode_VkPipeline(enc, &val->basePipelineHandle);
1185     vn_encode_int32_t(enc, &val->basePipelineIndex);
1186 }
1187 
1188 static inline void
vn_encode_VkGraphicsPipelineCreateInfo(struct vn_cs_encoder * enc,const VkGraphicsPipelineCreateInfo * val)1189 vn_encode_VkGraphicsPipelineCreateInfo(struct vn_cs_encoder *enc, const VkGraphicsPipelineCreateInfo *val)
1190 {
1191     assert(val->sType == VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO);
1192     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO });
1193     vn_encode_VkGraphicsPipelineCreateInfo_pnext(enc, val->pNext);
1194     vn_encode_VkGraphicsPipelineCreateInfo_self(enc, val);
1195 }
1196 
1197 /* struct VkComputePipelineCreateInfo chain */
1198 
1199 static inline size_t
vn_sizeof_VkComputePipelineCreateInfo_pnext(const void * val)1200 vn_sizeof_VkComputePipelineCreateInfo_pnext(const void *val)
1201 {
1202     /* no known/supported struct */
1203     return vn_sizeof_simple_pointer(NULL);
1204 }
1205 
1206 static inline size_t
vn_sizeof_VkComputePipelineCreateInfo_self(const VkComputePipelineCreateInfo * val)1207 vn_sizeof_VkComputePipelineCreateInfo_self(const VkComputePipelineCreateInfo *val)
1208 {
1209     size_t size = 0;
1210     /* skip val->{sType,pNext} */
1211     size += vn_sizeof_VkFlags(&val->flags);
1212     size += vn_sizeof_VkPipelineShaderStageCreateInfo(&val->stage);
1213     size += vn_sizeof_VkPipelineLayout(&val->layout);
1214     size += vn_sizeof_VkPipeline(&val->basePipelineHandle);
1215     size += vn_sizeof_int32_t(&val->basePipelineIndex);
1216     return size;
1217 }
1218 
1219 static inline size_t
vn_sizeof_VkComputePipelineCreateInfo(const VkComputePipelineCreateInfo * val)1220 vn_sizeof_VkComputePipelineCreateInfo(const VkComputePipelineCreateInfo *val)
1221 {
1222     size_t size = 0;
1223 
1224     size += vn_sizeof_VkStructureType(&val->sType);
1225     size += vn_sizeof_VkComputePipelineCreateInfo_pnext(val->pNext);
1226     size += vn_sizeof_VkComputePipelineCreateInfo_self(val);
1227 
1228     return size;
1229 }
1230 
1231 static inline void
vn_encode_VkComputePipelineCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)1232 vn_encode_VkComputePipelineCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
1233 {
1234     /* no known/supported struct */
1235     vn_encode_simple_pointer(enc, NULL);
1236 }
1237 
1238 static inline void
vn_encode_VkComputePipelineCreateInfo_self(struct vn_cs_encoder * enc,const VkComputePipelineCreateInfo * val)1239 vn_encode_VkComputePipelineCreateInfo_self(struct vn_cs_encoder *enc, const VkComputePipelineCreateInfo *val)
1240 {
1241     /* skip val->{sType,pNext} */
1242     vn_encode_VkFlags(enc, &val->flags);
1243     vn_encode_VkPipelineShaderStageCreateInfo(enc, &val->stage);
1244     vn_encode_VkPipelineLayout(enc, &val->layout);
1245     vn_encode_VkPipeline(enc, &val->basePipelineHandle);
1246     vn_encode_int32_t(enc, &val->basePipelineIndex);
1247 }
1248 
1249 static inline void
vn_encode_VkComputePipelineCreateInfo(struct vn_cs_encoder * enc,const VkComputePipelineCreateInfo * val)1250 vn_encode_VkComputePipelineCreateInfo(struct vn_cs_encoder *enc, const VkComputePipelineCreateInfo *val)
1251 {
1252     assert(val->sType == VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO);
1253     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO });
1254     vn_encode_VkComputePipelineCreateInfo_pnext(enc, val->pNext);
1255     vn_encode_VkComputePipelineCreateInfo_self(enc, val);
1256 }
1257 
vn_sizeof_vkCreateGraphicsPipelines(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkGraphicsPipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)1258 static inline size_t vn_sizeof_vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)
1259 {
1260     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateGraphicsPipelines_EXT;
1261     const VkFlags cmd_flags = 0;
1262     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
1263 
1264     cmd_size += vn_sizeof_VkDevice(&device);
1265     cmd_size += vn_sizeof_VkPipelineCache(&pipelineCache);
1266     cmd_size += vn_sizeof_uint32_t(&createInfoCount);
1267     if (pCreateInfos) {
1268         cmd_size += vn_sizeof_array_size(createInfoCount);
1269         for (uint32_t i = 0; i < createInfoCount; i++)
1270             cmd_size += vn_sizeof_VkGraphicsPipelineCreateInfo(&pCreateInfos[i]);
1271     } else {
1272         cmd_size += vn_sizeof_array_size(0);
1273     }
1274     cmd_size += vn_sizeof_simple_pointer(pAllocator);
1275     if (pAllocator)
1276         assert(false);
1277     if (pPipelines) {
1278         cmd_size += vn_sizeof_array_size(createInfoCount);
1279         for (uint32_t i = 0; i < createInfoCount; i++)
1280             cmd_size += vn_sizeof_VkPipeline(&pPipelines[i]);
1281     } else {
1282         cmd_size += vn_sizeof_array_size(0);
1283     }
1284 
1285     return cmd_size;
1286 }
1287 
vn_encode_vkCreateGraphicsPipelines(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkGraphicsPipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)1288 static inline void vn_encode_vkCreateGraphicsPipelines(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)
1289 {
1290     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateGraphicsPipelines_EXT;
1291 
1292     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
1293     vn_encode_VkFlags(enc, &cmd_flags);
1294 
1295     vn_encode_VkDevice(enc, &device);
1296     vn_encode_VkPipelineCache(enc, &pipelineCache);
1297     vn_encode_uint32_t(enc, &createInfoCount);
1298     if (pCreateInfos) {
1299         vn_encode_array_size(enc, createInfoCount);
1300         for (uint32_t i = 0; i < createInfoCount; i++)
1301             vn_encode_VkGraphicsPipelineCreateInfo(enc, &pCreateInfos[i]);
1302     } else {
1303         vn_encode_array_size(enc, 0);
1304     }
1305     if (vn_encode_simple_pointer(enc, pAllocator))
1306         assert(false);
1307     if (pPipelines) {
1308         vn_encode_array_size(enc, createInfoCount);
1309         for (uint32_t i = 0; i < createInfoCount; i++)
1310             vn_encode_VkPipeline(enc, &pPipelines[i]);
1311     } else {
1312         vn_encode_array_size(enc, 0);
1313     }
1314 }
1315 
vn_sizeof_vkCreateGraphicsPipelines_reply(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkGraphicsPipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)1316 static inline size_t vn_sizeof_vkCreateGraphicsPipelines_reply(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)
1317 {
1318     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateGraphicsPipelines_EXT;
1319     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
1320 
1321     VkResult ret;
1322     cmd_size += vn_sizeof_VkResult(&ret);
1323     /* skip device */
1324     /* skip pipelineCache */
1325     /* skip createInfoCount */
1326     /* skip pCreateInfos */
1327     /* skip pAllocator */
1328     if (pPipelines) {
1329         cmd_size += vn_sizeof_array_size(createInfoCount);
1330         for (uint32_t i = 0; i < createInfoCount; i++)
1331             cmd_size += vn_sizeof_VkPipeline(&pPipelines[i]);
1332     } else {
1333         cmd_size += vn_sizeof_array_size(0);
1334     }
1335 
1336     return cmd_size;
1337 }
1338 
vn_decode_vkCreateGraphicsPipelines_reply(struct vn_cs_decoder * dec,VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkGraphicsPipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)1339 static inline VkResult vn_decode_vkCreateGraphicsPipelines_reply(struct vn_cs_decoder *dec, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)
1340 {
1341     VkCommandTypeEXT command_type;
1342     vn_decode_VkCommandTypeEXT(dec, &command_type);
1343     assert(command_type == VK_COMMAND_TYPE_vkCreateGraphicsPipelines_EXT);
1344 
1345     VkResult ret;
1346     vn_decode_VkResult(dec, &ret);
1347     /* skip device */
1348     /* skip pipelineCache */
1349     /* skip createInfoCount */
1350     /* skip pCreateInfos */
1351     /* skip pAllocator */
1352     if (vn_peek_array_size(dec)) {
1353         const uint32_t iter_count = vn_decode_array_size(dec, createInfoCount);
1354         for (uint32_t i = 0; i < iter_count; i++)
1355             vn_decode_VkPipeline(dec, &pPipelines[i]);
1356     } else {
1357         vn_decode_array_size_unchecked(dec);
1358         pPipelines = NULL;
1359     }
1360 
1361     return ret;
1362 }
1363 
vn_sizeof_vkCreateComputePipelines(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkComputePipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)1364 static inline size_t vn_sizeof_vkCreateComputePipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)
1365 {
1366     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateComputePipelines_EXT;
1367     const VkFlags cmd_flags = 0;
1368     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
1369 
1370     cmd_size += vn_sizeof_VkDevice(&device);
1371     cmd_size += vn_sizeof_VkPipelineCache(&pipelineCache);
1372     cmd_size += vn_sizeof_uint32_t(&createInfoCount);
1373     if (pCreateInfos) {
1374         cmd_size += vn_sizeof_array_size(createInfoCount);
1375         for (uint32_t i = 0; i < createInfoCount; i++)
1376             cmd_size += vn_sizeof_VkComputePipelineCreateInfo(&pCreateInfos[i]);
1377     } else {
1378         cmd_size += vn_sizeof_array_size(0);
1379     }
1380     cmd_size += vn_sizeof_simple_pointer(pAllocator);
1381     if (pAllocator)
1382         assert(false);
1383     if (pPipelines) {
1384         cmd_size += vn_sizeof_array_size(createInfoCount);
1385         for (uint32_t i = 0; i < createInfoCount; i++)
1386             cmd_size += vn_sizeof_VkPipeline(&pPipelines[i]);
1387     } else {
1388         cmd_size += vn_sizeof_array_size(0);
1389     }
1390 
1391     return cmd_size;
1392 }
1393 
vn_encode_vkCreateComputePipelines(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkComputePipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)1394 static inline void vn_encode_vkCreateComputePipelines(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)
1395 {
1396     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateComputePipelines_EXT;
1397 
1398     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
1399     vn_encode_VkFlags(enc, &cmd_flags);
1400 
1401     vn_encode_VkDevice(enc, &device);
1402     vn_encode_VkPipelineCache(enc, &pipelineCache);
1403     vn_encode_uint32_t(enc, &createInfoCount);
1404     if (pCreateInfos) {
1405         vn_encode_array_size(enc, createInfoCount);
1406         for (uint32_t i = 0; i < createInfoCount; i++)
1407             vn_encode_VkComputePipelineCreateInfo(enc, &pCreateInfos[i]);
1408     } else {
1409         vn_encode_array_size(enc, 0);
1410     }
1411     if (vn_encode_simple_pointer(enc, pAllocator))
1412         assert(false);
1413     if (pPipelines) {
1414         vn_encode_array_size(enc, createInfoCount);
1415         for (uint32_t i = 0; i < createInfoCount; i++)
1416             vn_encode_VkPipeline(enc, &pPipelines[i]);
1417     } else {
1418         vn_encode_array_size(enc, 0);
1419     }
1420 }
1421 
vn_sizeof_vkCreateComputePipelines_reply(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkComputePipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)1422 static inline size_t vn_sizeof_vkCreateComputePipelines_reply(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)
1423 {
1424     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateComputePipelines_EXT;
1425     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
1426 
1427     VkResult ret;
1428     cmd_size += vn_sizeof_VkResult(&ret);
1429     /* skip device */
1430     /* skip pipelineCache */
1431     /* skip createInfoCount */
1432     /* skip pCreateInfos */
1433     /* skip pAllocator */
1434     if (pPipelines) {
1435         cmd_size += vn_sizeof_array_size(createInfoCount);
1436         for (uint32_t i = 0; i < createInfoCount; i++)
1437             cmd_size += vn_sizeof_VkPipeline(&pPipelines[i]);
1438     } else {
1439         cmd_size += vn_sizeof_array_size(0);
1440     }
1441 
1442     return cmd_size;
1443 }
1444 
vn_decode_vkCreateComputePipelines_reply(struct vn_cs_decoder * dec,VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkComputePipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)1445 static inline VkResult vn_decode_vkCreateComputePipelines_reply(struct vn_cs_decoder *dec, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)
1446 {
1447     VkCommandTypeEXT command_type;
1448     vn_decode_VkCommandTypeEXT(dec, &command_type);
1449     assert(command_type == VK_COMMAND_TYPE_vkCreateComputePipelines_EXT);
1450 
1451     VkResult ret;
1452     vn_decode_VkResult(dec, &ret);
1453     /* skip device */
1454     /* skip pipelineCache */
1455     /* skip createInfoCount */
1456     /* skip pCreateInfos */
1457     /* skip pAllocator */
1458     if (vn_peek_array_size(dec)) {
1459         const uint32_t iter_count = vn_decode_array_size(dec, createInfoCount);
1460         for (uint32_t i = 0; i < iter_count; i++)
1461             vn_decode_VkPipeline(dec, &pPipelines[i]);
1462     } else {
1463         vn_decode_array_size_unchecked(dec);
1464         pPipelines = NULL;
1465     }
1466 
1467     return ret;
1468 }
1469 
vn_sizeof_vkDestroyPipeline(VkDevice device,VkPipeline pipeline,const VkAllocationCallbacks * pAllocator)1470 static inline size_t vn_sizeof_vkDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator)
1471 {
1472     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyPipeline_EXT;
1473     const VkFlags cmd_flags = 0;
1474     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
1475 
1476     cmd_size += vn_sizeof_VkDevice(&device);
1477     cmd_size += vn_sizeof_VkPipeline(&pipeline);
1478     cmd_size += vn_sizeof_simple_pointer(pAllocator);
1479     if (pAllocator)
1480         assert(false);
1481 
1482     return cmd_size;
1483 }
1484 
vn_encode_vkDestroyPipeline(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,VkPipeline pipeline,const VkAllocationCallbacks * pAllocator)1485 static inline void vn_encode_vkDestroyPipeline(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator)
1486 {
1487     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyPipeline_EXT;
1488 
1489     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
1490     vn_encode_VkFlags(enc, &cmd_flags);
1491 
1492     vn_encode_VkDevice(enc, &device);
1493     vn_encode_VkPipeline(enc, &pipeline);
1494     if (vn_encode_simple_pointer(enc, pAllocator))
1495         assert(false);
1496 }
1497 
vn_sizeof_vkDestroyPipeline_reply(VkDevice device,VkPipeline pipeline,const VkAllocationCallbacks * pAllocator)1498 static inline size_t vn_sizeof_vkDestroyPipeline_reply(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator)
1499 {
1500     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyPipeline_EXT;
1501     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
1502 
1503     /* skip device */
1504     /* skip pipeline */
1505     /* skip pAllocator */
1506 
1507     return cmd_size;
1508 }
1509 
vn_decode_vkDestroyPipeline_reply(struct vn_cs_decoder * dec,VkDevice device,VkPipeline pipeline,const VkAllocationCallbacks * pAllocator)1510 static inline void vn_decode_vkDestroyPipeline_reply(struct vn_cs_decoder *dec, VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator)
1511 {
1512     VkCommandTypeEXT command_type;
1513     vn_decode_VkCommandTypeEXT(dec, &command_type);
1514     assert(command_type == VK_COMMAND_TYPE_vkDestroyPipeline_EXT);
1515 
1516     /* skip device */
1517     /* skip pipeline */
1518     /* skip pAllocator */
1519 }
1520 
vn_submit_vkCreateGraphicsPipelines(struct vn_instance * vn_instance,VkCommandFlagsEXT cmd_flags,VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkGraphicsPipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines,struct vn_instance_submit_command * submit)1521 static inline void vn_submit_vkCreateGraphicsPipelines(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines, struct vn_instance_submit_command *submit)
1522 {
1523     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
1524     void *cmd_data = local_cmd_data;
1525     size_t cmd_size = vn_sizeof_vkCreateGraphicsPipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
1526     if (cmd_size > sizeof(local_cmd_data)) {
1527         cmd_data = malloc(cmd_size);
1528         if (!cmd_data)
1529             cmd_size = 0;
1530     }
1531     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateGraphicsPipelines_reply(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) : 0;
1532 
1533     struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
1534     if (cmd_size) {
1535         vn_encode_vkCreateGraphicsPipelines(enc, cmd_flags, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
1536         vn_instance_submit_command(vn_instance, submit);
1537         if (cmd_data != local_cmd_data)
1538             free(cmd_data);
1539     }
1540 }
1541 
vn_submit_vkCreateComputePipelines(struct vn_instance * vn_instance,VkCommandFlagsEXT cmd_flags,VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkComputePipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines,struct vn_instance_submit_command * submit)1542 static inline void vn_submit_vkCreateComputePipelines(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines, struct vn_instance_submit_command *submit)
1543 {
1544     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
1545     void *cmd_data = local_cmd_data;
1546     size_t cmd_size = vn_sizeof_vkCreateComputePipelines(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
1547     if (cmd_size > sizeof(local_cmd_data)) {
1548         cmd_data = malloc(cmd_size);
1549         if (!cmd_data)
1550             cmd_size = 0;
1551     }
1552     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateComputePipelines_reply(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines) : 0;
1553 
1554     struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
1555     if (cmd_size) {
1556         vn_encode_vkCreateComputePipelines(enc, cmd_flags, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
1557         vn_instance_submit_command(vn_instance, submit);
1558         if (cmd_data != local_cmd_data)
1559             free(cmd_data);
1560     }
1561 }
1562 
vn_submit_vkDestroyPipeline(struct vn_instance * vn_instance,VkCommandFlagsEXT cmd_flags,VkDevice device,VkPipeline pipeline,const VkAllocationCallbacks * pAllocator,struct vn_instance_submit_command * submit)1563 static inline void vn_submit_vkDestroyPipeline(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator, struct vn_instance_submit_command *submit)
1564 {
1565     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
1566     void *cmd_data = local_cmd_data;
1567     size_t cmd_size = vn_sizeof_vkDestroyPipeline(device, pipeline, pAllocator);
1568     if (cmd_size > sizeof(local_cmd_data)) {
1569         cmd_data = malloc(cmd_size);
1570         if (!cmd_data)
1571             cmd_size = 0;
1572     }
1573     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroyPipeline_reply(device, pipeline, pAllocator) : 0;
1574 
1575     struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
1576     if (cmd_size) {
1577         vn_encode_vkDestroyPipeline(enc, cmd_flags, device, pipeline, pAllocator);
1578         vn_instance_submit_command(vn_instance, submit);
1579         if (cmd_data != local_cmd_data)
1580             free(cmd_data);
1581     }
1582 }
1583 
vn_call_vkCreateGraphicsPipelines(struct vn_instance * vn_instance,VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkGraphicsPipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)1584 static inline VkResult vn_call_vkCreateGraphicsPipelines(struct vn_instance *vn_instance, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)
1585 {
1586     VN_TRACE_FUNC();
1587 
1588     struct vn_instance_submit_command submit;
1589     vn_submit_vkCreateGraphicsPipelines(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, &submit);
1590     struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
1591     if (dec) {
1592         const VkResult ret = vn_decode_vkCreateGraphicsPipelines_reply(dec, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
1593         vn_instance_free_command_reply(vn_instance, &submit);
1594         return ret;
1595     } else {
1596         return VK_ERROR_OUT_OF_HOST_MEMORY;
1597     }
1598 }
1599 
vn_async_vkCreateGraphicsPipelines(struct vn_instance * vn_instance,VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkGraphicsPipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)1600 static inline void vn_async_vkCreateGraphicsPipelines(struct vn_instance *vn_instance, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)
1601 {
1602     struct vn_instance_submit_command submit;
1603     vn_submit_vkCreateGraphicsPipelines(vn_instance, 0, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, &submit);
1604 }
1605 
vn_call_vkCreateComputePipelines(struct vn_instance * vn_instance,VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkComputePipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)1606 static inline VkResult vn_call_vkCreateComputePipelines(struct vn_instance *vn_instance, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)
1607 {
1608     VN_TRACE_FUNC();
1609 
1610     struct vn_instance_submit_command submit;
1611     vn_submit_vkCreateComputePipelines(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, &submit);
1612     struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
1613     if (dec) {
1614         const VkResult ret = vn_decode_vkCreateComputePipelines_reply(dec, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
1615         vn_instance_free_command_reply(vn_instance, &submit);
1616         return ret;
1617     } else {
1618         return VK_ERROR_OUT_OF_HOST_MEMORY;
1619     }
1620 }
1621 
vn_async_vkCreateComputePipelines(struct vn_instance * vn_instance,VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkComputePipelineCreateInfo * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)1622 static inline void vn_async_vkCreateComputePipelines(struct vn_instance *vn_instance, VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines)
1623 {
1624     struct vn_instance_submit_command submit;
1625     vn_submit_vkCreateComputePipelines(vn_instance, 0, device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines, &submit);
1626 }
1627 
vn_call_vkDestroyPipeline(struct vn_instance * vn_instance,VkDevice device,VkPipeline pipeline,const VkAllocationCallbacks * pAllocator)1628 static inline void vn_call_vkDestroyPipeline(struct vn_instance *vn_instance, VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator)
1629 {
1630     VN_TRACE_FUNC();
1631 
1632     struct vn_instance_submit_command submit;
1633     vn_submit_vkDestroyPipeline(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pipeline, pAllocator, &submit);
1634     struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
1635     if (dec) {
1636         vn_decode_vkDestroyPipeline_reply(dec, device, pipeline, pAllocator);
1637         vn_instance_free_command_reply(vn_instance, &submit);
1638     }
1639 }
1640 
vn_async_vkDestroyPipeline(struct vn_instance * vn_instance,VkDevice device,VkPipeline pipeline,const VkAllocationCallbacks * pAllocator)1641 static inline void vn_async_vkDestroyPipeline(struct vn_instance *vn_instance, VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator)
1642 {
1643     struct vn_instance_submit_command submit;
1644     vn_submit_vkDestroyPipeline(vn_instance, 0, device, pipeline, pAllocator, &submit);
1645 }
1646 
1647 #endif /* VN_PROTOCOL_DRIVER_PIPELINE_H */
1648