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