xref: /aosp_15_r20/external/mesa3d/src/virtio/venus-protocol/vn_protocol_driver_semaphore.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_SEMAPHORE_H
9 #define VN_PROTOCOL_DRIVER_SEMAPHORE_H
10 
11 #include "vn_ring.h"
12 #include "vn_protocol_driver_structs.h"
13 
14 /*
15  * These structs/unions/commands are not included
16  *
17  *   vkGetSemaphoreFdKHR
18  *   vkImportSemaphoreFdKHR
19  */
20 
21 /* struct VkExportSemaphoreCreateInfo chain */
22 
23 static inline size_t
vn_sizeof_VkExportSemaphoreCreateInfo_pnext(const void * val)24 vn_sizeof_VkExportSemaphoreCreateInfo_pnext(const void *val)
25 {
26     /* no known/supported struct */
27     return vn_sizeof_simple_pointer(NULL);
28 }
29 
30 static inline size_t
vn_sizeof_VkExportSemaphoreCreateInfo_self(const VkExportSemaphoreCreateInfo * val)31 vn_sizeof_VkExportSemaphoreCreateInfo_self(const VkExportSemaphoreCreateInfo *val)
32 {
33     size_t size = 0;
34     /* skip val->{sType,pNext} */
35     size += vn_sizeof_VkFlags(&val->handleTypes);
36     return size;
37 }
38 
39 static inline size_t
vn_sizeof_VkExportSemaphoreCreateInfo(const VkExportSemaphoreCreateInfo * val)40 vn_sizeof_VkExportSemaphoreCreateInfo(const VkExportSemaphoreCreateInfo *val)
41 {
42     size_t size = 0;
43 
44     size += vn_sizeof_VkStructureType(&val->sType);
45     size += vn_sizeof_VkExportSemaphoreCreateInfo_pnext(val->pNext);
46     size += vn_sizeof_VkExportSemaphoreCreateInfo_self(val);
47 
48     return size;
49 }
50 
51 static inline void
vn_encode_VkExportSemaphoreCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)52 vn_encode_VkExportSemaphoreCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
53 {
54     /* no known/supported struct */
55     vn_encode_simple_pointer(enc, NULL);
56 }
57 
58 static inline void
vn_encode_VkExportSemaphoreCreateInfo_self(struct vn_cs_encoder * enc,const VkExportSemaphoreCreateInfo * val)59 vn_encode_VkExportSemaphoreCreateInfo_self(struct vn_cs_encoder *enc, const VkExportSemaphoreCreateInfo *val)
60 {
61     /* skip val->{sType,pNext} */
62     vn_encode_VkFlags(enc, &val->handleTypes);
63 }
64 
65 static inline void
vn_encode_VkExportSemaphoreCreateInfo(struct vn_cs_encoder * enc,const VkExportSemaphoreCreateInfo * val)66 vn_encode_VkExportSemaphoreCreateInfo(struct vn_cs_encoder *enc, const VkExportSemaphoreCreateInfo *val)
67 {
68     assert(val->sType == VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO);
69     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO });
70     vn_encode_VkExportSemaphoreCreateInfo_pnext(enc, val->pNext);
71     vn_encode_VkExportSemaphoreCreateInfo_self(enc, val);
72 }
73 
74 /* struct VkSemaphoreCreateInfo chain */
75 
76 static inline size_t
vn_sizeof_VkSemaphoreCreateInfo_pnext(const void * val)77 vn_sizeof_VkSemaphoreCreateInfo_pnext(const void *val)
78 {
79     const VkBaseInStructure *pnext = val;
80     size_t size = 0;
81 
82     while (pnext) {
83         switch ((int32_t)pnext->sType) {
84         case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO:
85             size += vn_sizeof_simple_pointer(pnext);
86             size += vn_sizeof_VkStructureType(&pnext->sType);
87             size += vn_sizeof_VkSemaphoreCreateInfo_pnext(pnext->pNext);
88             size += vn_sizeof_VkExportSemaphoreCreateInfo_self((const VkExportSemaphoreCreateInfo *)pnext);
89             return size;
90         case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO:
91             size += vn_sizeof_simple_pointer(pnext);
92             size += vn_sizeof_VkStructureType(&pnext->sType);
93             size += vn_sizeof_VkSemaphoreCreateInfo_pnext(pnext->pNext);
94             size += vn_sizeof_VkSemaphoreTypeCreateInfo_self((const VkSemaphoreTypeCreateInfo *)pnext);
95             return size;
96         default:
97             /* ignore unknown/unsupported struct */
98             break;
99         }
100         pnext = pnext->pNext;
101     }
102 
103     return vn_sizeof_simple_pointer(NULL);
104 }
105 
106 static inline size_t
vn_sizeof_VkSemaphoreCreateInfo_self(const VkSemaphoreCreateInfo * val)107 vn_sizeof_VkSemaphoreCreateInfo_self(const VkSemaphoreCreateInfo *val)
108 {
109     size_t size = 0;
110     /* skip val->{sType,pNext} */
111     size += vn_sizeof_VkFlags(&val->flags);
112     return size;
113 }
114 
115 static inline size_t
vn_sizeof_VkSemaphoreCreateInfo(const VkSemaphoreCreateInfo * val)116 vn_sizeof_VkSemaphoreCreateInfo(const VkSemaphoreCreateInfo *val)
117 {
118     size_t size = 0;
119 
120     size += vn_sizeof_VkStructureType(&val->sType);
121     size += vn_sizeof_VkSemaphoreCreateInfo_pnext(val->pNext);
122     size += vn_sizeof_VkSemaphoreCreateInfo_self(val);
123 
124     return size;
125 }
126 
127 static inline void
vn_encode_VkSemaphoreCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)128 vn_encode_VkSemaphoreCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
129 {
130     const VkBaseInStructure *pnext = val;
131 
132     while (pnext) {
133         switch ((int32_t)pnext->sType) {
134         case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO:
135             vn_encode_simple_pointer(enc, pnext);
136             vn_encode_VkStructureType(enc, &pnext->sType);
137             vn_encode_VkSemaphoreCreateInfo_pnext(enc, pnext->pNext);
138             vn_encode_VkExportSemaphoreCreateInfo_self(enc, (const VkExportSemaphoreCreateInfo *)pnext);
139             return;
140         case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO:
141             vn_encode_simple_pointer(enc, pnext);
142             vn_encode_VkStructureType(enc, &pnext->sType);
143             vn_encode_VkSemaphoreCreateInfo_pnext(enc, pnext->pNext);
144             vn_encode_VkSemaphoreTypeCreateInfo_self(enc, (const VkSemaphoreTypeCreateInfo *)pnext);
145             return;
146         default:
147             /* ignore unknown/unsupported struct */
148             break;
149         }
150         pnext = pnext->pNext;
151     }
152 
153     vn_encode_simple_pointer(enc, NULL);
154 }
155 
156 static inline void
vn_encode_VkSemaphoreCreateInfo_self(struct vn_cs_encoder * enc,const VkSemaphoreCreateInfo * val)157 vn_encode_VkSemaphoreCreateInfo_self(struct vn_cs_encoder *enc, const VkSemaphoreCreateInfo *val)
158 {
159     /* skip val->{sType,pNext} */
160     vn_encode_VkFlags(enc, &val->flags);
161 }
162 
163 static inline void
vn_encode_VkSemaphoreCreateInfo(struct vn_cs_encoder * enc,const VkSemaphoreCreateInfo * val)164 vn_encode_VkSemaphoreCreateInfo(struct vn_cs_encoder *enc, const VkSemaphoreCreateInfo *val)
165 {
166     assert(val->sType == VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO);
167     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO });
168     vn_encode_VkSemaphoreCreateInfo_pnext(enc, val->pNext);
169     vn_encode_VkSemaphoreCreateInfo_self(enc, val);
170 }
171 
172 /* struct VkSemaphoreWaitInfo chain */
173 
174 static inline size_t
vn_sizeof_VkSemaphoreWaitInfo_pnext(const void * val)175 vn_sizeof_VkSemaphoreWaitInfo_pnext(const void *val)
176 {
177     /* no known/supported struct */
178     return vn_sizeof_simple_pointer(NULL);
179 }
180 
181 static inline size_t
vn_sizeof_VkSemaphoreWaitInfo_self(const VkSemaphoreWaitInfo * val)182 vn_sizeof_VkSemaphoreWaitInfo_self(const VkSemaphoreWaitInfo *val)
183 {
184     size_t size = 0;
185     /* skip val->{sType,pNext} */
186     size += vn_sizeof_VkFlags(&val->flags);
187     size += vn_sizeof_uint32_t(&val->semaphoreCount);
188     if (val->pSemaphores) {
189         size += vn_sizeof_array_size(val->semaphoreCount);
190         for (uint32_t i = 0; i < val->semaphoreCount; i++)
191             size += vn_sizeof_VkSemaphore(&val->pSemaphores[i]);
192     } else {
193         size += vn_sizeof_array_size(0);
194     }
195     if (val->pValues) {
196         size += vn_sizeof_array_size(val->semaphoreCount);
197         size += vn_sizeof_uint64_t_array(val->pValues, val->semaphoreCount);
198     } else {
199         size += vn_sizeof_array_size(0);
200     }
201     return size;
202 }
203 
204 static inline size_t
vn_sizeof_VkSemaphoreWaitInfo(const VkSemaphoreWaitInfo * val)205 vn_sizeof_VkSemaphoreWaitInfo(const VkSemaphoreWaitInfo *val)
206 {
207     size_t size = 0;
208 
209     size += vn_sizeof_VkStructureType(&val->sType);
210     size += vn_sizeof_VkSemaphoreWaitInfo_pnext(val->pNext);
211     size += vn_sizeof_VkSemaphoreWaitInfo_self(val);
212 
213     return size;
214 }
215 
216 static inline void
vn_encode_VkSemaphoreWaitInfo_pnext(struct vn_cs_encoder * enc,const void * val)217 vn_encode_VkSemaphoreWaitInfo_pnext(struct vn_cs_encoder *enc, const void *val)
218 {
219     /* no known/supported struct */
220     vn_encode_simple_pointer(enc, NULL);
221 }
222 
223 static inline void
vn_encode_VkSemaphoreWaitInfo_self(struct vn_cs_encoder * enc,const VkSemaphoreWaitInfo * val)224 vn_encode_VkSemaphoreWaitInfo_self(struct vn_cs_encoder *enc, const VkSemaphoreWaitInfo *val)
225 {
226     /* skip val->{sType,pNext} */
227     vn_encode_VkFlags(enc, &val->flags);
228     vn_encode_uint32_t(enc, &val->semaphoreCount);
229     if (val->pSemaphores) {
230         vn_encode_array_size(enc, val->semaphoreCount);
231         for (uint32_t i = 0; i < val->semaphoreCount; i++)
232             vn_encode_VkSemaphore(enc, &val->pSemaphores[i]);
233     } else {
234         vn_encode_array_size(enc, 0);
235     }
236     if (val->pValues) {
237         vn_encode_array_size(enc, val->semaphoreCount);
238         vn_encode_uint64_t_array(enc, val->pValues, val->semaphoreCount);
239     } else {
240         vn_encode_array_size(enc, 0);
241     }
242 }
243 
244 static inline void
vn_encode_VkSemaphoreWaitInfo(struct vn_cs_encoder * enc,const VkSemaphoreWaitInfo * val)245 vn_encode_VkSemaphoreWaitInfo(struct vn_cs_encoder *enc, const VkSemaphoreWaitInfo *val)
246 {
247     assert(val->sType == VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO);
248     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO });
249     vn_encode_VkSemaphoreWaitInfo_pnext(enc, val->pNext);
250     vn_encode_VkSemaphoreWaitInfo_self(enc, val);
251 }
252 
253 /* struct VkSemaphoreSignalInfo chain */
254 
255 static inline size_t
vn_sizeof_VkSemaphoreSignalInfo_pnext(const void * val)256 vn_sizeof_VkSemaphoreSignalInfo_pnext(const void *val)
257 {
258     /* no known/supported struct */
259     return vn_sizeof_simple_pointer(NULL);
260 }
261 
262 static inline size_t
vn_sizeof_VkSemaphoreSignalInfo_self(const VkSemaphoreSignalInfo * val)263 vn_sizeof_VkSemaphoreSignalInfo_self(const VkSemaphoreSignalInfo *val)
264 {
265     size_t size = 0;
266     /* skip val->{sType,pNext} */
267     size += vn_sizeof_VkSemaphore(&val->semaphore);
268     size += vn_sizeof_uint64_t(&val->value);
269     return size;
270 }
271 
272 static inline size_t
vn_sizeof_VkSemaphoreSignalInfo(const VkSemaphoreSignalInfo * val)273 vn_sizeof_VkSemaphoreSignalInfo(const VkSemaphoreSignalInfo *val)
274 {
275     size_t size = 0;
276 
277     size += vn_sizeof_VkStructureType(&val->sType);
278     size += vn_sizeof_VkSemaphoreSignalInfo_pnext(val->pNext);
279     size += vn_sizeof_VkSemaphoreSignalInfo_self(val);
280 
281     return size;
282 }
283 
284 static inline void
vn_encode_VkSemaphoreSignalInfo_pnext(struct vn_cs_encoder * enc,const void * val)285 vn_encode_VkSemaphoreSignalInfo_pnext(struct vn_cs_encoder *enc, const void *val)
286 {
287     /* no known/supported struct */
288     vn_encode_simple_pointer(enc, NULL);
289 }
290 
291 static inline void
vn_encode_VkSemaphoreSignalInfo_self(struct vn_cs_encoder * enc,const VkSemaphoreSignalInfo * val)292 vn_encode_VkSemaphoreSignalInfo_self(struct vn_cs_encoder *enc, const VkSemaphoreSignalInfo *val)
293 {
294     /* skip val->{sType,pNext} */
295     vn_encode_VkSemaphore(enc, &val->semaphore);
296     vn_encode_uint64_t(enc, &val->value);
297 }
298 
299 static inline void
vn_encode_VkSemaphoreSignalInfo(struct vn_cs_encoder * enc,const VkSemaphoreSignalInfo * val)300 vn_encode_VkSemaphoreSignalInfo(struct vn_cs_encoder *enc, const VkSemaphoreSignalInfo *val)
301 {
302     assert(val->sType == VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO);
303     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO });
304     vn_encode_VkSemaphoreSignalInfo_pnext(enc, val->pNext);
305     vn_encode_VkSemaphoreSignalInfo_self(enc, val);
306 }
307 
308 /* struct VkImportSemaphoreResourceInfoMESA chain */
309 
310 static inline size_t
vn_sizeof_VkImportSemaphoreResourceInfoMESA_pnext(const void * val)311 vn_sizeof_VkImportSemaphoreResourceInfoMESA_pnext(const void *val)
312 {
313     /* no known/supported struct */
314     return vn_sizeof_simple_pointer(NULL);
315 }
316 
317 static inline size_t
vn_sizeof_VkImportSemaphoreResourceInfoMESA_self(const VkImportSemaphoreResourceInfoMESA * val)318 vn_sizeof_VkImportSemaphoreResourceInfoMESA_self(const VkImportSemaphoreResourceInfoMESA *val)
319 {
320     size_t size = 0;
321     /* skip val->{sType,pNext} */
322     size += vn_sizeof_VkSemaphore(&val->semaphore);
323     size += vn_sizeof_uint32_t(&val->resourceId);
324     return size;
325 }
326 
327 static inline size_t
vn_sizeof_VkImportSemaphoreResourceInfoMESA(const VkImportSemaphoreResourceInfoMESA * val)328 vn_sizeof_VkImportSemaphoreResourceInfoMESA(const VkImportSemaphoreResourceInfoMESA *val)
329 {
330     size_t size = 0;
331 
332     size += vn_sizeof_VkStructureType(&val->sType);
333     size += vn_sizeof_VkImportSemaphoreResourceInfoMESA_pnext(val->pNext);
334     size += vn_sizeof_VkImportSemaphoreResourceInfoMESA_self(val);
335 
336     return size;
337 }
338 
339 static inline void
vn_encode_VkImportSemaphoreResourceInfoMESA_pnext(struct vn_cs_encoder * enc,const void * val)340 vn_encode_VkImportSemaphoreResourceInfoMESA_pnext(struct vn_cs_encoder *enc, const void *val)
341 {
342     /* no known/supported struct */
343     vn_encode_simple_pointer(enc, NULL);
344 }
345 
346 static inline void
vn_encode_VkImportSemaphoreResourceInfoMESA_self(struct vn_cs_encoder * enc,const VkImportSemaphoreResourceInfoMESA * val)347 vn_encode_VkImportSemaphoreResourceInfoMESA_self(struct vn_cs_encoder *enc, const VkImportSemaphoreResourceInfoMESA *val)
348 {
349     /* skip val->{sType,pNext} */
350     vn_encode_VkSemaphore(enc, &val->semaphore);
351     vn_encode_uint32_t(enc, &val->resourceId);
352 }
353 
354 static inline void
vn_encode_VkImportSemaphoreResourceInfoMESA(struct vn_cs_encoder * enc,const VkImportSemaphoreResourceInfoMESA * val)355 vn_encode_VkImportSemaphoreResourceInfoMESA(struct vn_cs_encoder *enc, const VkImportSemaphoreResourceInfoMESA *val)
356 {
357     assert(val->sType == VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_RESOURCE_INFO_MESA);
358     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_RESOURCE_INFO_MESA });
359     vn_encode_VkImportSemaphoreResourceInfoMESA_pnext(enc, val->pNext);
360     vn_encode_VkImportSemaphoreResourceInfoMESA_self(enc, val);
361 }
362 
vn_sizeof_vkCreateSemaphore(VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)363 static inline size_t vn_sizeof_vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
364 {
365     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateSemaphore_EXT;
366     const VkFlags cmd_flags = 0;
367     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
368 
369     cmd_size += vn_sizeof_VkDevice(&device);
370     cmd_size += vn_sizeof_simple_pointer(pCreateInfo);
371     if (pCreateInfo)
372         cmd_size += vn_sizeof_VkSemaphoreCreateInfo(pCreateInfo);
373     cmd_size += vn_sizeof_simple_pointer(pAllocator);
374     if (pAllocator)
375         assert(false);
376     cmd_size += vn_sizeof_simple_pointer(pSemaphore);
377     if (pSemaphore)
378         cmd_size += vn_sizeof_VkSemaphore(pSemaphore);
379 
380     return cmd_size;
381 }
382 
vn_encode_vkCreateSemaphore(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)383 static inline void vn_encode_vkCreateSemaphore(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
384 {
385     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateSemaphore_EXT;
386 
387     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
388     vn_encode_VkFlags(enc, &cmd_flags);
389 
390     vn_encode_VkDevice(enc, &device);
391     if (vn_encode_simple_pointer(enc, pCreateInfo))
392         vn_encode_VkSemaphoreCreateInfo(enc, pCreateInfo);
393     if (vn_encode_simple_pointer(enc, pAllocator))
394         assert(false);
395     if (vn_encode_simple_pointer(enc, pSemaphore))
396         vn_encode_VkSemaphore(enc, pSemaphore);
397 }
398 
vn_sizeof_vkCreateSemaphore_reply(VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)399 static inline size_t vn_sizeof_vkCreateSemaphore_reply(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
400 {
401     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateSemaphore_EXT;
402     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
403 
404     VkResult ret;
405     cmd_size += vn_sizeof_VkResult(&ret);
406     /* skip device */
407     /* skip pCreateInfo */
408     /* skip pAllocator */
409     cmd_size += vn_sizeof_simple_pointer(pSemaphore);
410     if (pSemaphore)
411         cmd_size += vn_sizeof_VkSemaphore(pSemaphore);
412 
413     return cmd_size;
414 }
415 
vn_decode_vkCreateSemaphore_reply(struct vn_cs_decoder * dec,VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)416 static inline VkResult vn_decode_vkCreateSemaphore_reply(struct vn_cs_decoder *dec, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
417 {
418     VkCommandTypeEXT command_type;
419     vn_decode_VkCommandTypeEXT(dec, &command_type);
420     assert(command_type == VK_COMMAND_TYPE_vkCreateSemaphore_EXT);
421 
422     VkResult ret;
423     vn_decode_VkResult(dec, &ret);
424     /* skip device */
425     /* skip pCreateInfo */
426     /* skip pAllocator */
427     if (vn_decode_simple_pointer(dec)) {
428         vn_decode_VkSemaphore(dec, pSemaphore);
429     } else {
430         pSemaphore = NULL;
431     }
432 
433     return ret;
434 }
435 
vn_sizeof_vkDestroySemaphore(VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)436 static inline size_t vn_sizeof_vkDestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
437 {
438     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroySemaphore_EXT;
439     const VkFlags cmd_flags = 0;
440     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
441 
442     cmd_size += vn_sizeof_VkDevice(&device);
443     cmd_size += vn_sizeof_VkSemaphore(&semaphore);
444     cmd_size += vn_sizeof_simple_pointer(pAllocator);
445     if (pAllocator)
446         assert(false);
447 
448     return cmd_size;
449 }
450 
vn_encode_vkDestroySemaphore(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)451 static inline void vn_encode_vkDestroySemaphore(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
452 {
453     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroySemaphore_EXT;
454 
455     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
456     vn_encode_VkFlags(enc, &cmd_flags);
457 
458     vn_encode_VkDevice(enc, &device);
459     vn_encode_VkSemaphore(enc, &semaphore);
460     if (vn_encode_simple_pointer(enc, pAllocator))
461         assert(false);
462 }
463 
vn_sizeof_vkDestroySemaphore_reply(VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)464 static inline size_t vn_sizeof_vkDestroySemaphore_reply(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
465 {
466     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroySemaphore_EXT;
467     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
468 
469     /* skip device */
470     /* skip semaphore */
471     /* skip pAllocator */
472 
473     return cmd_size;
474 }
475 
vn_decode_vkDestroySemaphore_reply(struct vn_cs_decoder * dec,VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)476 static inline void vn_decode_vkDestroySemaphore_reply(struct vn_cs_decoder *dec, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
477 {
478     VkCommandTypeEXT command_type;
479     vn_decode_VkCommandTypeEXT(dec, &command_type);
480     assert(command_type == VK_COMMAND_TYPE_vkDestroySemaphore_EXT);
481 
482     /* skip device */
483     /* skip semaphore */
484     /* skip pAllocator */
485 }
486 
vn_sizeof_vkGetSemaphoreCounterValue(VkDevice device,VkSemaphore semaphore,uint64_t * pValue)487 static inline size_t vn_sizeof_vkGetSemaphoreCounterValue(VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
488 {
489     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetSemaphoreCounterValue_EXT;
490     const VkFlags cmd_flags = 0;
491     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
492 
493     cmd_size += vn_sizeof_VkDevice(&device);
494     cmd_size += vn_sizeof_VkSemaphore(&semaphore);
495     cmd_size += vn_sizeof_simple_pointer(pValue); /* out */
496 
497     return cmd_size;
498 }
499 
vn_encode_vkGetSemaphoreCounterValue(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,VkSemaphore semaphore,uint64_t * pValue)500 static inline void vn_encode_vkGetSemaphoreCounterValue(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
501 {
502     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetSemaphoreCounterValue_EXT;
503 
504     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
505     vn_encode_VkFlags(enc, &cmd_flags);
506 
507     vn_encode_VkDevice(enc, &device);
508     vn_encode_VkSemaphore(enc, &semaphore);
509     vn_encode_simple_pointer(enc, pValue); /* out */
510 }
511 
vn_sizeof_vkGetSemaphoreCounterValue_reply(VkDevice device,VkSemaphore semaphore,uint64_t * pValue)512 static inline size_t vn_sizeof_vkGetSemaphoreCounterValue_reply(VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
513 {
514     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetSemaphoreCounterValue_EXT;
515     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
516 
517     VkResult ret;
518     cmd_size += vn_sizeof_VkResult(&ret);
519     /* skip device */
520     /* skip semaphore */
521     cmd_size += vn_sizeof_simple_pointer(pValue);
522     if (pValue)
523         cmd_size += vn_sizeof_uint64_t(pValue);
524 
525     return cmd_size;
526 }
527 
vn_decode_vkGetSemaphoreCounterValue_reply(struct vn_cs_decoder * dec,VkDevice device,VkSemaphore semaphore,uint64_t * pValue)528 static inline VkResult vn_decode_vkGetSemaphoreCounterValue_reply(struct vn_cs_decoder *dec, VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
529 {
530     VkCommandTypeEXT command_type;
531     vn_decode_VkCommandTypeEXT(dec, &command_type);
532     assert(command_type == VK_COMMAND_TYPE_vkGetSemaphoreCounterValue_EXT);
533 
534     VkResult ret;
535     vn_decode_VkResult(dec, &ret);
536     /* skip device */
537     /* skip semaphore */
538     if (vn_decode_simple_pointer(dec)) {
539         vn_decode_uint64_t(dec, pValue);
540     } else {
541         pValue = NULL;
542     }
543 
544     return ret;
545 }
546 
vn_sizeof_vkWaitSemaphores(VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)547 static inline size_t vn_sizeof_vkWaitSemaphores(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)
548 {
549     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWaitSemaphores_EXT;
550     const VkFlags cmd_flags = 0;
551     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
552 
553     cmd_size += vn_sizeof_VkDevice(&device);
554     cmd_size += vn_sizeof_simple_pointer(pWaitInfo);
555     if (pWaitInfo)
556         cmd_size += vn_sizeof_VkSemaphoreWaitInfo(pWaitInfo);
557     cmd_size += vn_sizeof_uint64_t(&timeout);
558 
559     return cmd_size;
560 }
561 
vn_encode_vkWaitSemaphores(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)562 static inline void vn_encode_vkWaitSemaphores(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)
563 {
564     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWaitSemaphores_EXT;
565 
566     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
567     vn_encode_VkFlags(enc, &cmd_flags);
568 
569     vn_encode_VkDevice(enc, &device);
570     if (vn_encode_simple_pointer(enc, pWaitInfo))
571         vn_encode_VkSemaphoreWaitInfo(enc, pWaitInfo);
572     vn_encode_uint64_t(enc, &timeout);
573 }
574 
vn_sizeof_vkWaitSemaphores_reply(VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)575 static inline size_t vn_sizeof_vkWaitSemaphores_reply(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)
576 {
577     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWaitSemaphores_EXT;
578     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
579 
580     VkResult ret;
581     cmd_size += vn_sizeof_VkResult(&ret);
582     /* skip device */
583     /* skip pWaitInfo */
584     /* skip timeout */
585 
586     return cmd_size;
587 }
588 
vn_decode_vkWaitSemaphores_reply(struct vn_cs_decoder * dec,VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)589 static inline VkResult vn_decode_vkWaitSemaphores_reply(struct vn_cs_decoder *dec, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)
590 {
591     VkCommandTypeEXT command_type;
592     vn_decode_VkCommandTypeEXT(dec, &command_type);
593     assert(command_type == VK_COMMAND_TYPE_vkWaitSemaphores_EXT);
594 
595     VkResult ret;
596     vn_decode_VkResult(dec, &ret);
597     /* skip device */
598     /* skip pWaitInfo */
599     /* skip timeout */
600 
601     return ret;
602 }
603 
vn_sizeof_vkSignalSemaphore(VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)604 static inline size_t vn_sizeof_vkSignalSemaphore(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
605 {
606     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkSignalSemaphore_EXT;
607     const VkFlags cmd_flags = 0;
608     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
609 
610     cmd_size += vn_sizeof_VkDevice(&device);
611     cmd_size += vn_sizeof_simple_pointer(pSignalInfo);
612     if (pSignalInfo)
613         cmd_size += vn_sizeof_VkSemaphoreSignalInfo(pSignalInfo);
614 
615     return cmd_size;
616 }
617 
vn_encode_vkSignalSemaphore(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)618 static inline void vn_encode_vkSignalSemaphore(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
619 {
620     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkSignalSemaphore_EXT;
621 
622     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
623     vn_encode_VkFlags(enc, &cmd_flags);
624 
625     vn_encode_VkDevice(enc, &device);
626     if (vn_encode_simple_pointer(enc, pSignalInfo))
627         vn_encode_VkSemaphoreSignalInfo(enc, pSignalInfo);
628 }
629 
vn_sizeof_vkSignalSemaphore_reply(VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)630 static inline size_t vn_sizeof_vkSignalSemaphore_reply(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
631 {
632     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkSignalSemaphore_EXT;
633     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
634 
635     VkResult ret;
636     cmd_size += vn_sizeof_VkResult(&ret);
637     /* skip device */
638     /* skip pSignalInfo */
639 
640     return cmd_size;
641 }
642 
vn_decode_vkSignalSemaphore_reply(struct vn_cs_decoder * dec,VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)643 static inline VkResult vn_decode_vkSignalSemaphore_reply(struct vn_cs_decoder *dec, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
644 {
645     VkCommandTypeEXT command_type;
646     vn_decode_VkCommandTypeEXT(dec, &command_type);
647     assert(command_type == VK_COMMAND_TYPE_vkSignalSemaphore_EXT);
648 
649     VkResult ret;
650     vn_decode_VkResult(dec, &ret);
651     /* skip device */
652     /* skip pSignalInfo */
653 
654     return ret;
655 }
656 
vn_sizeof_vkWaitSemaphoreResourceMESA(VkDevice device,VkSemaphore semaphore)657 static inline size_t vn_sizeof_vkWaitSemaphoreResourceMESA(VkDevice device, VkSemaphore semaphore)
658 {
659     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWaitSemaphoreResourceMESA_EXT;
660     const VkFlags cmd_flags = 0;
661     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
662 
663     cmd_size += vn_sizeof_VkDevice(&device);
664     cmd_size += vn_sizeof_VkSemaphore(&semaphore);
665 
666     return cmd_size;
667 }
668 
vn_encode_vkWaitSemaphoreResourceMESA(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,VkSemaphore semaphore)669 static inline void vn_encode_vkWaitSemaphoreResourceMESA(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSemaphore semaphore)
670 {
671     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWaitSemaphoreResourceMESA_EXT;
672 
673     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
674     vn_encode_VkFlags(enc, &cmd_flags);
675 
676     vn_encode_VkDevice(enc, &device);
677     vn_encode_VkSemaphore(enc, &semaphore);
678 }
679 
vn_sizeof_vkWaitSemaphoreResourceMESA_reply(VkDevice device,VkSemaphore semaphore)680 static inline size_t vn_sizeof_vkWaitSemaphoreResourceMESA_reply(VkDevice device, VkSemaphore semaphore)
681 {
682     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWaitSemaphoreResourceMESA_EXT;
683     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
684 
685     /* skip device */
686     /* skip semaphore */
687 
688     return cmd_size;
689 }
690 
vn_decode_vkWaitSemaphoreResourceMESA_reply(struct vn_cs_decoder * dec,VkDevice device,VkSemaphore semaphore)691 static inline void vn_decode_vkWaitSemaphoreResourceMESA_reply(struct vn_cs_decoder *dec, VkDevice device, VkSemaphore semaphore)
692 {
693     VkCommandTypeEXT command_type;
694     vn_decode_VkCommandTypeEXT(dec, &command_type);
695     assert(command_type == VK_COMMAND_TYPE_vkWaitSemaphoreResourceMESA_EXT);
696 
697     /* skip device */
698     /* skip semaphore */
699 }
700 
vn_sizeof_vkImportSemaphoreResourceMESA(VkDevice device,const VkImportSemaphoreResourceInfoMESA * pImportSemaphoreResourceInfo)701 static inline size_t vn_sizeof_vkImportSemaphoreResourceMESA(VkDevice device, const VkImportSemaphoreResourceInfoMESA* pImportSemaphoreResourceInfo)
702 {
703     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkImportSemaphoreResourceMESA_EXT;
704     const VkFlags cmd_flags = 0;
705     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
706 
707     cmd_size += vn_sizeof_VkDevice(&device);
708     cmd_size += vn_sizeof_simple_pointer(pImportSemaphoreResourceInfo);
709     if (pImportSemaphoreResourceInfo)
710         cmd_size += vn_sizeof_VkImportSemaphoreResourceInfoMESA(pImportSemaphoreResourceInfo);
711 
712     return cmd_size;
713 }
714 
vn_encode_vkImportSemaphoreResourceMESA(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkImportSemaphoreResourceInfoMESA * pImportSemaphoreResourceInfo)715 static inline void vn_encode_vkImportSemaphoreResourceMESA(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkImportSemaphoreResourceInfoMESA* pImportSemaphoreResourceInfo)
716 {
717     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkImportSemaphoreResourceMESA_EXT;
718 
719     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
720     vn_encode_VkFlags(enc, &cmd_flags);
721 
722     vn_encode_VkDevice(enc, &device);
723     if (vn_encode_simple_pointer(enc, pImportSemaphoreResourceInfo))
724         vn_encode_VkImportSemaphoreResourceInfoMESA(enc, pImportSemaphoreResourceInfo);
725 }
726 
vn_sizeof_vkImportSemaphoreResourceMESA_reply(VkDevice device,const VkImportSemaphoreResourceInfoMESA * pImportSemaphoreResourceInfo)727 static inline size_t vn_sizeof_vkImportSemaphoreResourceMESA_reply(VkDevice device, const VkImportSemaphoreResourceInfoMESA* pImportSemaphoreResourceInfo)
728 {
729     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkImportSemaphoreResourceMESA_EXT;
730     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
731 
732     /* skip device */
733     /* skip pImportSemaphoreResourceInfo */
734 
735     return cmd_size;
736 }
737 
vn_decode_vkImportSemaphoreResourceMESA_reply(struct vn_cs_decoder * dec,VkDevice device,const VkImportSemaphoreResourceInfoMESA * pImportSemaphoreResourceInfo)738 static inline void vn_decode_vkImportSemaphoreResourceMESA_reply(struct vn_cs_decoder *dec, VkDevice device, const VkImportSemaphoreResourceInfoMESA* pImportSemaphoreResourceInfo)
739 {
740     VkCommandTypeEXT command_type;
741     vn_decode_VkCommandTypeEXT(dec, &command_type);
742     assert(command_type == VK_COMMAND_TYPE_vkImportSemaphoreResourceMESA_EXT);
743 
744     /* skip device */
745     /* skip pImportSemaphoreResourceInfo */
746 }
747 
vn_submit_vkCreateSemaphore(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore,struct vn_ring_submit_command * submit)748 static inline void vn_submit_vkCreateSemaphore(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore, 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_vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore);
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_vkCreateSemaphore_reply(device, pCreateInfo, pAllocator, pSemaphore) : 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_vkCreateSemaphore(enc, cmd_flags, device, pCreateInfo, pAllocator, pSemaphore);
763         vn_ring_submit_command(vn_ring, submit);
764         if (cmd_data != local_cmd_data)
765             free(cmd_data);
766     }
767 }
768 
vn_submit_vkDestroySemaphore(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator,struct vn_ring_submit_command * submit)769 static inline void vn_submit_vkDestroySemaphore(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator, struct vn_ring_submit_command *submit)
770 {
771     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
772     void *cmd_data = local_cmd_data;
773     size_t cmd_size = vn_sizeof_vkDestroySemaphore(device, semaphore, pAllocator);
774     if (cmd_size > sizeof(local_cmd_data)) {
775         cmd_data = malloc(cmd_size);
776         if (!cmd_data)
777             cmd_size = 0;
778     }
779     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroySemaphore_reply(device, semaphore, pAllocator) : 0;
780 
781     struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
782     if (cmd_size) {
783         vn_encode_vkDestroySemaphore(enc, cmd_flags, device, semaphore, pAllocator);
784         vn_ring_submit_command(vn_ring, submit);
785         if (cmd_data != local_cmd_data)
786             free(cmd_data);
787     }
788 }
789 
vn_submit_vkGetSemaphoreCounterValue(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,VkSemaphore semaphore,uint64_t * pValue,struct vn_ring_submit_command * submit)790 static inline void vn_submit_vkGetSemaphoreCounterValue(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSemaphore semaphore, uint64_t* pValue, struct vn_ring_submit_command *submit)
791 {
792     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
793     void *cmd_data = local_cmd_data;
794     size_t cmd_size = vn_sizeof_vkGetSemaphoreCounterValue(device, semaphore, pValue);
795     if (cmd_size > sizeof(local_cmd_data)) {
796         cmd_data = malloc(cmd_size);
797         if (!cmd_data)
798             cmd_size = 0;
799     }
800     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetSemaphoreCounterValue_reply(device, semaphore, pValue) : 0;
801 
802     struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
803     if (cmd_size) {
804         vn_encode_vkGetSemaphoreCounterValue(enc, cmd_flags, device, semaphore, pValue);
805         vn_ring_submit_command(vn_ring, submit);
806         if (cmd_data != local_cmd_data)
807             free(cmd_data);
808     }
809 }
810 
vn_submit_vkWaitSemaphores(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout,struct vn_ring_submit_command * submit)811 static inline void vn_submit_vkWaitSemaphores(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout, struct vn_ring_submit_command *submit)
812 {
813     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
814     void *cmd_data = local_cmd_data;
815     size_t cmd_size = vn_sizeof_vkWaitSemaphores(device, pWaitInfo, timeout);
816     if (cmd_size > sizeof(local_cmd_data)) {
817         cmd_data = malloc(cmd_size);
818         if (!cmd_data)
819             cmd_size = 0;
820     }
821     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkWaitSemaphores_reply(device, pWaitInfo, timeout) : 0;
822 
823     struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
824     if (cmd_size) {
825         vn_encode_vkWaitSemaphores(enc, cmd_flags, device, pWaitInfo, timeout);
826         vn_ring_submit_command(vn_ring, submit);
827         if (cmd_data != local_cmd_data)
828             free(cmd_data);
829     }
830 }
831 
vn_submit_vkSignalSemaphore(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo,struct vn_ring_submit_command * submit)832 static inline void vn_submit_vkSignalSemaphore(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo, struct vn_ring_submit_command *submit)
833 {
834     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
835     void *cmd_data = local_cmd_data;
836     size_t cmd_size = vn_sizeof_vkSignalSemaphore(device, pSignalInfo);
837     if (cmd_size > sizeof(local_cmd_data)) {
838         cmd_data = malloc(cmd_size);
839         if (!cmd_data)
840             cmd_size = 0;
841     }
842     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkSignalSemaphore_reply(device, pSignalInfo) : 0;
843 
844     struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
845     if (cmd_size) {
846         vn_encode_vkSignalSemaphore(enc, cmd_flags, device, pSignalInfo);
847         vn_ring_submit_command(vn_ring, submit);
848         if (cmd_data != local_cmd_data)
849             free(cmd_data);
850     }
851 }
852 
vn_submit_vkWaitSemaphoreResourceMESA(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,VkSemaphore semaphore,struct vn_ring_submit_command * submit)853 static inline void vn_submit_vkWaitSemaphoreResourceMESA(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSemaphore semaphore, struct vn_ring_submit_command *submit)
854 {
855     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
856     void *cmd_data = local_cmd_data;
857     size_t cmd_size = vn_sizeof_vkWaitSemaphoreResourceMESA(device, semaphore);
858     if (cmd_size > sizeof(local_cmd_data)) {
859         cmd_data = malloc(cmd_size);
860         if (!cmd_data)
861             cmd_size = 0;
862     }
863     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkWaitSemaphoreResourceMESA_reply(device, semaphore) : 0;
864 
865     struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
866     if (cmd_size) {
867         vn_encode_vkWaitSemaphoreResourceMESA(enc, cmd_flags, device, semaphore);
868         vn_ring_submit_command(vn_ring, submit);
869         if (cmd_data != local_cmd_data)
870             free(cmd_data);
871     }
872 }
873 
vn_submit_vkImportSemaphoreResourceMESA(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkImportSemaphoreResourceInfoMESA * pImportSemaphoreResourceInfo,struct vn_ring_submit_command * submit)874 static inline void vn_submit_vkImportSemaphoreResourceMESA(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkImportSemaphoreResourceInfoMESA* pImportSemaphoreResourceInfo, struct vn_ring_submit_command *submit)
875 {
876     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
877     void *cmd_data = local_cmd_data;
878     size_t cmd_size = vn_sizeof_vkImportSemaphoreResourceMESA(device, pImportSemaphoreResourceInfo);
879     if (cmd_size > sizeof(local_cmd_data)) {
880         cmd_data = malloc(cmd_size);
881         if (!cmd_data)
882             cmd_size = 0;
883     }
884     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkImportSemaphoreResourceMESA_reply(device, pImportSemaphoreResourceInfo) : 0;
885 
886     struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
887     if (cmd_size) {
888         vn_encode_vkImportSemaphoreResourceMESA(enc, cmd_flags, device, pImportSemaphoreResourceInfo);
889         vn_ring_submit_command(vn_ring, submit);
890         if (cmd_data != local_cmd_data)
891             free(cmd_data);
892     }
893 }
894 
vn_call_vkCreateSemaphore(struct vn_ring * vn_ring,VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)895 static inline VkResult vn_call_vkCreateSemaphore(struct vn_ring *vn_ring, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
896 {
897     VN_TRACE_FUNC();
898 
899     struct vn_ring_submit_command submit;
900     vn_submit_vkCreateSemaphore(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pSemaphore, &submit);
901     struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
902     if (dec) {
903         const VkResult ret = vn_decode_vkCreateSemaphore_reply(dec, device, pCreateInfo, pAllocator, pSemaphore);
904         vn_ring_free_command_reply(vn_ring, &submit);
905         return ret;
906     } else {
907         return VK_ERROR_OUT_OF_HOST_MEMORY;
908     }
909 }
910 
vn_async_vkCreateSemaphore(struct vn_ring * vn_ring,VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)911 static inline void vn_async_vkCreateSemaphore(struct vn_ring *vn_ring, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
912 {
913     struct vn_ring_submit_command submit;
914     vn_submit_vkCreateSemaphore(vn_ring, 0, device, pCreateInfo, pAllocator, pSemaphore, &submit);
915 }
916 
vn_call_vkDestroySemaphore(struct vn_ring * vn_ring,VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)917 static inline void vn_call_vkDestroySemaphore(struct vn_ring *vn_ring, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
918 {
919     VN_TRACE_FUNC();
920 
921     struct vn_ring_submit_command submit;
922     vn_submit_vkDestroySemaphore(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, semaphore, pAllocator, &submit);
923     struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
924     if (dec) {
925         vn_decode_vkDestroySemaphore_reply(dec, device, semaphore, pAllocator);
926         vn_ring_free_command_reply(vn_ring, &submit);
927     }
928 }
929 
vn_async_vkDestroySemaphore(struct vn_ring * vn_ring,VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)930 static inline void vn_async_vkDestroySemaphore(struct vn_ring *vn_ring, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
931 {
932     struct vn_ring_submit_command submit;
933     vn_submit_vkDestroySemaphore(vn_ring, 0, device, semaphore, pAllocator, &submit);
934 }
935 
vn_call_vkGetSemaphoreCounterValue(struct vn_ring * vn_ring,VkDevice device,VkSemaphore semaphore,uint64_t * pValue)936 static inline VkResult vn_call_vkGetSemaphoreCounterValue(struct vn_ring *vn_ring, VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
937 {
938     VN_TRACE_FUNC();
939 
940     struct vn_ring_submit_command submit;
941     vn_submit_vkGetSemaphoreCounterValue(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, semaphore, pValue, &submit);
942     struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
943     if (dec) {
944         const VkResult ret = vn_decode_vkGetSemaphoreCounterValue_reply(dec, device, semaphore, pValue);
945         vn_ring_free_command_reply(vn_ring, &submit);
946         return ret;
947     } else {
948         return VK_ERROR_OUT_OF_HOST_MEMORY;
949     }
950 }
951 
vn_async_vkGetSemaphoreCounterValue(struct vn_ring * vn_ring,VkDevice device,VkSemaphore semaphore,uint64_t * pValue)952 static inline void vn_async_vkGetSemaphoreCounterValue(struct vn_ring *vn_ring, VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
953 {
954     struct vn_ring_submit_command submit;
955     vn_submit_vkGetSemaphoreCounterValue(vn_ring, 0, device, semaphore, pValue, &submit);
956 }
957 
vn_call_vkWaitSemaphores(struct vn_ring * vn_ring,VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)958 static inline VkResult vn_call_vkWaitSemaphores(struct vn_ring *vn_ring, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)
959 {
960     VN_TRACE_FUNC();
961 
962     struct vn_ring_submit_command submit;
963     vn_submit_vkWaitSemaphores(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pWaitInfo, timeout, &submit);
964     struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
965     if (dec) {
966         const VkResult ret = vn_decode_vkWaitSemaphores_reply(dec, device, pWaitInfo, timeout);
967         vn_ring_free_command_reply(vn_ring, &submit);
968         return ret;
969     } else {
970         return VK_ERROR_OUT_OF_HOST_MEMORY;
971     }
972 }
973 
vn_async_vkWaitSemaphores(struct vn_ring * vn_ring,VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)974 static inline void vn_async_vkWaitSemaphores(struct vn_ring *vn_ring, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)
975 {
976     struct vn_ring_submit_command submit;
977     vn_submit_vkWaitSemaphores(vn_ring, 0, device, pWaitInfo, timeout, &submit);
978 }
979 
vn_call_vkSignalSemaphore(struct vn_ring * vn_ring,VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)980 static inline VkResult vn_call_vkSignalSemaphore(struct vn_ring *vn_ring, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
981 {
982     VN_TRACE_FUNC();
983 
984     struct vn_ring_submit_command submit;
985     vn_submit_vkSignalSemaphore(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pSignalInfo, &submit);
986     struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
987     if (dec) {
988         const VkResult ret = vn_decode_vkSignalSemaphore_reply(dec, device, pSignalInfo);
989         vn_ring_free_command_reply(vn_ring, &submit);
990         return ret;
991     } else {
992         return VK_ERROR_OUT_OF_HOST_MEMORY;
993     }
994 }
995 
vn_async_vkSignalSemaphore(struct vn_ring * vn_ring,VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)996 static inline void vn_async_vkSignalSemaphore(struct vn_ring *vn_ring, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
997 {
998     struct vn_ring_submit_command submit;
999     vn_submit_vkSignalSemaphore(vn_ring, 0, device, pSignalInfo, &submit);
1000 }
1001 
vn_call_vkWaitSemaphoreResourceMESA(struct vn_ring * vn_ring,VkDevice device,VkSemaphore semaphore)1002 static inline void vn_call_vkWaitSemaphoreResourceMESA(struct vn_ring *vn_ring, VkDevice device, VkSemaphore semaphore)
1003 {
1004     VN_TRACE_FUNC();
1005 
1006     struct vn_ring_submit_command submit;
1007     vn_submit_vkWaitSemaphoreResourceMESA(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, semaphore, &submit);
1008     struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
1009     if (dec) {
1010         vn_decode_vkWaitSemaphoreResourceMESA_reply(dec, device, semaphore);
1011         vn_ring_free_command_reply(vn_ring, &submit);
1012     }
1013 }
1014 
vn_async_vkWaitSemaphoreResourceMESA(struct vn_ring * vn_ring,VkDevice device,VkSemaphore semaphore)1015 static inline void vn_async_vkWaitSemaphoreResourceMESA(struct vn_ring *vn_ring, VkDevice device, VkSemaphore semaphore)
1016 {
1017     struct vn_ring_submit_command submit;
1018     vn_submit_vkWaitSemaphoreResourceMESA(vn_ring, 0, device, semaphore, &submit);
1019 }
1020 
vn_call_vkImportSemaphoreResourceMESA(struct vn_ring * vn_ring,VkDevice device,const VkImportSemaphoreResourceInfoMESA * pImportSemaphoreResourceInfo)1021 static inline void vn_call_vkImportSemaphoreResourceMESA(struct vn_ring *vn_ring, VkDevice device, const VkImportSemaphoreResourceInfoMESA* pImportSemaphoreResourceInfo)
1022 {
1023     VN_TRACE_FUNC();
1024 
1025     struct vn_ring_submit_command submit;
1026     vn_submit_vkImportSemaphoreResourceMESA(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pImportSemaphoreResourceInfo, &submit);
1027     struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
1028     if (dec) {
1029         vn_decode_vkImportSemaphoreResourceMESA_reply(dec, device, pImportSemaphoreResourceInfo);
1030         vn_ring_free_command_reply(vn_ring, &submit);
1031     }
1032 }
1033 
vn_async_vkImportSemaphoreResourceMESA(struct vn_ring * vn_ring,VkDevice device,const VkImportSemaphoreResourceInfoMESA * pImportSemaphoreResourceInfo)1034 static inline void vn_async_vkImportSemaphoreResourceMESA(struct vn_ring *vn_ring, VkDevice device, const VkImportSemaphoreResourceInfoMESA* pImportSemaphoreResourceInfo)
1035 {
1036     struct vn_ring_submit_command submit;
1037     vn_submit_vkImportSemaphoreResourceMESA(vn_ring, 0, device, pImportSemaphoreResourceInfo, &submit);
1038 }
1039 
1040 #endif /* VN_PROTOCOL_DRIVER_SEMAPHORE_H */
1041