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_FENCE_H
9 #define VN_PROTOCOL_DRIVER_FENCE_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 * vkGetFenceFdKHR
18 * vkImportFenceFdKHR
19 */
20
21 /* struct VkExportFenceCreateInfo chain */
22
23 static inline size_t
vn_sizeof_VkExportFenceCreateInfo_pnext(const void * val)24 vn_sizeof_VkExportFenceCreateInfo_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_VkExportFenceCreateInfo_self(const VkExportFenceCreateInfo * val)31 vn_sizeof_VkExportFenceCreateInfo_self(const VkExportFenceCreateInfo *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_VkExportFenceCreateInfo(const VkExportFenceCreateInfo * val)40 vn_sizeof_VkExportFenceCreateInfo(const VkExportFenceCreateInfo *val)
41 {
42 size_t size = 0;
43
44 size += vn_sizeof_VkStructureType(&val->sType);
45 size += vn_sizeof_VkExportFenceCreateInfo_pnext(val->pNext);
46 size += vn_sizeof_VkExportFenceCreateInfo_self(val);
47
48 return size;
49 }
50
51 static inline void
vn_encode_VkExportFenceCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)52 vn_encode_VkExportFenceCreateInfo_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_VkExportFenceCreateInfo_self(struct vn_cs_encoder * enc,const VkExportFenceCreateInfo * val)59 vn_encode_VkExportFenceCreateInfo_self(struct vn_cs_encoder *enc, const VkExportFenceCreateInfo *val)
60 {
61 /* skip val->{sType,pNext} */
62 vn_encode_VkFlags(enc, &val->handleTypes);
63 }
64
65 static inline void
vn_encode_VkExportFenceCreateInfo(struct vn_cs_encoder * enc,const VkExportFenceCreateInfo * val)66 vn_encode_VkExportFenceCreateInfo(struct vn_cs_encoder *enc, const VkExportFenceCreateInfo *val)
67 {
68 assert(val->sType == VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO);
69 vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO });
70 vn_encode_VkExportFenceCreateInfo_pnext(enc, val->pNext);
71 vn_encode_VkExportFenceCreateInfo_self(enc, val);
72 }
73
74 /* struct VkFenceCreateInfo chain */
75
76 static inline size_t
vn_sizeof_VkFenceCreateInfo_pnext(const void * val)77 vn_sizeof_VkFenceCreateInfo_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_FENCE_CREATE_INFO:
85 size += vn_sizeof_simple_pointer(pnext);
86 size += vn_sizeof_VkStructureType(&pnext->sType);
87 size += vn_sizeof_VkFenceCreateInfo_pnext(pnext->pNext);
88 size += vn_sizeof_VkExportFenceCreateInfo_self((const VkExportFenceCreateInfo *)pnext);
89 return size;
90 default:
91 /* ignore unknown/unsupported struct */
92 break;
93 }
94 pnext = pnext->pNext;
95 }
96
97 return vn_sizeof_simple_pointer(NULL);
98 }
99
100 static inline size_t
vn_sizeof_VkFenceCreateInfo_self(const VkFenceCreateInfo * val)101 vn_sizeof_VkFenceCreateInfo_self(const VkFenceCreateInfo *val)
102 {
103 size_t size = 0;
104 /* skip val->{sType,pNext} */
105 size += vn_sizeof_VkFlags(&val->flags);
106 return size;
107 }
108
109 static inline size_t
vn_sizeof_VkFenceCreateInfo(const VkFenceCreateInfo * val)110 vn_sizeof_VkFenceCreateInfo(const VkFenceCreateInfo *val)
111 {
112 size_t size = 0;
113
114 size += vn_sizeof_VkStructureType(&val->sType);
115 size += vn_sizeof_VkFenceCreateInfo_pnext(val->pNext);
116 size += vn_sizeof_VkFenceCreateInfo_self(val);
117
118 return size;
119 }
120
121 static inline void
vn_encode_VkFenceCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)122 vn_encode_VkFenceCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
123 {
124 const VkBaseInStructure *pnext = val;
125
126 while (pnext) {
127 switch ((int32_t)pnext->sType) {
128 case VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO:
129 vn_encode_simple_pointer(enc, pnext);
130 vn_encode_VkStructureType(enc, &pnext->sType);
131 vn_encode_VkFenceCreateInfo_pnext(enc, pnext->pNext);
132 vn_encode_VkExportFenceCreateInfo_self(enc, (const VkExportFenceCreateInfo *)pnext);
133 return;
134 default:
135 /* ignore unknown/unsupported struct */
136 break;
137 }
138 pnext = pnext->pNext;
139 }
140
141 vn_encode_simple_pointer(enc, NULL);
142 }
143
144 static inline void
vn_encode_VkFenceCreateInfo_self(struct vn_cs_encoder * enc,const VkFenceCreateInfo * val)145 vn_encode_VkFenceCreateInfo_self(struct vn_cs_encoder *enc, const VkFenceCreateInfo *val)
146 {
147 /* skip val->{sType,pNext} */
148 vn_encode_VkFlags(enc, &val->flags);
149 }
150
151 static inline void
vn_encode_VkFenceCreateInfo(struct vn_cs_encoder * enc,const VkFenceCreateInfo * val)152 vn_encode_VkFenceCreateInfo(struct vn_cs_encoder *enc, const VkFenceCreateInfo *val)
153 {
154 assert(val->sType == VK_STRUCTURE_TYPE_FENCE_CREATE_INFO);
155 vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_FENCE_CREATE_INFO });
156 vn_encode_VkFenceCreateInfo_pnext(enc, val->pNext);
157 vn_encode_VkFenceCreateInfo_self(enc, val);
158 }
159
vn_sizeof_vkCreateFence(VkDevice device,const VkFenceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)160 static inline size_t vn_sizeof_vkCreateFence(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence)
161 {
162 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateFence_EXT;
163 const VkFlags cmd_flags = 0;
164 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
165
166 cmd_size += vn_sizeof_VkDevice(&device);
167 cmd_size += vn_sizeof_simple_pointer(pCreateInfo);
168 if (pCreateInfo)
169 cmd_size += vn_sizeof_VkFenceCreateInfo(pCreateInfo);
170 cmd_size += vn_sizeof_simple_pointer(pAllocator);
171 if (pAllocator)
172 assert(false);
173 cmd_size += vn_sizeof_simple_pointer(pFence);
174 if (pFence)
175 cmd_size += vn_sizeof_VkFence(pFence);
176
177 return cmd_size;
178 }
179
vn_encode_vkCreateFence(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkFenceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)180 static inline void vn_encode_vkCreateFence(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence)
181 {
182 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateFence_EXT;
183
184 vn_encode_VkCommandTypeEXT(enc, &cmd_type);
185 vn_encode_VkFlags(enc, &cmd_flags);
186
187 vn_encode_VkDevice(enc, &device);
188 if (vn_encode_simple_pointer(enc, pCreateInfo))
189 vn_encode_VkFenceCreateInfo(enc, pCreateInfo);
190 if (vn_encode_simple_pointer(enc, pAllocator))
191 assert(false);
192 if (vn_encode_simple_pointer(enc, pFence))
193 vn_encode_VkFence(enc, pFence);
194 }
195
vn_sizeof_vkCreateFence_reply(VkDevice device,const VkFenceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)196 static inline size_t vn_sizeof_vkCreateFence_reply(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence)
197 {
198 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateFence_EXT;
199 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
200
201 VkResult ret;
202 cmd_size += vn_sizeof_VkResult(&ret);
203 /* skip device */
204 /* skip pCreateInfo */
205 /* skip pAllocator */
206 cmd_size += vn_sizeof_simple_pointer(pFence);
207 if (pFence)
208 cmd_size += vn_sizeof_VkFence(pFence);
209
210 return cmd_size;
211 }
212
vn_decode_vkCreateFence_reply(struct vn_cs_decoder * dec,VkDevice device,const VkFenceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)213 static inline VkResult vn_decode_vkCreateFence_reply(struct vn_cs_decoder *dec, VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence)
214 {
215 VkCommandTypeEXT command_type;
216 vn_decode_VkCommandTypeEXT(dec, &command_type);
217 assert(command_type == VK_COMMAND_TYPE_vkCreateFence_EXT);
218
219 VkResult ret;
220 vn_decode_VkResult(dec, &ret);
221 /* skip device */
222 /* skip pCreateInfo */
223 /* skip pAllocator */
224 if (vn_decode_simple_pointer(dec)) {
225 vn_decode_VkFence(dec, pFence);
226 } else {
227 pFence = NULL;
228 }
229
230 return ret;
231 }
232
vn_sizeof_vkDestroyFence(VkDevice device,VkFence fence,const VkAllocationCallbacks * pAllocator)233 static inline size_t vn_sizeof_vkDestroyFence(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator)
234 {
235 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyFence_EXT;
236 const VkFlags cmd_flags = 0;
237 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
238
239 cmd_size += vn_sizeof_VkDevice(&device);
240 cmd_size += vn_sizeof_VkFence(&fence);
241 cmd_size += vn_sizeof_simple_pointer(pAllocator);
242 if (pAllocator)
243 assert(false);
244
245 return cmd_size;
246 }
247
vn_encode_vkDestroyFence(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,VkFence fence,const VkAllocationCallbacks * pAllocator)248 static inline void vn_encode_vkDestroyFence(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator)
249 {
250 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyFence_EXT;
251
252 vn_encode_VkCommandTypeEXT(enc, &cmd_type);
253 vn_encode_VkFlags(enc, &cmd_flags);
254
255 vn_encode_VkDevice(enc, &device);
256 vn_encode_VkFence(enc, &fence);
257 if (vn_encode_simple_pointer(enc, pAllocator))
258 assert(false);
259 }
260
vn_sizeof_vkDestroyFence_reply(VkDevice device,VkFence fence,const VkAllocationCallbacks * pAllocator)261 static inline size_t vn_sizeof_vkDestroyFence_reply(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator)
262 {
263 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyFence_EXT;
264 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
265
266 /* skip device */
267 /* skip fence */
268 /* skip pAllocator */
269
270 return cmd_size;
271 }
272
vn_decode_vkDestroyFence_reply(struct vn_cs_decoder * dec,VkDevice device,VkFence fence,const VkAllocationCallbacks * pAllocator)273 static inline void vn_decode_vkDestroyFence_reply(struct vn_cs_decoder *dec, VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator)
274 {
275 VkCommandTypeEXT command_type;
276 vn_decode_VkCommandTypeEXT(dec, &command_type);
277 assert(command_type == VK_COMMAND_TYPE_vkDestroyFence_EXT);
278
279 /* skip device */
280 /* skip fence */
281 /* skip pAllocator */
282 }
283
vn_sizeof_vkResetFences(VkDevice device,uint32_t fenceCount,const VkFence * pFences)284 static inline size_t vn_sizeof_vkResetFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences)
285 {
286 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkResetFences_EXT;
287 const VkFlags cmd_flags = 0;
288 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
289
290 cmd_size += vn_sizeof_VkDevice(&device);
291 cmd_size += vn_sizeof_uint32_t(&fenceCount);
292 if (pFences) {
293 cmd_size += vn_sizeof_array_size(fenceCount);
294 for (uint32_t i = 0; i < fenceCount; i++)
295 cmd_size += vn_sizeof_VkFence(&pFences[i]);
296 } else {
297 cmd_size += vn_sizeof_array_size(0);
298 }
299
300 return cmd_size;
301 }
302
vn_encode_vkResetFences(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,uint32_t fenceCount,const VkFence * pFences)303 static inline void vn_encode_vkResetFences(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, uint32_t fenceCount, const VkFence* pFences)
304 {
305 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkResetFences_EXT;
306
307 vn_encode_VkCommandTypeEXT(enc, &cmd_type);
308 vn_encode_VkFlags(enc, &cmd_flags);
309
310 vn_encode_VkDevice(enc, &device);
311 vn_encode_uint32_t(enc, &fenceCount);
312 if (pFences) {
313 vn_encode_array_size(enc, fenceCount);
314 for (uint32_t i = 0; i < fenceCount; i++)
315 vn_encode_VkFence(enc, &pFences[i]);
316 } else {
317 vn_encode_array_size(enc, 0);
318 }
319 }
320
vn_sizeof_vkResetFences_reply(VkDevice device,uint32_t fenceCount,const VkFence * pFences)321 static inline size_t vn_sizeof_vkResetFences_reply(VkDevice device, uint32_t fenceCount, const VkFence* pFences)
322 {
323 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkResetFences_EXT;
324 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
325
326 VkResult ret;
327 cmd_size += vn_sizeof_VkResult(&ret);
328 /* skip device */
329 /* skip fenceCount */
330 /* skip pFences */
331
332 return cmd_size;
333 }
334
vn_decode_vkResetFences_reply(struct vn_cs_decoder * dec,VkDevice device,uint32_t fenceCount,const VkFence * pFences)335 static inline VkResult vn_decode_vkResetFences_reply(struct vn_cs_decoder *dec, VkDevice device, uint32_t fenceCount, const VkFence* pFences)
336 {
337 VkCommandTypeEXT command_type;
338 vn_decode_VkCommandTypeEXT(dec, &command_type);
339 assert(command_type == VK_COMMAND_TYPE_vkResetFences_EXT);
340
341 VkResult ret;
342 vn_decode_VkResult(dec, &ret);
343 /* skip device */
344 /* skip fenceCount */
345 /* skip pFences */
346
347 return ret;
348 }
349
vn_sizeof_vkGetFenceStatus(VkDevice device,VkFence fence)350 static inline size_t vn_sizeof_vkGetFenceStatus(VkDevice device, VkFence fence)
351 {
352 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetFenceStatus_EXT;
353 const VkFlags cmd_flags = 0;
354 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
355
356 cmd_size += vn_sizeof_VkDevice(&device);
357 cmd_size += vn_sizeof_VkFence(&fence);
358
359 return cmd_size;
360 }
361
vn_encode_vkGetFenceStatus(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,VkFence fence)362 static inline void vn_encode_vkGetFenceStatus(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkFence fence)
363 {
364 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetFenceStatus_EXT;
365
366 vn_encode_VkCommandTypeEXT(enc, &cmd_type);
367 vn_encode_VkFlags(enc, &cmd_flags);
368
369 vn_encode_VkDevice(enc, &device);
370 vn_encode_VkFence(enc, &fence);
371 }
372
vn_sizeof_vkGetFenceStatus_reply(VkDevice device,VkFence fence)373 static inline size_t vn_sizeof_vkGetFenceStatus_reply(VkDevice device, VkFence fence)
374 {
375 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkGetFenceStatus_EXT;
376 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
377
378 VkResult ret;
379 cmd_size += vn_sizeof_VkResult(&ret);
380 /* skip device */
381 /* skip fence */
382
383 return cmd_size;
384 }
385
vn_decode_vkGetFenceStatus_reply(struct vn_cs_decoder * dec,VkDevice device,VkFence fence)386 static inline VkResult vn_decode_vkGetFenceStatus_reply(struct vn_cs_decoder *dec, VkDevice device, VkFence fence)
387 {
388 VkCommandTypeEXT command_type;
389 vn_decode_VkCommandTypeEXT(dec, &command_type);
390 assert(command_type == VK_COMMAND_TYPE_vkGetFenceStatus_EXT);
391
392 VkResult ret;
393 vn_decode_VkResult(dec, &ret);
394 /* skip device */
395 /* skip fence */
396
397 return ret;
398 }
399
vn_sizeof_vkWaitForFences(VkDevice device,uint32_t fenceCount,const VkFence * pFences,VkBool32 waitAll,uint64_t timeout)400 static inline size_t vn_sizeof_vkWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout)
401 {
402 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWaitForFences_EXT;
403 const VkFlags cmd_flags = 0;
404 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
405
406 cmd_size += vn_sizeof_VkDevice(&device);
407 cmd_size += vn_sizeof_uint32_t(&fenceCount);
408 if (pFences) {
409 cmd_size += vn_sizeof_array_size(fenceCount);
410 for (uint32_t i = 0; i < fenceCount; i++)
411 cmd_size += vn_sizeof_VkFence(&pFences[i]);
412 } else {
413 cmd_size += vn_sizeof_array_size(0);
414 }
415 cmd_size += vn_sizeof_VkBool32(&waitAll);
416 cmd_size += vn_sizeof_uint64_t(&timeout);
417
418 return cmd_size;
419 }
420
vn_encode_vkWaitForFences(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,uint32_t fenceCount,const VkFence * pFences,VkBool32 waitAll,uint64_t timeout)421 static inline void vn_encode_vkWaitForFences(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout)
422 {
423 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWaitForFences_EXT;
424
425 vn_encode_VkCommandTypeEXT(enc, &cmd_type);
426 vn_encode_VkFlags(enc, &cmd_flags);
427
428 vn_encode_VkDevice(enc, &device);
429 vn_encode_uint32_t(enc, &fenceCount);
430 if (pFences) {
431 vn_encode_array_size(enc, fenceCount);
432 for (uint32_t i = 0; i < fenceCount; i++)
433 vn_encode_VkFence(enc, &pFences[i]);
434 } else {
435 vn_encode_array_size(enc, 0);
436 }
437 vn_encode_VkBool32(enc, &waitAll);
438 vn_encode_uint64_t(enc, &timeout);
439 }
440
vn_sizeof_vkWaitForFences_reply(VkDevice device,uint32_t fenceCount,const VkFence * pFences,VkBool32 waitAll,uint64_t timeout)441 static inline size_t vn_sizeof_vkWaitForFences_reply(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout)
442 {
443 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkWaitForFences_EXT;
444 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
445
446 VkResult ret;
447 cmd_size += vn_sizeof_VkResult(&ret);
448 /* skip device */
449 /* skip fenceCount */
450 /* skip pFences */
451 /* skip waitAll */
452 /* skip timeout */
453
454 return cmd_size;
455 }
456
vn_decode_vkWaitForFences_reply(struct vn_cs_decoder * dec,VkDevice device,uint32_t fenceCount,const VkFence * pFences,VkBool32 waitAll,uint64_t timeout)457 static inline VkResult vn_decode_vkWaitForFences_reply(struct vn_cs_decoder *dec, VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout)
458 {
459 VkCommandTypeEXT command_type;
460 vn_decode_VkCommandTypeEXT(dec, &command_type);
461 assert(command_type == VK_COMMAND_TYPE_vkWaitForFences_EXT);
462
463 VkResult ret;
464 vn_decode_VkResult(dec, &ret);
465 /* skip device */
466 /* skip fenceCount */
467 /* skip pFences */
468 /* skip waitAll */
469 /* skip timeout */
470
471 return ret;
472 }
473
vn_sizeof_vkResetFenceResourceMESA(VkDevice device,VkFence fence)474 static inline size_t vn_sizeof_vkResetFenceResourceMESA(VkDevice device, VkFence fence)
475 {
476 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkResetFenceResourceMESA_EXT;
477 const VkFlags cmd_flags = 0;
478 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
479
480 cmd_size += vn_sizeof_VkDevice(&device);
481 cmd_size += vn_sizeof_VkFence(&fence);
482
483 return cmd_size;
484 }
485
vn_encode_vkResetFenceResourceMESA(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,VkFence fence)486 static inline void vn_encode_vkResetFenceResourceMESA(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkFence fence)
487 {
488 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkResetFenceResourceMESA_EXT;
489
490 vn_encode_VkCommandTypeEXT(enc, &cmd_type);
491 vn_encode_VkFlags(enc, &cmd_flags);
492
493 vn_encode_VkDevice(enc, &device);
494 vn_encode_VkFence(enc, &fence);
495 }
496
vn_sizeof_vkResetFenceResourceMESA_reply(VkDevice device,VkFence fence)497 static inline size_t vn_sizeof_vkResetFenceResourceMESA_reply(VkDevice device, VkFence fence)
498 {
499 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkResetFenceResourceMESA_EXT;
500 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
501
502 /* skip device */
503 /* skip fence */
504
505 return cmd_size;
506 }
507
vn_decode_vkResetFenceResourceMESA_reply(struct vn_cs_decoder * dec,VkDevice device,VkFence fence)508 static inline void vn_decode_vkResetFenceResourceMESA_reply(struct vn_cs_decoder *dec, VkDevice device, VkFence fence)
509 {
510 VkCommandTypeEXT command_type;
511 vn_decode_VkCommandTypeEXT(dec, &command_type);
512 assert(command_type == VK_COMMAND_TYPE_vkResetFenceResourceMESA_EXT);
513
514 /* skip device */
515 /* skip fence */
516 }
517
vn_submit_vkCreateFence(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkFenceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence,struct vn_ring_submit_command * submit)518 static inline void vn_submit_vkCreateFence(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence, struct vn_ring_submit_command *submit)
519 {
520 uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
521 void *cmd_data = local_cmd_data;
522 size_t cmd_size = vn_sizeof_vkCreateFence(device, pCreateInfo, pAllocator, pFence);
523 if (cmd_size > sizeof(local_cmd_data)) {
524 cmd_data = malloc(cmd_size);
525 if (!cmd_data)
526 cmd_size = 0;
527 }
528 const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateFence_reply(device, pCreateInfo, pAllocator, pFence) : 0;
529
530 struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
531 if (cmd_size) {
532 vn_encode_vkCreateFence(enc, cmd_flags, device, pCreateInfo, pAllocator, pFence);
533 vn_ring_submit_command(vn_ring, submit);
534 if (cmd_data != local_cmd_data)
535 free(cmd_data);
536 }
537 }
538
vn_submit_vkDestroyFence(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,VkFence fence,const VkAllocationCallbacks * pAllocator,struct vn_ring_submit_command * submit)539 static inline void vn_submit_vkDestroyFence(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator, struct vn_ring_submit_command *submit)
540 {
541 uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
542 void *cmd_data = local_cmd_data;
543 size_t cmd_size = vn_sizeof_vkDestroyFence(device, fence, pAllocator);
544 if (cmd_size > sizeof(local_cmd_data)) {
545 cmd_data = malloc(cmd_size);
546 if (!cmd_data)
547 cmd_size = 0;
548 }
549 const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroyFence_reply(device, fence, pAllocator) : 0;
550
551 struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
552 if (cmd_size) {
553 vn_encode_vkDestroyFence(enc, cmd_flags, device, fence, pAllocator);
554 vn_ring_submit_command(vn_ring, submit);
555 if (cmd_data != local_cmd_data)
556 free(cmd_data);
557 }
558 }
559
vn_submit_vkResetFences(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,uint32_t fenceCount,const VkFence * pFences,struct vn_ring_submit_command * submit)560 static inline void vn_submit_vkResetFences(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, uint32_t fenceCount, const VkFence* pFences, struct vn_ring_submit_command *submit)
561 {
562 uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
563 void *cmd_data = local_cmd_data;
564 size_t cmd_size = vn_sizeof_vkResetFences(device, fenceCount, pFences);
565 if (cmd_size > sizeof(local_cmd_data)) {
566 cmd_data = malloc(cmd_size);
567 if (!cmd_data)
568 cmd_size = 0;
569 }
570 const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkResetFences_reply(device, fenceCount, pFences) : 0;
571
572 struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
573 if (cmd_size) {
574 vn_encode_vkResetFences(enc, cmd_flags, device, fenceCount, pFences);
575 vn_ring_submit_command(vn_ring, submit);
576 if (cmd_data != local_cmd_data)
577 free(cmd_data);
578 }
579 }
580
vn_submit_vkGetFenceStatus(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,VkFence fence,struct vn_ring_submit_command * submit)581 static inline void vn_submit_vkGetFenceStatus(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, VkFence fence, struct vn_ring_submit_command *submit)
582 {
583 uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
584 void *cmd_data = local_cmd_data;
585 size_t cmd_size = vn_sizeof_vkGetFenceStatus(device, fence);
586 if (cmd_size > sizeof(local_cmd_data)) {
587 cmd_data = malloc(cmd_size);
588 if (!cmd_data)
589 cmd_size = 0;
590 }
591 const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkGetFenceStatus_reply(device, fence) : 0;
592
593 struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
594 if (cmd_size) {
595 vn_encode_vkGetFenceStatus(enc, cmd_flags, device, fence);
596 vn_ring_submit_command(vn_ring, submit);
597 if (cmd_data != local_cmd_data)
598 free(cmd_data);
599 }
600 }
601
vn_submit_vkWaitForFences(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,uint32_t fenceCount,const VkFence * pFences,VkBool32 waitAll,uint64_t timeout,struct vn_ring_submit_command * submit)602 static inline void vn_submit_vkWaitForFences(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout, struct vn_ring_submit_command *submit)
603 {
604 uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
605 void *cmd_data = local_cmd_data;
606 size_t cmd_size = vn_sizeof_vkWaitForFences(device, fenceCount, pFences, waitAll, timeout);
607 if (cmd_size > sizeof(local_cmd_data)) {
608 cmd_data = malloc(cmd_size);
609 if (!cmd_data)
610 cmd_size = 0;
611 }
612 const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkWaitForFences_reply(device, fenceCount, pFences, waitAll, timeout) : 0;
613
614 struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
615 if (cmd_size) {
616 vn_encode_vkWaitForFences(enc, cmd_flags, device, fenceCount, pFences, waitAll, timeout);
617 vn_ring_submit_command(vn_ring, submit);
618 if (cmd_data != local_cmd_data)
619 free(cmd_data);
620 }
621 }
622
vn_submit_vkResetFenceResourceMESA(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,VkFence fence,struct vn_ring_submit_command * submit)623 static inline void vn_submit_vkResetFenceResourceMESA(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, VkFence fence, struct vn_ring_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_vkResetFenceResourceMESA(device, fence);
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_vkResetFenceResourceMESA_reply(device, fence) : 0;
634
635 struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
636 if (cmd_size) {
637 vn_encode_vkResetFenceResourceMESA(enc, cmd_flags, device, fence);
638 vn_ring_submit_command(vn_ring, submit);
639 if (cmd_data != local_cmd_data)
640 free(cmd_data);
641 }
642 }
643
vn_call_vkCreateFence(struct vn_ring * vn_ring,VkDevice device,const VkFenceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)644 static inline VkResult vn_call_vkCreateFence(struct vn_ring *vn_ring, VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence)
645 {
646 VN_TRACE_FUNC();
647
648 struct vn_ring_submit_command submit;
649 vn_submit_vkCreateFence(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pFence, &submit);
650 struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
651 if (dec) {
652 const VkResult ret = vn_decode_vkCreateFence_reply(dec, device, pCreateInfo, pAllocator, pFence);
653 vn_ring_free_command_reply(vn_ring, &submit);
654 return ret;
655 } else {
656 return VK_ERROR_OUT_OF_HOST_MEMORY;
657 }
658 }
659
vn_async_vkCreateFence(struct vn_ring * vn_ring,VkDevice device,const VkFenceCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)660 static inline void vn_async_vkCreateFence(struct vn_ring *vn_ring, VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence)
661 {
662 struct vn_ring_submit_command submit;
663 vn_submit_vkCreateFence(vn_ring, 0, device, pCreateInfo, pAllocator, pFence, &submit);
664 }
665
vn_call_vkDestroyFence(struct vn_ring * vn_ring,VkDevice device,VkFence fence,const VkAllocationCallbacks * pAllocator)666 static inline void vn_call_vkDestroyFence(struct vn_ring *vn_ring, VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator)
667 {
668 VN_TRACE_FUNC();
669
670 struct vn_ring_submit_command submit;
671 vn_submit_vkDestroyFence(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, fence, pAllocator, &submit);
672 struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
673 if (dec) {
674 vn_decode_vkDestroyFence_reply(dec, device, fence, pAllocator);
675 vn_ring_free_command_reply(vn_ring, &submit);
676 }
677 }
678
vn_async_vkDestroyFence(struct vn_ring * vn_ring,VkDevice device,VkFence fence,const VkAllocationCallbacks * pAllocator)679 static inline void vn_async_vkDestroyFence(struct vn_ring *vn_ring, VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator)
680 {
681 struct vn_ring_submit_command submit;
682 vn_submit_vkDestroyFence(vn_ring, 0, device, fence, pAllocator, &submit);
683 }
684
vn_call_vkResetFences(struct vn_ring * vn_ring,VkDevice device,uint32_t fenceCount,const VkFence * pFences)685 static inline VkResult vn_call_vkResetFences(struct vn_ring *vn_ring, VkDevice device, uint32_t fenceCount, const VkFence* pFences)
686 {
687 VN_TRACE_FUNC();
688
689 struct vn_ring_submit_command submit;
690 vn_submit_vkResetFences(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, fenceCount, pFences, &submit);
691 struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
692 if (dec) {
693 const VkResult ret = vn_decode_vkResetFences_reply(dec, device, fenceCount, pFences);
694 vn_ring_free_command_reply(vn_ring, &submit);
695 return ret;
696 } else {
697 return VK_ERROR_OUT_OF_HOST_MEMORY;
698 }
699 }
700
vn_async_vkResetFences(struct vn_ring * vn_ring,VkDevice device,uint32_t fenceCount,const VkFence * pFences)701 static inline void vn_async_vkResetFences(struct vn_ring *vn_ring, VkDevice device, uint32_t fenceCount, const VkFence* pFences)
702 {
703 struct vn_ring_submit_command submit;
704 vn_submit_vkResetFences(vn_ring, 0, device, fenceCount, pFences, &submit);
705 }
706
vn_call_vkGetFenceStatus(struct vn_ring * vn_ring,VkDevice device,VkFence fence)707 static inline VkResult vn_call_vkGetFenceStatus(struct vn_ring *vn_ring, VkDevice device, VkFence fence)
708 {
709 VN_TRACE_FUNC();
710
711 struct vn_ring_submit_command submit;
712 vn_submit_vkGetFenceStatus(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, fence, &submit);
713 struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
714 if (dec) {
715 const VkResult ret = vn_decode_vkGetFenceStatus_reply(dec, device, fence);
716 vn_ring_free_command_reply(vn_ring, &submit);
717 return ret;
718 } else {
719 return VK_ERROR_OUT_OF_HOST_MEMORY;
720 }
721 }
722
vn_async_vkGetFenceStatus(struct vn_ring * vn_ring,VkDevice device,VkFence fence)723 static inline void vn_async_vkGetFenceStatus(struct vn_ring *vn_ring, VkDevice device, VkFence fence)
724 {
725 struct vn_ring_submit_command submit;
726 vn_submit_vkGetFenceStatus(vn_ring, 0, device, fence, &submit);
727 }
728
vn_call_vkWaitForFences(struct vn_ring * vn_ring,VkDevice device,uint32_t fenceCount,const VkFence * pFences,VkBool32 waitAll,uint64_t timeout)729 static inline VkResult vn_call_vkWaitForFences(struct vn_ring *vn_ring, VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout)
730 {
731 VN_TRACE_FUNC();
732
733 struct vn_ring_submit_command submit;
734 vn_submit_vkWaitForFences(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, fenceCount, pFences, waitAll, timeout, &submit);
735 struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
736 if (dec) {
737 const VkResult ret = vn_decode_vkWaitForFences_reply(dec, device, fenceCount, pFences, waitAll, timeout);
738 vn_ring_free_command_reply(vn_ring, &submit);
739 return ret;
740 } else {
741 return VK_ERROR_OUT_OF_HOST_MEMORY;
742 }
743 }
744
vn_async_vkWaitForFences(struct vn_ring * vn_ring,VkDevice device,uint32_t fenceCount,const VkFence * pFences,VkBool32 waitAll,uint64_t timeout)745 static inline void vn_async_vkWaitForFences(struct vn_ring *vn_ring, VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout)
746 {
747 struct vn_ring_submit_command submit;
748 vn_submit_vkWaitForFences(vn_ring, 0, device, fenceCount, pFences, waitAll, timeout, &submit);
749 }
750
vn_call_vkResetFenceResourceMESA(struct vn_ring * vn_ring,VkDevice device,VkFence fence)751 static inline void vn_call_vkResetFenceResourceMESA(struct vn_ring *vn_ring, VkDevice device, VkFence fence)
752 {
753 VN_TRACE_FUNC();
754
755 struct vn_ring_submit_command submit;
756 vn_submit_vkResetFenceResourceMESA(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, fence, &submit);
757 struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
758 if (dec) {
759 vn_decode_vkResetFenceResourceMESA_reply(dec, device, fence);
760 vn_ring_free_command_reply(vn_ring, &submit);
761 }
762 }
763
vn_async_vkResetFenceResourceMESA(struct vn_ring * vn_ring,VkDevice device,VkFence fence)764 static inline void vn_async_vkResetFenceResourceMESA(struct vn_ring *vn_ring, VkDevice device, VkFence fence)
765 {
766 struct vn_ring_submit_command submit;
767 vn_submit_vkResetFenceResourceMESA(vn_ring, 0, device, fence, &submit);
768 }
769
770 #endif /* VN_PROTOCOL_DRIVER_FENCE_H */
771