• 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 
vn_sizeof_vkCreateSemaphore(VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)301 static inline size_t vn_sizeof_vkCreateSemaphore(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
302 {
303     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateSemaphore_EXT;
304     const VkFlags cmd_flags = 0;
305     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
306 
307     cmd_size += vn_sizeof_VkDevice(&device);
308     cmd_size += vn_sizeof_simple_pointer(pCreateInfo);
309     if (pCreateInfo)
310         cmd_size += vn_sizeof_VkSemaphoreCreateInfo(pCreateInfo);
311     cmd_size += vn_sizeof_simple_pointer(pAllocator);
312     if (pAllocator)
313         assert(false);
314     cmd_size += vn_sizeof_simple_pointer(pSemaphore);
315     if (pSemaphore)
316         cmd_size += vn_sizeof_VkSemaphore(pSemaphore);
317 
318     return cmd_size;
319 }
320 
vn_encode_vkCreateSemaphore(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)321 static inline void vn_encode_vkCreateSemaphore(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
322 {
323     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateSemaphore_EXT;
324 
325     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
326     vn_encode_VkFlags(enc, &cmd_flags);
327 
328     vn_encode_VkDevice(enc, &device);
329     if (vn_encode_simple_pointer(enc, pCreateInfo))
330         vn_encode_VkSemaphoreCreateInfo(enc, pCreateInfo);
331     if (vn_encode_simple_pointer(enc, pAllocator))
332         assert(false);
333     if (vn_encode_simple_pointer(enc, pSemaphore))
334         vn_encode_VkSemaphore(enc, pSemaphore);
335 }
336 
vn_sizeof_vkCreateSemaphore_reply(VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)337 static inline size_t vn_sizeof_vkCreateSemaphore_reply(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
338 {
339     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateSemaphore_EXT;
340     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
341 
342     VkResult ret;
343     cmd_size += vn_sizeof_VkResult(&ret);
344     /* skip device */
345     /* skip pCreateInfo */
346     /* skip pAllocator */
347     cmd_size += vn_sizeof_simple_pointer(pSemaphore);
348     if (pSemaphore)
349         cmd_size += vn_sizeof_VkSemaphore(pSemaphore);
350 
351     return cmd_size;
352 }
353 
vn_decode_vkCreateSemaphore_reply(struct vn_cs_decoder * dec,VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)354 static inline VkResult vn_decode_vkCreateSemaphore_reply(struct vn_cs_decoder *dec, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
355 {
356     VkCommandTypeEXT command_type;
357     vn_decode_VkCommandTypeEXT(dec, &command_type);
358     assert(command_type == VK_COMMAND_TYPE_vkCreateSemaphore_EXT);
359 
360     VkResult ret;
361     vn_decode_VkResult(dec, &ret);
362     /* skip device */
363     /* skip pCreateInfo */
364     /* skip pAllocator */
365     if (vn_decode_simple_pointer(dec)) {
366         vn_decode_VkSemaphore(dec, pSemaphore);
367     } else {
368         pSemaphore = NULL;
369     }
370 
371     return ret;
372 }
373 
vn_sizeof_vkDestroySemaphore(VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)374 static inline size_t vn_sizeof_vkDestroySemaphore(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
375 {
376     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroySemaphore_EXT;
377     const VkFlags cmd_flags = 0;
378     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
379 
380     cmd_size += vn_sizeof_VkDevice(&device);
381     cmd_size += vn_sizeof_VkSemaphore(&semaphore);
382     cmd_size += vn_sizeof_simple_pointer(pAllocator);
383     if (pAllocator)
384         assert(false);
385 
386     return cmd_size;
387 }
388 
vn_encode_vkDestroySemaphore(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)389 static inline void vn_encode_vkDestroySemaphore(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
390 {
391     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroySemaphore_EXT;
392 
393     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
394     vn_encode_VkFlags(enc, &cmd_flags);
395 
396     vn_encode_VkDevice(enc, &device);
397     vn_encode_VkSemaphore(enc, &semaphore);
398     if (vn_encode_simple_pointer(enc, pAllocator))
399         assert(false);
400 }
401 
vn_sizeof_vkDestroySemaphore_reply(VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)402 static inline size_t vn_sizeof_vkDestroySemaphore_reply(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
403 {
404     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroySemaphore_EXT;
405     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
406 
407     /* skip device */
408     /* skip semaphore */
409     /* skip pAllocator */
410 
411     return cmd_size;
412 }
413 
vn_decode_vkDestroySemaphore_reply(struct vn_cs_decoder * dec,VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)414 static inline void vn_decode_vkDestroySemaphore_reply(struct vn_cs_decoder *dec, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
415 {
416     VkCommandTypeEXT command_type;
417     vn_decode_VkCommandTypeEXT(dec, &command_type);
418     assert(command_type == VK_COMMAND_TYPE_vkDestroySemaphore_EXT);
419 
420     /* skip device */
421     /* skip semaphore */
422     /* skip pAllocator */
423 }
424 
vn_sizeof_vkGetSemaphoreCounterValue(VkDevice device,VkSemaphore semaphore,uint64_t * pValue)425 static inline size_t vn_sizeof_vkGetSemaphoreCounterValue(VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
426 {
427     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetSemaphoreCounterValue_EXT;
428     const VkFlags cmd_flags = 0;
429     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
430 
431     cmd_size += vn_sizeof_VkDevice(&device);
432     cmd_size += vn_sizeof_VkSemaphore(&semaphore);
433     cmd_size += vn_sizeof_simple_pointer(pValue); /* out */
434 
435     return cmd_size;
436 }
437 
vn_encode_vkGetSemaphoreCounterValue(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,VkSemaphore semaphore,uint64_t * pValue)438 static inline void vn_encode_vkGetSemaphoreCounterValue(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
439 {
440     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetSemaphoreCounterValue_EXT;
441 
442     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
443     vn_encode_VkFlags(enc, &cmd_flags);
444 
445     vn_encode_VkDevice(enc, &device);
446     vn_encode_VkSemaphore(enc, &semaphore);
447     vn_encode_simple_pointer(enc, pValue); /* out */
448 }
449 
vn_sizeof_vkGetSemaphoreCounterValue_reply(VkDevice device,VkSemaphore semaphore,uint64_t * pValue)450 static inline size_t vn_sizeof_vkGetSemaphoreCounterValue_reply(VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
451 {
452     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetSemaphoreCounterValue_EXT;
453     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
454 
455     VkResult ret;
456     cmd_size += vn_sizeof_VkResult(&ret);
457     /* skip device */
458     /* skip semaphore */
459     cmd_size += vn_sizeof_simple_pointer(pValue);
460     if (pValue)
461         cmd_size += vn_sizeof_uint64_t(pValue);
462 
463     return cmd_size;
464 }
465 
vn_decode_vkGetSemaphoreCounterValue_reply(struct vn_cs_decoder * dec,VkDevice device,VkSemaphore semaphore,uint64_t * pValue)466 static inline VkResult vn_decode_vkGetSemaphoreCounterValue_reply(struct vn_cs_decoder *dec, VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
467 {
468     VkCommandTypeEXT command_type;
469     vn_decode_VkCommandTypeEXT(dec, &command_type);
470     assert(command_type == VK_COMMAND_TYPE_vkGetSemaphoreCounterValue_EXT);
471 
472     VkResult ret;
473     vn_decode_VkResult(dec, &ret);
474     /* skip device */
475     /* skip semaphore */
476     if (vn_decode_simple_pointer(dec)) {
477         vn_decode_uint64_t(dec, pValue);
478     } else {
479         pValue = NULL;
480     }
481 
482     return ret;
483 }
484 
vn_sizeof_vkWaitSemaphores(VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)485 static inline size_t vn_sizeof_vkWaitSemaphores(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)
486 {
487     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWaitSemaphores_EXT;
488     const VkFlags cmd_flags = 0;
489     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
490 
491     cmd_size += vn_sizeof_VkDevice(&device);
492     cmd_size += vn_sizeof_simple_pointer(pWaitInfo);
493     if (pWaitInfo)
494         cmd_size += vn_sizeof_VkSemaphoreWaitInfo(pWaitInfo);
495     cmd_size += vn_sizeof_uint64_t(&timeout);
496 
497     return cmd_size;
498 }
499 
vn_encode_vkWaitSemaphores(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)500 static inline void vn_encode_vkWaitSemaphores(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)
501 {
502     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWaitSemaphores_EXT;
503 
504     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
505     vn_encode_VkFlags(enc, &cmd_flags);
506 
507     vn_encode_VkDevice(enc, &device);
508     if (vn_encode_simple_pointer(enc, pWaitInfo))
509         vn_encode_VkSemaphoreWaitInfo(enc, pWaitInfo);
510     vn_encode_uint64_t(enc, &timeout);
511 }
512 
vn_sizeof_vkWaitSemaphores_reply(VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)513 static inline size_t vn_sizeof_vkWaitSemaphores_reply(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)
514 {
515     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWaitSemaphores_EXT;
516     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
517 
518     VkResult ret;
519     cmd_size += vn_sizeof_VkResult(&ret);
520     /* skip device */
521     /* skip pWaitInfo */
522     /* skip timeout */
523 
524     return cmd_size;
525 }
526 
vn_decode_vkWaitSemaphores_reply(struct vn_cs_decoder * dec,VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)527 static inline VkResult vn_decode_vkWaitSemaphores_reply(struct vn_cs_decoder *dec, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)
528 {
529     VkCommandTypeEXT command_type;
530     vn_decode_VkCommandTypeEXT(dec, &command_type);
531     assert(command_type == VK_COMMAND_TYPE_vkWaitSemaphores_EXT);
532 
533     VkResult ret;
534     vn_decode_VkResult(dec, &ret);
535     /* skip device */
536     /* skip pWaitInfo */
537     /* skip timeout */
538 
539     return ret;
540 }
541 
vn_sizeof_vkSignalSemaphore(VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)542 static inline size_t vn_sizeof_vkSignalSemaphore(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
543 {
544     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkSignalSemaphore_EXT;
545     const VkFlags cmd_flags = 0;
546     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
547 
548     cmd_size += vn_sizeof_VkDevice(&device);
549     cmd_size += vn_sizeof_simple_pointer(pSignalInfo);
550     if (pSignalInfo)
551         cmd_size += vn_sizeof_VkSemaphoreSignalInfo(pSignalInfo);
552 
553     return cmd_size;
554 }
555 
vn_encode_vkSignalSemaphore(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)556 static inline void vn_encode_vkSignalSemaphore(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
557 {
558     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkSignalSemaphore_EXT;
559 
560     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
561     vn_encode_VkFlags(enc, &cmd_flags);
562 
563     vn_encode_VkDevice(enc, &device);
564     if (vn_encode_simple_pointer(enc, pSignalInfo))
565         vn_encode_VkSemaphoreSignalInfo(enc, pSignalInfo);
566 }
567 
vn_sizeof_vkSignalSemaphore_reply(VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)568 static inline size_t vn_sizeof_vkSignalSemaphore_reply(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
569 {
570     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkSignalSemaphore_EXT;
571     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
572 
573     VkResult ret;
574     cmd_size += vn_sizeof_VkResult(&ret);
575     /* skip device */
576     /* skip pSignalInfo */
577 
578     return cmd_size;
579 }
580 
vn_decode_vkSignalSemaphore_reply(struct vn_cs_decoder * dec,VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)581 static inline VkResult vn_decode_vkSignalSemaphore_reply(struct vn_cs_decoder *dec, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
582 {
583     VkCommandTypeEXT command_type;
584     vn_decode_VkCommandTypeEXT(dec, &command_type);
585     assert(command_type == VK_COMMAND_TYPE_vkSignalSemaphore_EXT);
586 
587     VkResult ret;
588     vn_decode_VkResult(dec, &ret);
589     /* skip device */
590     /* skip pSignalInfo */
591 
592     return ret;
593 }
594 
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)595 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)
596 {
597     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
598     void *cmd_data = local_cmd_data;
599     size_t cmd_size = vn_sizeof_vkCreateSemaphore(device, pCreateInfo, pAllocator, pSemaphore);
600     if (cmd_size > sizeof(local_cmd_data)) {
601         cmd_data = malloc(cmd_size);
602         if (!cmd_data)
603             cmd_size = 0;
604     }
605     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateSemaphore_reply(device, pCreateInfo, pAllocator, pSemaphore) : 0;
606 
607     struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
608     if (cmd_size) {
609         vn_encode_vkCreateSemaphore(enc, cmd_flags, device, pCreateInfo, pAllocator, pSemaphore);
610         vn_instance_submit_command(vn_instance, submit);
611         if (cmd_data != local_cmd_data)
612             free(cmd_data);
613     }
614 }
615 
vn_submit_vkDestroySemaphore(struct vn_instance * vn_instance,VkCommandFlagsEXT cmd_flags,VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator,struct vn_instance_submit_command * submit)616 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)
617 {
618     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
619     void *cmd_data = local_cmd_data;
620     size_t cmd_size = vn_sizeof_vkDestroySemaphore(device, semaphore, pAllocator);
621     if (cmd_size > sizeof(local_cmd_data)) {
622         cmd_data = malloc(cmd_size);
623         if (!cmd_data)
624             cmd_size = 0;
625     }
626     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroySemaphore_reply(device, semaphore, pAllocator) : 0;
627 
628     struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
629     if (cmd_size) {
630         vn_encode_vkDestroySemaphore(enc, cmd_flags, device, semaphore, pAllocator);
631         vn_instance_submit_command(vn_instance, submit);
632         if (cmd_data != local_cmd_data)
633             free(cmd_data);
634     }
635 }
636 
vn_submit_vkGetSemaphoreCounterValue(struct vn_instance * vn_instance,VkCommandFlagsEXT cmd_flags,VkDevice device,VkSemaphore semaphore,uint64_t * pValue,struct vn_instance_submit_command * submit)637 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)
638 {
639     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
640     void *cmd_data = local_cmd_data;
641     size_t cmd_size = vn_sizeof_vkGetSemaphoreCounterValue(device, semaphore, pValue);
642     if (cmd_size > sizeof(local_cmd_data)) {
643         cmd_data = malloc(cmd_size);
644         if (!cmd_data)
645             cmd_size = 0;
646     }
647     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetSemaphoreCounterValue_reply(device, semaphore, pValue) : 0;
648 
649     struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
650     if (cmd_size) {
651         vn_encode_vkGetSemaphoreCounterValue(enc, cmd_flags, device, semaphore, pValue);
652         vn_instance_submit_command(vn_instance, submit);
653         if (cmd_data != local_cmd_data)
654             free(cmd_data);
655     }
656 }
657 
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)658 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)
659 {
660     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
661     void *cmd_data = local_cmd_data;
662     size_t cmd_size = vn_sizeof_vkWaitSemaphores(device, pWaitInfo, timeout);
663     if (cmd_size > sizeof(local_cmd_data)) {
664         cmd_data = malloc(cmd_size);
665         if (!cmd_data)
666             cmd_size = 0;
667     }
668     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkWaitSemaphores_reply(device, pWaitInfo, timeout) : 0;
669 
670     struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
671     if (cmd_size) {
672         vn_encode_vkWaitSemaphores(enc, cmd_flags, device, pWaitInfo, timeout);
673         vn_instance_submit_command(vn_instance, submit);
674         if (cmd_data != local_cmd_data)
675             free(cmd_data);
676     }
677 }
678 
vn_submit_vkSignalSemaphore(struct vn_instance * vn_instance,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo,struct vn_instance_submit_command * submit)679 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)
680 {
681     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
682     void *cmd_data = local_cmd_data;
683     size_t cmd_size = vn_sizeof_vkSignalSemaphore(device, pSignalInfo);
684     if (cmd_size > sizeof(local_cmd_data)) {
685         cmd_data = malloc(cmd_size);
686         if (!cmd_data)
687             cmd_size = 0;
688     }
689     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkSignalSemaphore_reply(device, pSignalInfo) : 0;
690 
691     struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
692     if (cmd_size) {
693         vn_encode_vkSignalSemaphore(enc, cmd_flags, device, pSignalInfo);
694         vn_instance_submit_command(vn_instance, submit);
695         if (cmd_data != local_cmd_data)
696             free(cmd_data);
697     }
698 }
699 
vn_call_vkCreateSemaphore(struct vn_instance * vn_instance,VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)700 static inline VkResult vn_call_vkCreateSemaphore(struct vn_instance *vn_instance, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
701 {
702     VN_TRACE_FUNC();
703 
704     struct vn_instance_submit_command submit;
705     vn_submit_vkCreateSemaphore(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pSemaphore, &submit);
706     struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
707     if (dec) {
708         const VkResult ret = vn_decode_vkCreateSemaphore_reply(dec, device, pCreateInfo, pAllocator, pSemaphore);
709         vn_instance_free_command_reply(vn_instance, &submit);
710         return ret;
711     } else {
712         return VK_ERROR_OUT_OF_HOST_MEMORY;
713     }
714 }
715 
vn_async_vkCreateSemaphore(struct vn_instance * vn_instance,VkDevice device,const VkSemaphoreCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSemaphore * pSemaphore)716 static inline void vn_async_vkCreateSemaphore(struct vn_instance *vn_instance, VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore)
717 {
718     struct vn_instance_submit_command submit;
719     vn_submit_vkCreateSemaphore(vn_instance, 0, device, pCreateInfo, pAllocator, pSemaphore, &submit);
720 }
721 
vn_call_vkDestroySemaphore(struct vn_instance * vn_instance,VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)722 static inline void vn_call_vkDestroySemaphore(struct vn_instance *vn_instance, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
723 {
724     VN_TRACE_FUNC();
725 
726     struct vn_instance_submit_command submit;
727     vn_submit_vkDestroySemaphore(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, semaphore, pAllocator, &submit);
728     struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
729     if (dec) {
730         vn_decode_vkDestroySemaphore_reply(dec, device, semaphore, pAllocator);
731         vn_instance_free_command_reply(vn_instance, &submit);
732     }
733 }
734 
vn_async_vkDestroySemaphore(struct vn_instance * vn_instance,VkDevice device,VkSemaphore semaphore,const VkAllocationCallbacks * pAllocator)735 static inline void vn_async_vkDestroySemaphore(struct vn_instance *vn_instance, VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator)
736 {
737     struct vn_instance_submit_command submit;
738     vn_submit_vkDestroySemaphore(vn_instance, 0, device, semaphore, pAllocator, &submit);
739 }
740 
vn_call_vkGetSemaphoreCounterValue(struct vn_instance * vn_instance,VkDevice device,VkSemaphore semaphore,uint64_t * pValue)741 static inline VkResult vn_call_vkGetSemaphoreCounterValue(struct vn_instance *vn_instance, VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
742 {
743     VN_TRACE_FUNC();
744 
745     struct vn_instance_submit_command submit;
746     vn_submit_vkGetSemaphoreCounterValue(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, semaphore, pValue, &submit);
747     struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
748     if (dec) {
749         const VkResult ret = vn_decode_vkGetSemaphoreCounterValue_reply(dec, device, semaphore, pValue);
750         vn_instance_free_command_reply(vn_instance, &submit);
751         return ret;
752     } else {
753         return VK_ERROR_OUT_OF_HOST_MEMORY;
754     }
755 }
756 
vn_async_vkGetSemaphoreCounterValue(struct vn_instance * vn_instance,VkDevice device,VkSemaphore semaphore,uint64_t * pValue)757 static inline void vn_async_vkGetSemaphoreCounterValue(struct vn_instance *vn_instance, VkDevice device, VkSemaphore semaphore, uint64_t* pValue)
758 {
759     struct vn_instance_submit_command submit;
760     vn_submit_vkGetSemaphoreCounterValue(vn_instance, 0, device, semaphore, pValue, &submit);
761 }
762 
vn_call_vkWaitSemaphores(struct vn_instance * vn_instance,VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)763 static inline VkResult vn_call_vkWaitSemaphores(struct vn_instance *vn_instance, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)
764 {
765     VN_TRACE_FUNC();
766 
767     struct vn_instance_submit_command submit;
768     vn_submit_vkWaitSemaphores(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pWaitInfo, timeout, &submit);
769     struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
770     if (dec) {
771         const VkResult ret = vn_decode_vkWaitSemaphores_reply(dec, device, pWaitInfo, timeout);
772         vn_instance_free_command_reply(vn_instance, &submit);
773         return ret;
774     } else {
775         return VK_ERROR_OUT_OF_HOST_MEMORY;
776     }
777 }
778 
vn_async_vkWaitSemaphores(struct vn_instance * vn_instance,VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)779 static inline void vn_async_vkWaitSemaphores(struct vn_instance *vn_instance, VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout)
780 {
781     struct vn_instance_submit_command submit;
782     vn_submit_vkWaitSemaphores(vn_instance, 0, device, pWaitInfo, timeout, &submit);
783 }
784 
vn_call_vkSignalSemaphore(struct vn_instance * vn_instance,VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)785 static inline VkResult vn_call_vkSignalSemaphore(struct vn_instance *vn_instance, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
786 {
787     VN_TRACE_FUNC();
788 
789     struct vn_instance_submit_command submit;
790     vn_submit_vkSignalSemaphore(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pSignalInfo, &submit);
791     struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
792     if (dec) {
793         const VkResult ret = vn_decode_vkSignalSemaphore_reply(dec, device, pSignalInfo);
794         vn_instance_free_command_reply(vn_instance, &submit);
795         return ret;
796     } else {
797         return VK_ERROR_OUT_OF_HOST_MEMORY;
798     }
799 }
800 
vn_async_vkSignalSemaphore(struct vn_instance * vn_instance,VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)801 static inline void vn_async_vkSignalSemaphore(struct vn_instance *vn_instance, VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo)
802 {
803     struct vn_instance_submit_command submit;
804     vn_submit_vkSignalSemaphore(vn_instance, 0, device, pSignalInfo, &submit);
805 }
806 
807 #endif /* VN_PROTOCOL_DRIVER_SEMAPHORE_H */
808