xref: /aosp_15_r20/external/mesa3d/src/virtio/venus-protocol/vn_protocol_driver_descriptor_set_layout.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1 /* This file is generated by venus-protocol.  See vn_protocol_driver.h. */
2 
3 /*
4  * Copyright 2020 Google LLC
5  * SPDX-License-Identifier: MIT
6  */
7 
8 #ifndef VN_PROTOCOL_DRIVER_DESCRIPTOR_SET_LAYOUT_H
9 #define VN_PROTOCOL_DRIVER_DESCRIPTOR_SET_LAYOUT_H
10 
11 #include "vn_ring.h"
12 #include "vn_protocol_driver_structs.h"
13 
14 /* struct VkDescriptorSetLayoutBinding */
15 
16 static inline size_t
vn_sizeof_VkDescriptorSetLayoutBinding(const VkDescriptorSetLayoutBinding * val)17 vn_sizeof_VkDescriptorSetLayoutBinding(const VkDescriptorSetLayoutBinding *val)
18 {
19     size_t size = 0;
20     size += vn_sizeof_uint32_t(&val->binding);
21     size += vn_sizeof_VkDescriptorType(&val->descriptorType);
22     size += vn_sizeof_uint32_t(&val->descriptorCount);
23     size += vn_sizeof_VkFlags(&val->stageFlags);
24     if (val->pImmutableSamplers) {
25         size += vn_sizeof_array_size(val->descriptorCount);
26         for (uint32_t i = 0; i < val->descriptorCount; i++)
27             size += vn_sizeof_VkSampler(&val->pImmutableSamplers[i]);
28     } else {
29         size += vn_sizeof_array_size(0);
30     }
31     return size;
32 }
33 
34 static inline void
vn_encode_VkDescriptorSetLayoutBinding(struct vn_cs_encoder * enc,const VkDescriptorSetLayoutBinding * val)35 vn_encode_VkDescriptorSetLayoutBinding(struct vn_cs_encoder *enc, const VkDescriptorSetLayoutBinding *val)
36 {
37     vn_encode_uint32_t(enc, &val->binding);
38     vn_encode_VkDescriptorType(enc, &val->descriptorType);
39     vn_encode_uint32_t(enc, &val->descriptorCount);
40     vn_encode_VkFlags(enc, &val->stageFlags);
41     if (val->pImmutableSamplers) {
42         vn_encode_array_size(enc, val->descriptorCount);
43         for (uint32_t i = 0; i < val->descriptorCount; i++)
44             vn_encode_VkSampler(enc, &val->pImmutableSamplers[i]);
45     } else {
46         vn_encode_array_size(enc, 0);
47     }
48 }
49 
50 /* struct VkDescriptorSetLayoutBindingFlagsCreateInfo chain */
51 
52 static inline size_t
vn_sizeof_VkDescriptorSetLayoutBindingFlagsCreateInfo_pnext(const void * val)53 vn_sizeof_VkDescriptorSetLayoutBindingFlagsCreateInfo_pnext(const void *val)
54 {
55     /* no known/supported struct */
56     return vn_sizeof_simple_pointer(NULL);
57 }
58 
59 static inline size_t
vn_sizeof_VkDescriptorSetLayoutBindingFlagsCreateInfo_self(const VkDescriptorSetLayoutBindingFlagsCreateInfo * val)60 vn_sizeof_VkDescriptorSetLayoutBindingFlagsCreateInfo_self(const VkDescriptorSetLayoutBindingFlagsCreateInfo *val)
61 {
62     size_t size = 0;
63     /* skip val->{sType,pNext} */
64     size += vn_sizeof_uint32_t(&val->bindingCount);
65     if (val->pBindingFlags) {
66         size += vn_sizeof_array_size(val->bindingCount);
67         for (uint32_t i = 0; i < val->bindingCount; i++)
68             size += vn_sizeof_VkFlags(&val->pBindingFlags[i]);
69     } else {
70         size += vn_sizeof_array_size(0);
71     }
72     return size;
73 }
74 
75 static inline size_t
vn_sizeof_VkDescriptorSetLayoutBindingFlagsCreateInfo(const VkDescriptorSetLayoutBindingFlagsCreateInfo * val)76 vn_sizeof_VkDescriptorSetLayoutBindingFlagsCreateInfo(const VkDescriptorSetLayoutBindingFlagsCreateInfo *val)
77 {
78     size_t size = 0;
79 
80     size += vn_sizeof_VkStructureType(&val->sType);
81     size += vn_sizeof_VkDescriptorSetLayoutBindingFlagsCreateInfo_pnext(val->pNext);
82     size += vn_sizeof_VkDescriptorSetLayoutBindingFlagsCreateInfo_self(val);
83 
84     return size;
85 }
86 
87 static inline void
vn_encode_VkDescriptorSetLayoutBindingFlagsCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)88 vn_encode_VkDescriptorSetLayoutBindingFlagsCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
89 {
90     /* no known/supported struct */
91     vn_encode_simple_pointer(enc, NULL);
92 }
93 
94 static inline void
vn_encode_VkDescriptorSetLayoutBindingFlagsCreateInfo_self(struct vn_cs_encoder * enc,const VkDescriptorSetLayoutBindingFlagsCreateInfo * val)95 vn_encode_VkDescriptorSetLayoutBindingFlagsCreateInfo_self(struct vn_cs_encoder *enc, const VkDescriptorSetLayoutBindingFlagsCreateInfo *val)
96 {
97     /* skip val->{sType,pNext} */
98     vn_encode_uint32_t(enc, &val->bindingCount);
99     if (val->pBindingFlags) {
100         vn_encode_array_size(enc, val->bindingCount);
101         for (uint32_t i = 0; i < val->bindingCount; i++)
102             vn_encode_VkFlags(enc, &val->pBindingFlags[i]);
103     } else {
104         vn_encode_array_size(enc, 0);
105     }
106 }
107 
108 static inline void
vn_encode_VkDescriptorSetLayoutBindingFlagsCreateInfo(struct vn_cs_encoder * enc,const VkDescriptorSetLayoutBindingFlagsCreateInfo * val)109 vn_encode_VkDescriptorSetLayoutBindingFlagsCreateInfo(struct vn_cs_encoder *enc, const VkDescriptorSetLayoutBindingFlagsCreateInfo *val)
110 {
111     assert(val->sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO);
112     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO });
113     vn_encode_VkDescriptorSetLayoutBindingFlagsCreateInfo_pnext(enc, val->pNext);
114     vn_encode_VkDescriptorSetLayoutBindingFlagsCreateInfo_self(enc, val);
115 }
116 
117 /* struct VkDescriptorSetLayoutCreateInfo chain */
118 
119 static inline size_t
vn_sizeof_VkDescriptorSetLayoutCreateInfo_pnext(const void * val)120 vn_sizeof_VkDescriptorSetLayoutCreateInfo_pnext(const void *val)
121 {
122     const VkBaseInStructure *pnext = val;
123     size_t size = 0;
124 
125     while (pnext) {
126         switch ((int32_t)pnext->sType) {
127         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO:
128             size += vn_sizeof_simple_pointer(pnext);
129             size += vn_sizeof_VkStructureType(&pnext->sType);
130             size += vn_sizeof_VkDescriptorSetLayoutCreateInfo_pnext(pnext->pNext);
131             size += vn_sizeof_VkDescriptorSetLayoutBindingFlagsCreateInfo_self((const VkDescriptorSetLayoutBindingFlagsCreateInfo *)pnext);
132             return size;
133         case VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT:
134             if (!vn_cs_renderer_protocol_has_extension(352 /* VK_VALVE_mutable_descriptor_type */) && !vn_cs_renderer_protocol_has_extension(495 /* VK_EXT_mutable_descriptor_type */))
135                 break;
136             size += vn_sizeof_simple_pointer(pnext);
137             size += vn_sizeof_VkStructureType(&pnext->sType);
138             size += vn_sizeof_VkDescriptorSetLayoutCreateInfo_pnext(pnext->pNext);
139             size += vn_sizeof_VkMutableDescriptorTypeCreateInfoEXT_self((const VkMutableDescriptorTypeCreateInfoEXT *)pnext);
140             return size;
141         default:
142             /* ignore unknown/unsupported struct */
143             break;
144         }
145         pnext = pnext->pNext;
146     }
147 
148     return vn_sizeof_simple_pointer(NULL);
149 }
150 
151 static inline size_t
vn_sizeof_VkDescriptorSetLayoutCreateInfo_self(const VkDescriptorSetLayoutCreateInfo * val)152 vn_sizeof_VkDescriptorSetLayoutCreateInfo_self(const VkDescriptorSetLayoutCreateInfo *val)
153 {
154     size_t size = 0;
155     /* skip val->{sType,pNext} */
156     size += vn_sizeof_VkFlags(&val->flags);
157     size += vn_sizeof_uint32_t(&val->bindingCount);
158     if (val->pBindings) {
159         size += vn_sizeof_array_size(val->bindingCount);
160         for (uint32_t i = 0; i < val->bindingCount; i++)
161             size += vn_sizeof_VkDescriptorSetLayoutBinding(&val->pBindings[i]);
162     } else {
163         size += vn_sizeof_array_size(0);
164     }
165     return size;
166 }
167 
168 static inline size_t
vn_sizeof_VkDescriptorSetLayoutCreateInfo(const VkDescriptorSetLayoutCreateInfo * val)169 vn_sizeof_VkDescriptorSetLayoutCreateInfo(const VkDescriptorSetLayoutCreateInfo *val)
170 {
171     size_t size = 0;
172 
173     size += vn_sizeof_VkStructureType(&val->sType);
174     size += vn_sizeof_VkDescriptorSetLayoutCreateInfo_pnext(val->pNext);
175     size += vn_sizeof_VkDescriptorSetLayoutCreateInfo_self(val);
176 
177     return size;
178 }
179 
180 static inline void
vn_encode_VkDescriptorSetLayoutCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)181 vn_encode_VkDescriptorSetLayoutCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
182 {
183     const VkBaseInStructure *pnext = val;
184 
185     while (pnext) {
186         switch ((int32_t)pnext->sType) {
187         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO:
188             vn_encode_simple_pointer(enc, pnext);
189             vn_encode_VkStructureType(enc, &pnext->sType);
190             vn_encode_VkDescriptorSetLayoutCreateInfo_pnext(enc, pnext->pNext);
191             vn_encode_VkDescriptorSetLayoutBindingFlagsCreateInfo_self(enc, (const VkDescriptorSetLayoutBindingFlagsCreateInfo *)pnext);
192             return;
193         case VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT:
194             if (!vn_cs_renderer_protocol_has_extension(352 /* VK_VALVE_mutable_descriptor_type */) && !vn_cs_renderer_protocol_has_extension(495 /* VK_EXT_mutable_descriptor_type */))
195                 break;
196             vn_encode_simple_pointer(enc, pnext);
197             vn_encode_VkStructureType(enc, &pnext->sType);
198             vn_encode_VkDescriptorSetLayoutCreateInfo_pnext(enc, pnext->pNext);
199             vn_encode_VkMutableDescriptorTypeCreateInfoEXT_self(enc, (const VkMutableDescriptorTypeCreateInfoEXT *)pnext);
200             return;
201         default:
202             /* ignore unknown/unsupported struct */
203             break;
204         }
205         pnext = pnext->pNext;
206     }
207 
208     vn_encode_simple_pointer(enc, NULL);
209 }
210 
211 static inline void
vn_encode_VkDescriptorSetLayoutCreateInfo_self(struct vn_cs_encoder * enc,const VkDescriptorSetLayoutCreateInfo * val)212 vn_encode_VkDescriptorSetLayoutCreateInfo_self(struct vn_cs_encoder *enc, const VkDescriptorSetLayoutCreateInfo *val)
213 {
214     /* skip val->{sType,pNext} */
215     vn_encode_VkFlags(enc, &val->flags);
216     vn_encode_uint32_t(enc, &val->bindingCount);
217     if (val->pBindings) {
218         vn_encode_array_size(enc, val->bindingCount);
219         for (uint32_t i = 0; i < val->bindingCount; i++)
220             vn_encode_VkDescriptorSetLayoutBinding(enc, &val->pBindings[i]);
221     } else {
222         vn_encode_array_size(enc, 0);
223     }
224 }
225 
226 static inline void
vn_encode_VkDescriptorSetLayoutCreateInfo(struct vn_cs_encoder * enc,const VkDescriptorSetLayoutCreateInfo * val)227 vn_encode_VkDescriptorSetLayoutCreateInfo(struct vn_cs_encoder *enc, const VkDescriptorSetLayoutCreateInfo *val)
228 {
229     assert(val->sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO);
230     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO });
231     vn_encode_VkDescriptorSetLayoutCreateInfo_pnext(enc, val->pNext);
232     vn_encode_VkDescriptorSetLayoutCreateInfo_self(enc, val);
233 }
234 
235 /* struct VkDescriptorSetVariableDescriptorCountLayoutSupport chain */
236 
237 static inline size_t
vn_sizeof_VkDescriptorSetVariableDescriptorCountLayoutSupport_pnext(const void * val)238 vn_sizeof_VkDescriptorSetVariableDescriptorCountLayoutSupport_pnext(const void *val)
239 {
240     /* no known/supported struct */
241     return vn_sizeof_simple_pointer(NULL);
242 }
243 
244 static inline size_t
vn_sizeof_VkDescriptorSetVariableDescriptorCountLayoutSupport_self(const VkDescriptorSetVariableDescriptorCountLayoutSupport * val)245 vn_sizeof_VkDescriptorSetVariableDescriptorCountLayoutSupport_self(const VkDescriptorSetVariableDescriptorCountLayoutSupport *val)
246 {
247     size_t size = 0;
248     /* skip val->{sType,pNext} */
249     size += vn_sizeof_uint32_t(&val->maxVariableDescriptorCount);
250     return size;
251 }
252 
253 static inline size_t
vn_sizeof_VkDescriptorSetVariableDescriptorCountLayoutSupport(const VkDescriptorSetVariableDescriptorCountLayoutSupport * val)254 vn_sizeof_VkDescriptorSetVariableDescriptorCountLayoutSupport(const VkDescriptorSetVariableDescriptorCountLayoutSupport *val)
255 {
256     size_t size = 0;
257 
258     size += vn_sizeof_VkStructureType(&val->sType);
259     size += vn_sizeof_VkDescriptorSetVariableDescriptorCountLayoutSupport_pnext(val->pNext);
260     size += vn_sizeof_VkDescriptorSetVariableDescriptorCountLayoutSupport_self(val);
261 
262     return size;
263 }
264 
265 static inline void
vn_decode_VkDescriptorSetVariableDescriptorCountLayoutSupport_pnext(struct vn_cs_decoder * dec,const void * val)266 vn_decode_VkDescriptorSetVariableDescriptorCountLayoutSupport_pnext(struct vn_cs_decoder *dec, const void *val)
267 {
268     /* no known/supported struct */
269     if (vn_decode_simple_pointer(dec))
270         assert(false);
271 }
272 
273 static inline void
vn_decode_VkDescriptorSetVariableDescriptorCountLayoutSupport_self(struct vn_cs_decoder * dec,VkDescriptorSetVariableDescriptorCountLayoutSupport * val)274 vn_decode_VkDescriptorSetVariableDescriptorCountLayoutSupport_self(struct vn_cs_decoder *dec, VkDescriptorSetVariableDescriptorCountLayoutSupport *val)
275 {
276     /* skip val->{sType,pNext} */
277     vn_decode_uint32_t(dec, &val->maxVariableDescriptorCount);
278 }
279 
280 static inline void
vn_decode_VkDescriptorSetVariableDescriptorCountLayoutSupport(struct vn_cs_decoder * dec,VkDescriptorSetVariableDescriptorCountLayoutSupport * val)281 vn_decode_VkDescriptorSetVariableDescriptorCountLayoutSupport(struct vn_cs_decoder *dec, VkDescriptorSetVariableDescriptorCountLayoutSupport *val)
282 {
283     VkStructureType stype;
284     vn_decode_VkStructureType(dec, &stype);
285     assert(stype == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT);
286 
287     assert(val->sType == stype);
288     vn_decode_VkDescriptorSetVariableDescriptorCountLayoutSupport_pnext(dec, val->pNext);
289     vn_decode_VkDescriptorSetVariableDescriptorCountLayoutSupport_self(dec, val);
290 }
291 
292 static inline size_t
vn_sizeof_VkDescriptorSetVariableDescriptorCountLayoutSupport_pnext_partial(const void * val)293 vn_sizeof_VkDescriptorSetVariableDescriptorCountLayoutSupport_pnext_partial(const void *val)
294 {
295     /* no known/supported struct */
296     return vn_sizeof_simple_pointer(NULL);
297 }
298 
299 static inline size_t
vn_sizeof_VkDescriptorSetVariableDescriptorCountLayoutSupport_self_partial(const VkDescriptorSetVariableDescriptorCountLayoutSupport * val)300 vn_sizeof_VkDescriptorSetVariableDescriptorCountLayoutSupport_self_partial(const VkDescriptorSetVariableDescriptorCountLayoutSupport *val)
301 {
302     size_t size = 0;
303     /* skip val->{sType,pNext} */
304     /* skip val->maxVariableDescriptorCount */
305     return size;
306 }
307 
308 static inline size_t
vn_sizeof_VkDescriptorSetVariableDescriptorCountLayoutSupport_partial(const VkDescriptorSetVariableDescriptorCountLayoutSupport * val)309 vn_sizeof_VkDescriptorSetVariableDescriptorCountLayoutSupport_partial(const VkDescriptorSetVariableDescriptorCountLayoutSupport *val)
310 {
311     size_t size = 0;
312 
313     size += vn_sizeof_VkStructureType(&val->sType);
314     size += vn_sizeof_VkDescriptorSetVariableDescriptorCountLayoutSupport_pnext_partial(val->pNext);
315     size += vn_sizeof_VkDescriptorSetVariableDescriptorCountLayoutSupport_self_partial(val);
316 
317     return size;
318 }
319 
320 static inline void
vn_encode_VkDescriptorSetVariableDescriptorCountLayoutSupport_pnext_partial(struct vn_cs_encoder * enc,const void * val)321 vn_encode_VkDescriptorSetVariableDescriptorCountLayoutSupport_pnext_partial(struct vn_cs_encoder *enc, const void *val)
322 {
323     /* no known/supported struct */
324     vn_encode_simple_pointer(enc, NULL);
325 }
326 
327 static inline void
vn_encode_VkDescriptorSetVariableDescriptorCountLayoutSupport_self_partial(struct vn_cs_encoder * enc,const VkDescriptorSetVariableDescriptorCountLayoutSupport * val)328 vn_encode_VkDescriptorSetVariableDescriptorCountLayoutSupport_self_partial(struct vn_cs_encoder *enc, const VkDescriptorSetVariableDescriptorCountLayoutSupport *val)
329 {
330     /* skip val->{sType,pNext} */
331     /* skip val->maxVariableDescriptorCount */
332 }
333 
334 static inline void
vn_encode_VkDescriptorSetVariableDescriptorCountLayoutSupport_partial(struct vn_cs_encoder * enc,const VkDescriptorSetVariableDescriptorCountLayoutSupport * val)335 vn_encode_VkDescriptorSetVariableDescriptorCountLayoutSupport_partial(struct vn_cs_encoder *enc, const VkDescriptorSetVariableDescriptorCountLayoutSupport *val)
336 {
337     assert(val->sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT);
338     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT });
339     vn_encode_VkDescriptorSetVariableDescriptorCountLayoutSupport_pnext_partial(enc, val->pNext);
340     vn_encode_VkDescriptorSetVariableDescriptorCountLayoutSupport_self_partial(enc, val);
341 }
342 
343 /* struct VkDescriptorSetLayoutSupport chain */
344 
345 static inline size_t
vn_sizeof_VkDescriptorSetLayoutSupport_pnext(const void * val)346 vn_sizeof_VkDescriptorSetLayoutSupport_pnext(const void *val)
347 {
348     const VkBaseInStructure *pnext = val;
349     size_t size = 0;
350 
351     while (pnext) {
352         switch ((int32_t)pnext->sType) {
353         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT:
354             size += vn_sizeof_simple_pointer(pnext);
355             size += vn_sizeof_VkStructureType(&pnext->sType);
356             size += vn_sizeof_VkDescriptorSetLayoutSupport_pnext(pnext->pNext);
357             size += vn_sizeof_VkDescriptorSetVariableDescriptorCountLayoutSupport_self((const VkDescriptorSetVariableDescriptorCountLayoutSupport *)pnext);
358             return size;
359         default:
360             /* ignore unknown/unsupported struct */
361             break;
362         }
363         pnext = pnext->pNext;
364     }
365 
366     return vn_sizeof_simple_pointer(NULL);
367 }
368 
369 static inline size_t
vn_sizeof_VkDescriptorSetLayoutSupport_self(const VkDescriptorSetLayoutSupport * val)370 vn_sizeof_VkDescriptorSetLayoutSupport_self(const VkDescriptorSetLayoutSupport *val)
371 {
372     size_t size = 0;
373     /* skip val->{sType,pNext} */
374     size += vn_sizeof_VkBool32(&val->supported);
375     return size;
376 }
377 
378 static inline size_t
vn_sizeof_VkDescriptorSetLayoutSupport(const VkDescriptorSetLayoutSupport * val)379 vn_sizeof_VkDescriptorSetLayoutSupport(const VkDescriptorSetLayoutSupport *val)
380 {
381     size_t size = 0;
382 
383     size += vn_sizeof_VkStructureType(&val->sType);
384     size += vn_sizeof_VkDescriptorSetLayoutSupport_pnext(val->pNext);
385     size += vn_sizeof_VkDescriptorSetLayoutSupport_self(val);
386 
387     return size;
388 }
389 
390 static inline void
vn_decode_VkDescriptorSetLayoutSupport_pnext(struct vn_cs_decoder * dec,const void * val)391 vn_decode_VkDescriptorSetLayoutSupport_pnext(struct vn_cs_decoder *dec, const void *val)
392 {
393     VkBaseOutStructure *pnext = (VkBaseOutStructure *)val;
394     VkStructureType stype;
395 
396     if (!vn_decode_simple_pointer(dec))
397         return;
398 
399     vn_decode_VkStructureType(dec, &stype);
400     while (true) {
401         assert(pnext);
402         if (pnext->sType == stype)
403             break;
404 
405         pnext = pnext->pNext;
406     }
407 
408     switch ((int32_t)pnext->sType) {
409     case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT:
410         vn_decode_VkDescriptorSetLayoutSupport_pnext(dec, pnext->pNext);
411         vn_decode_VkDescriptorSetVariableDescriptorCountLayoutSupport_self(dec, (VkDescriptorSetVariableDescriptorCountLayoutSupport *)pnext);
412         break;
413     default:
414         assert(false);
415         break;
416     }
417 }
418 
419 static inline void
vn_decode_VkDescriptorSetLayoutSupport_self(struct vn_cs_decoder * dec,VkDescriptorSetLayoutSupport * val)420 vn_decode_VkDescriptorSetLayoutSupport_self(struct vn_cs_decoder *dec, VkDescriptorSetLayoutSupport *val)
421 {
422     /* skip val->{sType,pNext} */
423     vn_decode_VkBool32(dec, &val->supported);
424 }
425 
426 static inline void
vn_decode_VkDescriptorSetLayoutSupport(struct vn_cs_decoder * dec,VkDescriptorSetLayoutSupport * val)427 vn_decode_VkDescriptorSetLayoutSupport(struct vn_cs_decoder *dec, VkDescriptorSetLayoutSupport *val)
428 {
429     VkStructureType stype;
430     vn_decode_VkStructureType(dec, &stype);
431     assert(stype == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT);
432 
433     assert(val->sType == stype);
434     vn_decode_VkDescriptorSetLayoutSupport_pnext(dec, val->pNext);
435     vn_decode_VkDescriptorSetLayoutSupport_self(dec, val);
436 }
437 
438 static inline size_t
vn_sizeof_VkDescriptorSetLayoutSupport_pnext_partial(const void * val)439 vn_sizeof_VkDescriptorSetLayoutSupport_pnext_partial(const void *val)
440 {
441     const VkBaseInStructure *pnext = val;
442     size_t size = 0;
443 
444     while (pnext) {
445         switch ((int32_t)pnext->sType) {
446         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT:
447             size += vn_sizeof_simple_pointer(pnext);
448             size += vn_sizeof_VkStructureType(&pnext->sType);
449             size += vn_sizeof_VkDescriptorSetLayoutSupport_pnext_partial(pnext->pNext);
450             size += vn_sizeof_VkDescriptorSetVariableDescriptorCountLayoutSupport_self_partial((const VkDescriptorSetVariableDescriptorCountLayoutSupport *)pnext);
451             return size;
452         default:
453             /* ignore unknown/unsupported struct */
454             break;
455         }
456         pnext = pnext->pNext;
457     }
458 
459     return vn_sizeof_simple_pointer(NULL);
460 }
461 
462 static inline size_t
vn_sizeof_VkDescriptorSetLayoutSupport_self_partial(const VkDescriptorSetLayoutSupport * val)463 vn_sizeof_VkDescriptorSetLayoutSupport_self_partial(const VkDescriptorSetLayoutSupport *val)
464 {
465     size_t size = 0;
466     /* skip val->{sType,pNext} */
467     /* skip val->supported */
468     return size;
469 }
470 
471 static inline size_t
vn_sizeof_VkDescriptorSetLayoutSupport_partial(const VkDescriptorSetLayoutSupport * val)472 vn_sizeof_VkDescriptorSetLayoutSupport_partial(const VkDescriptorSetLayoutSupport *val)
473 {
474     size_t size = 0;
475 
476     size += vn_sizeof_VkStructureType(&val->sType);
477     size += vn_sizeof_VkDescriptorSetLayoutSupport_pnext_partial(val->pNext);
478     size += vn_sizeof_VkDescriptorSetLayoutSupport_self_partial(val);
479 
480     return size;
481 }
482 
483 static inline void
vn_encode_VkDescriptorSetLayoutSupport_pnext_partial(struct vn_cs_encoder * enc,const void * val)484 vn_encode_VkDescriptorSetLayoutSupport_pnext_partial(struct vn_cs_encoder *enc, const void *val)
485 {
486     const VkBaseInStructure *pnext = val;
487 
488     while (pnext) {
489         switch ((int32_t)pnext->sType) {
490         case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT:
491             vn_encode_simple_pointer(enc, pnext);
492             vn_encode_VkStructureType(enc, &pnext->sType);
493             vn_encode_VkDescriptorSetLayoutSupport_pnext_partial(enc, pnext->pNext);
494             vn_encode_VkDescriptorSetVariableDescriptorCountLayoutSupport_self_partial(enc, (const VkDescriptorSetVariableDescriptorCountLayoutSupport *)pnext);
495             return;
496         default:
497             /* ignore unknown/unsupported struct */
498             break;
499         }
500         pnext = pnext->pNext;
501     }
502 
503     vn_encode_simple_pointer(enc, NULL);
504 }
505 
506 static inline void
vn_encode_VkDescriptorSetLayoutSupport_self_partial(struct vn_cs_encoder * enc,const VkDescriptorSetLayoutSupport * val)507 vn_encode_VkDescriptorSetLayoutSupport_self_partial(struct vn_cs_encoder *enc, const VkDescriptorSetLayoutSupport *val)
508 {
509     /* skip val->{sType,pNext} */
510     /* skip val->supported */
511 }
512 
513 static inline void
vn_encode_VkDescriptorSetLayoutSupport_partial(struct vn_cs_encoder * enc,const VkDescriptorSetLayoutSupport * val)514 vn_encode_VkDescriptorSetLayoutSupport_partial(struct vn_cs_encoder *enc, const VkDescriptorSetLayoutSupport *val)
515 {
516     assert(val->sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT);
517     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT });
518     vn_encode_VkDescriptorSetLayoutSupport_pnext_partial(enc, val->pNext);
519     vn_encode_VkDescriptorSetLayoutSupport_self_partial(enc, val);
520 }
521 
vn_sizeof_vkCreateDescriptorSetLayout(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorSetLayout * pSetLayout)522 static inline size_t vn_sizeof_vkCreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout)
523 {
524     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateDescriptorSetLayout_EXT;
525     const VkFlags cmd_flags = 0;
526     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
527 
528     cmd_size += vn_sizeof_VkDevice(&device);
529     cmd_size += vn_sizeof_simple_pointer(pCreateInfo);
530     if (pCreateInfo)
531         cmd_size += vn_sizeof_VkDescriptorSetLayoutCreateInfo(pCreateInfo);
532     cmd_size += vn_sizeof_simple_pointer(pAllocator);
533     if (pAllocator)
534         assert(false);
535     cmd_size += vn_sizeof_simple_pointer(pSetLayout);
536     if (pSetLayout)
537         cmd_size += vn_sizeof_VkDescriptorSetLayout(pSetLayout);
538 
539     return cmd_size;
540 }
541 
vn_encode_vkCreateDescriptorSetLayout(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorSetLayout * pSetLayout)542 static inline void vn_encode_vkCreateDescriptorSetLayout(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout)
543 {
544     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateDescriptorSetLayout_EXT;
545 
546     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
547     vn_encode_VkFlags(enc, &cmd_flags);
548 
549     vn_encode_VkDevice(enc, &device);
550     if (vn_encode_simple_pointer(enc, pCreateInfo))
551         vn_encode_VkDescriptorSetLayoutCreateInfo(enc, pCreateInfo);
552     if (vn_encode_simple_pointer(enc, pAllocator))
553         assert(false);
554     if (vn_encode_simple_pointer(enc, pSetLayout))
555         vn_encode_VkDescriptorSetLayout(enc, pSetLayout);
556 }
557 
vn_sizeof_vkCreateDescriptorSetLayout_reply(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorSetLayout * pSetLayout)558 static inline size_t vn_sizeof_vkCreateDescriptorSetLayout_reply(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout)
559 {
560     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateDescriptorSetLayout_EXT;
561     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
562 
563     VkResult ret;
564     cmd_size += vn_sizeof_VkResult(&ret);
565     /* skip device */
566     /* skip pCreateInfo */
567     /* skip pAllocator */
568     cmd_size += vn_sizeof_simple_pointer(pSetLayout);
569     if (pSetLayout)
570         cmd_size += vn_sizeof_VkDescriptorSetLayout(pSetLayout);
571 
572     return cmd_size;
573 }
574 
vn_decode_vkCreateDescriptorSetLayout_reply(struct vn_cs_decoder * dec,VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorSetLayout * pSetLayout)575 static inline VkResult vn_decode_vkCreateDescriptorSetLayout_reply(struct vn_cs_decoder *dec, VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout)
576 {
577     VkCommandTypeEXT command_type;
578     vn_decode_VkCommandTypeEXT(dec, &command_type);
579     assert(command_type == VK_COMMAND_TYPE_vkCreateDescriptorSetLayout_EXT);
580 
581     VkResult ret;
582     vn_decode_VkResult(dec, &ret);
583     /* skip device */
584     /* skip pCreateInfo */
585     /* skip pAllocator */
586     if (vn_decode_simple_pointer(dec)) {
587         vn_decode_VkDescriptorSetLayout(dec, pSetLayout);
588     } else {
589         pSetLayout = NULL;
590     }
591 
592     return ret;
593 }
594 
vn_sizeof_vkDestroyDescriptorSetLayout(VkDevice device,VkDescriptorSetLayout descriptorSetLayout,const VkAllocationCallbacks * pAllocator)595 static inline size_t vn_sizeof_vkDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator)
596 {
597     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyDescriptorSetLayout_EXT;
598     const VkFlags cmd_flags = 0;
599     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
600 
601     cmd_size += vn_sizeof_VkDevice(&device);
602     cmd_size += vn_sizeof_VkDescriptorSetLayout(&descriptorSetLayout);
603     cmd_size += vn_sizeof_simple_pointer(pAllocator);
604     if (pAllocator)
605         assert(false);
606 
607     return cmd_size;
608 }
609 
vn_encode_vkDestroyDescriptorSetLayout(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,VkDescriptorSetLayout descriptorSetLayout,const VkAllocationCallbacks * pAllocator)610 static inline void vn_encode_vkDestroyDescriptorSetLayout(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator)
611 {
612     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyDescriptorSetLayout_EXT;
613 
614     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
615     vn_encode_VkFlags(enc, &cmd_flags);
616 
617     vn_encode_VkDevice(enc, &device);
618     vn_encode_VkDescriptorSetLayout(enc, &descriptorSetLayout);
619     if (vn_encode_simple_pointer(enc, pAllocator))
620         assert(false);
621 }
622 
vn_sizeof_vkDestroyDescriptorSetLayout_reply(VkDevice device,VkDescriptorSetLayout descriptorSetLayout,const VkAllocationCallbacks * pAllocator)623 static inline size_t vn_sizeof_vkDestroyDescriptorSetLayout_reply(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator)
624 {
625     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyDescriptorSetLayout_EXT;
626     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
627 
628     /* skip device */
629     /* skip descriptorSetLayout */
630     /* skip pAllocator */
631 
632     return cmd_size;
633 }
634 
vn_decode_vkDestroyDescriptorSetLayout_reply(struct vn_cs_decoder * dec,VkDevice device,VkDescriptorSetLayout descriptorSetLayout,const VkAllocationCallbacks * pAllocator)635 static inline void vn_decode_vkDestroyDescriptorSetLayout_reply(struct vn_cs_decoder *dec, VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator)
636 {
637     VkCommandTypeEXT command_type;
638     vn_decode_VkCommandTypeEXT(dec, &command_type);
639     assert(command_type == VK_COMMAND_TYPE_vkDestroyDescriptorSetLayout_EXT);
640 
641     /* skip device */
642     /* skip descriptorSetLayout */
643     /* skip pAllocator */
644 }
645 
vn_sizeof_vkGetDescriptorSetLayoutSupport(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)646 static inline size_t vn_sizeof_vkGetDescriptorSetLayoutSupport(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport)
647 {
648     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetDescriptorSetLayoutSupport_EXT;
649     const VkFlags cmd_flags = 0;
650     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
651 
652     cmd_size += vn_sizeof_VkDevice(&device);
653     cmd_size += vn_sizeof_simple_pointer(pCreateInfo);
654     if (pCreateInfo)
655         cmd_size += vn_sizeof_VkDescriptorSetLayoutCreateInfo(pCreateInfo);
656     cmd_size += vn_sizeof_simple_pointer(pSupport);
657     if (pSupport)
658         cmd_size += vn_sizeof_VkDescriptorSetLayoutSupport_partial(pSupport);
659 
660     return cmd_size;
661 }
662 
vn_encode_vkGetDescriptorSetLayoutSupport(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)663 static inline void vn_encode_vkGetDescriptorSetLayoutSupport(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport)
664 {
665     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetDescriptorSetLayoutSupport_EXT;
666 
667     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
668     vn_encode_VkFlags(enc, &cmd_flags);
669 
670     vn_encode_VkDevice(enc, &device);
671     if (vn_encode_simple_pointer(enc, pCreateInfo))
672         vn_encode_VkDescriptorSetLayoutCreateInfo(enc, pCreateInfo);
673     if (vn_encode_simple_pointer(enc, pSupport))
674         vn_encode_VkDescriptorSetLayoutSupport_partial(enc, pSupport);
675 }
676 
vn_sizeof_vkGetDescriptorSetLayoutSupport_reply(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)677 static inline size_t vn_sizeof_vkGetDescriptorSetLayoutSupport_reply(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport)
678 {
679     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetDescriptorSetLayoutSupport_EXT;
680     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
681 
682     /* skip device */
683     /* skip pCreateInfo */
684     cmd_size += vn_sizeof_simple_pointer(pSupport);
685     if (pSupport)
686         cmd_size += vn_sizeof_VkDescriptorSetLayoutSupport(pSupport);
687 
688     return cmd_size;
689 }
690 
vn_decode_vkGetDescriptorSetLayoutSupport_reply(struct vn_cs_decoder * dec,VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)691 static inline void vn_decode_vkGetDescriptorSetLayoutSupport_reply(struct vn_cs_decoder *dec, VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport)
692 {
693     VkCommandTypeEXT command_type;
694     vn_decode_VkCommandTypeEXT(dec, &command_type);
695     assert(command_type == VK_COMMAND_TYPE_vkGetDescriptorSetLayoutSupport_EXT);
696 
697     /* skip device */
698     /* skip pCreateInfo */
699     if (vn_decode_simple_pointer(dec)) {
700         vn_decode_VkDescriptorSetLayoutSupport(dec, pSupport);
701     } else {
702         pSupport = NULL;
703     }
704 }
705 
vn_submit_vkCreateDescriptorSetLayout(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorSetLayout * pSetLayout,struct vn_ring_submit_command * submit)706 static inline void vn_submit_vkCreateDescriptorSetLayout(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout, struct vn_ring_submit_command *submit)
707 {
708     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
709     void *cmd_data = local_cmd_data;
710     size_t cmd_size = vn_sizeof_vkCreateDescriptorSetLayout(device, pCreateInfo, pAllocator, pSetLayout);
711     if (cmd_size > sizeof(local_cmd_data)) {
712         cmd_data = malloc(cmd_size);
713         if (!cmd_data)
714             cmd_size = 0;
715     }
716     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateDescriptorSetLayout_reply(device, pCreateInfo, pAllocator, pSetLayout) : 0;
717 
718     struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
719     if (cmd_size) {
720         vn_encode_vkCreateDescriptorSetLayout(enc, cmd_flags, device, pCreateInfo, pAllocator, pSetLayout);
721         vn_ring_submit_command(vn_ring, submit);
722         if (cmd_data != local_cmd_data)
723             free(cmd_data);
724     }
725 }
726 
vn_submit_vkDestroyDescriptorSetLayout(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,VkDescriptorSetLayout descriptorSetLayout,const VkAllocationCallbacks * pAllocator,struct vn_ring_submit_command * submit)727 static inline void vn_submit_vkDestroyDescriptorSetLayout(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator, struct vn_ring_submit_command *submit)
728 {
729     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
730     void *cmd_data = local_cmd_data;
731     size_t cmd_size = vn_sizeof_vkDestroyDescriptorSetLayout(device, descriptorSetLayout, pAllocator);
732     if (cmd_size > sizeof(local_cmd_data)) {
733         cmd_data = malloc(cmd_size);
734         if (!cmd_data)
735             cmd_size = 0;
736     }
737     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroyDescriptorSetLayout_reply(device, descriptorSetLayout, pAllocator) : 0;
738 
739     struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
740     if (cmd_size) {
741         vn_encode_vkDestroyDescriptorSetLayout(enc, cmd_flags, device, descriptorSetLayout, pAllocator);
742         vn_ring_submit_command(vn_ring, submit);
743         if (cmd_data != local_cmd_data)
744             free(cmd_data);
745     }
746 }
747 
vn_submit_vkGetDescriptorSetLayoutSupport(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport,struct vn_ring_submit_command * submit)748 static inline void vn_submit_vkGetDescriptorSetLayoutSupport(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport, struct vn_ring_submit_command *submit)
749 {
750     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
751     void *cmd_data = local_cmd_data;
752     size_t cmd_size = vn_sizeof_vkGetDescriptorSetLayoutSupport(device, pCreateInfo, pSupport);
753     if (cmd_size > sizeof(local_cmd_data)) {
754         cmd_data = malloc(cmd_size);
755         if (!cmd_data)
756             cmd_size = 0;
757     }
758     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetDescriptorSetLayoutSupport_reply(device, pCreateInfo, pSupport) : 0;
759 
760     struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
761     if (cmd_size) {
762         vn_encode_vkGetDescriptorSetLayoutSupport(enc, cmd_flags, device, pCreateInfo, pSupport);
763         vn_ring_submit_command(vn_ring, submit);
764         if (cmd_data != local_cmd_data)
765             free(cmd_data);
766     }
767 }
768 
vn_call_vkCreateDescriptorSetLayout(struct vn_ring * vn_ring,VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorSetLayout * pSetLayout)769 static inline VkResult vn_call_vkCreateDescriptorSetLayout(struct vn_ring *vn_ring, VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout)
770 {
771     VN_TRACE_FUNC();
772 
773     struct vn_ring_submit_command submit;
774     vn_submit_vkCreateDescriptorSetLayout(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pSetLayout, &submit);
775     struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
776     if (dec) {
777         const VkResult ret = vn_decode_vkCreateDescriptorSetLayout_reply(dec, device, pCreateInfo, pAllocator, pSetLayout);
778         vn_ring_free_command_reply(vn_ring, &submit);
779         return ret;
780     } else {
781         return VK_ERROR_OUT_OF_HOST_MEMORY;
782     }
783 }
784 
vn_async_vkCreateDescriptorSetLayout(struct vn_ring * vn_ring,VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorSetLayout * pSetLayout)785 static inline void vn_async_vkCreateDescriptorSetLayout(struct vn_ring *vn_ring, VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout)
786 {
787     struct vn_ring_submit_command submit;
788     vn_submit_vkCreateDescriptorSetLayout(vn_ring, 0, device, pCreateInfo, pAllocator, pSetLayout, &submit);
789 }
790 
vn_call_vkDestroyDescriptorSetLayout(struct vn_ring * vn_ring,VkDevice device,VkDescriptorSetLayout descriptorSetLayout,const VkAllocationCallbacks * pAllocator)791 static inline void vn_call_vkDestroyDescriptorSetLayout(struct vn_ring *vn_ring, VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator)
792 {
793     VN_TRACE_FUNC();
794 
795     struct vn_ring_submit_command submit;
796     vn_submit_vkDestroyDescriptorSetLayout(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, descriptorSetLayout, pAllocator, &submit);
797     struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
798     if (dec) {
799         vn_decode_vkDestroyDescriptorSetLayout_reply(dec, device, descriptorSetLayout, pAllocator);
800         vn_ring_free_command_reply(vn_ring, &submit);
801     }
802 }
803 
vn_async_vkDestroyDescriptorSetLayout(struct vn_ring * vn_ring,VkDevice device,VkDescriptorSetLayout descriptorSetLayout,const VkAllocationCallbacks * pAllocator)804 static inline void vn_async_vkDestroyDescriptorSetLayout(struct vn_ring *vn_ring, VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator)
805 {
806     struct vn_ring_submit_command submit;
807     vn_submit_vkDestroyDescriptorSetLayout(vn_ring, 0, device, descriptorSetLayout, pAllocator, &submit);
808 }
809 
vn_call_vkGetDescriptorSetLayoutSupport(struct vn_ring * vn_ring,VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)810 static inline void vn_call_vkGetDescriptorSetLayoutSupport(struct vn_ring *vn_ring, VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport)
811 {
812     VN_TRACE_FUNC();
813 
814     struct vn_ring_submit_command submit;
815     vn_submit_vkGetDescriptorSetLayoutSupport(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pSupport, &submit);
816     struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
817     if (dec) {
818         vn_decode_vkGetDescriptorSetLayoutSupport_reply(dec, device, pCreateInfo, pSupport);
819         vn_ring_free_command_reply(vn_ring, &submit);
820     }
821 }
822 
vn_async_vkGetDescriptorSetLayoutSupport(struct vn_ring * vn_ring,VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)823 static inline void vn_async_vkGetDescriptorSetLayoutSupport(struct vn_ring *vn_ring, VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport)
824 {
825     struct vn_ring_submit_command submit;
826     vn_submit_vkGetDescriptorSetLayoutSupport(vn_ring, 0, device, pCreateInfo, pSupport, &submit);
827 }
828 
829 #endif /* VN_PROTOCOL_DRIVER_DESCRIPTOR_SET_LAYOUT_H */
830