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