xref: /aosp_15_r20/external/mesa3d/src/virtio/venus-protocol/vn_protocol_driver_fence.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
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