• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* This file is generated by venus-protocol.  See vn_protocol_driver.h. */
2 
3 /*
4  * Copyright 2020 Google LLC
5  * SPDX-License-Identifier: MIT
6  */
7 
8 #ifndef VN_PROTOCOL_DRIVER_DESCRIPTOR_POOL_H
9 #define VN_PROTOCOL_DRIVER_DESCRIPTOR_POOL_H
10 
11 #include "vn_instance.h"
12 #include "vn_protocol_driver_structs.h"
13 
14 /* struct VkDescriptorPoolSize */
15 
16 static inline size_t
vn_sizeof_VkDescriptorPoolSize(const VkDescriptorPoolSize * val)17 vn_sizeof_VkDescriptorPoolSize(const VkDescriptorPoolSize *val)
18 {
19     size_t size = 0;
20     size += vn_sizeof_VkDescriptorType(&val->type);
21     size += vn_sizeof_uint32_t(&val->descriptorCount);
22     return size;
23 }
24 
25 static inline void
vn_encode_VkDescriptorPoolSize(struct vn_cs_encoder * enc,const VkDescriptorPoolSize * val)26 vn_encode_VkDescriptorPoolSize(struct vn_cs_encoder *enc, const VkDescriptorPoolSize *val)
27 {
28     vn_encode_VkDescriptorType(enc, &val->type);
29     vn_encode_uint32_t(enc, &val->descriptorCount);
30 }
31 
32 /* struct VkDescriptorPoolInlineUniformBlockCreateInfo chain */
33 
34 static inline size_t
vn_sizeof_VkDescriptorPoolInlineUniformBlockCreateInfo_pnext(const void * val)35 vn_sizeof_VkDescriptorPoolInlineUniformBlockCreateInfo_pnext(const void *val)
36 {
37     /* no known/supported struct */
38     return vn_sizeof_simple_pointer(NULL);
39 }
40 
41 static inline size_t
vn_sizeof_VkDescriptorPoolInlineUniformBlockCreateInfo_self(const VkDescriptorPoolInlineUniformBlockCreateInfo * val)42 vn_sizeof_VkDescriptorPoolInlineUniformBlockCreateInfo_self(const VkDescriptorPoolInlineUniformBlockCreateInfo *val)
43 {
44     size_t size = 0;
45     /* skip val->{sType,pNext} */
46     size += vn_sizeof_uint32_t(&val->maxInlineUniformBlockBindings);
47     return size;
48 }
49 
50 static inline size_t
vn_sizeof_VkDescriptorPoolInlineUniformBlockCreateInfo(const VkDescriptorPoolInlineUniformBlockCreateInfo * val)51 vn_sizeof_VkDescriptorPoolInlineUniformBlockCreateInfo(const VkDescriptorPoolInlineUniformBlockCreateInfo *val)
52 {
53     size_t size = 0;
54 
55     size += vn_sizeof_VkStructureType(&val->sType);
56     size += vn_sizeof_VkDescriptorPoolInlineUniformBlockCreateInfo_pnext(val->pNext);
57     size += vn_sizeof_VkDescriptorPoolInlineUniformBlockCreateInfo_self(val);
58 
59     return size;
60 }
61 
62 static inline void
vn_encode_VkDescriptorPoolInlineUniformBlockCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)63 vn_encode_VkDescriptorPoolInlineUniformBlockCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
64 {
65     /* no known/supported struct */
66     vn_encode_simple_pointer(enc, NULL);
67 }
68 
69 static inline void
vn_encode_VkDescriptorPoolInlineUniformBlockCreateInfo_self(struct vn_cs_encoder * enc,const VkDescriptorPoolInlineUniformBlockCreateInfo * val)70 vn_encode_VkDescriptorPoolInlineUniformBlockCreateInfo_self(struct vn_cs_encoder *enc, const VkDescriptorPoolInlineUniformBlockCreateInfo *val)
71 {
72     /* skip val->{sType,pNext} */
73     vn_encode_uint32_t(enc, &val->maxInlineUniformBlockBindings);
74 }
75 
76 static inline void
vn_encode_VkDescriptorPoolInlineUniformBlockCreateInfo(struct vn_cs_encoder * enc,const VkDescriptorPoolInlineUniformBlockCreateInfo * val)77 vn_encode_VkDescriptorPoolInlineUniformBlockCreateInfo(struct vn_cs_encoder *enc, const VkDescriptorPoolInlineUniformBlockCreateInfo *val)
78 {
79     assert(val->sType == VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO);
80     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO });
81     vn_encode_VkDescriptorPoolInlineUniformBlockCreateInfo_pnext(enc, val->pNext);
82     vn_encode_VkDescriptorPoolInlineUniformBlockCreateInfo_self(enc, val);
83 }
84 
85 /* struct VkDescriptorPoolCreateInfo chain */
86 
87 static inline size_t
vn_sizeof_VkDescriptorPoolCreateInfo_pnext(const void * val)88 vn_sizeof_VkDescriptorPoolCreateInfo_pnext(const void *val)
89 {
90     const VkBaseInStructure *pnext = val;
91     size_t size = 0;
92 
93     while (pnext) {
94         switch ((int32_t)pnext->sType) {
95         case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO:
96             if (!vn_cs_renderer_protocol_has_extension(139 /* VK_EXT_inline_uniform_block */))
97                 break;
98             size += vn_sizeof_simple_pointer(pnext);
99             size += vn_sizeof_VkStructureType(&pnext->sType);
100             size += vn_sizeof_VkDescriptorPoolCreateInfo_pnext(pnext->pNext);
101             size += vn_sizeof_VkDescriptorPoolInlineUniformBlockCreateInfo_self((const VkDescriptorPoolInlineUniformBlockCreateInfo *)pnext);
102             return size;
103         default:
104             /* ignore unknown/unsupported struct */
105             break;
106         }
107         pnext = pnext->pNext;
108     }
109 
110     return vn_sizeof_simple_pointer(NULL);
111 }
112 
113 static inline size_t
vn_sizeof_VkDescriptorPoolCreateInfo_self(const VkDescriptorPoolCreateInfo * val)114 vn_sizeof_VkDescriptorPoolCreateInfo_self(const VkDescriptorPoolCreateInfo *val)
115 {
116     size_t size = 0;
117     /* skip val->{sType,pNext} */
118     size += vn_sizeof_VkFlags(&val->flags);
119     size += vn_sizeof_uint32_t(&val->maxSets);
120     size += vn_sizeof_uint32_t(&val->poolSizeCount);
121     if (val->pPoolSizes) {
122         size += vn_sizeof_array_size(val->poolSizeCount);
123         for (uint32_t i = 0; i < val->poolSizeCount; i++)
124             size += vn_sizeof_VkDescriptorPoolSize(&val->pPoolSizes[i]);
125     } else {
126         size += vn_sizeof_array_size(0);
127     }
128     return size;
129 }
130 
131 static inline size_t
vn_sizeof_VkDescriptorPoolCreateInfo(const VkDescriptorPoolCreateInfo * val)132 vn_sizeof_VkDescriptorPoolCreateInfo(const VkDescriptorPoolCreateInfo *val)
133 {
134     size_t size = 0;
135 
136     size += vn_sizeof_VkStructureType(&val->sType);
137     size += vn_sizeof_VkDescriptorPoolCreateInfo_pnext(val->pNext);
138     size += vn_sizeof_VkDescriptorPoolCreateInfo_self(val);
139 
140     return size;
141 }
142 
143 static inline void
vn_encode_VkDescriptorPoolCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)144 vn_encode_VkDescriptorPoolCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
145 {
146     const VkBaseInStructure *pnext = val;
147 
148     while (pnext) {
149         switch ((int32_t)pnext->sType) {
150         case VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO:
151             if (!vn_cs_renderer_protocol_has_extension(139 /* VK_EXT_inline_uniform_block */))
152                 break;
153             vn_encode_simple_pointer(enc, pnext);
154             vn_encode_VkStructureType(enc, &pnext->sType);
155             vn_encode_VkDescriptorPoolCreateInfo_pnext(enc, pnext->pNext);
156             vn_encode_VkDescriptorPoolInlineUniformBlockCreateInfo_self(enc, (const VkDescriptorPoolInlineUniformBlockCreateInfo *)pnext);
157             return;
158         default:
159             /* ignore unknown/unsupported struct */
160             break;
161         }
162         pnext = pnext->pNext;
163     }
164 
165     vn_encode_simple_pointer(enc, NULL);
166 }
167 
168 static inline void
vn_encode_VkDescriptorPoolCreateInfo_self(struct vn_cs_encoder * enc,const VkDescriptorPoolCreateInfo * val)169 vn_encode_VkDescriptorPoolCreateInfo_self(struct vn_cs_encoder *enc, const VkDescriptorPoolCreateInfo *val)
170 {
171     /* skip val->{sType,pNext} */
172     vn_encode_VkFlags(enc, &val->flags);
173     vn_encode_uint32_t(enc, &val->maxSets);
174     vn_encode_uint32_t(enc, &val->poolSizeCount);
175     if (val->pPoolSizes) {
176         vn_encode_array_size(enc, val->poolSizeCount);
177         for (uint32_t i = 0; i < val->poolSizeCount; i++)
178             vn_encode_VkDescriptorPoolSize(enc, &val->pPoolSizes[i]);
179     } else {
180         vn_encode_array_size(enc, 0);
181     }
182 }
183 
184 static inline void
vn_encode_VkDescriptorPoolCreateInfo(struct vn_cs_encoder * enc,const VkDescriptorPoolCreateInfo * val)185 vn_encode_VkDescriptorPoolCreateInfo(struct vn_cs_encoder *enc, const VkDescriptorPoolCreateInfo *val)
186 {
187     assert(val->sType == VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO);
188     vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO });
189     vn_encode_VkDescriptorPoolCreateInfo_pnext(enc, val->pNext);
190     vn_encode_VkDescriptorPoolCreateInfo_self(enc, val);
191 }
192 
vn_sizeof_vkCreateDescriptorPool(VkDevice device,const VkDescriptorPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorPool * pDescriptorPool)193 static inline size_t vn_sizeof_vkCreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool)
194 {
195     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateDescriptorPool_EXT;
196     const VkFlags cmd_flags = 0;
197     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
198 
199     cmd_size += vn_sizeof_VkDevice(&device);
200     cmd_size += vn_sizeof_simple_pointer(pCreateInfo);
201     if (pCreateInfo)
202         cmd_size += vn_sizeof_VkDescriptorPoolCreateInfo(pCreateInfo);
203     cmd_size += vn_sizeof_simple_pointer(pAllocator);
204     if (pAllocator)
205         assert(false);
206     cmd_size += vn_sizeof_simple_pointer(pDescriptorPool);
207     if (pDescriptorPool)
208         cmd_size += vn_sizeof_VkDescriptorPool(pDescriptorPool);
209 
210     return cmd_size;
211 }
212 
vn_encode_vkCreateDescriptorPool(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkDescriptorPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorPool * pDescriptorPool)213 static inline void vn_encode_vkCreateDescriptorPool(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool)
214 {
215     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateDescriptorPool_EXT;
216 
217     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
218     vn_encode_VkFlags(enc, &cmd_flags);
219 
220     vn_encode_VkDevice(enc, &device);
221     if (vn_encode_simple_pointer(enc, pCreateInfo))
222         vn_encode_VkDescriptorPoolCreateInfo(enc, pCreateInfo);
223     if (vn_encode_simple_pointer(enc, pAllocator))
224         assert(false);
225     if (vn_encode_simple_pointer(enc, pDescriptorPool))
226         vn_encode_VkDescriptorPool(enc, pDescriptorPool);
227 }
228 
vn_sizeof_vkCreateDescriptorPool_reply(VkDevice device,const VkDescriptorPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorPool * pDescriptorPool)229 static inline size_t vn_sizeof_vkCreateDescriptorPool_reply(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool)
230 {
231     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateDescriptorPool_EXT;
232     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
233 
234     VkResult ret;
235     cmd_size += vn_sizeof_VkResult(&ret);
236     /* skip device */
237     /* skip pCreateInfo */
238     /* skip pAllocator */
239     cmd_size += vn_sizeof_simple_pointer(pDescriptorPool);
240     if (pDescriptorPool)
241         cmd_size += vn_sizeof_VkDescriptorPool(pDescriptorPool);
242 
243     return cmd_size;
244 }
245 
vn_decode_vkCreateDescriptorPool_reply(struct vn_cs_decoder * dec,VkDevice device,const VkDescriptorPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorPool * pDescriptorPool)246 static inline VkResult vn_decode_vkCreateDescriptorPool_reply(struct vn_cs_decoder *dec, VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool)
247 {
248     VkCommandTypeEXT command_type;
249     vn_decode_VkCommandTypeEXT(dec, &command_type);
250     assert(command_type == VK_COMMAND_TYPE_vkCreateDescriptorPool_EXT);
251 
252     VkResult ret;
253     vn_decode_VkResult(dec, &ret);
254     /* skip device */
255     /* skip pCreateInfo */
256     /* skip pAllocator */
257     if (vn_decode_simple_pointer(dec)) {
258         vn_decode_VkDescriptorPool(dec, pDescriptorPool);
259     } else {
260         pDescriptorPool = NULL;
261     }
262 
263     return ret;
264 }
265 
vn_sizeof_vkDestroyDescriptorPool(VkDevice device,VkDescriptorPool descriptorPool,const VkAllocationCallbacks * pAllocator)266 static inline size_t vn_sizeof_vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator)
267 {
268     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyDescriptorPool_EXT;
269     const VkFlags cmd_flags = 0;
270     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
271 
272     cmd_size += vn_sizeof_VkDevice(&device);
273     cmd_size += vn_sizeof_VkDescriptorPool(&descriptorPool);
274     cmd_size += vn_sizeof_simple_pointer(pAllocator);
275     if (pAllocator)
276         assert(false);
277 
278     return cmd_size;
279 }
280 
vn_encode_vkDestroyDescriptorPool(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,VkDescriptorPool descriptorPool,const VkAllocationCallbacks * pAllocator)281 static inline void vn_encode_vkDestroyDescriptorPool(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator)
282 {
283     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyDescriptorPool_EXT;
284 
285     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
286     vn_encode_VkFlags(enc, &cmd_flags);
287 
288     vn_encode_VkDevice(enc, &device);
289     vn_encode_VkDescriptorPool(enc, &descriptorPool);
290     if (vn_encode_simple_pointer(enc, pAllocator))
291         assert(false);
292 }
293 
vn_sizeof_vkDestroyDescriptorPool_reply(VkDevice device,VkDescriptorPool descriptorPool,const VkAllocationCallbacks * pAllocator)294 static inline size_t vn_sizeof_vkDestroyDescriptorPool_reply(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator)
295 {
296     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyDescriptorPool_EXT;
297     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
298 
299     /* skip device */
300     /* skip descriptorPool */
301     /* skip pAllocator */
302 
303     return cmd_size;
304 }
305 
vn_decode_vkDestroyDescriptorPool_reply(struct vn_cs_decoder * dec,VkDevice device,VkDescriptorPool descriptorPool,const VkAllocationCallbacks * pAllocator)306 static inline void vn_decode_vkDestroyDescriptorPool_reply(struct vn_cs_decoder *dec, VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator)
307 {
308     VkCommandTypeEXT command_type;
309     vn_decode_VkCommandTypeEXT(dec, &command_type);
310     assert(command_type == VK_COMMAND_TYPE_vkDestroyDescriptorPool_EXT);
311 
312     /* skip device */
313     /* skip descriptorPool */
314     /* skip pAllocator */
315 }
316 
vn_sizeof_vkResetDescriptorPool(VkDevice device,VkDescriptorPool descriptorPool,VkDescriptorPoolResetFlags flags)317 static inline size_t vn_sizeof_vkResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags)
318 {
319     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkResetDescriptorPool_EXT;
320     const VkFlags cmd_flags = 0;
321     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
322 
323     cmd_size += vn_sizeof_VkDevice(&device);
324     cmd_size += vn_sizeof_VkDescriptorPool(&descriptorPool);
325     cmd_size += vn_sizeof_VkFlags(&flags);
326 
327     return cmd_size;
328 }
329 
vn_encode_vkResetDescriptorPool(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,VkDescriptorPool descriptorPool,VkDescriptorPoolResetFlags flags)330 static inline void vn_encode_vkResetDescriptorPool(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags)
331 {
332     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkResetDescriptorPool_EXT;
333 
334     vn_encode_VkCommandTypeEXT(enc, &cmd_type);
335     vn_encode_VkFlags(enc, &cmd_flags);
336 
337     vn_encode_VkDevice(enc, &device);
338     vn_encode_VkDescriptorPool(enc, &descriptorPool);
339     vn_encode_VkFlags(enc, &flags);
340 }
341 
vn_sizeof_vkResetDescriptorPool_reply(VkDevice device,VkDescriptorPool descriptorPool,VkDescriptorPoolResetFlags flags)342 static inline size_t vn_sizeof_vkResetDescriptorPool_reply(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags)
343 {
344     const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkResetDescriptorPool_EXT;
345     size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
346 
347     VkResult ret;
348     cmd_size += vn_sizeof_VkResult(&ret);
349     /* skip device */
350     /* skip descriptorPool */
351     /* skip flags */
352 
353     return cmd_size;
354 }
355 
vn_decode_vkResetDescriptorPool_reply(struct vn_cs_decoder * dec,VkDevice device,VkDescriptorPool descriptorPool,VkDescriptorPoolResetFlags flags)356 static inline VkResult vn_decode_vkResetDescriptorPool_reply(struct vn_cs_decoder *dec, VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags)
357 {
358     VkCommandTypeEXT command_type;
359     vn_decode_VkCommandTypeEXT(dec, &command_type);
360     assert(command_type == VK_COMMAND_TYPE_vkResetDescriptorPool_EXT);
361 
362     VkResult ret;
363     vn_decode_VkResult(dec, &ret);
364     /* skip device */
365     /* skip descriptorPool */
366     /* skip flags */
367 
368     return ret;
369 }
370 
vn_submit_vkCreateDescriptorPool(struct vn_instance * vn_instance,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkDescriptorPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorPool * pDescriptorPool,struct vn_instance_submit_command * submit)371 static inline void vn_submit_vkCreateDescriptorPool(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool, struct vn_instance_submit_command *submit)
372 {
373     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
374     void *cmd_data = local_cmd_data;
375     size_t cmd_size = vn_sizeof_vkCreateDescriptorPool(device, pCreateInfo, pAllocator, pDescriptorPool);
376     if (cmd_size > sizeof(local_cmd_data)) {
377         cmd_data = malloc(cmd_size);
378         if (!cmd_data)
379             cmd_size = 0;
380     }
381     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateDescriptorPool_reply(device, pCreateInfo, pAllocator, pDescriptorPool) : 0;
382 
383     struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
384     if (cmd_size) {
385         vn_encode_vkCreateDescriptorPool(enc, cmd_flags, device, pCreateInfo, pAllocator, pDescriptorPool);
386         vn_instance_submit_command(vn_instance, submit);
387         if (cmd_data != local_cmd_data)
388             free(cmd_data);
389     }
390 }
391 
vn_submit_vkDestroyDescriptorPool(struct vn_instance * vn_instance,VkCommandFlagsEXT cmd_flags,VkDevice device,VkDescriptorPool descriptorPool,const VkAllocationCallbacks * pAllocator,struct vn_instance_submit_command * submit)392 static inline void vn_submit_vkDestroyDescriptorPool(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator, struct vn_instance_submit_command *submit)
393 {
394     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
395     void *cmd_data = local_cmd_data;
396     size_t cmd_size = vn_sizeof_vkDestroyDescriptorPool(device, descriptorPool, pAllocator);
397     if (cmd_size > sizeof(local_cmd_data)) {
398         cmd_data = malloc(cmd_size);
399         if (!cmd_data)
400             cmd_size = 0;
401     }
402     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroyDescriptorPool_reply(device, descriptorPool, pAllocator) : 0;
403 
404     struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
405     if (cmd_size) {
406         vn_encode_vkDestroyDescriptorPool(enc, cmd_flags, device, descriptorPool, pAllocator);
407         vn_instance_submit_command(vn_instance, submit);
408         if (cmd_data != local_cmd_data)
409             free(cmd_data);
410     }
411 }
412 
vn_submit_vkResetDescriptorPool(struct vn_instance * vn_instance,VkCommandFlagsEXT cmd_flags,VkDevice device,VkDescriptorPool descriptorPool,VkDescriptorPoolResetFlags flags,struct vn_instance_submit_command * submit)413 static inline void vn_submit_vkResetDescriptorPool(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags, struct vn_instance_submit_command *submit)
414 {
415     uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
416     void *cmd_data = local_cmd_data;
417     size_t cmd_size = vn_sizeof_vkResetDescriptorPool(device, descriptorPool, flags);
418     if (cmd_size > sizeof(local_cmd_data)) {
419         cmd_data = malloc(cmd_size);
420         if (!cmd_data)
421             cmd_size = 0;
422     }
423     const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkResetDescriptorPool_reply(device, descriptorPool, flags) : 0;
424 
425     struct vn_cs_encoder *enc = vn_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
426     if (cmd_size) {
427         vn_encode_vkResetDescriptorPool(enc, cmd_flags, device, descriptorPool, flags);
428         vn_instance_submit_command(vn_instance, submit);
429         if (cmd_data != local_cmd_data)
430             free(cmd_data);
431     }
432 }
433 
vn_call_vkCreateDescriptorPool(struct vn_instance * vn_instance,VkDevice device,const VkDescriptorPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorPool * pDescriptorPool)434 static inline VkResult vn_call_vkCreateDescriptorPool(struct vn_instance *vn_instance, VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool)
435 {
436     VN_TRACE_FUNC();
437 
438     struct vn_instance_submit_command submit;
439     vn_submit_vkCreateDescriptorPool(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pDescriptorPool, &submit);
440     struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
441     if (dec) {
442         const VkResult ret = vn_decode_vkCreateDescriptorPool_reply(dec, device, pCreateInfo, pAllocator, pDescriptorPool);
443         vn_instance_free_command_reply(vn_instance, &submit);
444         return ret;
445     } else {
446         return VK_ERROR_OUT_OF_HOST_MEMORY;
447     }
448 }
449 
vn_async_vkCreateDescriptorPool(struct vn_instance * vn_instance,VkDevice device,const VkDescriptorPoolCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorPool * pDescriptorPool)450 static inline void vn_async_vkCreateDescriptorPool(struct vn_instance *vn_instance, VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool)
451 {
452     struct vn_instance_submit_command submit;
453     vn_submit_vkCreateDescriptorPool(vn_instance, 0, device, pCreateInfo, pAllocator, pDescriptorPool, &submit);
454 }
455 
vn_call_vkDestroyDescriptorPool(struct vn_instance * vn_instance,VkDevice device,VkDescriptorPool descriptorPool,const VkAllocationCallbacks * pAllocator)456 static inline void vn_call_vkDestroyDescriptorPool(struct vn_instance *vn_instance, VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator)
457 {
458     VN_TRACE_FUNC();
459 
460     struct vn_instance_submit_command submit;
461     vn_submit_vkDestroyDescriptorPool(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, descriptorPool, pAllocator, &submit);
462     struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
463     if (dec) {
464         vn_decode_vkDestroyDescriptorPool_reply(dec, device, descriptorPool, pAllocator);
465         vn_instance_free_command_reply(vn_instance, &submit);
466     }
467 }
468 
vn_async_vkDestroyDescriptorPool(struct vn_instance * vn_instance,VkDevice device,VkDescriptorPool descriptorPool,const VkAllocationCallbacks * pAllocator)469 static inline void vn_async_vkDestroyDescriptorPool(struct vn_instance *vn_instance, VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator)
470 {
471     struct vn_instance_submit_command submit;
472     vn_submit_vkDestroyDescriptorPool(vn_instance, 0, device, descriptorPool, pAllocator, &submit);
473 }
474 
vn_call_vkResetDescriptorPool(struct vn_instance * vn_instance,VkDevice device,VkDescriptorPool descriptorPool,VkDescriptorPoolResetFlags flags)475 static inline VkResult vn_call_vkResetDescriptorPool(struct vn_instance *vn_instance, VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags)
476 {
477     VN_TRACE_FUNC();
478 
479     struct vn_instance_submit_command submit;
480     vn_submit_vkResetDescriptorPool(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, descriptorPool, flags, &submit);
481     struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
482     if (dec) {
483         const VkResult ret = vn_decode_vkResetDescriptorPool_reply(dec, device, descriptorPool, flags);
484         vn_instance_free_command_reply(vn_instance, &submit);
485         return ret;
486     } else {
487         return VK_ERROR_OUT_OF_HOST_MEMORY;
488     }
489 }
490 
vn_async_vkResetDescriptorPool(struct vn_instance * vn_instance,VkDevice device,VkDescriptorPool descriptorPool,VkDescriptorPoolResetFlags flags)491 static inline void vn_async_vkResetDescriptorPool(struct vn_instance *vn_instance, VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags)
492 {
493     struct vn_instance_submit_command submit;
494     vn_submit_vkResetDescriptorPool(vn_instance, 0, device, descriptorPool, flags, &submit);
495 }
496 
497 #endif /* VN_PROTOCOL_DRIVER_DESCRIPTOR_POOL_H */
498