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