• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_instance.h"
12 #include "vn_protocol_driver_structs.h"
13 
14 /* struct VkExportSemaphoreCreateInfo chain */
15 
16 static inline size_t
vn_sizeof_VkExportSemaphoreCreateInfo_pnext(const void * val)17 vn_sizeof_VkExportSemaphoreCreateInfo_pnext(const void *val)
18 {
19     /* no known/supported struct */
20     return vn_sizeof_simple_pointer(NULL);
21 }
22 
23 static inline size_t
vn_sizeof_VkExportSemaphoreCreateInfo_self(const VkExportSemaphoreCreateInfo * val)24 vn_sizeof_VkExportSemaphoreCreateInfo_self(const VkExportSemaphoreCreateInfo *val)
25 {
26     size_t size = 0;
27     /* skip val->{sType,pNext} */
28     size += vn_sizeof_VkFlags(&val->handleTypes);
29     return size;
30 }
31 
32 static inline size_t
vn_sizeof_VkExportSemaphoreCreateInfo(const VkExportSemaphoreCreateInfo * val)33 vn_sizeof_VkExportSemaphoreCreateInfo(const VkExportSemaphoreCreateInfo *val)
34 {
35     size_t size = 0;
36 
37     size += vn_sizeof_VkStructureType(&val->sType);
38     size += vn_sizeof_VkExportSemaphoreCreateInfo_pnext(val->pNext);
39     size += vn_sizeof_VkExportSemaphoreCreateInfo_self(val);
40 
41     return size;
42 }
43 
44 static inline void
vn_encode_VkExportSemaphoreCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)45 vn_encode_VkExportSemaphoreCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
46 {
47     /* no known/supported struct */
48     vn_encode_simple_pointer(enc, NULL);
49 }
50 
51 static inline void
vn_encode_VkExportSemaphoreCreateInfo_self(struct vn_cs_encoder * enc,const VkExportSemaphoreCreateInfo * val)52 vn_encode_VkExportSemaphoreCreateInfo_self(struct vn_cs_encoder *enc, const VkExportSemaphoreCreateInfo *val)
53 {
54     /* skip val->{sType,pNext} */
55     vn_encode_VkFlags(enc, &val->handleTypes);
56 }
57 
58 static inline void
vn_encode_VkExportSemaphoreCreateInfo(struct vn_cs_encoder * enc,const VkExportSemaphoreCreateInfo * val)59 vn_encode_VkExportSemaphoreCreateInfo(struct vn_cs_encoder *enc, const VkExportSemaphoreCreateInfo *val)
60 {
61     assert(val->sType == VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO);
62     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO });
63     vn_encode_VkExportSemaphoreCreateInfo_pnext(enc, val->pNext);
64     vn_encode_VkExportSemaphoreCreateInfo_self(enc, val);
65 }
66 
67 /* struct VkSemaphoreCreateInfo chain */
68 
69 static inline size_t
vn_sizeof_VkSemaphoreCreateInfo_pnext(const void * val)70 vn_sizeof_VkSemaphoreCreateInfo_pnext(const void *val)
71 {
72     const VkBaseInStructure *pnext = val;
73     size_t size = 0;
74 
75     while (pnext) {
76         switch ((int32_t)pnext->sType) {
77         case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO:
78             size += vn_sizeof_simple_pointer(pnext);
79             size += vn_sizeof_VkStructureType(&pnext->sType);
80             size += vn_sizeof_VkSemaphoreCreateInfo_pnext(pnext->pNext);
81             size += vn_sizeof_VkExportSemaphoreCreateInfo_self((const VkExportSemaphoreCreateInfo *)pnext);
82             return size;
83         case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO:
84             size += vn_sizeof_simple_pointer(pnext);
85             size += vn_sizeof_VkStructureType(&pnext->sType);
86             size += vn_sizeof_VkSemaphoreCreateInfo_pnext(pnext->pNext);
87             size += vn_sizeof_VkSemaphoreTypeCreateInfo_self((const VkSemaphoreTypeCreateInfo *)pnext);
88             return size;
89         default:
90             /* ignore unknown/unsupported struct */
91             break;
92         }
93         pnext = pnext->pNext;
94     }
95 
96     return vn_sizeof_simple_pointer(NULL);
97 }
98 
99 static inline size_t
vn_sizeof_VkSemaphoreCreateInfo_self(const VkSemaphoreCreateInfo * val)100 vn_sizeof_VkSemaphoreCreateInfo_self(const VkSemaphoreCreateInfo *val)
101 {
102     size_t size = 0;
103     /* skip val->{sType,pNext} */
104     size += vn_sizeof_VkFlags(&val->flags);
105     return size;
106 }
107 
108 static inline size_t
vn_sizeof_VkSemaphoreCreateInfo(const VkSemaphoreCreateInfo * val)109 vn_sizeof_VkSemaphoreCreateInfo(const VkSemaphoreCreateInfo *val)
110 {
111     size_t size = 0;
112 
113     size += vn_sizeof_VkStructureType(&val->sType);
114     size += vn_sizeof_VkSemaphoreCreateInfo_pnext(val->pNext);
115     size += vn_sizeof_VkSemaphoreCreateInfo_self(val);
116 
117     return size;
118 }
119 
120 static inline void
vn_encode_VkSemaphoreCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)121 vn_encode_VkSemaphoreCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
122 {
123     const VkBaseInStructure *pnext = val;
124 
125     while (pnext) {
126         switch ((int32_t)pnext->sType) {
127         case VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO:
128             vn_encode_simple_pointer(enc, pnext);
129             vn_encode_VkStructureType(enc, &pnext->sType);
130             vn_encode_VkSemaphoreCreateInfo_pnext(enc, pnext->pNext);
131             vn_encode_VkExportSemaphoreCreateInfo_self(enc, (const VkExportSemaphoreCreateInfo *)pnext);
132             return;
133         case VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO:
134             vn_encode_simple_pointer(enc, pnext);
135             vn_encode_VkStructureType(enc, &pnext->sType);
136             vn_encode_VkSemaphoreCreateInfo_pnext(enc, pnext->pNext);
137             vn_encode_VkSemaphoreTypeCreateInfo_self(enc, (const VkSemaphoreTypeCreateInfo *)pnext);
138             return;
139         default:
140             /* ignore unknown/unsupported struct */
141             break;
142         }
143         pnext = pnext->pNext;
144     }
145 
146     vn_encode_simple_pointer(enc, NULL);
147 }
148 
149 static inline void
vn_encode_VkSemaphoreCreateInfo_self(struct vn_cs_encoder * enc,const VkSemaphoreCreateInfo * val)150 vn_encode_VkSemaphoreCreateInfo_self(struct vn_cs_encoder *enc, const VkSemaphoreCreateInfo *val)
151 {
152     /* skip val->{sType,pNext} */
153     vn_encode_VkFlags(enc, &val->flags);
154 }
155 
156 static inline void
vn_encode_VkSemaphoreCreateInfo(struct vn_cs_encoder * enc,const VkSemaphoreCreateInfo * val)157 vn_encode_VkSemaphoreCreateInfo(struct vn_cs_encoder *enc, const VkSemaphoreCreateInfo *val)
158 {
159     assert(val->sType == VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO);
160     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO });
161     vn_encode_VkSemaphoreCreateInfo_pnext(enc, val->pNext);
162     vn_encode_VkSemaphoreCreateInfo_self(enc, val);
163 }
164 
165 /* struct VkSemaphoreWaitInfo chain */
166 
167 static inline size_t
vn_sizeof_VkSemaphoreWaitInfo_pnext(const void * val)168 vn_sizeof_VkSemaphoreWaitInfo_pnext(const void *val)
169 {
170     /* no known/supported struct */
171     return vn_sizeof_simple_pointer(NULL);
172 }
173 
174 static inline size_t
vn_sizeof_VkSemaphoreWaitInfo_self(const VkSemaphoreWaitInfo * val)175 vn_sizeof_VkSemaphoreWaitInfo_self(const VkSemaphoreWaitInfo *val)
176 {
177     size_t size = 0;
178     /* skip val->{sType,pNext} */
179     size += vn_sizeof_VkFlags(&val->flags);
180     size += vn_sizeof_uint32_t(&val->semaphoreCount);
181     if (val->pSemaphores) {
182         size += vn_sizeof_array_size(val->semaphoreCount);
183         for (uint32_t i = 0; i < val->semaphoreCount; i++)
184             size += vn_sizeof_VkSemaphore(&val->pSemaphores[i]);
185     } else {
186         size += vn_sizeof_array_size(0);
187     }
188     if (val->pValues) {
189         size += vn_sizeof_array_size(val->semaphoreCount);
190         size += vn_sizeof_uint64_t_array(val->pValues, val->semaphoreCount);
191     } else {
192         size += vn_sizeof_array_size(0);
193     }
194     return size;
195 }
196 
197 static inline size_t
vn_sizeof_VkSemaphoreWaitInfo(const VkSemaphoreWaitInfo * val)198 vn_sizeof_VkSemaphoreWaitInfo(const VkSemaphoreWaitInfo *val)
199 {
200     size_t size = 0;
201 
202     size += vn_sizeof_VkStructureType(&val->sType);
203     size += vn_sizeof_VkSemaphoreWaitInfo_pnext(val->pNext);
204     size += vn_sizeof_VkSemaphoreWaitInfo_self(val);
205 
206     return size;
207 }
208 
209 static inline void
vn_encode_VkSemaphoreWaitInfo_pnext(struct vn_cs_encoder * enc,const void * val)210 vn_encode_VkSemaphoreWaitInfo_pnext(struct vn_cs_encoder *enc, const void *val)
211 {
212     /* no known/supported struct */
213     vn_encode_simple_pointer(enc, NULL);
214 }
215 
216 static inline void
vn_encode_VkSemaphoreWaitInfo_self(struct vn_cs_encoder * enc,const VkSemaphoreWaitInfo * val)217 vn_encode_VkSemaphoreWaitInfo_self(struct vn_cs_encoder *enc, const VkSemaphoreWaitInfo *val)
218 {
219     /* skip val->{sType,pNext} */
220     vn_encode_VkFlags(enc, &val->flags);
221     vn_encode_uint32_t(enc, &val->semaphoreCount);
222     if (val->pSemaphores) {
223         vn_encode_array_size(enc, val->semaphoreCount);
224         for (uint32_t i = 0; i < val->semaphoreCount; i++)
225             vn_encode_VkSemaphore(enc, &val->pSemaphores[i]);
226     } else {
227         vn_encode_array_size(enc, 0);
228     }
229     if (val->pValues) {
230         vn_encode_array_size(enc, val->semaphoreCount);
231         vn_encode_uint64_t_array(enc, val->pValues, val->semaphoreCount);
232     } else {
233         vn_encode_array_size(enc, 0);
234     }
235 }
236 
237 static inline void
vn_encode_VkSemaphoreWaitInfo(struct vn_cs_encoder * enc,const VkSemaphoreWaitInfo * val)238 vn_encode_VkSemaphoreWaitInfo(struct vn_cs_encoder *enc, const VkSemaphoreWaitInfo *val)
239 {
240     assert(val->sType == VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO);
241     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO });
242     vn_encode_VkSemaphoreWaitInfo_pnext(enc, val->pNext);
243     vn_encode_VkSemaphoreWaitInfo_self(enc, val);
244 }
245 
246 /* struct VkSemaphoreSignalInfo chain */
247 
248 static inline size_t
vn_sizeof_VkSemaphoreSignalInfo_pnext(const void * val)249 vn_sizeof_VkSemaphoreSignalInfo_pnext(const void *val)
250 {
251     /* no known/supported struct */
252     return vn_sizeof_simple_pointer(NULL);
253 }
254 
255 static inline size_t
vn_sizeof_VkSemaphoreSignalInfo_self(const VkSemaphoreSignalInfo * val)256 vn_sizeof_VkSemaphoreSignalInfo_self(const VkSemaphoreSignalInfo *val)
257 {
258     size_t size = 0;
259     /* skip val->{sType,pNext} */
260     size += vn_sizeof_VkSemaphore(&val->semaphore);
261     size += vn_sizeof_uint64_t(&val->value);
262     return size;
263 }
264 
265 static inline size_t
vn_sizeof_VkSemaphoreSignalInfo(const VkSemaphoreSignalInfo * val)266 vn_sizeof_VkSemaphoreSignalInfo(const VkSemaphoreSignalInfo *val)
267 {
268     size_t size = 0;
269 
270     size += vn_sizeof_VkStructureType(&val->sType);
271     size += vn_sizeof_VkSemaphoreSignalInfo_pnext(val->pNext);
272     size += vn_sizeof_VkSemaphoreSignalInfo_self(val);
273 
274     return size;
275 }
276 
277 static inline void
vn_encode_VkSemaphoreSignalInfo_pnext(struct vn_cs_encoder * enc,const void * val)278 vn_encode_VkSemaphoreSignalInfo_pnext(struct vn_cs_encoder *enc, const void *val)
279 {
280     /* no known/supported struct */
281     vn_encode_simple_pointer(enc, NULL);
282 }
283 
284 static inline void
vn_encode_VkSemaphoreSignalInfo_self(struct vn_cs_encoder * enc,const VkSemaphoreSignalInfo * val)285 vn_encode_VkSemaphoreSignalInfo_self(struct vn_cs_encoder *enc, const VkSemaphoreSignalInfo *val)
286 {
287     /* skip val->{sType,pNext} */
288     vn_encode_VkSemaphore(enc, &val->semaphore);
289     vn_encode_uint64_t(enc, &val->value);
290 }
291 
292 static inline void
vn_encode_VkSemaphoreSignalInfo(struct vn_cs_encoder * enc,const VkSemaphoreSignalInfo * val)293 vn_encode_VkSemaphoreSignalInfo(struct vn_cs_encoder *enc, const VkSemaphoreSignalInfo *val)
294 {
295     assert(val->sType == VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO);
296     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO });
297     vn_encode_VkSemaphoreSignalInfo_pnext(enc, val->pNext);
298     vn_encode_VkSemaphoreSignalInfo_self(enc, val);
299 }
300 
301 static inline void
vn_decode_VkSemaphoreSignalInfo_pnext(struct vn_cs_decoder * dec,const void * val)302 vn_decode_VkSemaphoreSignalInfo_pnext(struct vn_cs_decoder *dec, const void *val)
303 {
304     /* no known/supported struct */
305     if (vn_decode_simple_pointer(dec))
306         assert(false);
307 }
308 
309 static inline void
vn_decode_VkSemaphoreSignalInfo_self(struct vn_cs_decoder * dec,VkSemaphoreSignalInfo * val)310 vn_decode_VkSemaphoreSignalInfo_self(struct vn_cs_decoder *dec, VkSemaphoreSignalInfo *val)
311 {
312     /* skip val->{sType,pNext} */
313     vn_decode_VkSemaphore(dec, &val->semaphore);
314     vn_decode_uint64_t(dec, &val->value);
315 }
316 
317 static inline void
vn_decode_VkSemaphoreSignalInfo(struct vn_cs_decoder * dec,VkSemaphoreSignalInfo * val)318 vn_decode_VkSemaphoreSignalInfo(struct vn_cs_decoder *dec, VkSemaphoreSignalInfo *val)
319 {
320     VkStructureType stype;
321     vn_decode_VkStructureType(dec, &stype);
322     assert(stype == VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO);
323 
324     assert(val->sType == stype);
325     vn_decode_VkSemaphoreSignalInfo_pnext(dec, val->pNext);
326     vn_decode_VkSemaphoreSignalInfo_self(dec, val);
327 }
328 
vn_sizeof_vkCreateSemaphore(VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)329 static inline size_t vn_sizeof_vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
330 {
331     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateSemaphore_EXT;
332     const VkFlags cmd_flags = 0;
333     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
334 
335     cmd_size += vn_sizeof_VkDevice(&device);
336     cmd_size += vn_sizeof_simple_pointer(pCreateInfo);
337     if (pCreateInfo)
338         cmd_size += vn_sizeof_VkSemaphoreCreateInfo(pCreateInfo);
339     cmd_size += vn_sizeof_simple_pointer(pAllocator);
340     if (pAllocator)
341         assert(false);
342     cmd_size += vn_sizeof_simple_pointer(pSemaphore);
343     if (pSemaphore)
344         cmd_size += vn_sizeof_VkSemaphore(pSemaphore);
345 
346     return cmd_size;
347 }
348 
vn_encode_vkCreateSemaphore(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)349 static inline void vn_encode_vkCreateSemaphore(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
350 {
351     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateSemaphore_EXT;
352 
353     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
354     vn_encode_VkFlags(enc, &cmd_flags);
355 
356     vn_encode_VkDevice(enc, &device);
357     if (vn_encode_simple_pointer(enc, pCreateInfo))
358         vn_encode_VkSemaphoreCreateInfo(enc, pCreateInfo);
359     if (vn_encode_simple_pointer(enc, pAllocator))
360         assert(false);
361     if (vn_encode_simple_pointer(enc, pSemaphore))
362         vn_encode_VkSemaphore(enc, pSemaphore);
363 }
364 
vn_sizeof_vkCreateSemaphore_reply(VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)365 static inline size_t vn_sizeof_vkCreateSemaphore_reply(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
366 {
367     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateSemaphore_EXT;
368     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
369 
370     VkResult ret;
371     cmd_size += vn_sizeof_VkResult(&ret);
372     /* skip device */
373     /* skip pCreateInfo */
374     /* skip pAllocator */
375     cmd_size += vn_sizeof_simple_pointer(pSemaphore);
376     if (pSemaphore)
377         cmd_size += vn_sizeof_VkSemaphore(pSemaphore);
378 
379     return cmd_size;
380 }
381 
vn_decode_vkCreateSemaphore_reply(struct vn_cs_decoder * dec,VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)382 static inline VkResult vn_decode_vkCreateSemaphore_reply(struct vn_cs_decoder *dec, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
383 {
384     VkCommandTypeEXT command_type;
385     vn_decode_VkCommandTypeEXT(dec, &command_type);
386     assert(command_type == VK_COMMAND_TYPE_vkCreateSemaphore_EXT);
387 
388     VkResult ret;
389     vn_decode_VkResult(dec, &ret);
390     /* skip device */
391     /* skip pCreateInfo */
392     /* skip pAllocator */
393     if (vn_decode_simple_pointer(dec)) {
394         vn_decode_VkSemaphore(dec, pSemaphore);
395     } else {
396         pSemaphore = NULL;
397     }
398 
399     return ret;
400 }
401 
vn_sizeof_vkDestroySemaphore(VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)402 static inline size_t vn_sizeof_vkDestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
403 {
404     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroySemaphore_EXT;
405     const VkFlags cmd_flags = 0;
406     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
407 
408     cmd_size += vn_sizeof_VkDevice(&device);
409     cmd_size += vn_sizeof_VkSemaphore(&semaphore);
410     cmd_size += vn_sizeof_simple_pointer(pAllocator);
411     if (pAllocator)
412         assert(false);
413 
414     return cmd_size;
415 }
416 
vn_encode_vkDestroySemaphore(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)417 static inline void vn_encode_vkDestroySemaphore(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
418 {
419     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroySemaphore_EXT;
420 
421     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
422     vn_encode_VkFlags(enc, &cmd_flags);
423 
424     vn_encode_VkDevice(enc, &device);
425     vn_encode_VkSemaphore(enc, &semaphore);
426     if (vn_encode_simple_pointer(enc, pAllocator))
427         assert(false);
428 }
429 
vn_sizeof_vkDestroySemaphore_reply(VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)430 static inline size_t vn_sizeof_vkDestroySemaphore_reply(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
431 {
432     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroySemaphore_EXT;
433     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
434 
435     /* skip device */
436     /* skip semaphore */
437     /* skip pAllocator */
438 
439     return cmd_size;
440 }
441 
vn_decode_vkDestroySemaphore_reply(struct vn_cs_decoder * dec,VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)442 static inline void vn_decode_vkDestroySemaphore_reply(struct vn_cs_decoder *dec, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
443 {
444     VkCommandTypeEXT command_type;
445     vn_decode_VkCommandTypeEXT(dec, &command_type);
446     assert(command_type == VK_COMMAND_TYPE_vkDestroySemaphore_EXT);
447 
448     /* skip device */
449     /* skip semaphore */
450     /* skip pAllocator */
451 }
452 
vn_sizeof_vkGetSemaphoreCounterValue(VkDevice device,VkSemaphore semaphore,uint64_t * pValue)453 static inline size_t vn_sizeof_vkGetSemaphoreCounterValue(VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
454 {
455     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetSemaphoreCounterValue_EXT;
456     const VkFlags cmd_flags = 0;
457     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
458 
459     cmd_size += vn_sizeof_VkDevice(&device);
460     cmd_size += vn_sizeof_VkSemaphore(&semaphore);
461     cmd_size += vn_sizeof_simple_pointer(pValue); /* out */
462 
463     return cmd_size;
464 }
465 
vn_encode_vkGetSemaphoreCounterValue(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,VkSemaphore semaphore,uint64_t * pValue)466 static inline void vn_encode_vkGetSemaphoreCounterValue(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
467 {
468     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetSemaphoreCounterValue_EXT;
469 
470     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
471     vn_encode_VkFlags(enc, &cmd_flags);
472 
473     vn_encode_VkDevice(enc, &device);
474     vn_encode_VkSemaphore(enc, &semaphore);
475     vn_encode_simple_pointer(enc, pValue); /* out */
476 }
477 
vn_sizeof_vkGetSemaphoreCounterValue_reply(VkDevice device,VkSemaphore semaphore,uint64_t * pValue)478 static inline size_t vn_sizeof_vkGetSemaphoreCounterValue_reply(VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
479 {
480     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetSemaphoreCounterValue_EXT;
481     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
482 
483     VkResult ret;
484     cmd_size += vn_sizeof_VkResult(&ret);
485     /* skip device */
486     /* skip semaphore */
487     cmd_size += vn_sizeof_simple_pointer(pValue);
488     if (pValue)
489         cmd_size += vn_sizeof_uint64_t(pValue);
490 
491     return cmd_size;
492 }
493 
vn_decode_vkGetSemaphoreCounterValue_reply(struct vn_cs_decoder * dec,VkDevice device,VkSemaphore semaphore,uint64_t * pValue)494 static inline VkResult vn_decode_vkGetSemaphoreCounterValue_reply(struct vn_cs_decoder *dec, VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
495 {
496     VkCommandTypeEXT command_type;
497     vn_decode_VkCommandTypeEXT(dec, &command_type);
498     assert(command_type == VK_COMMAND_TYPE_vkGetSemaphoreCounterValue_EXT);
499 
500     VkResult ret;
501     vn_decode_VkResult(dec, &ret);
502     /* skip device */
503     /* skip semaphore */
504     if (vn_decode_simple_pointer(dec)) {
505         vn_decode_uint64_t(dec, pValue);
506     } else {
507         pValue = NULL;
508     }
509 
510     return ret;
511 }
512 
vn_sizeof_vkWaitSemaphores(VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)513 static inline size_t vn_sizeof_vkWaitSemaphores(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)
514 {
515     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWaitSemaphores_EXT;
516     const VkFlags cmd_flags = 0;
517     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
518 
519     cmd_size += vn_sizeof_VkDevice(&device);
520     cmd_size += vn_sizeof_simple_pointer(pWaitInfo);
521     if (pWaitInfo)
522         cmd_size += vn_sizeof_VkSemaphoreWaitInfo(pWaitInfo);
523     cmd_size += vn_sizeof_uint64_t(&timeout);
524 
525     return cmd_size;
526 }
527 
vn_encode_vkWaitSemaphores(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)528 static inline void vn_encode_vkWaitSemaphores(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)
529 {
530     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWaitSemaphores_EXT;
531 
532     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
533     vn_encode_VkFlags(enc, &cmd_flags);
534 
535     vn_encode_VkDevice(enc, &device);
536     if (vn_encode_simple_pointer(enc, pWaitInfo))
537         vn_encode_VkSemaphoreWaitInfo(enc, pWaitInfo);
538     vn_encode_uint64_t(enc, &timeout);
539 }
540 
vn_sizeof_vkWaitSemaphores_reply(VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)541 static inline size_t vn_sizeof_vkWaitSemaphores_reply(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)
542 {
543     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWaitSemaphores_EXT;
544     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
545 
546     VkResult ret;
547     cmd_size += vn_sizeof_VkResult(&ret);
548     /* skip device */
549     /* skip pWaitInfo */
550     /* skip timeout */
551 
552     return cmd_size;
553 }
554 
vn_decode_vkWaitSemaphores_reply(struct vn_cs_decoder * dec,VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)555 static inline VkResult vn_decode_vkWaitSemaphores_reply(struct vn_cs_decoder *dec, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)
556 {
557     VkCommandTypeEXT command_type;
558     vn_decode_VkCommandTypeEXT(dec, &command_type);
559     assert(command_type == VK_COMMAND_TYPE_vkWaitSemaphores_EXT);
560 
561     VkResult ret;
562     vn_decode_VkResult(dec, &ret);
563     /* skip device */
564     /* skip pWaitInfo */
565     /* skip timeout */
566 
567     return ret;
568 }
569 
vn_sizeof_vkSignalSemaphore(VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)570 static inline size_t vn_sizeof_vkSignalSemaphore(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
571 {
572     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkSignalSemaphore_EXT;
573     const VkFlags cmd_flags = 0;
574     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
575 
576     cmd_size += vn_sizeof_VkDevice(&device);
577     cmd_size += vn_sizeof_simple_pointer(pSignalInfo);
578     if (pSignalInfo)
579         cmd_size += vn_sizeof_VkSemaphoreSignalInfo(pSignalInfo);
580 
581     return cmd_size;
582 }
583 
vn_encode_vkSignalSemaphore(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)584 static inline void vn_encode_vkSignalSemaphore(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
585 {
586     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkSignalSemaphore_EXT;
587 
588     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
589     vn_encode_VkFlags(enc, &cmd_flags);
590 
591     vn_encode_VkDevice(enc, &device);
592     if (vn_encode_simple_pointer(enc, pSignalInfo))
593         vn_encode_VkSemaphoreSignalInfo(enc, pSignalInfo);
594 }
595 
vn_sizeof_vkSignalSemaphore_reply(VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)596 static inline size_t vn_sizeof_vkSignalSemaphore_reply(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
597 {
598     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkSignalSemaphore_EXT;
599     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
600 
601     VkResult ret;
602     cmd_size += vn_sizeof_VkResult(&ret);
603     /* skip device */
604     /* skip pSignalInfo */
605 
606     return cmd_size;
607 }
608 
vn_decode_vkSignalSemaphore_reply(struct vn_cs_decoder * dec,VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)609 static inline VkResult vn_decode_vkSignalSemaphore_reply(struct vn_cs_decoder *dec, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
610 {
611     VkCommandTypeEXT command_type;
612     vn_decode_VkCommandTypeEXT(dec, &command_type);
613     assert(command_type == VK_COMMAND_TYPE_vkSignalSemaphore_EXT);
614 
615     VkResult ret;
616     vn_decode_VkResult(dec, &ret);
617     /* skip device */
618     /* skip pSignalInfo */
619 
620     return ret;
621 }
622 
vn_submit_vkCreateSemaphore(struct vn_instance * vn_instance,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore,struct vn_instance_submit_command * submit)623 static inline void vn_submit_vkCreateSemaphore(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore, struct vn_instance_submit_command *submit)
624 {
625     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
626     void *cmd_data = local_cmd_data;
627     size_t cmd_size = vn_sizeof_vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore);
628     if (cmd_size > sizeof(local_cmd_data)) {
629         cmd_data = malloc(cmd_size);
630         if (!cmd_data)
631             cmd_size = 0;
632     }
633     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateSemaphore_reply(device, pCreateInfo, pAllocator, pSemaphore) : 0;
634 
635     struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
636     if (cmd_size) {
637         vn_encode_vkCreateSemaphore(enc, cmd_flags, device, pCreateInfo, pAllocator, pSemaphore);
638         vn_instance_submit_command(vn_instance, submit);
639         if (cmd_data != local_cmd_data)
640             free(cmd_data);
641     }
642 }
643 
vn_submit_vkDestroySemaphore(struct vn_instance * vn_instance,VkCommandFlagsEXT cmd_flags,VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator,struct vn_instance_submit_command * submit)644 static inline void vn_submit_vkDestroySemaphore(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator, struct vn_instance_submit_command *submit)
645 {
646     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
647     void *cmd_data = local_cmd_data;
648     size_t cmd_size = vn_sizeof_vkDestroySemaphore(device, semaphore, pAllocator);
649     if (cmd_size > sizeof(local_cmd_data)) {
650         cmd_data = malloc(cmd_size);
651         if (!cmd_data)
652             cmd_size = 0;
653     }
654     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroySemaphore_reply(device, semaphore, pAllocator) : 0;
655 
656     struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
657     if (cmd_size) {
658         vn_encode_vkDestroySemaphore(enc, cmd_flags, device, semaphore, pAllocator);
659         vn_instance_submit_command(vn_instance, submit);
660         if (cmd_data != local_cmd_data)
661             free(cmd_data);
662     }
663 }
664 
vn_submit_vkGetSemaphoreCounterValue(struct vn_instance * vn_instance,VkCommandFlagsEXT cmd_flags,VkDevice device,VkSemaphore semaphore,uint64_t * pValue,struct vn_instance_submit_command * submit)665 static inline void vn_submit_vkGetSemaphoreCounterValue(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSemaphore semaphore, uint64_t* pValue, struct vn_instance_submit_command *submit)
666 {
667     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
668     void *cmd_data = local_cmd_data;
669     size_t cmd_size = vn_sizeof_vkGetSemaphoreCounterValue(device, semaphore, pValue);
670     if (cmd_size > sizeof(local_cmd_data)) {
671         cmd_data = malloc(cmd_size);
672         if (!cmd_data)
673             cmd_size = 0;
674     }
675     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetSemaphoreCounterValue_reply(device, semaphore, pValue) : 0;
676 
677     struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
678     if (cmd_size) {
679         vn_encode_vkGetSemaphoreCounterValue(enc, cmd_flags, device, semaphore, pValue);
680         vn_instance_submit_command(vn_instance, submit);
681         if (cmd_data != local_cmd_data)
682             free(cmd_data);
683     }
684 }
685 
vn_submit_vkWaitSemaphores(struct vn_instance * vn_instance,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout,struct vn_instance_submit_command * submit)686 static inline void vn_submit_vkWaitSemaphores(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout, struct vn_instance_submit_command *submit)
687 {
688     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
689     void *cmd_data = local_cmd_data;
690     size_t cmd_size = vn_sizeof_vkWaitSemaphores(device, pWaitInfo, timeout);
691     if (cmd_size > sizeof(local_cmd_data)) {
692         cmd_data = malloc(cmd_size);
693         if (!cmd_data)
694             cmd_size = 0;
695     }
696     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkWaitSemaphores_reply(device, pWaitInfo, timeout) : 0;
697 
698     struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
699     if (cmd_size) {
700         vn_encode_vkWaitSemaphores(enc, cmd_flags, device, pWaitInfo, timeout);
701         vn_instance_submit_command(vn_instance, submit);
702         if (cmd_data != local_cmd_data)
703             free(cmd_data);
704     }
705 }
706 
vn_submit_vkSignalSemaphore(struct vn_instance * vn_instance,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo,struct vn_instance_submit_command * submit)707 static inline void vn_submit_vkSignalSemaphore(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo, struct vn_instance_submit_command *submit)
708 {
709     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
710     void *cmd_data = local_cmd_data;
711     size_t cmd_size = vn_sizeof_vkSignalSemaphore(device, pSignalInfo);
712     if (cmd_size > sizeof(local_cmd_data)) {
713         cmd_data = malloc(cmd_size);
714         if (!cmd_data)
715             cmd_size = 0;
716     }
717     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkSignalSemaphore_reply(device, pSignalInfo) : 0;
718 
719     struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
720     if (cmd_size) {
721         vn_encode_vkSignalSemaphore(enc, cmd_flags, device, pSignalInfo);
722         vn_instance_submit_command(vn_instance, submit);
723         if (cmd_data != local_cmd_data)
724             free(cmd_data);
725     }
726 }
727 
vn_call_vkCreateSemaphore(struct vn_instance * vn_instance,VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)728 static inline VkResult vn_call_vkCreateSemaphore(struct vn_instance *vn_instance, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
729 {
730     VN_TRACE_FUNC();
731 
732     struct vn_instance_submit_command submit;
733     vn_submit_vkCreateSemaphore(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pSemaphore, &submit);
734     struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
735     if (dec) {
736         const VkResult ret = vn_decode_vkCreateSemaphore_reply(dec, device, pCreateInfo, pAllocator, pSemaphore);
737         vn_instance_free_command_reply(vn_instance, &submit);
738         return ret;
739     } else {
740         return VK_ERROR_OUT_OF_HOST_MEMORY;
741     }
742 }
743 
vn_async_vkCreateSemaphore(struct vn_instance * vn_instance,VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)744 static inline void vn_async_vkCreateSemaphore(struct vn_instance *vn_instance, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
745 {
746     struct vn_instance_submit_command submit;
747     vn_submit_vkCreateSemaphore(vn_instance, 0, device, pCreateInfo, pAllocator, pSemaphore, &submit);
748 }
749 
vn_call_vkDestroySemaphore(struct vn_instance * vn_instance,VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)750 static inline void vn_call_vkDestroySemaphore(struct vn_instance *vn_instance, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
751 {
752     VN_TRACE_FUNC();
753 
754     struct vn_instance_submit_command submit;
755     vn_submit_vkDestroySemaphore(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, semaphore, pAllocator, &submit);
756     struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
757     if (dec) {
758         vn_decode_vkDestroySemaphore_reply(dec, device, semaphore, pAllocator);
759         vn_instance_free_command_reply(vn_instance, &submit);
760     }
761 }
762 
vn_async_vkDestroySemaphore(struct vn_instance * vn_instance,VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)763 static inline void vn_async_vkDestroySemaphore(struct vn_instance *vn_instance, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
764 {
765     struct vn_instance_submit_command submit;
766     vn_submit_vkDestroySemaphore(vn_instance, 0, device, semaphore, pAllocator, &submit);
767 }
768 
vn_call_vkGetSemaphoreCounterValue(struct vn_instance * vn_instance,VkDevice device,VkSemaphore semaphore,uint64_t * pValue)769 static inline VkResult vn_call_vkGetSemaphoreCounterValue(struct vn_instance *vn_instance, VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
770 {
771     VN_TRACE_FUNC();
772 
773     struct vn_instance_submit_command submit;
774     vn_submit_vkGetSemaphoreCounterValue(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, semaphore, pValue, &submit);
775     struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
776     if (dec) {
777         const VkResult ret = vn_decode_vkGetSemaphoreCounterValue_reply(dec, device, semaphore, pValue);
778         vn_instance_free_command_reply(vn_instance, &submit);
779         return ret;
780     } else {
781         return VK_ERROR_OUT_OF_HOST_MEMORY;
782     }
783 }
784 
vn_async_vkGetSemaphoreCounterValue(struct vn_instance * vn_instance,VkDevice device,VkSemaphore semaphore,uint64_t * pValue)785 static inline void vn_async_vkGetSemaphoreCounterValue(struct vn_instance *vn_instance, VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
786 {
787     struct vn_instance_submit_command submit;
788     vn_submit_vkGetSemaphoreCounterValue(vn_instance, 0, device, semaphore, pValue, &submit);
789 }
790 
vn_call_vkWaitSemaphores(struct vn_instance * vn_instance,VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)791 static inline VkResult vn_call_vkWaitSemaphores(struct vn_instance *vn_instance, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)
792 {
793     VN_TRACE_FUNC();
794 
795     struct vn_instance_submit_command submit;
796     vn_submit_vkWaitSemaphores(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pWaitInfo, timeout, &submit);
797     struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
798     if (dec) {
799         const VkResult ret = vn_decode_vkWaitSemaphores_reply(dec, device, pWaitInfo, timeout);
800         vn_instance_free_command_reply(vn_instance, &submit);
801         return ret;
802     } else {
803         return VK_ERROR_OUT_OF_HOST_MEMORY;
804     }
805 }
806 
vn_async_vkWaitSemaphores(struct vn_instance * vn_instance,VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)807 static inline void vn_async_vkWaitSemaphores(struct vn_instance *vn_instance, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)
808 {
809     struct vn_instance_submit_command submit;
810     vn_submit_vkWaitSemaphores(vn_instance, 0, device, pWaitInfo, timeout, &submit);
811 }
812 
vn_call_vkSignalSemaphore(struct vn_instance * vn_instance,VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)813 static inline VkResult vn_call_vkSignalSemaphore(struct vn_instance *vn_instance, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
814 {
815     VN_TRACE_FUNC();
816 
817     struct vn_instance_submit_command submit;
818     vn_submit_vkSignalSemaphore(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pSignalInfo, &submit);
819     struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
820     if (dec) {
821         const VkResult ret = vn_decode_vkSignalSemaphore_reply(dec, device, pSignalInfo);
822         vn_instance_free_command_reply(vn_instance, &submit);
823         return ret;
824     } else {
825         return VK_ERROR_OUT_OF_HOST_MEMORY;
826     }
827 }
828 
vn_async_vkSignalSemaphore(struct vn_instance * vn_instance,VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)829 static inline void vn_async_vkSignalSemaphore(struct vn_instance *vn_instance, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
830 {
831     struct vn_instance_submit_command submit;
832     vn_submit_vkSignalSemaphore(vn_instance, 0, device, pSignalInfo, &submit);
833 }
834 
835 #endif /* VN_PROTOCOL_DRIVER_SEMAPHORE_H */
836