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_UPDATE_TEMPLATE_H
9 #define VN_PROTOCOL_DRIVER_DESCRIPTOR_UPDATE_TEMPLATE_H
10
11 #include "vn_ring.h"
12 #include "vn_protocol_driver_structs.h"
13
14 /* struct VkDescriptorUpdateTemplateEntry */
15
16 static inline size_t
vn_sizeof_VkDescriptorUpdateTemplateEntry(const VkDescriptorUpdateTemplateEntry * val)17 vn_sizeof_VkDescriptorUpdateTemplateEntry(const VkDescriptorUpdateTemplateEntry *val)
18 {
19 size_t size = 0;
20 size += vn_sizeof_uint32_t(&val->dstBinding);
21 size += vn_sizeof_uint32_t(&val->dstArrayElement);
22 size += vn_sizeof_uint32_t(&val->descriptorCount);
23 size += vn_sizeof_VkDescriptorType(&val->descriptorType);
24 size += vn_sizeof_size_t(&val->offset);
25 size += vn_sizeof_size_t(&val->stride);
26 return size;
27 }
28
29 static inline void
vn_encode_VkDescriptorUpdateTemplateEntry(struct vn_cs_encoder * enc,const VkDescriptorUpdateTemplateEntry * val)30 vn_encode_VkDescriptorUpdateTemplateEntry(struct vn_cs_encoder *enc, const VkDescriptorUpdateTemplateEntry *val)
31 {
32 vn_encode_uint32_t(enc, &val->dstBinding);
33 vn_encode_uint32_t(enc, &val->dstArrayElement);
34 vn_encode_uint32_t(enc, &val->descriptorCount);
35 vn_encode_VkDescriptorType(enc, &val->descriptorType);
36 vn_encode_size_t(enc, &val->offset);
37 vn_encode_size_t(enc, &val->stride);
38 }
39
40 /* struct VkDescriptorUpdateTemplateCreateInfo chain */
41
42 static inline size_t
vn_sizeof_VkDescriptorUpdateTemplateCreateInfo_pnext(const void * val)43 vn_sizeof_VkDescriptorUpdateTemplateCreateInfo_pnext(const void *val)
44 {
45 /* no known/supported struct */
46 return vn_sizeof_simple_pointer(NULL);
47 }
48
49 static inline size_t
vn_sizeof_VkDescriptorUpdateTemplateCreateInfo_self(const VkDescriptorUpdateTemplateCreateInfo * val)50 vn_sizeof_VkDescriptorUpdateTemplateCreateInfo_self(const VkDescriptorUpdateTemplateCreateInfo *val)
51 {
52 size_t size = 0;
53 /* skip val->{sType,pNext} */
54 size += vn_sizeof_VkFlags(&val->flags);
55 size += vn_sizeof_uint32_t(&val->descriptorUpdateEntryCount);
56 if (val->pDescriptorUpdateEntries) {
57 size += vn_sizeof_array_size(val->descriptorUpdateEntryCount);
58 for (uint32_t i = 0; i < val->descriptorUpdateEntryCount; i++)
59 size += vn_sizeof_VkDescriptorUpdateTemplateEntry(&val->pDescriptorUpdateEntries[i]);
60 } else {
61 size += vn_sizeof_array_size(0);
62 }
63 size += vn_sizeof_VkDescriptorUpdateTemplateType(&val->templateType);
64 size += vn_sizeof_VkDescriptorSetLayout(&val->descriptorSetLayout);
65 size += vn_sizeof_VkPipelineBindPoint(&val->pipelineBindPoint);
66 size += vn_sizeof_VkPipelineLayout(&val->pipelineLayout);
67 size += vn_sizeof_uint32_t(&val->set);
68 return size;
69 }
70
71 static inline size_t
vn_sizeof_VkDescriptorUpdateTemplateCreateInfo(const VkDescriptorUpdateTemplateCreateInfo * val)72 vn_sizeof_VkDescriptorUpdateTemplateCreateInfo(const VkDescriptorUpdateTemplateCreateInfo *val)
73 {
74 size_t size = 0;
75
76 size += vn_sizeof_VkStructureType(&val->sType);
77 size += vn_sizeof_VkDescriptorUpdateTemplateCreateInfo_pnext(val->pNext);
78 size += vn_sizeof_VkDescriptorUpdateTemplateCreateInfo_self(val);
79
80 return size;
81 }
82
83 static inline void
vn_encode_VkDescriptorUpdateTemplateCreateInfo_pnext(struct vn_cs_encoder * enc,const void * val)84 vn_encode_VkDescriptorUpdateTemplateCreateInfo_pnext(struct vn_cs_encoder *enc, const void *val)
85 {
86 /* no known/supported struct */
87 vn_encode_simple_pointer(enc, NULL);
88 }
89
90 static inline void
vn_encode_VkDescriptorUpdateTemplateCreateInfo_self(struct vn_cs_encoder * enc,const VkDescriptorUpdateTemplateCreateInfo * val)91 vn_encode_VkDescriptorUpdateTemplateCreateInfo_self(struct vn_cs_encoder *enc, const VkDescriptorUpdateTemplateCreateInfo *val)
92 {
93 /* skip val->{sType,pNext} */
94 vn_encode_VkFlags(enc, &val->flags);
95 vn_encode_uint32_t(enc, &val->descriptorUpdateEntryCount);
96 if (val->pDescriptorUpdateEntries) {
97 vn_encode_array_size(enc, val->descriptorUpdateEntryCount);
98 for (uint32_t i = 0; i < val->descriptorUpdateEntryCount; i++)
99 vn_encode_VkDescriptorUpdateTemplateEntry(enc, &val->pDescriptorUpdateEntries[i]);
100 } else {
101 vn_encode_array_size(enc, 0);
102 }
103 vn_encode_VkDescriptorUpdateTemplateType(enc, &val->templateType);
104 vn_encode_VkDescriptorSetLayout(enc, &val->descriptorSetLayout);
105 vn_encode_VkPipelineBindPoint(enc, &val->pipelineBindPoint);
106 vn_encode_VkPipelineLayout(enc, &val->pipelineLayout);
107 vn_encode_uint32_t(enc, &val->set);
108 }
109
110 static inline void
vn_encode_VkDescriptorUpdateTemplateCreateInfo(struct vn_cs_encoder * enc,const VkDescriptorUpdateTemplateCreateInfo * val)111 vn_encode_VkDescriptorUpdateTemplateCreateInfo(struct vn_cs_encoder *enc, const VkDescriptorUpdateTemplateCreateInfo *val)
112 {
113 assert(val->sType == VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO);
114 vn_encode_VkStructureType(enc, &(VkStructureType){ VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO });
115 vn_encode_VkDescriptorUpdateTemplateCreateInfo_pnext(enc, val->pNext);
116 vn_encode_VkDescriptorUpdateTemplateCreateInfo_self(enc, val);
117 }
118
vn_sizeof_vkCreateDescriptorUpdateTemplate(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)119 static inline size_t vn_sizeof_vkCreateDescriptorUpdateTemplate(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
120 {
121 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateDescriptorUpdateTemplate_EXT;
122 const VkFlags cmd_flags = 0;
123 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
124
125 cmd_size += vn_sizeof_VkDevice(&device);
126 cmd_size += vn_sizeof_simple_pointer(pCreateInfo);
127 if (pCreateInfo)
128 cmd_size += vn_sizeof_VkDescriptorUpdateTemplateCreateInfo(pCreateInfo);
129 cmd_size += vn_sizeof_simple_pointer(pAllocator);
130 if (pAllocator)
131 assert(false);
132 cmd_size += vn_sizeof_simple_pointer(pDescriptorUpdateTemplate);
133 if (pDescriptorUpdateTemplate)
134 cmd_size += vn_sizeof_VkDescriptorUpdateTemplate(pDescriptorUpdateTemplate);
135
136 return cmd_size;
137 }
138
vn_encode_vkCreateDescriptorUpdateTemplate(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)139 static inline void vn_encode_vkCreateDescriptorUpdateTemplate(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
140 {
141 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateDescriptorUpdateTemplate_EXT;
142
143 vn_encode_VkCommandTypeEXT(enc, &cmd_type);
144 vn_encode_VkFlags(enc, &cmd_flags);
145
146 vn_encode_VkDevice(enc, &device);
147 if (vn_encode_simple_pointer(enc, pCreateInfo))
148 vn_encode_VkDescriptorUpdateTemplateCreateInfo(enc, pCreateInfo);
149 if (vn_encode_simple_pointer(enc, pAllocator))
150 assert(false);
151 if (vn_encode_simple_pointer(enc, pDescriptorUpdateTemplate))
152 vn_encode_VkDescriptorUpdateTemplate(enc, pDescriptorUpdateTemplate);
153 }
154
vn_sizeof_vkCreateDescriptorUpdateTemplate_reply(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)155 static inline size_t vn_sizeof_vkCreateDescriptorUpdateTemplate_reply(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
156 {
157 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkCreateDescriptorUpdateTemplate_EXT;
158 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
159
160 VkResult ret;
161 cmd_size += vn_sizeof_VkResult(&ret);
162 /* skip device */
163 /* skip pCreateInfo */
164 /* skip pAllocator */
165 cmd_size += vn_sizeof_simple_pointer(pDescriptorUpdateTemplate);
166 if (pDescriptorUpdateTemplate)
167 cmd_size += vn_sizeof_VkDescriptorUpdateTemplate(pDescriptorUpdateTemplate);
168
169 return cmd_size;
170 }
171
vn_decode_vkCreateDescriptorUpdateTemplate_reply(struct vn_cs_decoder * dec,VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)172 static inline VkResult vn_decode_vkCreateDescriptorUpdateTemplate_reply(struct vn_cs_decoder *dec, VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
173 {
174 VkCommandTypeEXT command_type;
175 vn_decode_VkCommandTypeEXT(dec, &command_type);
176 assert(command_type == VK_COMMAND_TYPE_vkCreateDescriptorUpdateTemplate_EXT);
177
178 VkResult ret;
179 vn_decode_VkResult(dec, &ret);
180 /* skip device */
181 /* skip pCreateInfo */
182 /* skip pAllocator */
183 if (vn_decode_simple_pointer(dec)) {
184 vn_decode_VkDescriptorUpdateTemplate(dec, pDescriptorUpdateTemplate);
185 } else {
186 pDescriptorUpdateTemplate = NULL;
187 }
188
189 return ret;
190 }
191
vn_sizeof_vkDestroyDescriptorUpdateTemplate(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)192 static inline size_t vn_sizeof_vkDestroyDescriptorUpdateTemplate(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator)
193 {
194 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyDescriptorUpdateTemplate_EXT;
195 const VkFlags cmd_flags = 0;
196 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type) + vn_sizeof_VkFlags(&cmd_flags);
197
198 cmd_size += vn_sizeof_VkDevice(&device);
199 cmd_size += vn_sizeof_VkDescriptorUpdateTemplate(&descriptorUpdateTemplate);
200 cmd_size += vn_sizeof_simple_pointer(pAllocator);
201 if (pAllocator)
202 assert(false);
203
204 return cmd_size;
205 }
206
vn_encode_vkDestroyDescriptorUpdateTemplate(struct vn_cs_encoder * enc,VkCommandFlagsEXT cmd_flags,VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)207 static inline void vn_encode_vkDestroyDescriptorUpdateTemplate(struct vn_cs_encoder *enc, VkCommandFlagsEXT cmd_flags, VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator)
208 {
209 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyDescriptorUpdateTemplate_EXT;
210
211 vn_encode_VkCommandTypeEXT(enc, &cmd_type);
212 vn_encode_VkFlags(enc, &cmd_flags);
213
214 vn_encode_VkDevice(enc, &device);
215 vn_encode_VkDescriptorUpdateTemplate(enc, &descriptorUpdateTemplate);
216 if (vn_encode_simple_pointer(enc, pAllocator))
217 assert(false);
218 }
219
vn_sizeof_vkDestroyDescriptorUpdateTemplate_reply(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)220 static inline size_t vn_sizeof_vkDestroyDescriptorUpdateTemplate_reply(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator)
221 {
222 const VkCommandTypeEXT cmd_type = VK_COMMAND_TYPE_vkDestroyDescriptorUpdateTemplate_EXT;
223 size_t cmd_size = vn_sizeof_VkCommandTypeEXT(&cmd_type);
224
225 /* skip device */
226 /* skip descriptorUpdateTemplate */
227 /* skip pAllocator */
228
229 return cmd_size;
230 }
231
vn_decode_vkDestroyDescriptorUpdateTemplate_reply(struct vn_cs_decoder * dec,VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)232 static inline void vn_decode_vkDestroyDescriptorUpdateTemplate_reply(struct vn_cs_decoder *dec, VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator)
233 {
234 VkCommandTypeEXT command_type;
235 vn_decode_VkCommandTypeEXT(dec, &command_type);
236 assert(command_type == VK_COMMAND_TYPE_vkDestroyDescriptorUpdateTemplate_EXT);
237
238 /* skip device */
239 /* skip descriptorUpdateTemplate */
240 /* skip pAllocator */
241 }
242
vn_submit_vkCreateDescriptorUpdateTemplate(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate,struct vn_ring_submit_command * submit)243 static inline void vn_submit_vkCreateDescriptorUpdateTemplate(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate, struct vn_ring_submit_command *submit)
244 {
245 uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
246 void *cmd_data = local_cmd_data;
247 size_t cmd_size = vn_sizeof_vkCreateDescriptorUpdateTemplate(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
248 if (cmd_size > sizeof(local_cmd_data)) {
249 cmd_data = malloc(cmd_size);
250 if (!cmd_data)
251 cmd_size = 0;
252 }
253 const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkCreateDescriptorUpdateTemplate_reply(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate) : 0;
254
255 struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
256 if (cmd_size) {
257 vn_encode_vkCreateDescriptorUpdateTemplate(enc, cmd_flags, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
258 vn_ring_submit_command(vn_ring, submit);
259 if (cmd_data != local_cmd_data)
260 free(cmd_data);
261 }
262 }
263
vn_submit_vkDestroyDescriptorUpdateTemplate(struct vn_ring * vn_ring,VkCommandFlagsEXT cmd_flags,VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator,struct vn_ring_submit_command * submit)264 static inline void vn_submit_vkDestroyDescriptorUpdateTemplate(struct vn_ring *vn_ring, VkCommandFlagsEXT cmd_flags, VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator, struct vn_ring_submit_command *submit)
265 {
266 uint8_t local_cmd_data[VN_SUBMIT_LOCAL_CMD_SIZE];
267 void *cmd_data = local_cmd_data;
268 size_t cmd_size = vn_sizeof_vkDestroyDescriptorUpdateTemplate(device, descriptorUpdateTemplate, pAllocator);
269 if (cmd_size > sizeof(local_cmd_data)) {
270 cmd_data = malloc(cmd_size);
271 if (!cmd_data)
272 cmd_size = 0;
273 }
274 const size_t reply_size = cmd_flags & VK_COMMAND_GENERATE_REPLY_BIT_EXT ? vn_sizeof_vkDestroyDescriptorUpdateTemplate_reply(device, descriptorUpdateTemplate, pAllocator) : 0;
275
276 struct vn_cs_encoder *enc = vn_ring_submit_command_init(vn_ring, submit, cmd_data, cmd_size, reply_size);
277 if (cmd_size) {
278 vn_encode_vkDestroyDescriptorUpdateTemplate(enc, cmd_flags, device, descriptorUpdateTemplate, pAllocator);
279 vn_ring_submit_command(vn_ring, submit);
280 if (cmd_data != local_cmd_data)
281 free(cmd_data);
282 }
283 }
284
vn_call_vkCreateDescriptorUpdateTemplate(struct vn_ring * vn_ring,VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)285 static inline VkResult vn_call_vkCreateDescriptorUpdateTemplate(struct vn_ring *vn_ring, VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
286 {
287 VN_TRACE_FUNC();
288
289 struct vn_ring_submit_command submit;
290 vn_submit_vkCreateDescriptorUpdateTemplate(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, &submit);
291 struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
292 if (dec) {
293 const VkResult ret = vn_decode_vkCreateDescriptorUpdateTemplate_reply(dec, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
294 vn_ring_free_command_reply(vn_ring, &submit);
295 return ret;
296 } else {
297 return VK_ERROR_OUT_OF_HOST_MEMORY;
298 }
299 }
300
vn_async_vkCreateDescriptorUpdateTemplate(struct vn_ring * vn_ring,VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)301 static inline void vn_async_vkCreateDescriptorUpdateTemplate(struct vn_ring *vn_ring, VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
302 {
303 struct vn_ring_submit_command submit;
304 vn_submit_vkCreateDescriptorUpdateTemplate(vn_ring, 0, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, &submit);
305 }
306
vn_call_vkDestroyDescriptorUpdateTemplate(struct vn_ring * vn_ring,VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)307 static inline void vn_call_vkDestroyDescriptorUpdateTemplate(struct vn_ring *vn_ring, VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator)
308 {
309 VN_TRACE_FUNC();
310
311 struct vn_ring_submit_command submit;
312 vn_submit_vkDestroyDescriptorUpdateTemplate(vn_ring, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, descriptorUpdateTemplate, pAllocator, &submit);
313 struct vn_cs_decoder *dec = vn_ring_get_command_reply(vn_ring, &submit);
314 if (dec) {
315 vn_decode_vkDestroyDescriptorUpdateTemplate_reply(dec, device, descriptorUpdateTemplate, pAllocator);
316 vn_ring_free_command_reply(vn_ring, &submit);
317 }
318 }
319
vn_async_vkDestroyDescriptorUpdateTemplate(struct vn_ring * vn_ring,VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)320 static inline void vn_async_vkDestroyDescriptorUpdateTemplate(struct vn_ring *vn_ring, VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator)
321 {
322 struct vn_ring_submit_command submit;
323 vn_submit_vkDestroyDescriptorUpdateTemplate(vn_ring, 0, device, descriptorUpdateTemplate, pAllocator, &submit);
324 }
325
326 #endif /* VN_PROTOCOL_DRIVER_DESCRIPTOR_UPDATE_TEMPLATE_H */
327