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_instance.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_instance * vn_instance,VkCommandFlagsEXT cmd_flags,VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate,struct vn_instance_submit_command * submit)243 static inline void vn_submit_vkCreateDescriptorUpdateTemplate(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate, struct vn_instance_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_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
256     if (cmd_size) {
257         vn_encode_vkCreateDescriptorUpdateTemplate(enc, cmd_flags, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
258         vn_instance_submit_command(vn_instance, submit);
259         if (cmd_data != local_cmd_data)
260             free(cmd_data);
261     }
262 }
263 
vn_submit_vkDestroyDescriptorUpdateTemplate(struct vn_instance * vn_instance,VkCommandFlagsEXT cmd_flags,VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator,struct vn_instance_submit_command * submit)264 static inline void vn_submit_vkDestroyDescriptorUpdateTemplate(struct vn_instance *vn_instance, VkCommandFlagsEXT cmd_flags, VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator, struct vn_instance_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_instance_submit_command_init(vn_instance, submit, cmd_data, cmd_size, reply_size);
277     if (cmd_size) {
278         vn_encode_vkDestroyDescriptorUpdateTemplate(enc, cmd_flags, device, descriptorUpdateTemplate, pAllocator);
279         vn_instance_submit_command(vn_instance, submit);
280         if (cmd_data != local_cmd_data)
281             free(cmd_data);
282     }
283 }
284 
vn_call_vkCreateDescriptorUpdateTemplate(struct vn_instance * vn_instance,VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)285 static inline VkResult vn_call_vkCreateDescriptorUpdateTemplate(struct vn_instance *vn_instance, VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
286 {
287     VN_TRACE_FUNC();
288 
289     struct vn_instance_submit_command submit;
290     vn_submit_vkCreateDescriptorUpdateTemplate(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, &submit);
291     struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
292     if (dec) {
293         const VkResult ret = vn_decode_vkCreateDescriptorUpdateTemplate_reply(dec, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
294         vn_instance_free_command_reply(vn_instance, &submit);
295         return ret;
296     } else {
297         return VK_ERROR_OUT_OF_HOST_MEMORY;
298     }
299 }
300 
vn_async_vkCreateDescriptorUpdateTemplate(struct vn_instance * vn_instance,VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)301 static inline void vn_async_vkCreateDescriptorUpdateTemplate(struct vn_instance *vn_instance, VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate)
302 {
303     struct vn_instance_submit_command submit;
304     vn_submit_vkCreateDescriptorUpdateTemplate(vn_instance, 0, device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate, &submit);
305 }
306 
vn_call_vkDestroyDescriptorUpdateTemplate(struct vn_instance * vn_instance,VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)307 static inline void vn_call_vkDestroyDescriptorUpdateTemplate(struct vn_instance *vn_instance, VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator)
308 {
309     VN_TRACE_FUNC();
310 
311     struct vn_instance_submit_command submit;
312     vn_submit_vkDestroyDescriptorUpdateTemplate(vn_instance, VK_COMMAND_GENERATE_REPLY_BIT_EXT, device, descriptorUpdateTemplate, pAllocator, &submit);
313     struct vn_cs_decoder *dec = vn_instance_get_command_reply(vn_instance, &submit);
314     if (dec) {
315         vn_decode_vkDestroyDescriptorUpdateTemplate_reply(dec, device, descriptorUpdateTemplate, pAllocator);
316         vn_instance_free_command_reply(vn_instance, &submit);
317     }
318 }
319 
vn_async_vkDestroyDescriptorUpdateTemplate(struct vn_instance * vn_instance,VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)320 static inline void vn_async_vkDestroyDescriptorUpdateTemplate(struct vn_instance *vn_instance, VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator)
321 {
322     struct vn_instance_submit_command submit;
323     vn_submit_vkDestroyDescriptorUpdateTemplate(vn_instance, 0, device, descriptorUpdateTemplate, pAllocator, &submit);
324 }
325 
326 #endif /* VN_PROTOCOL_DRIVER_DESCRIPTOR_UPDATE_TEMPLATE_H */
327