1 // Copyright (C) 2018 The Android Open Source Project
2 // Copyright (C) 2018 Google Inc.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 
16 // Autogenerated module goldfish_vk_dispatch
17 //
18 // (impl) generated by codegen/vulkan/vulkan-docs-next/scripts/genvk.py -registry
19 // codegen/vulkan/vulkan-docs-next/xml/vk.xml -registryGfxstream
20 // codegen/vulkan/vulkan-docs-next/xml/vk_gfxstream.xml cereal -o host/vulkan/cereal
21 //
22 // Please do not modify directly;
23 // re-run gfxstream-protocols/scripts/generate-vulkan-sources.sh,
24 // or directly from Python by defining:
25 // VULKAN_REGISTRY_XML_DIR : Directory containing vk.xml
26 // VULKAN_REGISTRY_SCRIPTS_DIR : Directory containing genvk.py
27 // CEREAL_OUTPUT_DIR: Where to put the generated sources.
28 //
29 // python3 $VULKAN_REGISTRY_SCRIPTS_DIR/genvk.py -registry $VULKAN_REGISTRY_XML_DIR/vk.xml cereal -o
30 // $CEREAL_OUTPUT_DIR
31 //
32 
33 #include "goldfish_vk_dispatch.h"
34 
35 #include <stdio.h>
36 #include <stdlib.h>
37 #include <string.h>
38 
39 namespace gfxstream {
40 namespace vk {
41 
42 #ifdef VK_VERSION_1_0
43 #endif
44 #ifdef VK_VERSION_1_1
45 #endif
46 #ifdef VK_VERSION_1_2
47 #endif
48 #ifdef VK_VERSION_1_3
49 #endif
50 #ifdef VK_KHR_surface
51 #endif
52 #ifdef VK_KHR_swapchain
53 #endif
54 #ifdef VK_KHR_xcb_surface
55 #endif
56 #ifdef VK_KHR_android_surface
57 #endif
58 #ifdef VK_KHR_win32_surface
59 #endif
60 #ifdef VK_KHR_dynamic_rendering
61 #endif
62 #ifdef VK_KHR_get_physical_device_properties2
63 #endif
64 #ifdef VK_KHR_maintenance1
65 #endif
66 #ifdef VK_KHR_external_memory_capabilities
67 #endif
68 #ifdef VK_KHR_external_memory
69 #endif
70 #ifdef VK_KHR_external_memory_win32
71 #endif
72 #ifdef VK_KHR_external_memory_fd
73 #endif
74 #ifdef VK_KHR_external_semaphore_capabilities
75 #endif
76 #ifdef VK_KHR_external_semaphore
77 #endif
78 #ifdef VK_KHR_external_semaphore_win32
79 #endif
80 #ifdef VK_KHR_external_semaphore_fd
81 #endif
82 #ifdef VK_KHR_shader_float16_int8
83 #endif
84 #ifdef VK_KHR_incremental_present
85 #endif
86 #ifdef VK_KHR_descriptor_update_template
87 #endif
88 #ifdef VK_KHR_imageless_framebuffer
89 #endif
90 #ifdef VK_KHR_create_renderpass2
91 #endif
92 #ifdef VK_KHR_external_fence_capabilities
93 #endif
94 #ifdef VK_KHR_external_fence
95 #endif
96 #ifdef VK_KHR_external_fence_fd
97 #endif
98 #ifdef VK_KHR_maintenance2
99 #endif
100 #ifdef VK_KHR_dedicated_allocation
101 #endif
102 #ifdef VK_KHR_storage_buffer_storage_class
103 #endif
104 #ifdef VK_KHR_get_memory_requirements2
105 #endif
106 #ifdef VK_KHR_image_format_list
107 #endif
108 #ifdef VK_KHR_sampler_ycbcr_conversion
109 #endif
110 #ifdef VK_KHR_bind_memory2
111 #endif
112 #ifdef VK_KHR_maintenance3
113 #endif
114 #ifdef VK_KHR_shader_subgroup_extended_types
115 #endif
116 #ifdef VK_KHR_vulkan_memory_model
117 #endif
118 #ifdef VK_KHR_shader_terminate_invocation
119 #endif
120 #ifdef VK_KHR_buffer_device_address
121 #endif
122 #ifdef VK_KHR_pipeline_executable_properties
123 #endif
124 #ifdef VK_KHR_shader_integer_dot_product
125 #endif
126 #ifdef VK_KHR_shader_non_semantic_info
127 #endif
128 #ifdef VK_KHR_synchronization2
129 #endif
130 #ifdef VK_KHR_zero_initialize_workgroup_memory
131 #endif
132 #ifdef VK_KHR_copy_commands2
133 #endif
134 #ifdef VK_KHR_format_feature_flags2
135 #endif
136 #ifdef VK_KHR_maintenance4
137 #endif
138 #ifdef VK_KHR_maintenance5
139 #endif
140 #ifdef VK_ANDROID_native_buffer
141 #endif
142 #ifdef VK_EXT_transform_feedback
143 #endif
144 #ifdef VK_AMD_gpu_shader_half_float
145 #endif
146 #ifdef VK_EXT_texture_compression_astc_hdr
147 #endif
148 #ifdef VK_EXT_depth_clip_enable
149 #endif
150 #ifdef VK_EXT_swapchain_colorspace
151 #endif
152 #ifdef VK_MVK_moltenvk
153 #endif
154 #ifdef VK_EXT_queue_family_foreign
155 #endif
156 #ifdef VK_EXT_debug_utils
157 #endif
158 #ifdef VK_ANDROID_external_memory_android_hardware_buffer
159 #endif
160 #ifdef VK_EXT_inline_uniform_block
161 #endif
162 #ifdef VK_EXT_shader_stencil_export
163 #endif
164 #ifdef VK_EXT_vertex_attribute_divisor
165 #endif
166 #ifdef VK_EXT_pipeline_creation_feedback
167 #endif
168 #ifdef VK_NV_shader_subgroup_partitioned
169 #endif
170 #ifdef VK_EXT_metal_surface
171 #endif
172 #ifdef VK_EXT_fragment_density_map
173 #endif
174 #ifdef VK_EXT_scalar_block_layout
175 #endif
176 #ifdef VK_EXT_subgroup_size_control
177 #endif
178 #ifdef VK_EXT_tooling_info
179 #endif
180 #ifdef VK_EXT_validation_features
181 #endif
182 #ifdef VK_EXT_provoking_vertex
183 #endif
184 #ifdef VK_EXT_line_rasterization
185 #endif
186 #ifdef VK_EXT_index_type_uint8
187 #endif
188 #ifdef VK_EXT_extended_dynamic_state
189 #endif
190 #ifdef VK_EXT_host_image_copy
191 #endif
192 #ifdef VK_EXT_swapchain_maintenance1
193 #endif
194 #ifdef VK_EXT_shader_demote_to_helper_invocation
195 #endif
196 #ifdef VK_EXT_texel_buffer_alignment
197 #endif
198 #ifdef VK_EXT_device_memory_report
199 #endif
200 #ifdef VK_EXT_robustness2
201 #endif
202 #ifdef VK_EXT_custom_border_color
203 #endif
204 #ifdef VK_EXT_private_data
205 #endif
206 #ifdef VK_EXT_pipeline_creation_cache_control
207 #endif
208 #ifdef VK_EXT_metal_objects
209 #endif
210 #ifdef VK_EXT_graphics_pipeline_library
211 #endif
212 #ifdef VK_EXT_ycbcr_2plane_444_formats
213 #endif
214 #ifdef VK_EXT_image_robustness
215 #endif
216 #ifdef VK_EXT_image_compression_control
217 #endif
218 #ifdef VK_EXT_4444_formats
219 #endif
220 #ifdef VK_EXT_primitive_topology_list_restart
221 #endif
222 #ifdef VK_EXT_extended_dynamic_state2
223 #endif
224 #ifdef VK_GOOGLE_gfxstream
225 #endif
226 #ifdef VK_EXT_load_store_op_none
227 #endif
228 #ifdef VK_EXT_image_compression_control_swapchain
229 #endif
230 #ifdef VK_QNX_external_memory_screen_buffer
231 #endif
232 
init_vulkan_dispatch_from_system_loader(DlOpenFunc dlOpenFunc,DlSymFunc dlSymFunc,VulkanDispatch * out)233 void init_vulkan_dispatch_from_system_loader(DlOpenFunc dlOpenFunc, DlSymFunc dlSymFunc,
234                                              VulkanDispatch* out) {
235     memset(out, 0x0, sizeof(VulkanDispatch));
236     void* lib = dlOpenFunc();
237     if (!lib) return;
238 #ifdef VK_VERSION_1_0
239     out->vkDestroyInstance = (PFN_vkDestroyInstance)dlSymFunc(lib, "vkDestroyInstance");
240     out->vkEnumeratePhysicalDevices =
241         (PFN_vkEnumeratePhysicalDevices)dlSymFunc(lib, "vkEnumeratePhysicalDevices");
242     out->vkGetPhysicalDeviceFeatures =
243         (PFN_vkGetPhysicalDeviceFeatures)dlSymFunc(lib, "vkGetPhysicalDeviceFeatures");
244     out->vkGetPhysicalDeviceFormatProperties = (PFN_vkGetPhysicalDeviceFormatProperties)dlSymFunc(
245         lib, "vkGetPhysicalDeviceFormatProperties");
246     out->vkGetPhysicalDeviceImageFormatProperties =
247         (PFN_vkGetPhysicalDeviceImageFormatProperties)dlSymFunc(
248             lib, "vkGetPhysicalDeviceImageFormatProperties");
249     out->vkGetPhysicalDeviceProperties =
250         (PFN_vkGetPhysicalDeviceProperties)dlSymFunc(lib, "vkGetPhysicalDeviceProperties");
251     out->vkGetPhysicalDeviceQueueFamilyProperties =
252         (PFN_vkGetPhysicalDeviceQueueFamilyProperties)dlSymFunc(
253             lib, "vkGetPhysicalDeviceQueueFamilyProperties");
254     out->vkGetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties)dlSymFunc(
255         lib, "vkGetPhysicalDeviceMemoryProperties");
256     out->vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)dlSymFunc(lib, "vkGetInstanceProcAddr");
257     out->vkCreateDevice = (PFN_vkCreateDevice)dlSymFunc(lib, "vkCreateDevice");
258     out->vkDestroyDevice = (PFN_vkDestroyDevice)dlSymFunc(lib, "vkDestroyDevice");
259     out->vkEnumerateDeviceExtensionProperties = (PFN_vkEnumerateDeviceExtensionProperties)dlSymFunc(
260         lib, "vkEnumerateDeviceExtensionProperties");
261     out->vkEnumerateDeviceLayerProperties =
262         (PFN_vkEnumerateDeviceLayerProperties)dlSymFunc(lib, "vkEnumerateDeviceLayerProperties");
263     out->vkCreateInstance = (PFN_vkCreateInstance)dlSymFunc(lib, "vkCreateInstance");
264     out->vkEnumerateInstanceExtensionProperties =
265         (PFN_vkEnumerateInstanceExtensionProperties)dlSymFunc(
266             lib, "vkEnumerateInstanceExtensionProperties");
267     out->vkEnumerateInstanceLayerProperties = (PFN_vkEnumerateInstanceLayerProperties)dlSymFunc(
268         lib, "vkEnumerateInstanceLayerProperties");
269     out->vkGetDeviceProcAddr = (PFN_vkGetDeviceProcAddr)dlSymFunc(lib, "vkGetDeviceProcAddr");
270     out->vkGetPhysicalDeviceSparseImageFormatProperties =
271         (PFN_vkGetPhysicalDeviceSparseImageFormatProperties)dlSymFunc(
272             lib, "vkGetPhysicalDeviceSparseImageFormatProperties");
273 #endif
274 #ifdef VK_VERSION_1_1
275     out->vkEnumerateInstanceVersion =
276         (PFN_vkEnumerateInstanceVersion)dlSymFunc(lib, "vkEnumerateInstanceVersion");
277     out->vkEnumeratePhysicalDeviceGroups =
278         (PFN_vkEnumeratePhysicalDeviceGroups)dlSymFunc(lib, "vkEnumeratePhysicalDeviceGroups");
279     out->vkGetPhysicalDeviceFeatures2 =
280         (PFN_vkGetPhysicalDeviceFeatures2)dlSymFunc(lib, "vkGetPhysicalDeviceFeatures2");
281     out->vkGetPhysicalDeviceProperties2 =
282         (PFN_vkGetPhysicalDeviceProperties2)dlSymFunc(lib, "vkGetPhysicalDeviceProperties2");
283     out->vkGetPhysicalDeviceFormatProperties2 = (PFN_vkGetPhysicalDeviceFormatProperties2)dlSymFunc(
284         lib, "vkGetPhysicalDeviceFormatProperties2");
285     out->vkGetPhysicalDeviceImageFormatProperties2 =
286         (PFN_vkGetPhysicalDeviceImageFormatProperties2)dlSymFunc(
287             lib, "vkGetPhysicalDeviceImageFormatProperties2");
288     out->vkGetPhysicalDeviceQueueFamilyProperties2 =
289         (PFN_vkGetPhysicalDeviceQueueFamilyProperties2)dlSymFunc(
290             lib, "vkGetPhysicalDeviceQueueFamilyProperties2");
291     out->vkGetPhysicalDeviceMemoryProperties2 = (PFN_vkGetPhysicalDeviceMemoryProperties2)dlSymFunc(
292         lib, "vkGetPhysicalDeviceMemoryProperties2");
293     out->vkGetPhysicalDeviceSparseImageFormatProperties2 =
294         (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)dlSymFunc(
295             lib, "vkGetPhysicalDeviceSparseImageFormatProperties2");
296     out->vkGetPhysicalDeviceExternalBufferProperties =
297         (PFN_vkGetPhysicalDeviceExternalBufferProperties)dlSymFunc(
298             lib, "vkGetPhysicalDeviceExternalBufferProperties");
299     out->vkGetPhysicalDeviceExternalFenceProperties =
300         (PFN_vkGetPhysicalDeviceExternalFenceProperties)dlSymFunc(
301             lib, "vkGetPhysicalDeviceExternalFenceProperties");
302     out->vkGetPhysicalDeviceExternalSemaphoreProperties =
303         (PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)dlSymFunc(
304             lib, "vkGetPhysicalDeviceExternalSemaphoreProperties");
305 #endif
306 #ifdef VK_KHR_surface
307     out->vkDestroySurfaceKHR = (PFN_vkDestroySurfaceKHR)dlSymFunc(lib, "vkDestroySurfaceKHR");
308 #endif
309 #ifdef VK_KHR_swapchain
310     out->vkCreateSwapchainKHR = (PFN_vkCreateSwapchainKHR)dlSymFunc(lib, "vkCreateSwapchainKHR");
311     out->vkDestroySwapchainKHR = (PFN_vkDestroySwapchainKHR)dlSymFunc(lib, "vkDestroySwapchainKHR");
312     out->vkGetSwapchainImagesKHR =
313         (PFN_vkGetSwapchainImagesKHR)dlSymFunc(lib, "vkGetSwapchainImagesKHR");
314     out->vkAcquireNextImageKHR = (PFN_vkAcquireNextImageKHR)dlSymFunc(lib, "vkAcquireNextImageKHR");
315     out->vkQueuePresentKHR = (PFN_vkQueuePresentKHR)dlSymFunc(lib, "vkQueuePresentKHR");
316 #endif
317 #ifdef VK_KHR_xcb_surface
318     out->vkCreateXcbSurfaceKHR = (PFN_vkCreateXcbSurfaceKHR)dlSymFunc(lib, "vkCreateXcbSurfaceKHR");
319     out->vkGetPhysicalDeviceXcbPresentationSupportKHR =
320         (PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)dlSymFunc(
321             lib, "vkGetPhysicalDeviceXcbPresentationSupportKHR");
322 #endif
323 #ifdef VK_KHR_win32_surface
324     out->vkCreateWin32SurfaceKHR =
325         (PFN_vkCreateWin32SurfaceKHR)dlSymFunc(lib, "vkCreateWin32SurfaceKHR");
326     out->vkGetPhysicalDeviceWin32PresentationSupportKHR =
327         (PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)dlSymFunc(
328             lib, "vkGetPhysicalDeviceWin32PresentationSupportKHR");
329 #endif
330 #ifdef VK_EXT_debug_utils
331     out->vkCreateDebugUtilsMessengerEXT =
332         (PFN_vkCreateDebugUtilsMessengerEXT)dlSymFunc(lib, "vkCreateDebugUtilsMessengerEXT");
333     out->vkDestroyDebugUtilsMessengerEXT =
334         (PFN_vkDestroyDebugUtilsMessengerEXT)dlSymFunc(lib, "vkDestroyDebugUtilsMessengerEXT");
335     out->vkSubmitDebugUtilsMessageEXT =
336         (PFN_vkSubmitDebugUtilsMessageEXT)dlSymFunc(lib, "vkSubmitDebugUtilsMessageEXT");
337 #endif
338 #ifdef VK_EXT_metal_surface
339     out->vkCreateMetalSurfaceEXT =
340         (PFN_vkCreateMetalSurfaceEXT)dlSymFunc(lib, "vkCreateMetalSurfaceEXT");
341 #endif
342 #ifdef VK_VERSION_1_0
343     out->vkGetDeviceQueue = (PFN_vkGetDeviceQueue)dlSymFunc(lib, "vkGetDeviceQueue");
344     out->vkQueueSubmit = (PFN_vkQueueSubmit)dlSymFunc(lib, "vkQueueSubmit");
345     out->vkQueueWaitIdle = (PFN_vkQueueWaitIdle)dlSymFunc(lib, "vkQueueWaitIdle");
346     out->vkDeviceWaitIdle = (PFN_vkDeviceWaitIdle)dlSymFunc(lib, "vkDeviceWaitIdle");
347     out->vkAllocateMemory = (PFN_vkAllocateMemory)dlSymFunc(lib, "vkAllocateMemory");
348     out->vkFreeMemory = (PFN_vkFreeMemory)dlSymFunc(lib, "vkFreeMemory");
349     out->vkMapMemory = (PFN_vkMapMemory)dlSymFunc(lib, "vkMapMemory");
350     out->vkUnmapMemory = (PFN_vkUnmapMemory)dlSymFunc(lib, "vkUnmapMemory");
351     out->vkFlushMappedMemoryRanges =
352         (PFN_vkFlushMappedMemoryRanges)dlSymFunc(lib, "vkFlushMappedMemoryRanges");
353     out->vkInvalidateMappedMemoryRanges =
354         (PFN_vkInvalidateMappedMemoryRanges)dlSymFunc(lib, "vkInvalidateMappedMemoryRanges");
355     out->vkGetDeviceMemoryCommitment =
356         (PFN_vkGetDeviceMemoryCommitment)dlSymFunc(lib, "vkGetDeviceMemoryCommitment");
357     out->vkBindBufferMemory = (PFN_vkBindBufferMemory)dlSymFunc(lib, "vkBindBufferMemory");
358     out->vkBindImageMemory = (PFN_vkBindImageMemory)dlSymFunc(lib, "vkBindImageMemory");
359     out->vkGetBufferMemoryRequirements =
360         (PFN_vkGetBufferMemoryRequirements)dlSymFunc(lib, "vkGetBufferMemoryRequirements");
361     out->vkGetImageMemoryRequirements =
362         (PFN_vkGetImageMemoryRequirements)dlSymFunc(lib, "vkGetImageMemoryRequirements");
363     out->vkGetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements)dlSymFunc(
364         lib, "vkGetImageSparseMemoryRequirements");
365     out->vkQueueBindSparse = (PFN_vkQueueBindSparse)dlSymFunc(lib, "vkQueueBindSparse");
366     out->vkCreateFence = (PFN_vkCreateFence)dlSymFunc(lib, "vkCreateFence");
367     out->vkDestroyFence = (PFN_vkDestroyFence)dlSymFunc(lib, "vkDestroyFence");
368     out->vkResetFences = (PFN_vkResetFences)dlSymFunc(lib, "vkResetFences");
369     out->vkGetFenceStatus = (PFN_vkGetFenceStatus)dlSymFunc(lib, "vkGetFenceStatus");
370     out->vkWaitForFences = (PFN_vkWaitForFences)dlSymFunc(lib, "vkWaitForFences");
371     out->vkCreateSemaphore = (PFN_vkCreateSemaphore)dlSymFunc(lib, "vkCreateSemaphore");
372     out->vkDestroySemaphore = (PFN_vkDestroySemaphore)dlSymFunc(lib, "vkDestroySemaphore");
373     out->vkCreateEvent = (PFN_vkCreateEvent)dlSymFunc(lib, "vkCreateEvent");
374     out->vkDestroyEvent = (PFN_vkDestroyEvent)dlSymFunc(lib, "vkDestroyEvent");
375     out->vkGetEventStatus = (PFN_vkGetEventStatus)dlSymFunc(lib, "vkGetEventStatus");
376     out->vkSetEvent = (PFN_vkSetEvent)dlSymFunc(lib, "vkSetEvent");
377     out->vkResetEvent = (PFN_vkResetEvent)dlSymFunc(lib, "vkResetEvent");
378     out->vkCreateQueryPool = (PFN_vkCreateQueryPool)dlSymFunc(lib, "vkCreateQueryPool");
379     out->vkDestroyQueryPool = (PFN_vkDestroyQueryPool)dlSymFunc(lib, "vkDestroyQueryPool");
380     out->vkGetQueryPoolResults = (PFN_vkGetQueryPoolResults)dlSymFunc(lib, "vkGetQueryPoolResults");
381     out->vkCreateBuffer = (PFN_vkCreateBuffer)dlSymFunc(lib, "vkCreateBuffer");
382     out->vkDestroyBuffer = (PFN_vkDestroyBuffer)dlSymFunc(lib, "vkDestroyBuffer");
383     out->vkCreateBufferView = (PFN_vkCreateBufferView)dlSymFunc(lib, "vkCreateBufferView");
384     out->vkDestroyBufferView = (PFN_vkDestroyBufferView)dlSymFunc(lib, "vkDestroyBufferView");
385     out->vkCreateImage = (PFN_vkCreateImage)dlSymFunc(lib, "vkCreateImage");
386     out->vkDestroyImage = (PFN_vkDestroyImage)dlSymFunc(lib, "vkDestroyImage");
387     out->vkGetImageSubresourceLayout =
388         (PFN_vkGetImageSubresourceLayout)dlSymFunc(lib, "vkGetImageSubresourceLayout");
389     out->vkCreateImageView = (PFN_vkCreateImageView)dlSymFunc(lib, "vkCreateImageView");
390     out->vkDestroyImageView = (PFN_vkDestroyImageView)dlSymFunc(lib, "vkDestroyImageView");
391     out->vkCreateShaderModule = (PFN_vkCreateShaderModule)dlSymFunc(lib, "vkCreateShaderModule");
392     out->vkDestroyShaderModule = (PFN_vkDestroyShaderModule)dlSymFunc(lib, "vkDestroyShaderModule");
393     out->vkCreatePipelineCache = (PFN_vkCreatePipelineCache)dlSymFunc(lib, "vkCreatePipelineCache");
394     out->vkDestroyPipelineCache =
395         (PFN_vkDestroyPipelineCache)dlSymFunc(lib, "vkDestroyPipelineCache");
396     out->vkGetPipelineCacheData =
397         (PFN_vkGetPipelineCacheData)dlSymFunc(lib, "vkGetPipelineCacheData");
398     out->vkMergePipelineCaches = (PFN_vkMergePipelineCaches)dlSymFunc(lib, "vkMergePipelineCaches");
399     out->vkCreateGraphicsPipelines =
400         (PFN_vkCreateGraphicsPipelines)dlSymFunc(lib, "vkCreateGraphicsPipelines");
401     out->vkCreateComputePipelines =
402         (PFN_vkCreateComputePipelines)dlSymFunc(lib, "vkCreateComputePipelines");
403     out->vkDestroyPipeline = (PFN_vkDestroyPipeline)dlSymFunc(lib, "vkDestroyPipeline");
404     out->vkCreatePipelineLayout =
405         (PFN_vkCreatePipelineLayout)dlSymFunc(lib, "vkCreatePipelineLayout");
406     out->vkDestroyPipelineLayout =
407         (PFN_vkDestroyPipelineLayout)dlSymFunc(lib, "vkDestroyPipelineLayout");
408     out->vkCreateSampler = (PFN_vkCreateSampler)dlSymFunc(lib, "vkCreateSampler");
409     out->vkDestroySampler = (PFN_vkDestroySampler)dlSymFunc(lib, "vkDestroySampler");
410     out->vkCreateDescriptorSetLayout =
411         (PFN_vkCreateDescriptorSetLayout)dlSymFunc(lib, "vkCreateDescriptorSetLayout");
412     out->vkDestroyDescriptorSetLayout =
413         (PFN_vkDestroyDescriptorSetLayout)dlSymFunc(lib, "vkDestroyDescriptorSetLayout");
414     out->vkCreateDescriptorPool =
415         (PFN_vkCreateDescriptorPool)dlSymFunc(lib, "vkCreateDescriptorPool");
416     out->vkDestroyDescriptorPool =
417         (PFN_vkDestroyDescriptorPool)dlSymFunc(lib, "vkDestroyDescriptorPool");
418     out->vkResetDescriptorPool = (PFN_vkResetDescriptorPool)dlSymFunc(lib, "vkResetDescriptorPool");
419     out->vkAllocateDescriptorSets =
420         (PFN_vkAllocateDescriptorSets)dlSymFunc(lib, "vkAllocateDescriptorSets");
421     out->vkFreeDescriptorSets = (PFN_vkFreeDescriptorSets)dlSymFunc(lib, "vkFreeDescriptorSets");
422     out->vkUpdateDescriptorSets =
423         (PFN_vkUpdateDescriptorSets)dlSymFunc(lib, "vkUpdateDescriptorSets");
424     out->vkCreateFramebuffer = (PFN_vkCreateFramebuffer)dlSymFunc(lib, "vkCreateFramebuffer");
425     out->vkDestroyFramebuffer = (PFN_vkDestroyFramebuffer)dlSymFunc(lib, "vkDestroyFramebuffer");
426     out->vkCreateRenderPass = (PFN_vkCreateRenderPass)dlSymFunc(lib, "vkCreateRenderPass");
427     out->vkDestroyRenderPass = (PFN_vkDestroyRenderPass)dlSymFunc(lib, "vkDestroyRenderPass");
428     out->vkGetRenderAreaGranularity =
429         (PFN_vkGetRenderAreaGranularity)dlSymFunc(lib, "vkGetRenderAreaGranularity");
430     out->vkCreateCommandPool = (PFN_vkCreateCommandPool)dlSymFunc(lib, "vkCreateCommandPool");
431     out->vkDestroyCommandPool = (PFN_vkDestroyCommandPool)dlSymFunc(lib, "vkDestroyCommandPool");
432     out->vkResetCommandPool = (PFN_vkResetCommandPool)dlSymFunc(lib, "vkResetCommandPool");
433     out->vkAllocateCommandBuffers =
434         (PFN_vkAllocateCommandBuffers)dlSymFunc(lib, "vkAllocateCommandBuffers");
435     out->vkFreeCommandBuffers = (PFN_vkFreeCommandBuffers)dlSymFunc(lib, "vkFreeCommandBuffers");
436     out->vkBeginCommandBuffer = (PFN_vkBeginCommandBuffer)dlSymFunc(lib, "vkBeginCommandBuffer");
437     out->vkEndCommandBuffer = (PFN_vkEndCommandBuffer)dlSymFunc(lib, "vkEndCommandBuffer");
438     out->vkResetCommandBuffer = (PFN_vkResetCommandBuffer)dlSymFunc(lib, "vkResetCommandBuffer");
439     out->vkCmdBindPipeline = (PFN_vkCmdBindPipeline)dlSymFunc(lib, "vkCmdBindPipeline");
440     out->vkCmdSetViewport = (PFN_vkCmdSetViewport)dlSymFunc(lib, "vkCmdSetViewport");
441     out->vkCmdSetScissor = (PFN_vkCmdSetScissor)dlSymFunc(lib, "vkCmdSetScissor");
442     out->vkCmdSetLineWidth = (PFN_vkCmdSetLineWidth)dlSymFunc(lib, "vkCmdSetLineWidth");
443     out->vkCmdSetDepthBias = (PFN_vkCmdSetDepthBias)dlSymFunc(lib, "vkCmdSetDepthBias");
444     out->vkCmdSetBlendConstants =
445         (PFN_vkCmdSetBlendConstants)dlSymFunc(lib, "vkCmdSetBlendConstants");
446     out->vkCmdSetDepthBounds = (PFN_vkCmdSetDepthBounds)dlSymFunc(lib, "vkCmdSetDepthBounds");
447     out->vkCmdSetStencilCompareMask =
448         (PFN_vkCmdSetStencilCompareMask)dlSymFunc(lib, "vkCmdSetStencilCompareMask");
449     out->vkCmdSetStencilWriteMask =
450         (PFN_vkCmdSetStencilWriteMask)dlSymFunc(lib, "vkCmdSetStencilWriteMask");
451     out->vkCmdSetStencilReference =
452         (PFN_vkCmdSetStencilReference)dlSymFunc(lib, "vkCmdSetStencilReference");
453     out->vkCmdBindDescriptorSets =
454         (PFN_vkCmdBindDescriptorSets)dlSymFunc(lib, "vkCmdBindDescriptorSets");
455     out->vkCmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer)dlSymFunc(lib, "vkCmdBindIndexBuffer");
456     out->vkCmdBindVertexBuffers =
457         (PFN_vkCmdBindVertexBuffers)dlSymFunc(lib, "vkCmdBindVertexBuffers");
458     out->vkCmdDraw = (PFN_vkCmdDraw)dlSymFunc(lib, "vkCmdDraw");
459     out->vkCmdDrawIndexed = (PFN_vkCmdDrawIndexed)dlSymFunc(lib, "vkCmdDrawIndexed");
460     out->vkCmdDrawIndirect = (PFN_vkCmdDrawIndirect)dlSymFunc(lib, "vkCmdDrawIndirect");
461     out->vkCmdDrawIndexedIndirect =
462         (PFN_vkCmdDrawIndexedIndirect)dlSymFunc(lib, "vkCmdDrawIndexedIndirect");
463     out->vkCmdDispatch = (PFN_vkCmdDispatch)dlSymFunc(lib, "vkCmdDispatch");
464     out->vkCmdDispatchIndirect = (PFN_vkCmdDispatchIndirect)dlSymFunc(lib, "vkCmdDispatchIndirect");
465     out->vkCmdCopyBuffer = (PFN_vkCmdCopyBuffer)dlSymFunc(lib, "vkCmdCopyBuffer");
466     out->vkCmdCopyImage = (PFN_vkCmdCopyImage)dlSymFunc(lib, "vkCmdCopyImage");
467     out->vkCmdBlitImage = (PFN_vkCmdBlitImage)dlSymFunc(lib, "vkCmdBlitImage");
468     out->vkCmdCopyBufferToImage =
469         (PFN_vkCmdCopyBufferToImage)dlSymFunc(lib, "vkCmdCopyBufferToImage");
470     out->vkCmdCopyImageToBuffer =
471         (PFN_vkCmdCopyImageToBuffer)dlSymFunc(lib, "vkCmdCopyImageToBuffer");
472     out->vkCmdUpdateBuffer = (PFN_vkCmdUpdateBuffer)dlSymFunc(lib, "vkCmdUpdateBuffer");
473     out->vkCmdFillBuffer = (PFN_vkCmdFillBuffer)dlSymFunc(lib, "vkCmdFillBuffer");
474     out->vkCmdClearColorImage = (PFN_vkCmdClearColorImage)dlSymFunc(lib, "vkCmdClearColorImage");
475     out->vkCmdClearDepthStencilImage =
476         (PFN_vkCmdClearDepthStencilImage)dlSymFunc(lib, "vkCmdClearDepthStencilImage");
477     out->vkCmdClearAttachments = (PFN_vkCmdClearAttachments)dlSymFunc(lib, "vkCmdClearAttachments");
478     out->vkCmdResolveImage = (PFN_vkCmdResolveImage)dlSymFunc(lib, "vkCmdResolveImage");
479     out->vkCmdSetEvent = (PFN_vkCmdSetEvent)dlSymFunc(lib, "vkCmdSetEvent");
480     out->vkCmdResetEvent = (PFN_vkCmdResetEvent)dlSymFunc(lib, "vkCmdResetEvent");
481     out->vkCmdWaitEvents = (PFN_vkCmdWaitEvents)dlSymFunc(lib, "vkCmdWaitEvents");
482     out->vkCmdPipelineBarrier = (PFN_vkCmdPipelineBarrier)dlSymFunc(lib, "vkCmdPipelineBarrier");
483     out->vkCmdBeginQuery = (PFN_vkCmdBeginQuery)dlSymFunc(lib, "vkCmdBeginQuery");
484     out->vkCmdEndQuery = (PFN_vkCmdEndQuery)dlSymFunc(lib, "vkCmdEndQuery");
485     out->vkCmdResetQueryPool = (PFN_vkCmdResetQueryPool)dlSymFunc(lib, "vkCmdResetQueryPool");
486     out->vkCmdWriteTimestamp = (PFN_vkCmdWriteTimestamp)dlSymFunc(lib, "vkCmdWriteTimestamp");
487     out->vkCmdCopyQueryPoolResults =
488         (PFN_vkCmdCopyQueryPoolResults)dlSymFunc(lib, "vkCmdCopyQueryPoolResults");
489     out->vkCmdPushConstants = (PFN_vkCmdPushConstants)dlSymFunc(lib, "vkCmdPushConstants");
490     out->vkCmdBeginRenderPass = (PFN_vkCmdBeginRenderPass)dlSymFunc(lib, "vkCmdBeginRenderPass");
491     out->vkCmdNextSubpass = (PFN_vkCmdNextSubpass)dlSymFunc(lib, "vkCmdNextSubpass");
492     out->vkCmdEndRenderPass = (PFN_vkCmdEndRenderPass)dlSymFunc(lib, "vkCmdEndRenderPass");
493     out->vkCmdExecuteCommands = (PFN_vkCmdExecuteCommands)dlSymFunc(lib, "vkCmdExecuteCommands");
494 #endif
495 #ifdef VK_VERSION_1_1
496     out->vkBindBufferMemory2 = (PFN_vkBindBufferMemory2)dlSymFunc(lib, "vkBindBufferMemory2");
497     out->vkBindImageMemory2 = (PFN_vkBindImageMemory2)dlSymFunc(lib, "vkBindImageMemory2");
498     out->vkGetDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures)dlSymFunc(
499         lib, "vkGetDeviceGroupPeerMemoryFeatures");
500     out->vkCmdSetDeviceMask = (PFN_vkCmdSetDeviceMask)dlSymFunc(lib, "vkCmdSetDeviceMask");
501     out->vkCmdDispatchBase = (PFN_vkCmdDispatchBase)dlSymFunc(lib, "vkCmdDispatchBase");
502     out->vkGetImageMemoryRequirements2 =
503         (PFN_vkGetImageMemoryRequirements2)dlSymFunc(lib, "vkGetImageMemoryRequirements2");
504     out->vkGetBufferMemoryRequirements2 =
505         (PFN_vkGetBufferMemoryRequirements2)dlSymFunc(lib, "vkGetBufferMemoryRequirements2");
506     out->vkGetImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2)dlSymFunc(
507         lib, "vkGetImageSparseMemoryRequirements2");
508     out->vkTrimCommandPool = (PFN_vkTrimCommandPool)dlSymFunc(lib, "vkTrimCommandPool");
509     out->vkGetDeviceQueue2 = (PFN_vkGetDeviceQueue2)dlSymFunc(lib, "vkGetDeviceQueue2");
510     out->vkCreateSamplerYcbcrConversion =
511         (PFN_vkCreateSamplerYcbcrConversion)dlSymFunc(lib, "vkCreateSamplerYcbcrConversion");
512     out->vkDestroySamplerYcbcrConversion =
513         (PFN_vkDestroySamplerYcbcrConversion)dlSymFunc(lib, "vkDestroySamplerYcbcrConversion");
514     out->vkCreateDescriptorUpdateTemplate =
515         (PFN_vkCreateDescriptorUpdateTemplate)dlSymFunc(lib, "vkCreateDescriptorUpdateTemplate");
516     out->vkDestroyDescriptorUpdateTemplate =
517         (PFN_vkDestroyDescriptorUpdateTemplate)dlSymFunc(lib, "vkDestroyDescriptorUpdateTemplate");
518     out->vkUpdateDescriptorSetWithTemplate =
519         (PFN_vkUpdateDescriptorSetWithTemplate)dlSymFunc(lib, "vkUpdateDescriptorSetWithTemplate");
520     out->vkGetDescriptorSetLayoutSupport =
521         (PFN_vkGetDescriptorSetLayoutSupport)dlSymFunc(lib, "vkGetDescriptorSetLayoutSupport");
522 #endif
523 #ifdef VK_VERSION_1_2
524     out->vkCmdDrawIndirectCount =
525         (PFN_vkCmdDrawIndirectCount)dlSymFunc(lib, "vkCmdDrawIndirectCount");
526     out->vkCmdDrawIndexedIndirectCount =
527         (PFN_vkCmdDrawIndexedIndirectCount)dlSymFunc(lib, "vkCmdDrawIndexedIndirectCount");
528     out->vkCreateRenderPass2 = (PFN_vkCreateRenderPass2)dlSymFunc(lib, "vkCreateRenderPass2");
529     out->vkCmdBeginRenderPass2 = (PFN_vkCmdBeginRenderPass2)dlSymFunc(lib, "vkCmdBeginRenderPass2");
530     out->vkCmdNextSubpass2 = (PFN_vkCmdNextSubpass2)dlSymFunc(lib, "vkCmdNextSubpass2");
531     out->vkCmdEndRenderPass2 = (PFN_vkCmdEndRenderPass2)dlSymFunc(lib, "vkCmdEndRenderPass2");
532     out->vkResetQueryPool = (PFN_vkResetQueryPool)dlSymFunc(lib, "vkResetQueryPool");
533     out->vkGetSemaphoreCounterValue =
534         (PFN_vkGetSemaphoreCounterValue)dlSymFunc(lib, "vkGetSemaphoreCounterValue");
535     out->vkWaitSemaphores = (PFN_vkWaitSemaphores)dlSymFunc(lib, "vkWaitSemaphores");
536     out->vkSignalSemaphore = (PFN_vkSignalSemaphore)dlSymFunc(lib, "vkSignalSemaphore");
537     out->vkGetBufferDeviceAddress =
538         (PFN_vkGetBufferDeviceAddress)dlSymFunc(lib, "vkGetBufferDeviceAddress");
539     out->vkGetBufferOpaqueCaptureAddress =
540         (PFN_vkGetBufferOpaqueCaptureAddress)dlSymFunc(lib, "vkGetBufferOpaqueCaptureAddress");
541     out->vkGetDeviceMemoryOpaqueCaptureAddress =
542         (PFN_vkGetDeviceMemoryOpaqueCaptureAddress)dlSymFunc(
543             lib, "vkGetDeviceMemoryOpaqueCaptureAddress");
544 #endif
545 #ifdef VK_VERSION_1_3
546     out->vkGetPhysicalDeviceToolProperties =
547         (PFN_vkGetPhysicalDeviceToolProperties)dlSymFunc(lib, "vkGetPhysicalDeviceToolProperties");
548     out->vkCreatePrivateDataSlot =
549         (PFN_vkCreatePrivateDataSlot)dlSymFunc(lib, "vkCreatePrivateDataSlot");
550     out->vkDestroyPrivateDataSlot =
551         (PFN_vkDestroyPrivateDataSlot)dlSymFunc(lib, "vkDestroyPrivateDataSlot");
552     out->vkSetPrivateData = (PFN_vkSetPrivateData)dlSymFunc(lib, "vkSetPrivateData");
553     out->vkGetPrivateData = (PFN_vkGetPrivateData)dlSymFunc(lib, "vkGetPrivateData");
554     out->vkCmdSetEvent2 = (PFN_vkCmdSetEvent2)dlSymFunc(lib, "vkCmdSetEvent2");
555     out->vkCmdResetEvent2 = (PFN_vkCmdResetEvent2)dlSymFunc(lib, "vkCmdResetEvent2");
556     out->vkCmdWaitEvents2 = (PFN_vkCmdWaitEvents2)dlSymFunc(lib, "vkCmdWaitEvents2");
557     out->vkCmdPipelineBarrier2 = (PFN_vkCmdPipelineBarrier2)dlSymFunc(lib, "vkCmdPipelineBarrier2");
558     out->vkCmdWriteTimestamp2 = (PFN_vkCmdWriteTimestamp2)dlSymFunc(lib, "vkCmdWriteTimestamp2");
559     out->vkQueueSubmit2 = (PFN_vkQueueSubmit2)dlSymFunc(lib, "vkQueueSubmit2");
560     out->vkCmdCopyBuffer2 = (PFN_vkCmdCopyBuffer2)dlSymFunc(lib, "vkCmdCopyBuffer2");
561     out->vkCmdCopyImage2 = (PFN_vkCmdCopyImage2)dlSymFunc(lib, "vkCmdCopyImage2");
562     out->vkCmdCopyBufferToImage2 =
563         (PFN_vkCmdCopyBufferToImage2)dlSymFunc(lib, "vkCmdCopyBufferToImage2");
564     out->vkCmdCopyImageToBuffer2 =
565         (PFN_vkCmdCopyImageToBuffer2)dlSymFunc(lib, "vkCmdCopyImageToBuffer2");
566     out->vkCmdBlitImage2 = (PFN_vkCmdBlitImage2)dlSymFunc(lib, "vkCmdBlitImage2");
567     out->vkCmdResolveImage2 = (PFN_vkCmdResolveImage2)dlSymFunc(lib, "vkCmdResolveImage2");
568     out->vkCmdBeginRendering = (PFN_vkCmdBeginRendering)dlSymFunc(lib, "vkCmdBeginRendering");
569     out->vkCmdEndRendering = (PFN_vkCmdEndRendering)dlSymFunc(lib, "vkCmdEndRendering");
570     out->vkCmdSetCullMode = (PFN_vkCmdSetCullMode)dlSymFunc(lib, "vkCmdSetCullMode");
571     out->vkCmdSetFrontFace = (PFN_vkCmdSetFrontFace)dlSymFunc(lib, "vkCmdSetFrontFace");
572     out->vkCmdSetPrimitiveTopology =
573         (PFN_vkCmdSetPrimitiveTopology)dlSymFunc(lib, "vkCmdSetPrimitiveTopology");
574     out->vkCmdSetViewportWithCount =
575         (PFN_vkCmdSetViewportWithCount)dlSymFunc(lib, "vkCmdSetViewportWithCount");
576     out->vkCmdSetScissorWithCount =
577         (PFN_vkCmdSetScissorWithCount)dlSymFunc(lib, "vkCmdSetScissorWithCount");
578     out->vkCmdBindVertexBuffers2 =
579         (PFN_vkCmdBindVertexBuffers2)dlSymFunc(lib, "vkCmdBindVertexBuffers2");
580     out->vkCmdSetDepthTestEnable =
581         (PFN_vkCmdSetDepthTestEnable)dlSymFunc(lib, "vkCmdSetDepthTestEnable");
582     out->vkCmdSetDepthWriteEnable =
583         (PFN_vkCmdSetDepthWriteEnable)dlSymFunc(lib, "vkCmdSetDepthWriteEnable");
584     out->vkCmdSetDepthCompareOp =
585         (PFN_vkCmdSetDepthCompareOp)dlSymFunc(lib, "vkCmdSetDepthCompareOp");
586     out->vkCmdSetDepthBoundsTestEnable =
587         (PFN_vkCmdSetDepthBoundsTestEnable)dlSymFunc(lib, "vkCmdSetDepthBoundsTestEnable");
588     out->vkCmdSetStencilTestEnable =
589         (PFN_vkCmdSetStencilTestEnable)dlSymFunc(lib, "vkCmdSetStencilTestEnable");
590     out->vkCmdSetStencilOp = (PFN_vkCmdSetStencilOp)dlSymFunc(lib, "vkCmdSetStencilOp");
591     out->vkCmdSetRasterizerDiscardEnable =
592         (PFN_vkCmdSetRasterizerDiscardEnable)dlSymFunc(lib, "vkCmdSetRasterizerDiscardEnable");
593     out->vkCmdSetDepthBiasEnable =
594         (PFN_vkCmdSetDepthBiasEnable)dlSymFunc(lib, "vkCmdSetDepthBiasEnable");
595     out->vkCmdSetPrimitiveRestartEnable =
596         (PFN_vkCmdSetPrimitiveRestartEnable)dlSymFunc(lib, "vkCmdSetPrimitiveRestartEnable");
597     out->vkGetDeviceBufferMemoryRequirements = (PFN_vkGetDeviceBufferMemoryRequirements)dlSymFunc(
598         lib, "vkGetDeviceBufferMemoryRequirements");
599     out->vkGetDeviceImageMemoryRequirements = (PFN_vkGetDeviceImageMemoryRequirements)dlSymFunc(
600         lib, "vkGetDeviceImageMemoryRequirements");
601     out->vkGetDeviceImageSparseMemoryRequirements =
602         (PFN_vkGetDeviceImageSparseMemoryRequirements)dlSymFunc(
603             lib, "vkGetDeviceImageSparseMemoryRequirements");
604 #endif
605 #ifdef VK_KHR_surface
606     out->vkGetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR)dlSymFunc(
607         lib, "vkGetPhysicalDeviceSurfaceSupportKHR");
608     out->vkGetPhysicalDeviceSurfaceCapabilitiesKHR =
609         (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)dlSymFunc(
610             lib, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
611     out->vkGetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)dlSymFunc(
612         lib, "vkGetPhysicalDeviceSurfaceFormatsKHR");
613     out->vkGetPhysicalDeviceSurfacePresentModesKHR =
614         (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)dlSymFunc(
615             lib, "vkGetPhysicalDeviceSurfacePresentModesKHR");
616 #endif
617 #ifdef VK_KHR_swapchain
618     out->vkGetDeviceGroupPresentCapabilitiesKHR =
619         (PFN_vkGetDeviceGroupPresentCapabilitiesKHR)dlSymFunc(
620             lib, "vkGetDeviceGroupPresentCapabilitiesKHR");
621     out->vkGetDeviceGroupSurfacePresentModesKHR =
622         (PFN_vkGetDeviceGroupSurfacePresentModesKHR)dlSymFunc(
623             lib, "vkGetDeviceGroupSurfacePresentModesKHR");
624     out->vkGetPhysicalDevicePresentRectanglesKHR =
625         (PFN_vkGetPhysicalDevicePresentRectanglesKHR)dlSymFunc(
626             lib, "vkGetPhysicalDevicePresentRectanglesKHR");
627     out->vkAcquireNextImage2KHR =
628         (PFN_vkAcquireNextImage2KHR)dlSymFunc(lib, "vkAcquireNextImage2KHR");
629 #endif
630 #ifdef VK_KHR_dynamic_rendering
631     out->vkCmdBeginRenderingKHR =
632         (PFN_vkCmdBeginRenderingKHR)dlSymFunc(lib, "vkCmdBeginRenderingKHR");
633     out->vkCmdEndRenderingKHR = (PFN_vkCmdEndRenderingKHR)dlSymFunc(lib, "vkCmdEndRenderingKHR");
634 #endif
635 #ifdef VK_KHR_get_physical_device_properties2
636     out->vkGetPhysicalDeviceFeatures2KHR =
637         (PFN_vkGetPhysicalDeviceFeatures2KHR)dlSymFunc(lib, "vkGetPhysicalDeviceFeatures2KHR");
638     out->vkGetPhysicalDeviceProperties2KHR =
639         (PFN_vkGetPhysicalDeviceProperties2KHR)dlSymFunc(lib, "vkGetPhysicalDeviceProperties2KHR");
640     out->vkGetPhysicalDeviceFormatProperties2KHR =
641         (PFN_vkGetPhysicalDeviceFormatProperties2KHR)dlSymFunc(
642             lib, "vkGetPhysicalDeviceFormatProperties2KHR");
643     out->vkGetPhysicalDeviceImageFormatProperties2KHR =
644         (PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)dlSymFunc(
645             lib, "vkGetPhysicalDeviceImageFormatProperties2KHR");
646     out->vkGetPhysicalDeviceQueueFamilyProperties2KHR =
647         (PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)dlSymFunc(
648             lib, "vkGetPhysicalDeviceQueueFamilyProperties2KHR");
649     out->vkGetPhysicalDeviceMemoryProperties2KHR =
650         (PFN_vkGetPhysicalDeviceMemoryProperties2KHR)dlSymFunc(
651             lib, "vkGetPhysicalDeviceMemoryProperties2KHR");
652     out->vkGetPhysicalDeviceSparseImageFormatProperties2KHR =
653         (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)dlSymFunc(
654             lib, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
655 #endif
656 #ifdef VK_KHR_maintenance1
657     out->vkTrimCommandPoolKHR = (PFN_vkTrimCommandPoolKHR)dlSymFunc(lib, "vkTrimCommandPoolKHR");
658 #endif
659 #ifdef VK_KHR_external_memory_capabilities
660     out->vkGetPhysicalDeviceExternalBufferPropertiesKHR =
661         (PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)dlSymFunc(
662             lib, "vkGetPhysicalDeviceExternalBufferPropertiesKHR");
663 #endif
664 #ifdef VK_KHR_external_memory_win32
665     out->vkGetMemoryWin32HandleKHR =
666         (PFN_vkGetMemoryWin32HandleKHR)dlSymFunc(lib, "vkGetMemoryWin32HandleKHR");
667     out->vkGetMemoryWin32HandlePropertiesKHR = (PFN_vkGetMemoryWin32HandlePropertiesKHR)dlSymFunc(
668         lib, "vkGetMemoryWin32HandlePropertiesKHR");
669 #endif
670 #ifdef VK_KHR_external_memory_fd
671     out->vkGetMemoryFdKHR = (PFN_vkGetMemoryFdKHR)dlSymFunc(lib, "vkGetMemoryFdKHR");
672     out->vkGetMemoryFdPropertiesKHR =
673         (PFN_vkGetMemoryFdPropertiesKHR)dlSymFunc(lib, "vkGetMemoryFdPropertiesKHR");
674 #endif
675 #ifdef VK_KHR_external_semaphore_capabilities
676     out->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR =
677         (PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)dlSymFunc(
678             lib, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
679 #endif
680 #ifdef VK_KHR_external_semaphore_win32
681     out->vkImportSemaphoreWin32HandleKHR =
682         (PFN_vkImportSemaphoreWin32HandleKHR)dlSymFunc(lib, "vkImportSemaphoreWin32HandleKHR");
683     out->vkGetSemaphoreWin32HandleKHR =
684         (PFN_vkGetSemaphoreWin32HandleKHR)dlSymFunc(lib, "vkGetSemaphoreWin32HandleKHR");
685 #endif
686 #ifdef VK_KHR_external_semaphore_fd
687     out->vkImportSemaphoreFdKHR =
688         (PFN_vkImportSemaphoreFdKHR)dlSymFunc(lib, "vkImportSemaphoreFdKHR");
689     out->vkGetSemaphoreFdKHR = (PFN_vkGetSemaphoreFdKHR)dlSymFunc(lib, "vkGetSemaphoreFdKHR");
690 #endif
691 #ifdef VK_KHR_descriptor_update_template
692     out->vkCreateDescriptorUpdateTemplateKHR = (PFN_vkCreateDescriptorUpdateTemplateKHR)dlSymFunc(
693         lib, "vkCreateDescriptorUpdateTemplateKHR");
694     out->vkDestroyDescriptorUpdateTemplateKHR = (PFN_vkDestroyDescriptorUpdateTemplateKHR)dlSymFunc(
695         lib, "vkDestroyDescriptorUpdateTemplateKHR");
696     out->vkUpdateDescriptorSetWithTemplateKHR = (PFN_vkUpdateDescriptorSetWithTemplateKHR)dlSymFunc(
697         lib, "vkUpdateDescriptorSetWithTemplateKHR");
698 #endif
699 #ifdef VK_KHR_create_renderpass2
700     out->vkCreateRenderPass2KHR =
701         (PFN_vkCreateRenderPass2KHR)dlSymFunc(lib, "vkCreateRenderPass2KHR");
702     out->vkCmdBeginRenderPass2KHR =
703         (PFN_vkCmdBeginRenderPass2KHR)dlSymFunc(lib, "vkCmdBeginRenderPass2KHR");
704     out->vkCmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR)dlSymFunc(lib, "vkCmdNextSubpass2KHR");
705     out->vkCmdEndRenderPass2KHR =
706         (PFN_vkCmdEndRenderPass2KHR)dlSymFunc(lib, "vkCmdEndRenderPass2KHR");
707 #endif
708 #ifdef VK_KHR_external_fence_capabilities
709     out->vkGetPhysicalDeviceExternalFencePropertiesKHR =
710         (PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)dlSymFunc(
711             lib, "vkGetPhysicalDeviceExternalFencePropertiesKHR");
712 #endif
713 #ifdef VK_KHR_external_fence_fd
714     out->vkImportFenceFdKHR = (PFN_vkImportFenceFdKHR)dlSymFunc(lib, "vkImportFenceFdKHR");
715     out->vkGetFenceFdKHR = (PFN_vkGetFenceFdKHR)dlSymFunc(lib, "vkGetFenceFdKHR");
716 #endif
717 #ifdef VK_KHR_get_memory_requirements2
718     out->vkGetImageMemoryRequirements2KHR =
719         (PFN_vkGetImageMemoryRequirements2KHR)dlSymFunc(lib, "vkGetImageMemoryRequirements2KHR");
720     out->vkGetBufferMemoryRequirements2KHR =
721         (PFN_vkGetBufferMemoryRequirements2KHR)dlSymFunc(lib, "vkGetBufferMemoryRequirements2KHR");
722     out->vkGetImageSparseMemoryRequirements2KHR =
723         (PFN_vkGetImageSparseMemoryRequirements2KHR)dlSymFunc(
724             lib, "vkGetImageSparseMemoryRequirements2KHR");
725 #endif
726 #ifdef VK_KHR_sampler_ycbcr_conversion
727     out->vkCreateSamplerYcbcrConversionKHR =
728         (PFN_vkCreateSamplerYcbcrConversionKHR)dlSymFunc(lib, "vkCreateSamplerYcbcrConversionKHR");
729     out->vkDestroySamplerYcbcrConversionKHR = (PFN_vkDestroySamplerYcbcrConversionKHR)dlSymFunc(
730         lib, "vkDestroySamplerYcbcrConversionKHR");
731 #endif
732 #ifdef VK_KHR_bind_memory2
733     out->vkBindBufferMemory2KHR =
734         (PFN_vkBindBufferMemory2KHR)dlSymFunc(lib, "vkBindBufferMemory2KHR");
735     out->vkBindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)dlSymFunc(lib, "vkBindImageMemory2KHR");
736 #endif
737 #ifdef VK_KHR_maintenance3
738     out->vkGetDescriptorSetLayoutSupportKHR = (PFN_vkGetDescriptorSetLayoutSupportKHR)dlSymFunc(
739         lib, "vkGetDescriptorSetLayoutSupportKHR");
740 #endif
741 #ifdef VK_KHR_buffer_device_address
742     out->vkGetBufferDeviceAddressKHR =
743         (PFN_vkGetBufferDeviceAddressKHR)dlSymFunc(lib, "vkGetBufferDeviceAddressKHR");
744     out->vkGetBufferOpaqueCaptureAddressKHR = (PFN_vkGetBufferOpaqueCaptureAddressKHR)dlSymFunc(
745         lib, "vkGetBufferOpaqueCaptureAddressKHR");
746     out->vkGetDeviceMemoryOpaqueCaptureAddressKHR =
747         (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)dlSymFunc(
748             lib, "vkGetDeviceMemoryOpaqueCaptureAddressKHR");
749 #endif
750 #ifdef VK_KHR_pipeline_executable_properties
751     out->vkGetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)dlSymFunc(
752         lib, "vkGetPipelineExecutablePropertiesKHR");
753     out->vkGetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)dlSymFunc(
754         lib, "vkGetPipelineExecutableStatisticsKHR");
755     out->vkGetPipelineExecutableInternalRepresentationsKHR =
756         (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)dlSymFunc(
757             lib, "vkGetPipelineExecutableInternalRepresentationsKHR");
758 #endif
759 #ifdef VK_KHR_synchronization2
760     out->vkCmdSetEvent2KHR = (PFN_vkCmdSetEvent2KHR)dlSymFunc(lib, "vkCmdSetEvent2KHR");
761     out->vkCmdResetEvent2KHR = (PFN_vkCmdResetEvent2KHR)dlSymFunc(lib, "vkCmdResetEvent2KHR");
762     out->vkCmdWaitEvents2KHR = (PFN_vkCmdWaitEvents2KHR)dlSymFunc(lib, "vkCmdWaitEvents2KHR");
763     out->vkCmdPipelineBarrier2KHR =
764         (PFN_vkCmdPipelineBarrier2KHR)dlSymFunc(lib, "vkCmdPipelineBarrier2KHR");
765     out->vkCmdWriteTimestamp2KHR =
766         (PFN_vkCmdWriteTimestamp2KHR)dlSymFunc(lib, "vkCmdWriteTimestamp2KHR");
767     out->vkQueueSubmit2KHR = (PFN_vkQueueSubmit2KHR)dlSymFunc(lib, "vkQueueSubmit2KHR");
768     out->vkCmdWriteBufferMarker2AMD =
769         (PFN_vkCmdWriteBufferMarker2AMD)dlSymFunc(lib, "vkCmdWriteBufferMarker2AMD");
770     out->vkGetQueueCheckpointData2NV =
771         (PFN_vkGetQueueCheckpointData2NV)dlSymFunc(lib, "vkGetQueueCheckpointData2NV");
772 #endif
773 #ifdef VK_KHR_copy_commands2
774     out->vkCmdCopyBuffer2KHR = (PFN_vkCmdCopyBuffer2KHR)dlSymFunc(lib, "vkCmdCopyBuffer2KHR");
775     out->vkCmdCopyImage2KHR = (PFN_vkCmdCopyImage2KHR)dlSymFunc(lib, "vkCmdCopyImage2KHR");
776     out->vkCmdCopyBufferToImage2KHR =
777         (PFN_vkCmdCopyBufferToImage2KHR)dlSymFunc(lib, "vkCmdCopyBufferToImage2KHR");
778     out->vkCmdCopyImageToBuffer2KHR =
779         (PFN_vkCmdCopyImageToBuffer2KHR)dlSymFunc(lib, "vkCmdCopyImageToBuffer2KHR");
780     out->vkCmdBlitImage2KHR = (PFN_vkCmdBlitImage2KHR)dlSymFunc(lib, "vkCmdBlitImage2KHR");
781     out->vkCmdResolveImage2KHR = (PFN_vkCmdResolveImage2KHR)dlSymFunc(lib, "vkCmdResolveImage2KHR");
782 #endif
783 #ifdef VK_KHR_maintenance4
784     out->vkGetDeviceBufferMemoryRequirementsKHR =
785         (PFN_vkGetDeviceBufferMemoryRequirementsKHR)dlSymFunc(
786             lib, "vkGetDeviceBufferMemoryRequirementsKHR");
787     out->vkGetDeviceImageMemoryRequirementsKHR =
788         (PFN_vkGetDeviceImageMemoryRequirementsKHR)dlSymFunc(
789             lib, "vkGetDeviceImageMemoryRequirementsKHR");
790     out->vkGetDeviceImageSparseMemoryRequirementsKHR =
791         (PFN_vkGetDeviceImageSparseMemoryRequirementsKHR)dlSymFunc(
792             lib, "vkGetDeviceImageSparseMemoryRequirementsKHR");
793 #endif
794 #ifdef VK_KHR_maintenance5
795     out->vkCmdBindIndexBuffer2KHR =
796         (PFN_vkCmdBindIndexBuffer2KHR)dlSymFunc(lib, "vkCmdBindIndexBuffer2KHR");
797     out->vkGetRenderingAreaGranularityKHR =
798         (PFN_vkGetRenderingAreaGranularityKHR)dlSymFunc(lib, "vkGetRenderingAreaGranularityKHR");
799     out->vkGetDeviceImageSubresourceLayoutKHR = (PFN_vkGetDeviceImageSubresourceLayoutKHR)dlSymFunc(
800         lib, "vkGetDeviceImageSubresourceLayoutKHR");
801     out->vkGetImageSubresourceLayout2KHR =
802         (PFN_vkGetImageSubresourceLayout2KHR)dlSymFunc(lib, "vkGetImageSubresourceLayout2KHR");
803 #endif
804 #ifdef VK_ANDROID_native_buffer
805     out->vkGetSwapchainGrallocUsageANDROID =
806         (PFN_vkGetSwapchainGrallocUsageANDROID)dlSymFunc(lib, "vkGetSwapchainGrallocUsageANDROID");
807     out->vkAcquireImageANDROID = (PFN_vkAcquireImageANDROID)dlSymFunc(lib, "vkAcquireImageANDROID");
808     out->vkQueueSignalReleaseImageANDROID =
809         (PFN_vkQueueSignalReleaseImageANDROID)dlSymFunc(lib, "vkQueueSignalReleaseImageANDROID");
810     out->vkGetSwapchainGrallocUsage2ANDROID = (PFN_vkGetSwapchainGrallocUsage2ANDROID)dlSymFunc(
811         lib, "vkGetSwapchainGrallocUsage2ANDROID");
812 #endif
813 #ifdef VK_EXT_transform_feedback
814     out->vkCmdBindTransformFeedbackBuffersEXT = (PFN_vkCmdBindTransformFeedbackBuffersEXT)dlSymFunc(
815         lib, "vkCmdBindTransformFeedbackBuffersEXT");
816     out->vkCmdBeginTransformFeedbackEXT =
817         (PFN_vkCmdBeginTransformFeedbackEXT)dlSymFunc(lib, "vkCmdBeginTransformFeedbackEXT");
818     out->vkCmdEndTransformFeedbackEXT =
819         (PFN_vkCmdEndTransformFeedbackEXT)dlSymFunc(lib, "vkCmdEndTransformFeedbackEXT");
820     out->vkCmdBeginQueryIndexedEXT =
821         (PFN_vkCmdBeginQueryIndexedEXT)dlSymFunc(lib, "vkCmdBeginQueryIndexedEXT");
822     out->vkCmdEndQueryIndexedEXT =
823         (PFN_vkCmdEndQueryIndexedEXT)dlSymFunc(lib, "vkCmdEndQueryIndexedEXT");
824     out->vkCmdDrawIndirectByteCountEXT =
825         (PFN_vkCmdDrawIndirectByteCountEXT)dlSymFunc(lib, "vkCmdDrawIndirectByteCountEXT");
826 #endif
827 #ifdef VK_EXT_debug_utils
828     out->vkSetDebugUtilsObjectNameEXT =
829         (PFN_vkSetDebugUtilsObjectNameEXT)dlSymFunc(lib, "vkSetDebugUtilsObjectNameEXT");
830     out->vkSetDebugUtilsObjectTagEXT =
831         (PFN_vkSetDebugUtilsObjectTagEXT)dlSymFunc(lib, "vkSetDebugUtilsObjectTagEXT");
832     out->vkQueueBeginDebugUtilsLabelEXT =
833         (PFN_vkQueueBeginDebugUtilsLabelEXT)dlSymFunc(lib, "vkQueueBeginDebugUtilsLabelEXT");
834     out->vkQueueEndDebugUtilsLabelEXT =
835         (PFN_vkQueueEndDebugUtilsLabelEXT)dlSymFunc(lib, "vkQueueEndDebugUtilsLabelEXT");
836     out->vkQueueInsertDebugUtilsLabelEXT =
837         (PFN_vkQueueInsertDebugUtilsLabelEXT)dlSymFunc(lib, "vkQueueInsertDebugUtilsLabelEXT");
838     out->vkCmdBeginDebugUtilsLabelEXT =
839         (PFN_vkCmdBeginDebugUtilsLabelEXT)dlSymFunc(lib, "vkCmdBeginDebugUtilsLabelEXT");
840     out->vkCmdEndDebugUtilsLabelEXT =
841         (PFN_vkCmdEndDebugUtilsLabelEXT)dlSymFunc(lib, "vkCmdEndDebugUtilsLabelEXT");
842     out->vkCmdInsertDebugUtilsLabelEXT =
843         (PFN_vkCmdInsertDebugUtilsLabelEXT)dlSymFunc(lib, "vkCmdInsertDebugUtilsLabelEXT");
844 #endif
845 #ifdef VK_EXT_tooling_info
846     out->vkGetPhysicalDeviceToolPropertiesEXT = (PFN_vkGetPhysicalDeviceToolPropertiesEXT)dlSymFunc(
847         lib, "vkGetPhysicalDeviceToolPropertiesEXT");
848 #endif
849 #ifdef VK_EXT_line_rasterization
850     out->vkCmdSetLineStippleEXT =
851         (PFN_vkCmdSetLineStippleEXT)dlSymFunc(lib, "vkCmdSetLineStippleEXT");
852 #endif
853 #ifdef VK_EXT_extended_dynamic_state
854     out->vkCmdSetCullModeEXT = (PFN_vkCmdSetCullModeEXT)dlSymFunc(lib, "vkCmdSetCullModeEXT");
855     out->vkCmdSetFrontFaceEXT = (PFN_vkCmdSetFrontFaceEXT)dlSymFunc(lib, "vkCmdSetFrontFaceEXT");
856     out->vkCmdSetPrimitiveTopologyEXT =
857         (PFN_vkCmdSetPrimitiveTopologyEXT)dlSymFunc(lib, "vkCmdSetPrimitiveTopologyEXT");
858     out->vkCmdSetViewportWithCountEXT =
859         (PFN_vkCmdSetViewportWithCountEXT)dlSymFunc(lib, "vkCmdSetViewportWithCountEXT");
860     out->vkCmdSetScissorWithCountEXT =
861         (PFN_vkCmdSetScissorWithCountEXT)dlSymFunc(lib, "vkCmdSetScissorWithCountEXT");
862     out->vkCmdBindVertexBuffers2EXT =
863         (PFN_vkCmdBindVertexBuffers2EXT)dlSymFunc(lib, "vkCmdBindVertexBuffers2EXT");
864     out->vkCmdSetDepthTestEnableEXT =
865         (PFN_vkCmdSetDepthTestEnableEXT)dlSymFunc(lib, "vkCmdSetDepthTestEnableEXT");
866     out->vkCmdSetDepthWriteEnableEXT =
867         (PFN_vkCmdSetDepthWriteEnableEXT)dlSymFunc(lib, "vkCmdSetDepthWriteEnableEXT");
868     out->vkCmdSetDepthCompareOpEXT =
869         (PFN_vkCmdSetDepthCompareOpEXT)dlSymFunc(lib, "vkCmdSetDepthCompareOpEXT");
870     out->vkCmdSetDepthBoundsTestEnableEXT =
871         (PFN_vkCmdSetDepthBoundsTestEnableEXT)dlSymFunc(lib, "vkCmdSetDepthBoundsTestEnableEXT");
872     out->vkCmdSetStencilTestEnableEXT =
873         (PFN_vkCmdSetStencilTestEnableEXT)dlSymFunc(lib, "vkCmdSetStencilTestEnableEXT");
874     out->vkCmdSetStencilOpEXT = (PFN_vkCmdSetStencilOpEXT)dlSymFunc(lib, "vkCmdSetStencilOpEXT");
875 #endif
876 #ifdef VK_EXT_host_image_copy
877     out->vkCopyMemoryToImageEXT =
878         (PFN_vkCopyMemoryToImageEXT)dlSymFunc(lib, "vkCopyMemoryToImageEXT");
879     out->vkCopyImageToMemoryEXT =
880         (PFN_vkCopyImageToMemoryEXT)dlSymFunc(lib, "vkCopyImageToMemoryEXT");
881     out->vkCopyImageToImageEXT = (PFN_vkCopyImageToImageEXT)dlSymFunc(lib, "vkCopyImageToImageEXT");
882     out->vkTransitionImageLayoutEXT =
883         (PFN_vkTransitionImageLayoutEXT)dlSymFunc(lib, "vkTransitionImageLayoutEXT");
884     out->vkGetImageSubresourceLayout2EXT =
885         (PFN_vkGetImageSubresourceLayout2EXT)dlSymFunc(lib, "vkGetImageSubresourceLayout2EXT");
886 #endif
887 #ifdef VK_EXT_swapchain_maintenance1
888     out->vkReleaseSwapchainImagesEXT =
889         (PFN_vkReleaseSwapchainImagesEXT)dlSymFunc(lib, "vkReleaseSwapchainImagesEXT");
890 #endif
891 #ifdef VK_EXT_private_data
892     out->vkCreatePrivateDataSlotEXT =
893         (PFN_vkCreatePrivateDataSlotEXT)dlSymFunc(lib, "vkCreatePrivateDataSlotEXT");
894     out->vkDestroyPrivateDataSlotEXT =
895         (PFN_vkDestroyPrivateDataSlotEXT)dlSymFunc(lib, "vkDestroyPrivateDataSlotEXT");
896     out->vkSetPrivateDataEXT = (PFN_vkSetPrivateDataEXT)dlSymFunc(lib, "vkSetPrivateDataEXT");
897     out->vkGetPrivateDataEXT = (PFN_vkGetPrivateDataEXT)dlSymFunc(lib, "vkGetPrivateDataEXT");
898 #endif
899 #ifdef VK_EXT_metal_objects
900     out->vkExportMetalObjectsEXT =
901         (PFN_vkExportMetalObjectsEXT)dlSymFunc(lib, "vkExportMetalObjectsEXT");
902 #endif
903 #ifdef VK_EXT_extended_dynamic_state2
904     out->vkCmdSetPatchControlPointsEXT =
905         (PFN_vkCmdSetPatchControlPointsEXT)dlSymFunc(lib, "vkCmdSetPatchControlPointsEXT");
906     out->vkCmdSetRasterizerDiscardEnableEXT = (PFN_vkCmdSetRasterizerDiscardEnableEXT)dlSymFunc(
907         lib, "vkCmdSetRasterizerDiscardEnableEXT");
908     out->vkCmdSetDepthBiasEnableEXT =
909         (PFN_vkCmdSetDepthBiasEnableEXT)dlSymFunc(lib, "vkCmdSetDepthBiasEnableEXT");
910     out->vkCmdSetLogicOpEXT = (PFN_vkCmdSetLogicOpEXT)dlSymFunc(lib, "vkCmdSetLogicOpEXT");
911     out->vkCmdSetPrimitiveRestartEnableEXT =
912         (PFN_vkCmdSetPrimitiveRestartEnableEXT)dlSymFunc(lib, "vkCmdSetPrimitiveRestartEnableEXT");
913 #endif
914 #ifdef VK_GOOGLE_gfxstream
915     out->vkMapMemoryIntoAddressSpaceGOOGLE =
916         (PFN_vkMapMemoryIntoAddressSpaceGOOGLE)dlSymFunc(lib, "vkMapMemoryIntoAddressSpaceGOOGLE");
917     out->vkUpdateDescriptorSetWithTemplateSizedGOOGLE =
918         (PFN_vkUpdateDescriptorSetWithTemplateSizedGOOGLE)dlSymFunc(
919             lib, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
920     out->vkBeginCommandBufferAsyncGOOGLE =
921         (PFN_vkBeginCommandBufferAsyncGOOGLE)dlSymFunc(lib, "vkBeginCommandBufferAsyncGOOGLE");
922     out->vkEndCommandBufferAsyncGOOGLE =
923         (PFN_vkEndCommandBufferAsyncGOOGLE)dlSymFunc(lib, "vkEndCommandBufferAsyncGOOGLE");
924     out->vkResetCommandBufferAsyncGOOGLE =
925         (PFN_vkResetCommandBufferAsyncGOOGLE)dlSymFunc(lib, "vkResetCommandBufferAsyncGOOGLE");
926     out->vkCommandBufferHostSyncGOOGLE =
927         (PFN_vkCommandBufferHostSyncGOOGLE)dlSymFunc(lib, "vkCommandBufferHostSyncGOOGLE");
928     out->vkCreateImageWithRequirementsGOOGLE = (PFN_vkCreateImageWithRequirementsGOOGLE)dlSymFunc(
929         lib, "vkCreateImageWithRequirementsGOOGLE");
930     out->vkCreateBufferWithRequirementsGOOGLE = (PFN_vkCreateBufferWithRequirementsGOOGLE)dlSymFunc(
931         lib, "vkCreateBufferWithRequirementsGOOGLE");
932     out->vkGetMemoryHostAddressInfoGOOGLE =
933         (PFN_vkGetMemoryHostAddressInfoGOOGLE)dlSymFunc(lib, "vkGetMemoryHostAddressInfoGOOGLE");
934     out->vkFreeMemorySyncGOOGLE =
935         (PFN_vkFreeMemorySyncGOOGLE)dlSymFunc(lib, "vkFreeMemorySyncGOOGLE");
936     out->vkQueueHostSyncGOOGLE = (PFN_vkQueueHostSyncGOOGLE)dlSymFunc(lib, "vkQueueHostSyncGOOGLE");
937     out->vkQueueSubmitAsyncGOOGLE =
938         (PFN_vkQueueSubmitAsyncGOOGLE)dlSymFunc(lib, "vkQueueSubmitAsyncGOOGLE");
939     out->vkQueueWaitIdleAsyncGOOGLE =
940         (PFN_vkQueueWaitIdleAsyncGOOGLE)dlSymFunc(lib, "vkQueueWaitIdleAsyncGOOGLE");
941     out->vkQueueBindSparseAsyncGOOGLE =
942         (PFN_vkQueueBindSparseAsyncGOOGLE)dlSymFunc(lib, "vkQueueBindSparseAsyncGOOGLE");
943     out->vkGetLinearImageLayoutGOOGLE =
944         (PFN_vkGetLinearImageLayoutGOOGLE)dlSymFunc(lib, "vkGetLinearImageLayoutGOOGLE");
945     out->vkGetLinearImageLayout2GOOGLE =
946         (PFN_vkGetLinearImageLayout2GOOGLE)dlSymFunc(lib, "vkGetLinearImageLayout2GOOGLE");
947     out->vkQueueFlushCommandsGOOGLE =
948         (PFN_vkQueueFlushCommandsGOOGLE)dlSymFunc(lib, "vkQueueFlushCommandsGOOGLE");
949     out->vkQueueCommitDescriptorSetUpdatesGOOGLE =
950         (PFN_vkQueueCommitDescriptorSetUpdatesGOOGLE)dlSymFunc(
951             lib, "vkQueueCommitDescriptorSetUpdatesGOOGLE");
952     out->vkCollectDescriptorPoolIdsGOOGLE =
953         (PFN_vkCollectDescriptorPoolIdsGOOGLE)dlSymFunc(lib, "vkCollectDescriptorPoolIdsGOOGLE");
954     out->vkQueueSignalReleaseImageANDROIDAsyncGOOGLE =
955         (PFN_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE)dlSymFunc(
956             lib, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE");
957     out->vkQueueFlushCommandsFromAuxMemoryGOOGLE =
958         (PFN_vkQueueFlushCommandsFromAuxMemoryGOOGLE)dlSymFunc(
959             lib, "vkQueueFlushCommandsFromAuxMemoryGOOGLE");
960     out->vkGetBlobGOOGLE = (PFN_vkGetBlobGOOGLE)dlSymFunc(lib, "vkGetBlobGOOGLE");
961     out->vkUpdateDescriptorSetWithTemplateSized2GOOGLE =
962         (PFN_vkUpdateDescriptorSetWithTemplateSized2GOOGLE)dlSymFunc(
963             lib, "vkUpdateDescriptorSetWithTemplateSized2GOOGLE");
964     out->vkQueueSubmitAsync2GOOGLE =
965         (PFN_vkQueueSubmitAsync2GOOGLE)dlSymFunc(lib, "vkQueueSubmitAsync2GOOGLE");
966 #endif
967 #ifdef VK_QNX_external_memory_screen_buffer
968     out->vkGetScreenBufferPropertiesQNX =
969         (PFN_vkGetScreenBufferPropertiesQNX)dlSymFunc(lib, "vkGetScreenBufferPropertiesQNX");
970 #endif
971 #ifdef VK_MVK_moltenvk
972     out->vkGetMTLDeviceMVK = (PFN_vkGetMTLDeviceMVK)dlSymFunc(lib, "vkGetMTLDeviceMVK");
973     out->vkSetMTLTextureMVK = (PFN_vkSetMTLTextureMVK)dlSymFunc(lib, "vkSetMTLTextureMVK");
974     out->vkGetMTLTextureMVK = (PFN_vkGetMTLTextureMVK)dlSymFunc(lib, "vkGetMTLTextureMVK");
975     out->vkGetMTLBufferMVK = (PFN_vkGetMTLBufferMVK)dlSymFunc(lib, "vkGetMTLBufferMVK");
976     out->vkUseIOSurfaceMVK = (PFN_vkUseIOSurfaceMVK)dlSymFunc(lib, "vkUseIOSurfaceMVK");
977     out->vkGetIOSurfaceMVK = (PFN_vkGetIOSurfaceMVK)dlSymFunc(lib, "vkGetIOSurfaceMVK");
978 #endif
979 }
980 
init_vulkan_dispatch_from_instance(VulkanDispatch * vk,VkInstance instance,VulkanDispatch * out)981 void init_vulkan_dispatch_from_instance(VulkanDispatch* vk, VkInstance instance,
982                                         VulkanDispatch* out) {
983     memset(out, 0x0, sizeof(VulkanDispatch));
984 #ifdef VK_VERSION_1_0
985     out->vkDestroyInstance =
986         (PFN_vkDestroyInstance)vk->vkGetInstanceProcAddr(instance, "vkDestroyInstance");
987     out->vkEnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices)vk->vkGetInstanceProcAddr(
988         instance, "vkEnumeratePhysicalDevices");
989     out->vkGetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures)vk->vkGetInstanceProcAddr(
990         instance, "vkGetPhysicalDeviceFeatures");
991     out->vkGetPhysicalDeviceFormatProperties =
992         (PFN_vkGetPhysicalDeviceFormatProperties)vk->vkGetInstanceProcAddr(
993             instance, "vkGetPhysicalDeviceFormatProperties");
994     out->vkGetPhysicalDeviceImageFormatProperties =
995         (PFN_vkGetPhysicalDeviceImageFormatProperties)vk->vkGetInstanceProcAddr(
996             instance, "vkGetPhysicalDeviceImageFormatProperties");
997     out->vkGetPhysicalDeviceProperties =
998         (PFN_vkGetPhysicalDeviceProperties)vk->vkGetInstanceProcAddr(
999             instance, "vkGetPhysicalDeviceProperties");
1000     out->vkGetPhysicalDeviceQueueFamilyProperties =
1001         (PFN_vkGetPhysicalDeviceQueueFamilyProperties)vk->vkGetInstanceProcAddr(
1002             instance, "vkGetPhysicalDeviceQueueFamilyProperties");
1003     out->vkGetPhysicalDeviceMemoryProperties =
1004         (PFN_vkGetPhysicalDeviceMemoryProperties)vk->vkGetInstanceProcAddr(
1005             instance, "vkGetPhysicalDeviceMemoryProperties");
1006     out->vkGetInstanceProcAddr =
1007         (PFN_vkGetInstanceProcAddr)vk->vkGetInstanceProcAddr(instance, "vkGetInstanceProcAddr");
1008     out->vkCreateDevice = (PFN_vkCreateDevice)vk->vkGetInstanceProcAddr(instance, "vkCreateDevice");
1009     out->vkDestroyDevice =
1010         (PFN_vkDestroyDevice)vk->vkGetInstanceProcAddr(instance, "vkDestroyDevice");
1011     out->vkEnumerateDeviceExtensionProperties =
1012         (PFN_vkEnumerateDeviceExtensionProperties)vk->vkGetInstanceProcAddr(
1013             instance, "vkEnumerateDeviceExtensionProperties");
1014     out->vkEnumerateDeviceLayerProperties =
1015         (PFN_vkEnumerateDeviceLayerProperties)vk->vkGetInstanceProcAddr(
1016             instance, "vkEnumerateDeviceLayerProperties");
1017     out->vkCreateInstance =
1018         (PFN_vkCreateInstance)vk->vkGetInstanceProcAddr(instance, "vkCreateInstance");
1019     out->vkEnumerateInstanceExtensionProperties =
1020         (PFN_vkEnumerateInstanceExtensionProperties)vk->vkGetInstanceProcAddr(
1021             instance, "vkEnumerateInstanceExtensionProperties");
1022     out->vkEnumerateInstanceLayerProperties =
1023         (PFN_vkEnumerateInstanceLayerProperties)vk->vkGetInstanceProcAddr(
1024             instance, "vkEnumerateInstanceLayerProperties");
1025     out->vkGetDeviceProcAddr =
1026         (PFN_vkGetDeviceProcAddr)vk->vkGetInstanceProcAddr(instance, "vkGetDeviceProcAddr");
1027     out->vkGetPhysicalDeviceSparseImageFormatProperties =
1028         (PFN_vkGetPhysicalDeviceSparseImageFormatProperties)vk->vkGetInstanceProcAddr(
1029             instance, "vkGetPhysicalDeviceSparseImageFormatProperties");
1030 #endif
1031 #ifdef VK_VERSION_1_1
1032     out->vkEnumerateInstanceVersion = (PFN_vkEnumerateInstanceVersion)vk->vkGetInstanceProcAddr(
1033         instance, "vkEnumerateInstanceVersion");
1034     out->vkEnumeratePhysicalDeviceGroups =
1035         (PFN_vkEnumeratePhysicalDeviceGroups)vk->vkGetInstanceProcAddr(
1036             instance, "vkEnumeratePhysicalDeviceGroups");
1037     out->vkGetPhysicalDeviceFeatures2 = (PFN_vkGetPhysicalDeviceFeatures2)vk->vkGetInstanceProcAddr(
1038         instance, "vkGetPhysicalDeviceFeatures2");
1039     out->vkGetPhysicalDeviceProperties2 =
1040         (PFN_vkGetPhysicalDeviceProperties2)vk->vkGetInstanceProcAddr(
1041             instance, "vkGetPhysicalDeviceProperties2");
1042     out->vkGetPhysicalDeviceFormatProperties2 =
1043         (PFN_vkGetPhysicalDeviceFormatProperties2)vk->vkGetInstanceProcAddr(
1044             instance, "vkGetPhysicalDeviceFormatProperties2");
1045     out->vkGetPhysicalDeviceImageFormatProperties2 =
1046         (PFN_vkGetPhysicalDeviceImageFormatProperties2)vk->vkGetInstanceProcAddr(
1047             instance, "vkGetPhysicalDeviceImageFormatProperties2");
1048     out->vkGetPhysicalDeviceQueueFamilyProperties2 =
1049         (PFN_vkGetPhysicalDeviceQueueFamilyProperties2)vk->vkGetInstanceProcAddr(
1050             instance, "vkGetPhysicalDeviceQueueFamilyProperties2");
1051     out->vkGetPhysicalDeviceMemoryProperties2 =
1052         (PFN_vkGetPhysicalDeviceMemoryProperties2)vk->vkGetInstanceProcAddr(
1053             instance, "vkGetPhysicalDeviceMemoryProperties2");
1054     out->vkGetPhysicalDeviceSparseImageFormatProperties2 =
1055         (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)vk->vkGetInstanceProcAddr(
1056             instance, "vkGetPhysicalDeviceSparseImageFormatProperties2");
1057     out->vkGetPhysicalDeviceExternalBufferProperties =
1058         (PFN_vkGetPhysicalDeviceExternalBufferProperties)vk->vkGetInstanceProcAddr(
1059             instance, "vkGetPhysicalDeviceExternalBufferProperties");
1060     out->vkGetPhysicalDeviceExternalFenceProperties =
1061         (PFN_vkGetPhysicalDeviceExternalFenceProperties)vk->vkGetInstanceProcAddr(
1062             instance, "vkGetPhysicalDeviceExternalFenceProperties");
1063     out->vkGetPhysicalDeviceExternalSemaphoreProperties =
1064         (PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)vk->vkGetInstanceProcAddr(
1065             instance, "vkGetPhysicalDeviceExternalSemaphoreProperties");
1066 #endif
1067 #ifdef VK_KHR_surface
1068     out->vkDestroySurfaceKHR =
1069         (PFN_vkDestroySurfaceKHR)vk->vkGetInstanceProcAddr(instance, "vkDestroySurfaceKHR");
1070 #endif
1071 #ifdef VK_KHR_swapchain
1072     out->vkCreateSwapchainKHR =
1073         (PFN_vkCreateSwapchainKHR)vk->vkGetInstanceProcAddr(instance, "vkCreateSwapchainKHR");
1074     out->vkDestroySwapchainKHR =
1075         (PFN_vkDestroySwapchainKHR)vk->vkGetInstanceProcAddr(instance, "vkDestroySwapchainKHR");
1076     out->vkGetSwapchainImagesKHR =
1077         (PFN_vkGetSwapchainImagesKHR)vk->vkGetInstanceProcAddr(instance, "vkGetSwapchainImagesKHR");
1078     out->vkAcquireNextImageKHR =
1079         (PFN_vkAcquireNextImageKHR)vk->vkGetInstanceProcAddr(instance, "vkAcquireNextImageKHR");
1080     out->vkQueuePresentKHR =
1081         (PFN_vkQueuePresentKHR)vk->vkGetInstanceProcAddr(instance, "vkQueuePresentKHR");
1082 #endif
1083 #ifdef VK_KHR_xcb_surface
1084     out->vkCreateXcbSurfaceKHR =
1085         (PFN_vkCreateXcbSurfaceKHR)vk->vkGetInstanceProcAddr(instance, "vkCreateXcbSurfaceKHR");
1086     out->vkGetPhysicalDeviceXcbPresentationSupportKHR =
1087         (PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)vk->vkGetInstanceProcAddr(
1088             instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR");
1089 #endif
1090 #ifdef VK_KHR_win32_surface
1091     out->vkCreateWin32SurfaceKHR =
1092         (PFN_vkCreateWin32SurfaceKHR)vk->vkGetInstanceProcAddr(instance, "vkCreateWin32SurfaceKHR");
1093     out->vkGetPhysicalDeviceWin32PresentationSupportKHR =
1094         (PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)vk->vkGetInstanceProcAddr(
1095             instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR");
1096 #endif
1097 #ifdef VK_EXT_debug_utils
1098     out->vkCreateDebugUtilsMessengerEXT =
1099         (PFN_vkCreateDebugUtilsMessengerEXT)vk->vkGetInstanceProcAddr(
1100             instance, "vkCreateDebugUtilsMessengerEXT");
1101     out->vkDestroyDebugUtilsMessengerEXT =
1102         (PFN_vkDestroyDebugUtilsMessengerEXT)vk->vkGetInstanceProcAddr(
1103             instance, "vkDestroyDebugUtilsMessengerEXT");
1104     out->vkSubmitDebugUtilsMessageEXT = (PFN_vkSubmitDebugUtilsMessageEXT)vk->vkGetInstanceProcAddr(
1105         instance, "vkSubmitDebugUtilsMessageEXT");
1106 #endif
1107 #ifdef VK_EXT_metal_surface
1108     out->vkCreateMetalSurfaceEXT =
1109         (PFN_vkCreateMetalSurfaceEXT)vk->vkGetInstanceProcAddr(instance, "vkCreateMetalSurfaceEXT");
1110 #endif
1111 #ifdef VK_VERSION_1_0
1112     out->vkGetDeviceQueue =
1113         (PFN_vkGetDeviceQueue)vk->vkGetInstanceProcAddr(instance, "vkGetDeviceQueue");
1114     out->vkQueueSubmit = (PFN_vkQueueSubmit)vk->vkGetInstanceProcAddr(instance, "vkQueueSubmit");
1115     out->vkQueueWaitIdle =
1116         (PFN_vkQueueWaitIdle)vk->vkGetInstanceProcAddr(instance, "vkQueueWaitIdle");
1117     out->vkDeviceWaitIdle =
1118         (PFN_vkDeviceWaitIdle)vk->vkGetInstanceProcAddr(instance, "vkDeviceWaitIdle");
1119     out->vkAllocateMemory =
1120         (PFN_vkAllocateMemory)vk->vkGetInstanceProcAddr(instance, "vkAllocateMemory");
1121     out->vkFreeMemory = (PFN_vkFreeMemory)vk->vkGetInstanceProcAddr(instance, "vkFreeMemory");
1122     out->vkMapMemory = (PFN_vkMapMemory)vk->vkGetInstanceProcAddr(instance, "vkMapMemory");
1123     out->vkUnmapMemory = (PFN_vkUnmapMemory)vk->vkGetInstanceProcAddr(instance, "vkUnmapMemory");
1124     out->vkFlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges)vk->vkGetInstanceProcAddr(
1125         instance, "vkFlushMappedMemoryRanges");
1126     out->vkInvalidateMappedMemoryRanges =
1127         (PFN_vkInvalidateMappedMemoryRanges)vk->vkGetInstanceProcAddr(
1128             instance, "vkInvalidateMappedMemoryRanges");
1129     out->vkGetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment)vk->vkGetInstanceProcAddr(
1130         instance, "vkGetDeviceMemoryCommitment");
1131     out->vkBindBufferMemory =
1132         (PFN_vkBindBufferMemory)vk->vkGetInstanceProcAddr(instance, "vkBindBufferMemory");
1133     out->vkBindImageMemory =
1134         (PFN_vkBindImageMemory)vk->vkGetInstanceProcAddr(instance, "vkBindImageMemory");
1135     out->vkGetBufferMemoryRequirements =
1136         (PFN_vkGetBufferMemoryRequirements)vk->vkGetInstanceProcAddr(
1137             instance, "vkGetBufferMemoryRequirements");
1138     out->vkGetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements)vk->vkGetInstanceProcAddr(
1139         instance, "vkGetImageMemoryRequirements");
1140     out->vkGetImageSparseMemoryRequirements =
1141         (PFN_vkGetImageSparseMemoryRequirements)vk->vkGetInstanceProcAddr(
1142             instance, "vkGetImageSparseMemoryRequirements");
1143     out->vkQueueBindSparse =
1144         (PFN_vkQueueBindSparse)vk->vkGetInstanceProcAddr(instance, "vkQueueBindSparse");
1145     out->vkCreateFence = (PFN_vkCreateFence)vk->vkGetInstanceProcAddr(instance, "vkCreateFence");
1146     out->vkDestroyFence = (PFN_vkDestroyFence)vk->vkGetInstanceProcAddr(instance, "vkDestroyFence");
1147     out->vkResetFences = (PFN_vkResetFences)vk->vkGetInstanceProcAddr(instance, "vkResetFences");
1148     out->vkGetFenceStatus =
1149         (PFN_vkGetFenceStatus)vk->vkGetInstanceProcAddr(instance, "vkGetFenceStatus");
1150     out->vkWaitForFences =
1151         (PFN_vkWaitForFences)vk->vkGetInstanceProcAddr(instance, "vkWaitForFences");
1152     out->vkCreateSemaphore =
1153         (PFN_vkCreateSemaphore)vk->vkGetInstanceProcAddr(instance, "vkCreateSemaphore");
1154     out->vkDestroySemaphore =
1155         (PFN_vkDestroySemaphore)vk->vkGetInstanceProcAddr(instance, "vkDestroySemaphore");
1156     out->vkCreateEvent = (PFN_vkCreateEvent)vk->vkGetInstanceProcAddr(instance, "vkCreateEvent");
1157     out->vkDestroyEvent = (PFN_vkDestroyEvent)vk->vkGetInstanceProcAddr(instance, "vkDestroyEvent");
1158     out->vkGetEventStatus =
1159         (PFN_vkGetEventStatus)vk->vkGetInstanceProcAddr(instance, "vkGetEventStatus");
1160     out->vkSetEvent = (PFN_vkSetEvent)vk->vkGetInstanceProcAddr(instance, "vkSetEvent");
1161     out->vkResetEvent = (PFN_vkResetEvent)vk->vkGetInstanceProcAddr(instance, "vkResetEvent");
1162     out->vkCreateQueryPool =
1163         (PFN_vkCreateQueryPool)vk->vkGetInstanceProcAddr(instance, "vkCreateQueryPool");
1164     out->vkDestroyQueryPool =
1165         (PFN_vkDestroyQueryPool)vk->vkGetInstanceProcAddr(instance, "vkDestroyQueryPool");
1166     out->vkGetQueryPoolResults =
1167         (PFN_vkGetQueryPoolResults)vk->vkGetInstanceProcAddr(instance, "vkGetQueryPoolResults");
1168     out->vkCreateBuffer = (PFN_vkCreateBuffer)vk->vkGetInstanceProcAddr(instance, "vkCreateBuffer");
1169     out->vkDestroyBuffer =
1170         (PFN_vkDestroyBuffer)vk->vkGetInstanceProcAddr(instance, "vkDestroyBuffer");
1171     out->vkCreateBufferView =
1172         (PFN_vkCreateBufferView)vk->vkGetInstanceProcAddr(instance, "vkCreateBufferView");
1173     out->vkDestroyBufferView =
1174         (PFN_vkDestroyBufferView)vk->vkGetInstanceProcAddr(instance, "vkDestroyBufferView");
1175     out->vkCreateImage = (PFN_vkCreateImage)vk->vkGetInstanceProcAddr(instance, "vkCreateImage");
1176     out->vkDestroyImage = (PFN_vkDestroyImage)vk->vkGetInstanceProcAddr(instance, "vkDestroyImage");
1177     out->vkGetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout)vk->vkGetInstanceProcAddr(
1178         instance, "vkGetImageSubresourceLayout");
1179     out->vkCreateImageView =
1180         (PFN_vkCreateImageView)vk->vkGetInstanceProcAddr(instance, "vkCreateImageView");
1181     out->vkDestroyImageView =
1182         (PFN_vkDestroyImageView)vk->vkGetInstanceProcAddr(instance, "vkDestroyImageView");
1183     out->vkCreateShaderModule =
1184         (PFN_vkCreateShaderModule)vk->vkGetInstanceProcAddr(instance, "vkCreateShaderModule");
1185     out->vkDestroyShaderModule =
1186         (PFN_vkDestroyShaderModule)vk->vkGetInstanceProcAddr(instance, "vkDestroyShaderModule");
1187     out->vkCreatePipelineCache =
1188         (PFN_vkCreatePipelineCache)vk->vkGetInstanceProcAddr(instance, "vkCreatePipelineCache");
1189     out->vkDestroyPipelineCache =
1190         (PFN_vkDestroyPipelineCache)vk->vkGetInstanceProcAddr(instance, "vkDestroyPipelineCache");
1191     out->vkGetPipelineCacheData =
1192         (PFN_vkGetPipelineCacheData)vk->vkGetInstanceProcAddr(instance, "vkGetPipelineCacheData");
1193     out->vkMergePipelineCaches =
1194         (PFN_vkMergePipelineCaches)vk->vkGetInstanceProcAddr(instance, "vkMergePipelineCaches");
1195     out->vkCreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines)vk->vkGetInstanceProcAddr(
1196         instance, "vkCreateGraphicsPipelines");
1197     out->vkCreateComputePipelines = (PFN_vkCreateComputePipelines)vk->vkGetInstanceProcAddr(
1198         instance, "vkCreateComputePipelines");
1199     out->vkDestroyPipeline =
1200         (PFN_vkDestroyPipeline)vk->vkGetInstanceProcAddr(instance, "vkDestroyPipeline");
1201     out->vkCreatePipelineLayout =
1202         (PFN_vkCreatePipelineLayout)vk->vkGetInstanceProcAddr(instance, "vkCreatePipelineLayout");
1203     out->vkDestroyPipelineLayout =
1204         (PFN_vkDestroyPipelineLayout)vk->vkGetInstanceProcAddr(instance, "vkDestroyPipelineLayout");
1205     out->vkCreateSampler =
1206         (PFN_vkCreateSampler)vk->vkGetInstanceProcAddr(instance, "vkCreateSampler");
1207     out->vkDestroySampler =
1208         (PFN_vkDestroySampler)vk->vkGetInstanceProcAddr(instance, "vkDestroySampler");
1209     out->vkCreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout)vk->vkGetInstanceProcAddr(
1210         instance, "vkCreateDescriptorSetLayout");
1211     out->vkDestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout)vk->vkGetInstanceProcAddr(
1212         instance, "vkDestroyDescriptorSetLayout");
1213     out->vkCreateDescriptorPool =
1214         (PFN_vkCreateDescriptorPool)vk->vkGetInstanceProcAddr(instance, "vkCreateDescriptorPool");
1215     out->vkDestroyDescriptorPool =
1216         (PFN_vkDestroyDescriptorPool)vk->vkGetInstanceProcAddr(instance, "vkDestroyDescriptorPool");
1217     out->vkResetDescriptorPool =
1218         (PFN_vkResetDescriptorPool)vk->vkGetInstanceProcAddr(instance, "vkResetDescriptorPool");
1219     out->vkAllocateDescriptorSets = (PFN_vkAllocateDescriptorSets)vk->vkGetInstanceProcAddr(
1220         instance, "vkAllocateDescriptorSets");
1221     out->vkFreeDescriptorSets =
1222         (PFN_vkFreeDescriptorSets)vk->vkGetInstanceProcAddr(instance, "vkFreeDescriptorSets");
1223     out->vkUpdateDescriptorSets =
1224         (PFN_vkUpdateDescriptorSets)vk->vkGetInstanceProcAddr(instance, "vkUpdateDescriptorSets");
1225     out->vkCreateFramebuffer =
1226         (PFN_vkCreateFramebuffer)vk->vkGetInstanceProcAddr(instance, "vkCreateFramebuffer");
1227     out->vkDestroyFramebuffer =
1228         (PFN_vkDestroyFramebuffer)vk->vkGetInstanceProcAddr(instance, "vkDestroyFramebuffer");
1229     out->vkCreateRenderPass =
1230         (PFN_vkCreateRenderPass)vk->vkGetInstanceProcAddr(instance, "vkCreateRenderPass");
1231     out->vkDestroyRenderPass =
1232         (PFN_vkDestroyRenderPass)vk->vkGetInstanceProcAddr(instance, "vkDestroyRenderPass");
1233     out->vkGetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity)vk->vkGetInstanceProcAddr(
1234         instance, "vkGetRenderAreaGranularity");
1235     out->vkCreateCommandPool =
1236         (PFN_vkCreateCommandPool)vk->vkGetInstanceProcAddr(instance, "vkCreateCommandPool");
1237     out->vkDestroyCommandPool =
1238         (PFN_vkDestroyCommandPool)vk->vkGetInstanceProcAddr(instance, "vkDestroyCommandPool");
1239     out->vkResetCommandPool =
1240         (PFN_vkResetCommandPool)vk->vkGetInstanceProcAddr(instance, "vkResetCommandPool");
1241     out->vkAllocateCommandBuffers = (PFN_vkAllocateCommandBuffers)vk->vkGetInstanceProcAddr(
1242         instance, "vkAllocateCommandBuffers");
1243     out->vkFreeCommandBuffers =
1244         (PFN_vkFreeCommandBuffers)vk->vkGetInstanceProcAddr(instance, "vkFreeCommandBuffers");
1245     out->vkBeginCommandBuffer =
1246         (PFN_vkBeginCommandBuffer)vk->vkGetInstanceProcAddr(instance, "vkBeginCommandBuffer");
1247     out->vkEndCommandBuffer =
1248         (PFN_vkEndCommandBuffer)vk->vkGetInstanceProcAddr(instance, "vkEndCommandBuffer");
1249     out->vkResetCommandBuffer =
1250         (PFN_vkResetCommandBuffer)vk->vkGetInstanceProcAddr(instance, "vkResetCommandBuffer");
1251     out->vkCmdBindPipeline =
1252         (PFN_vkCmdBindPipeline)vk->vkGetInstanceProcAddr(instance, "vkCmdBindPipeline");
1253     out->vkCmdSetViewport =
1254         (PFN_vkCmdSetViewport)vk->vkGetInstanceProcAddr(instance, "vkCmdSetViewport");
1255     out->vkCmdSetScissor =
1256         (PFN_vkCmdSetScissor)vk->vkGetInstanceProcAddr(instance, "vkCmdSetScissor");
1257     out->vkCmdSetLineWidth =
1258         (PFN_vkCmdSetLineWidth)vk->vkGetInstanceProcAddr(instance, "vkCmdSetLineWidth");
1259     out->vkCmdSetDepthBias =
1260         (PFN_vkCmdSetDepthBias)vk->vkGetInstanceProcAddr(instance, "vkCmdSetDepthBias");
1261     out->vkCmdSetBlendConstants =
1262         (PFN_vkCmdSetBlendConstants)vk->vkGetInstanceProcAddr(instance, "vkCmdSetBlendConstants");
1263     out->vkCmdSetDepthBounds =
1264         (PFN_vkCmdSetDepthBounds)vk->vkGetInstanceProcAddr(instance, "vkCmdSetDepthBounds");
1265     out->vkCmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask)vk->vkGetInstanceProcAddr(
1266         instance, "vkCmdSetStencilCompareMask");
1267     out->vkCmdSetStencilWriteMask = (PFN_vkCmdSetStencilWriteMask)vk->vkGetInstanceProcAddr(
1268         instance, "vkCmdSetStencilWriteMask");
1269     out->vkCmdSetStencilReference = (PFN_vkCmdSetStencilReference)vk->vkGetInstanceProcAddr(
1270         instance, "vkCmdSetStencilReference");
1271     out->vkCmdBindDescriptorSets =
1272         (PFN_vkCmdBindDescriptorSets)vk->vkGetInstanceProcAddr(instance, "vkCmdBindDescriptorSets");
1273     out->vkCmdBindIndexBuffer =
1274         (PFN_vkCmdBindIndexBuffer)vk->vkGetInstanceProcAddr(instance, "vkCmdBindIndexBuffer");
1275     out->vkCmdBindVertexBuffers =
1276         (PFN_vkCmdBindVertexBuffers)vk->vkGetInstanceProcAddr(instance, "vkCmdBindVertexBuffers");
1277     out->vkCmdDraw = (PFN_vkCmdDraw)vk->vkGetInstanceProcAddr(instance, "vkCmdDraw");
1278     out->vkCmdDrawIndexed =
1279         (PFN_vkCmdDrawIndexed)vk->vkGetInstanceProcAddr(instance, "vkCmdDrawIndexed");
1280     out->vkCmdDrawIndirect =
1281         (PFN_vkCmdDrawIndirect)vk->vkGetInstanceProcAddr(instance, "vkCmdDrawIndirect");
1282     out->vkCmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect)vk->vkGetInstanceProcAddr(
1283         instance, "vkCmdDrawIndexedIndirect");
1284     out->vkCmdDispatch = (PFN_vkCmdDispatch)vk->vkGetInstanceProcAddr(instance, "vkCmdDispatch");
1285     out->vkCmdDispatchIndirect =
1286         (PFN_vkCmdDispatchIndirect)vk->vkGetInstanceProcAddr(instance, "vkCmdDispatchIndirect");
1287     out->vkCmdCopyBuffer =
1288         (PFN_vkCmdCopyBuffer)vk->vkGetInstanceProcAddr(instance, "vkCmdCopyBuffer");
1289     out->vkCmdCopyImage = (PFN_vkCmdCopyImage)vk->vkGetInstanceProcAddr(instance, "vkCmdCopyImage");
1290     out->vkCmdBlitImage = (PFN_vkCmdBlitImage)vk->vkGetInstanceProcAddr(instance, "vkCmdBlitImage");
1291     out->vkCmdCopyBufferToImage =
1292         (PFN_vkCmdCopyBufferToImage)vk->vkGetInstanceProcAddr(instance, "vkCmdCopyBufferToImage");
1293     out->vkCmdCopyImageToBuffer =
1294         (PFN_vkCmdCopyImageToBuffer)vk->vkGetInstanceProcAddr(instance, "vkCmdCopyImageToBuffer");
1295     out->vkCmdUpdateBuffer =
1296         (PFN_vkCmdUpdateBuffer)vk->vkGetInstanceProcAddr(instance, "vkCmdUpdateBuffer");
1297     out->vkCmdFillBuffer =
1298         (PFN_vkCmdFillBuffer)vk->vkGetInstanceProcAddr(instance, "vkCmdFillBuffer");
1299     out->vkCmdClearColorImage =
1300         (PFN_vkCmdClearColorImage)vk->vkGetInstanceProcAddr(instance, "vkCmdClearColorImage");
1301     out->vkCmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage)vk->vkGetInstanceProcAddr(
1302         instance, "vkCmdClearDepthStencilImage");
1303     out->vkCmdClearAttachments =
1304         (PFN_vkCmdClearAttachments)vk->vkGetInstanceProcAddr(instance, "vkCmdClearAttachments");
1305     out->vkCmdResolveImage =
1306         (PFN_vkCmdResolveImage)vk->vkGetInstanceProcAddr(instance, "vkCmdResolveImage");
1307     out->vkCmdSetEvent = (PFN_vkCmdSetEvent)vk->vkGetInstanceProcAddr(instance, "vkCmdSetEvent");
1308     out->vkCmdResetEvent =
1309         (PFN_vkCmdResetEvent)vk->vkGetInstanceProcAddr(instance, "vkCmdResetEvent");
1310     out->vkCmdWaitEvents =
1311         (PFN_vkCmdWaitEvents)vk->vkGetInstanceProcAddr(instance, "vkCmdWaitEvents");
1312     out->vkCmdPipelineBarrier =
1313         (PFN_vkCmdPipelineBarrier)vk->vkGetInstanceProcAddr(instance, "vkCmdPipelineBarrier");
1314     out->vkCmdBeginQuery =
1315         (PFN_vkCmdBeginQuery)vk->vkGetInstanceProcAddr(instance, "vkCmdBeginQuery");
1316     out->vkCmdEndQuery = (PFN_vkCmdEndQuery)vk->vkGetInstanceProcAddr(instance, "vkCmdEndQuery");
1317     out->vkCmdResetQueryPool =
1318         (PFN_vkCmdResetQueryPool)vk->vkGetInstanceProcAddr(instance, "vkCmdResetQueryPool");
1319     out->vkCmdWriteTimestamp =
1320         (PFN_vkCmdWriteTimestamp)vk->vkGetInstanceProcAddr(instance, "vkCmdWriteTimestamp");
1321     out->vkCmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults)vk->vkGetInstanceProcAddr(
1322         instance, "vkCmdCopyQueryPoolResults");
1323     out->vkCmdPushConstants =
1324         (PFN_vkCmdPushConstants)vk->vkGetInstanceProcAddr(instance, "vkCmdPushConstants");
1325     out->vkCmdBeginRenderPass =
1326         (PFN_vkCmdBeginRenderPass)vk->vkGetInstanceProcAddr(instance, "vkCmdBeginRenderPass");
1327     out->vkCmdNextSubpass =
1328         (PFN_vkCmdNextSubpass)vk->vkGetInstanceProcAddr(instance, "vkCmdNextSubpass");
1329     out->vkCmdEndRenderPass =
1330         (PFN_vkCmdEndRenderPass)vk->vkGetInstanceProcAddr(instance, "vkCmdEndRenderPass");
1331     out->vkCmdExecuteCommands =
1332         (PFN_vkCmdExecuteCommands)vk->vkGetInstanceProcAddr(instance, "vkCmdExecuteCommands");
1333 #endif
1334 #ifdef VK_VERSION_1_1
1335     out->vkBindBufferMemory2 =
1336         (PFN_vkBindBufferMemory2)vk->vkGetInstanceProcAddr(instance, "vkBindBufferMemory2");
1337     out->vkBindImageMemory2 =
1338         (PFN_vkBindImageMemory2)vk->vkGetInstanceProcAddr(instance, "vkBindImageMemory2");
1339     out->vkGetDeviceGroupPeerMemoryFeatures =
1340         (PFN_vkGetDeviceGroupPeerMemoryFeatures)vk->vkGetInstanceProcAddr(
1341             instance, "vkGetDeviceGroupPeerMemoryFeatures");
1342     out->vkCmdSetDeviceMask =
1343         (PFN_vkCmdSetDeviceMask)vk->vkGetInstanceProcAddr(instance, "vkCmdSetDeviceMask");
1344     out->vkCmdDispatchBase =
1345         (PFN_vkCmdDispatchBase)vk->vkGetInstanceProcAddr(instance, "vkCmdDispatchBase");
1346     out->vkGetImageMemoryRequirements2 =
1347         (PFN_vkGetImageMemoryRequirements2)vk->vkGetInstanceProcAddr(
1348             instance, "vkGetImageMemoryRequirements2");
1349     out->vkGetBufferMemoryRequirements2 =
1350         (PFN_vkGetBufferMemoryRequirements2)vk->vkGetInstanceProcAddr(
1351             instance, "vkGetBufferMemoryRequirements2");
1352     out->vkGetImageSparseMemoryRequirements2 =
1353         (PFN_vkGetImageSparseMemoryRequirements2)vk->vkGetInstanceProcAddr(
1354             instance, "vkGetImageSparseMemoryRequirements2");
1355     out->vkTrimCommandPool =
1356         (PFN_vkTrimCommandPool)vk->vkGetInstanceProcAddr(instance, "vkTrimCommandPool");
1357     out->vkGetDeviceQueue2 =
1358         (PFN_vkGetDeviceQueue2)vk->vkGetInstanceProcAddr(instance, "vkGetDeviceQueue2");
1359     out->vkCreateSamplerYcbcrConversion =
1360         (PFN_vkCreateSamplerYcbcrConversion)vk->vkGetInstanceProcAddr(
1361             instance, "vkCreateSamplerYcbcrConversion");
1362     out->vkDestroySamplerYcbcrConversion =
1363         (PFN_vkDestroySamplerYcbcrConversion)vk->vkGetInstanceProcAddr(
1364             instance, "vkDestroySamplerYcbcrConversion");
1365     out->vkCreateDescriptorUpdateTemplate =
1366         (PFN_vkCreateDescriptorUpdateTemplate)vk->vkGetInstanceProcAddr(
1367             instance, "vkCreateDescriptorUpdateTemplate");
1368     out->vkDestroyDescriptorUpdateTemplate =
1369         (PFN_vkDestroyDescriptorUpdateTemplate)vk->vkGetInstanceProcAddr(
1370             instance, "vkDestroyDescriptorUpdateTemplate");
1371     out->vkUpdateDescriptorSetWithTemplate =
1372         (PFN_vkUpdateDescriptorSetWithTemplate)vk->vkGetInstanceProcAddr(
1373             instance, "vkUpdateDescriptorSetWithTemplate");
1374     out->vkGetDescriptorSetLayoutSupport =
1375         (PFN_vkGetDescriptorSetLayoutSupport)vk->vkGetInstanceProcAddr(
1376             instance, "vkGetDescriptorSetLayoutSupport");
1377 #endif
1378 #ifdef VK_VERSION_1_2
1379     out->vkCmdDrawIndirectCount =
1380         (PFN_vkCmdDrawIndirectCount)vk->vkGetInstanceProcAddr(instance, "vkCmdDrawIndirectCount");
1381     out->vkCmdDrawIndexedIndirectCount =
1382         (PFN_vkCmdDrawIndexedIndirectCount)vk->vkGetInstanceProcAddr(
1383             instance, "vkCmdDrawIndexedIndirectCount");
1384     out->vkCreateRenderPass2 =
1385         (PFN_vkCreateRenderPass2)vk->vkGetInstanceProcAddr(instance, "vkCreateRenderPass2");
1386     out->vkCmdBeginRenderPass2 =
1387         (PFN_vkCmdBeginRenderPass2)vk->vkGetInstanceProcAddr(instance, "vkCmdBeginRenderPass2");
1388     out->vkCmdNextSubpass2 =
1389         (PFN_vkCmdNextSubpass2)vk->vkGetInstanceProcAddr(instance, "vkCmdNextSubpass2");
1390     out->vkCmdEndRenderPass2 =
1391         (PFN_vkCmdEndRenderPass2)vk->vkGetInstanceProcAddr(instance, "vkCmdEndRenderPass2");
1392     out->vkResetQueryPool =
1393         (PFN_vkResetQueryPool)vk->vkGetInstanceProcAddr(instance, "vkResetQueryPool");
1394     out->vkGetSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue)vk->vkGetInstanceProcAddr(
1395         instance, "vkGetSemaphoreCounterValue");
1396     out->vkWaitSemaphores =
1397         (PFN_vkWaitSemaphores)vk->vkGetInstanceProcAddr(instance, "vkWaitSemaphores");
1398     out->vkSignalSemaphore =
1399         (PFN_vkSignalSemaphore)vk->vkGetInstanceProcAddr(instance, "vkSignalSemaphore");
1400     out->vkGetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddress)vk->vkGetInstanceProcAddr(
1401         instance, "vkGetBufferDeviceAddress");
1402     out->vkGetBufferOpaqueCaptureAddress =
1403         (PFN_vkGetBufferOpaqueCaptureAddress)vk->vkGetInstanceProcAddr(
1404             instance, "vkGetBufferOpaqueCaptureAddress");
1405     out->vkGetDeviceMemoryOpaqueCaptureAddress =
1406         (PFN_vkGetDeviceMemoryOpaqueCaptureAddress)vk->vkGetInstanceProcAddr(
1407             instance, "vkGetDeviceMemoryOpaqueCaptureAddress");
1408 #endif
1409 #ifdef VK_VERSION_1_3
1410     out->vkGetPhysicalDeviceToolProperties =
1411         (PFN_vkGetPhysicalDeviceToolProperties)vk->vkGetInstanceProcAddr(
1412             instance, "vkGetPhysicalDeviceToolProperties");
1413     out->vkCreatePrivateDataSlot =
1414         (PFN_vkCreatePrivateDataSlot)vk->vkGetInstanceProcAddr(instance, "vkCreatePrivateDataSlot");
1415     out->vkDestroyPrivateDataSlot = (PFN_vkDestroyPrivateDataSlot)vk->vkGetInstanceProcAddr(
1416         instance, "vkDestroyPrivateDataSlot");
1417     out->vkSetPrivateData =
1418         (PFN_vkSetPrivateData)vk->vkGetInstanceProcAddr(instance, "vkSetPrivateData");
1419     out->vkGetPrivateData =
1420         (PFN_vkGetPrivateData)vk->vkGetInstanceProcAddr(instance, "vkGetPrivateData");
1421     out->vkCmdSetEvent2 = (PFN_vkCmdSetEvent2)vk->vkGetInstanceProcAddr(instance, "vkCmdSetEvent2");
1422     out->vkCmdResetEvent2 =
1423         (PFN_vkCmdResetEvent2)vk->vkGetInstanceProcAddr(instance, "vkCmdResetEvent2");
1424     out->vkCmdWaitEvents2 =
1425         (PFN_vkCmdWaitEvents2)vk->vkGetInstanceProcAddr(instance, "vkCmdWaitEvents2");
1426     out->vkCmdPipelineBarrier2 =
1427         (PFN_vkCmdPipelineBarrier2)vk->vkGetInstanceProcAddr(instance, "vkCmdPipelineBarrier2");
1428     out->vkCmdWriteTimestamp2 =
1429         (PFN_vkCmdWriteTimestamp2)vk->vkGetInstanceProcAddr(instance, "vkCmdWriteTimestamp2");
1430     out->vkQueueSubmit2 = (PFN_vkQueueSubmit2)vk->vkGetInstanceProcAddr(instance, "vkQueueSubmit2");
1431     out->vkCmdCopyBuffer2 =
1432         (PFN_vkCmdCopyBuffer2)vk->vkGetInstanceProcAddr(instance, "vkCmdCopyBuffer2");
1433     out->vkCmdCopyImage2 =
1434         (PFN_vkCmdCopyImage2)vk->vkGetInstanceProcAddr(instance, "vkCmdCopyImage2");
1435     out->vkCmdCopyBufferToImage2 =
1436         (PFN_vkCmdCopyBufferToImage2)vk->vkGetInstanceProcAddr(instance, "vkCmdCopyBufferToImage2");
1437     out->vkCmdCopyImageToBuffer2 =
1438         (PFN_vkCmdCopyImageToBuffer2)vk->vkGetInstanceProcAddr(instance, "vkCmdCopyImageToBuffer2");
1439     out->vkCmdBlitImage2 =
1440         (PFN_vkCmdBlitImage2)vk->vkGetInstanceProcAddr(instance, "vkCmdBlitImage2");
1441     out->vkCmdResolveImage2 =
1442         (PFN_vkCmdResolveImage2)vk->vkGetInstanceProcAddr(instance, "vkCmdResolveImage2");
1443     out->vkCmdBeginRendering =
1444         (PFN_vkCmdBeginRendering)vk->vkGetInstanceProcAddr(instance, "vkCmdBeginRendering");
1445     out->vkCmdEndRendering =
1446         (PFN_vkCmdEndRendering)vk->vkGetInstanceProcAddr(instance, "vkCmdEndRendering");
1447     out->vkCmdSetCullMode =
1448         (PFN_vkCmdSetCullMode)vk->vkGetInstanceProcAddr(instance, "vkCmdSetCullMode");
1449     out->vkCmdSetFrontFace =
1450         (PFN_vkCmdSetFrontFace)vk->vkGetInstanceProcAddr(instance, "vkCmdSetFrontFace");
1451     out->vkCmdSetPrimitiveTopology = (PFN_vkCmdSetPrimitiveTopology)vk->vkGetInstanceProcAddr(
1452         instance, "vkCmdSetPrimitiveTopology");
1453     out->vkCmdSetViewportWithCount = (PFN_vkCmdSetViewportWithCount)vk->vkGetInstanceProcAddr(
1454         instance, "vkCmdSetViewportWithCount");
1455     out->vkCmdSetScissorWithCount = (PFN_vkCmdSetScissorWithCount)vk->vkGetInstanceProcAddr(
1456         instance, "vkCmdSetScissorWithCount");
1457     out->vkCmdBindVertexBuffers2 =
1458         (PFN_vkCmdBindVertexBuffers2)vk->vkGetInstanceProcAddr(instance, "vkCmdBindVertexBuffers2");
1459     out->vkCmdSetDepthTestEnable =
1460         (PFN_vkCmdSetDepthTestEnable)vk->vkGetInstanceProcAddr(instance, "vkCmdSetDepthTestEnable");
1461     out->vkCmdSetDepthWriteEnable = (PFN_vkCmdSetDepthWriteEnable)vk->vkGetInstanceProcAddr(
1462         instance, "vkCmdSetDepthWriteEnable");
1463     out->vkCmdSetDepthCompareOp =
1464         (PFN_vkCmdSetDepthCompareOp)vk->vkGetInstanceProcAddr(instance, "vkCmdSetDepthCompareOp");
1465     out->vkCmdSetDepthBoundsTestEnable =
1466         (PFN_vkCmdSetDepthBoundsTestEnable)vk->vkGetInstanceProcAddr(
1467             instance, "vkCmdSetDepthBoundsTestEnable");
1468     out->vkCmdSetStencilTestEnable = (PFN_vkCmdSetStencilTestEnable)vk->vkGetInstanceProcAddr(
1469         instance, "vkCmdSetStencilTestEnable");
1470     out->vkCmdSetStencilOp =
1471         (PFN_vkCmdSetStencilOp)vk->vkGetInstanceProcAddr(instance, "vkCmdSetStencilOp");
1472     out->vkCmdSetRasterizerDiscardEnable =
1473         (PFN_vkCmdSetRasterizerDiscardEnable)vk->vkGetInstanceProcAddr(
1474             instance, "vkCmdSetRasterizerDiscardEnable");
1475     out->vkCmdSetDepthBiasEnable =
1476         (PFN_vkCmdSetDepthBiasEnable)vk->vkGetInstanceProcAddr(instance, "vkCmdSetDepthBiasEnable");
1477     out->vkCmdSetPrimitiveRestartEnable =
1478         (PFN_vkCmdSetPrimitiveRestartEnable)vk->vkGetInstanceProcAddr(
1479             instance, "vkCmdSetPrimitiveRestartEnable");
1480     out->vkGetDeviceBufferMemoryRequirements =
1481         (PFN_vkGetDeviceBufferMemoryRequirements)vk->vkGetInstanceProcAddr(
1482             instance, "vkGetDeviceBufferMemoryRequirements");
1483     out->vkGetDeviceImageMemoryRequirements =
1484         (PFN_vkGetDeviceImageMemoryRequirements)vk->vkGetInstanceProcAddr(
1485             instance, "vkGetDeviceImageMemoryRequirements");
1486     out->vkGetDeviceImageSparseMemoryRequirements =
1487         (PFN_vkGetDeviceImageSparseMemoryRequirements)vk->vkGetInstanceProcAddr(
1488             instance, "vkGetDeviceImageSparseMemoryRequirements");
1489 #endif
1490 #ifdef VK_KHR_surface
1491     out->vkGetPhysicalDeviceSurfaceSupportKHR =
1492         (PFN_vkGetPhysicalDeviceSurfaceSupportKHR)vk->vkGetInstanceProcAddr(
1493             instance, "vkGetPhysicalDeviceSurfaceSupportKHR");
1494     out->vkGetPhysicalDeviceSurfaceCapabilitiesKHR =
1495         (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)vk->vkGetInstanceProcAddr(
1496             instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
1497     out->vkGetPhysicalDeviceSurfaceFormatsKHR =
1498         (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)vk->vkGetInstanceProcAddr(
1499             instance, "vkGetPhysicalDeviceSurfaceFormatsKHR");
1500     out->vkGetPhysicalDeviceSurfacePresentModesKHR =
1501         (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)vk->vkGetInstanceProcAddr(
1502             instance, "vkGetPhysicalDeviceSurfacePresentModesKHR");
1503 #endif
1504 #ifdef VK_KHR_swapchain
1505     out->vkGetDeviceGroupPresentCapabilitiesKHR =
1506         (PFN_vkGetDeviceGroupPresentCapabilitiesKHR)vk->vkGetInstanceProcAddr(
1507             instance, "vkGetDeviceGroupPresentCapabilitiesKHR");
1508     out->vkGetDeviceGroupSurfacePresentModesKHR =
1509         (PFN_vkGetDeviceGroupSurfacePresentModesKHR)vk->vkGetInstanceProcAddr(
1510             instance, "vkGetDeviceGroupSurfacePresentModesKHR");
1511     out->vkGetPhysicalDevicePresentRectanglesKHR =
1512         (PFN_vkGetPhysicalDevicePresentRectanglesKHR)vk->vkGetInstanceProcAddr(
1513             instance, "vkGetPhysicalDevicePresentRectanglesKHR");
1514     out->vkAcquireNextImage2KHR =
1515         (PFN_vkAcquireNextImage2KHR)vk->vkGetInstanceProcAddr(instance, "vkAcquireNextImage2KHR");
1516 #endif
1517 #ifdef VK_KHR_dynamic_rendering
1518     out->vkCmdBeginRenderingKHR =
1519         (PFN_vkCmdBeginRenderingKHR)vk->vkGetInstanceProcAddr(instance, "vkCmdBeginRenderingKHR");
1520     out->vkCmdEndRenderingKHR =
1521         (PFN_vkCmdEndRenderingKHR)vk->vkGetInstanceProcAddr(instance, "vkCmdEndRenderingKHR");
1522 #endif
1523 #ifdef VK_KHR_get_physical_device_properties2
1524     out->vkGetPhysicalDeviceFeatures2KHR =
1525         (PFN_vkGetPhysicalDeviceFeatures2KHR)vk->vkGetInstanceProcAddr(
1526             instance, "vkGetPhysicalDeviceFeatures2KHR");
1527     out->vkGetPhysicalDeviceProperties2KHR =
1528         (PFN_vkGetPhysicalDeviceProperties2KHR)vk->vkGetInstanceProcAddr(
1529             instance, "vkGetPhysicalDeviceProperties2KHR");
1530     out->vkGetPhysicalDeviceFormatProperties2KHR =
1531         (PFN_vkGetPhysicalDeviceFormatProperties2KHR)vk->vkGetInstanceProcAddr(
1532             instance, "vkGetPhysicalDeviceFormatProperties2KHR");
1533     out->vkGetPhysicalDeviceImageFormatProperties2KHR =
1534         (PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)vk->vkGetInstanceProcAddr(
1535             instance, "vkGetPhysicalDeviceImageFormatProperties2KHR");
1536     out->vkGetPhysicalDeviceQueueFamilyProperties2KHR =
1537         (PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)vk->vkGetInstanceProcAddr(
1538             instance, "vkGetPhysicalDeviceQueueFamilyProperties2KHR");
1539     out->vkGetPhysicalDeviceMemoryProperties2KHR =
1540         (PFN_vkGetPhysicalDeviceMemoryProperties2KHR)vk->vkGetInstanceProcAddr(
1541             instance, "vkGetPhysicalDeviceMemoryProperties2KHR");
1542     out->vkGetPhysicalDeviceSparseImageFormatProperties2KHR =
1543         (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)vk->vkGetInstanceProcAddr(
1544             instance, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
1545 #endif
1546 #ifdef VK_KHR_maintenance1
1547     out->vkTrimCommandPoolKHR =
1548         (PFN_vkTrimCommandPoolKHR)vk->vkGetInstanceProcAddr(instance, "vkTrimCommandPoolKHR");
1549 #endif
1550 #ifdef VK_KHR_external_memory_capabilities
1551     out->vkGetPhysicalDeviceExternalBufferPropertiesKHR =
1552         (PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)vk->vkGetInstanceProcAddr(
1553             instance, "vkGetPhysicalDeviceExternalBufferPropertiesKHR");
1554 #endif
1555 #ifdef VK_KHR_external_memory_win32
1556     out->vkGetMemoryWin32HandleKHR = (PFN_vkGetMemoryWin32HandleKHR)vk->vkGetInstanceProcAddr(
1557         instance, "vkGetMemoryWin32HandleKHR");
1558     out->vkGetMemoryWin32HandlePropertiesKHR =
1559         (PFN_vkGetMemoryWin32HandlePropertiesKHR)vk->vkGetInstanceProcAddr(
1560             instance, "vkGetMemoryWin32HandlePropertiesKHR");
1561 #endif
1562 #ifdef VK_KHR_external_memory_fd
1563     out->vkGetMemoryFdKHR =
1564         (PFN_vkGetMemoryFdKHR)vk->vkGetInstanceProcAddr(instance, "vkGetMemoryFdKHR");
1565     out->vkGetMemoryFdPropertiesKHR = (PFN_vkGetMemoryFdPropertiesKHR)vk->vkGetInstanceProcAddr(
1566         instance, "vkGetMemoryFdPropertiesKHR");
1567 #endif
1568 #ifdef VK_KHR_external_semaphore_capabilities
1569     out->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR =
1570         (PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)vk->vkGetInstanceProcAddr(
1571             instance, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
1572 #endif
1573 #ifdef VK_KHR_external_semaphore_win32
1574     out->vkImportSemaphoreWin32HandleKHR =
1575         (PFN_vkImportSemaphoreWin32HandleKHR)vk->vkGetInstanceProcAddr(
1576             instance, "vkImportSemaphoreWin32HandleKHR");
1577     out->vkGetSemaphoreWin32HandleKHR = (PFN_vkGetSemaphoreWin32HandleKHR)vk->vkGetInstanceProcAddr(
1578         instance, "vkGetSemaphoreWin32HandleKHR");
1579 #endif
1580 #ifdef VK_KHR_external_semaphore_fd
1581     out->vkImportSemaphoreFdKHR =
1582         (PFN_vkImportSemaphoreFdKHR)vk->vkGetInstanceProcAddr(instance, "vkImportSemaphoreFdKHR");
1583     out->vkGetSemaphoreFdKHR =
1584         (PFN_vkGetSemaphoreFdKHR)vk->vkGetInstanceProcAddr(instance, "vkGetSemaphoreFdKHR");
1585 #endif
1586 #ifdef VK_KHR_descriptor_update_template
1587     out->vkCreateDescriptorUpdateTemplateKHR =
1588         (PFN_vkCreateDescriptorUpdateTemplateKHR)vk->vkGetInstanceProcAddr(
1589             instance, "vkCreateDescriptorUpdateTemplateKHR");
1590     out->vkDestroyDescriptorUpdateTemplateKHR =
1591         (PFN_vkDestroyDescriptorUpdateTemplateKHR)vk->vkGetInstanceProcAddr(
1592             instance, "vkDestroyDescriptorUpdateTemplateKHR");
1593     out->vkUpdateDescriptorSetWithTemplateKHR =
1594         (PFN_vkUpdateDescriptorSetWithTemplateKHR)vk->vkGetInstanceProcAddr(
1595             instance, "vkUpdateDescriptorSetWithTemplateKHR");
1596 #endif
1597 #ifdef VK_KHR_create_renderpass2
1598     out->vkCreateRenderPass2KHR =
1599         (PFN_vkCreateRenderPass2KHR)vk->vkGetInstanceProcAddr(instance, "vkCreateRenderPass2KHR");
1600     out->vkCmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR)vk->vkGetInstanceProcAddr(
1601         instance, "vkCmdBeginRenderPass2KHR");
1602     out->vkCmdNextSubpass2KHR =
1603         (PFN_vkCmdNextSubpass2KHR)vk->vkGetInstanceProcAddr(instance, "vkCmdNextSubpass2KHR");
1604     out->vkCmdEndRenderPass2KHR =
1605         (PFN_vkCmdEndRenderPass2KHR)vk->vkGetInstanceProcAddr(instance, "vkCmdEndRenderPass2KHR");
1606 #endif
1607 #ifdef VK_KHR_external_fence_capabilities
1608     out->vkGetPhysicalDeviceExternalFencePropertiesKHR =
1609         (PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)vk->vkGetInstanceProcAddr(
1610             instance, "vkGetPhysicalDeviceExternalFencePropertiesKHR");
1611 #endif
1612 #ifdef VK_KHR_external_fence_fd
1613     out->vkImportFenceFdKHR =
1614         (PFN_vkImportFenceFdKHR)vk->vkGetInstanceProcAddr(instance, "vkImportFenceFdKHR");
1615     out->vkGetFenceFdKHR =
1616         (PFN_vkGetFenceFdKHR)vk->vkGetInstanceProcAddr(instance, "vkGetFenceFdKHR");
1617 #endif
1618 #ifdef VK_KHR_get_memory_requirements2
1619     out->vkGetImageMemoryRequirements2KHR =
1620         (PFN_vkGetImageMemoryRequirements2KHR)vk->vkGetInstanceProcAddr(
1621             instance, "vkGetImageMemoryRequirements2KHR");
1622     out->vkGetBufferMemoryRequirements2KHR =
1623         (PFN_vkGetBufferMemoryRequirements2KHR)vk->vkGetInstanceProcAddr(
1624             instance, "vkGetBufferMemoryRequirements2KHR");
1625     out->vkGetImageSparseMemoryRequirements2KHR =
1626         (PFN_vkGetImageSparseMemoryRequirements2KHR)vk->vkGetInstanceProcAddr(
1627             instance, "vkGetImageSparseMemoryRequirements2KHR");
1628 #endif
1629 #ifdef VK_KHR_sampler_ycbcr_conversion
1630     out->vkCreateSamplerYcbcrConversionKHR =
1631         (PFN_vkCreateSamplerYcbcrConversionKHR)vk->vkGetInstanceProcAddr(
1632             instance, "vkCreateSamplerYcbcrConversionKHR");
1633     out->vkDestroySamplerYcbcrConversionKHR =
1634         (PFN_vkDestroySamplerYcbcrConversionKHR)vk->vkGetInstanceProcAddr(
1635             instance, "vkDestroySamplerYcbcrConversionKHR");
1636 #endif
1637 #ifdef VK_KHR_bind_memory2
1638     out->vkBindBufferMemory2KHR =
1639         (PFN_vkBindBufferMemory2KHR)vk->vkGetInstanceProcAddr(instance, "vkBindBufferMemory2KHR");
1640     out->vkBindImageMemory2KHR =
1641         (PFN_vkBindImageMemory2KHR)vk->vkGetInstanceProcAddr(instance, "vkBindImageMemory2KHR");
1642 #endif
1643 #ifdef VK_KHR_maintenance3
1644     out->vkGetDescriptorSetLayoutSupportKHR =
1645         (PFN_vkGetDescriptorSetLayoutSupportKHR)vk->vkGetInstanceProcAddr(
1646             instance, "vkGetDescriptorSetLayoutSupportKHR");
1647 #endif
1648 #ifdef VK_KHR_buffer_device_address
1649     out->vkGetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR)vk->vkGetInstanceProcAddr(
1650         instance, "vkGetBufferDeviceAddressKHR");
1651     out->vkGetBufferOpaqueCaptureAddressKHR =
1652         (PFN_vkGetBufferOpaqueCaptureAddressKHR)vk->vkGetInstanceProcAddr(
1653             instance, "vkGetBufferOpaqueCaptureAddressKHR");
1654     out->vkGetDeviceMemoryOpaqueCaptureAddressKHR =
1655         (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)vk->vkGetInstanceProcAddr(
1656             instance, "vkGetDeviceMemoryOpaqueCaptureAddressKHR");
1657 #endif
1658 #ifdef VK_KHR_pipeline_executable_properties
1659     out->vkGetPipelineExecutablePropertiesKHR =
1660         (PFN_vkGetPipelineExecutablePropertiesKHR)vk->vkGetInstanceProcAddr(
1661             instance, "vkGetPipelineExecutablePropertiesKHR");
1662     out->vkGetPipelineExecutableStatisticsKHR =
1663         (PFN_vkGetPipelineExecutableStatisticsKHR)vk->vkGetInstanceProcAddr(
1664             instance, "vkGetPipelineExecutableStatisticsKHR");
1665     out->vkGetPipelineExecutableInternalRepresentationsKHR =
1666         (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)vk->vkGetInstanceProcAddr(
1667             instance, "vkGetPipelineExecutableInternalRepresentationsKHR");
1668 #endif
1669 #ifdef VK_KHR_synchronization2
1670     out->vkCmdSetEvent2KHR =
1671         (PFN_vkCmdSetEvent2KHR)vk->vkGetInstanceProcAddr(instance, "vkCmdSetEvent2KHR");
1672     out->vkCmdResetEvent2KHR =
1673         (PFN_vkCmdResetEvent2KHR)vk->vkGetInstanceProcAddr(instance, "vkCmdResetEvent2KHR");
1674     out->vkCmdWaitEvents2KHR =
1675         (PFN_vkCmdWaitEvents2KHR)vk->vkGetInstanceProcAddr(instance, "vkCmdWaitEvents2KHR");
1676     out->vkCmdPipelineBarrier2KHR = (PFN_vkCmdPipelineBarrier2KHR)vk->vkGetInstanceProcAddr(
1677         instance, "vkCmdPipelineBarrier2KHR");
1678     out->vkCmdWriteTimestamp2KHR =
1679         (PFN_vkCmdWriteTimestamp2KHR)vk->vkGetInstanceProcAddr(instance, "vkCmdWriteTimestamp2KHR");
1680     out->vkQueueSubmit2KHR =
1681         (PFN_vkQueueSubmit2KHR)vk->vkGetInstanceProcAddr(instance, "vkQueueSubmit2KHR");
1682     out->vkCmdWriteBufferMarker2AMD = (PFN_vkCmdWriteBufferMarker2AMD)vk->vkGetInstanceProcAddr(
1683         instance, "vkCmdWriteBufferMarker2AMD");
1684     out->vkGetQueueCheckpointData2NV = (PFN_vkGetQueueCheckpointData2NV)vk->vkGetInstanceProcAddr(
1685         instance, "vkGetQueueCheckpointData2NV");
1686 #endif
1687 #ifdef VK_KHR_copy_commands2
1688     out->vkCmdCopyBuffer2KHR =
1689         (PFN_vkCmdCopyBuffer2KHR)vk->vkGetInstanceProcAddr(instance, "vkCmdCopyBuffer2KHR");
1690     out->vkCmdCopyImage2KHR =
1691         (PFN_vkCmdCopyImage2KHR)vk->vkGetInstanceProcAddr(instance, "vkCmdCopyImage2KHR");
1692     out->vkCmdCopyBufferToImage2KHR = (PFN_vkCmdCopyBufferToImage2KHR)vk->vkGetInstanceProcAddr(
1693         instance, "vkCmdCopyBufferToImage2KHR");
1694     out->vkCmdCopyImageToBuffer2KHR = (PFN_vkCmdCopyImageToBuffer2KHR)vk->vkGetInstanceProcAddr(
1695         instance, "vkCmdCopyImageToBuffer2KHR");
1696     out->vkCmdBlitImage2KHR =
1697         (PFN_vkCmdBlitImage2KHR)vk->vkGetInstanceProcAddr(instance, "vkCmdBlitImage2KHR");
1698     out->vkCmdResolveImage2KHR =
1699         (PFN_vkCmdResolveImage2KHR)vk->vkGetInstanceProcAddr(instance, "vkCmdResolveImage2KHR");
1700 #endif
1701 #ifdef VK_KHR_maintenance4
1702     out->vkGetDeviceBufferMemoryRequirementsKHR =
1703         (PFN_vkGetDeviceBufferMemoryRequirementsKHR)vk->vkGetInstanceProcAddr(
1704             instance, "vkGetDeviceBufferMemoryRequirementsKHR");
1705     out->vkGetDeviceImageMemoryRequirementsKHR =
1706         (PFN_vkGetDeviceImageMemoryRequirementsKHR)vk->vkGetInstanceProcAddr(
1707             instance, "vkGetDeviceImageMemoryRequirementsKHR");
1708     out->vkGetDeviceImageSparseMemoryRequirementsKHR =
1709         (PFN_vkGetDeviceImageSparseMemoryRequirementsKHR)vk->vkGetInstanceProcAddr(
1710             instance, "vkGetDeviceImageSparseMemoryRequirementsKHR");
1711 #endif
1712 #ifdef VK_KHR_maintenance5
1713     out->vkCmdBindIndexBuffer2KHR = (PFN_vkCmdBindIndexBuffer2KHR)vk->vkGetInstanceProcAddr(
1714         instance, "vkCmdBindIndexBuffer2KHR");
1715     out->vkGetRenderingAreaGranularityKHR =
1716         (PFN_vkGetRenderingAreaGranularityKHR)vk->vkGetInstanceProcAddr(
1717             instance, "vkGetRenderingAreaGranularityKHR");
1718     out->vkGetDeviceImageSubresourceLayoutKHR =
1719         (PFN_vkGetDeviceImageSubresourceLayoutKHR)vk->vkGetInstanceProcAddr(
1720             instance, "vkGetDeviceImageSubresourceLayoutKHR");
1721     out->vkGetImageSubresourceLayout2KHR =
1722         (PFN_vkGetImageSubresourceLayout2KHR)vk->vkGetInstanceProcAddr(
1723             instance, "vkGetImageSubresourceLayout2KHR");
1724 #endif
1725 #ifdef VK_ANDROID_native_buffer
1726     out->vkGetSwapchainGrallocUsageANDROID =
1727         (PFN_vkGetSwapchainGrallocUsageANDROID)vk->vkGetInstanceProcAddr(
1728             instance, "vkGetSwapchainGrallocUsageANDROID");
1729     out->vkAcquireImageANDROID =
1730         (PFN_vkAcquireImageANDROID)vk->vkGetInstanceProcAddr(instance, "vkAcquireImageANDROID");
1731     out->vkQueueSignalReleaseImageANDROID =
1732         (PFN_vkQueueSignalReleaseImageANDROID)vk->vkGetInstanceProcAddr(
1733             instance, "vkQueueSignalReleaseImageANDROID");
1734     out->vkGetSwapchainGrallocUsage2ANDROID =
1735         (PFN_vkGetSwapchainGrallocUsage2ANDROID)vk->vkGetInstanceProcAddr(
1736             instance, "vkGetSwapchainGrallocUsage2ANDROID");
1737 #endif
1738 #ifdef VK_EXT_transform_feedback
1739     out->vkCmdBindTransformFeedbackBuffersEXT =
1740         (PFN_vkCmdBindTransformFeedbackBuffersEXT)vk->vkGetInstanceProcAddr(
1741             instance, "vkCmdBindTransformFeedbackBuffersEXT");
1742     out->vkCmdBeginTransformFeedbackEXT =
1743         (PFN_vkCmdBeginTransformFeedbackEXT)vk->vkGetInstanceProcAddr(
1744             instance, "vkCmdBeginTransformFeedbackEXT");
1745     out->vkCmdEndTransformFeedbackEXT = (PFN_vkCmdEndTransformFeedbackEXT)vk->vkGetInstanceProcAddr(
1746         instance, "vkCmdEndTransformFeedbackEXT");
1747     out->vkCmdBeginQueryIndexedEXT = (PFN_vkCmdBeginQueryIndexedEXT)vk->vkGetInstanceProcAddr(
1748         instance, "vkCmdBeginQueryIndexedEXT");
1749     out->vkCmdEndQueryIndexedEXT =
1750         (PFN_vkCmdEndQueryIndexedEXT)vk->vkGetInstanceProcAddr(instance, "vkCmdEndQueryIndexedEXT");
1751     out->vkCmdDrawIndirectByteCountEXT =
1752         (PFN_vkCmdDrawIndirectByteCountEXT)vk->vkGetInstanceProcAddr(
1753             instance, "vkCmdDrawIndirectByteCountEXT");
1754 #endif
1755 #ifdef VK_EXT_debug_utils
1756     out->vkSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)vk->vkGetInstanceProcAddr(
1757         instance, "vkSetDebugUtilsObjectNameEXT");
1758     out->vkSetDebugUtilsObjectTagEXT = (PFN_vkSetDebugUtilsObjectTagEXT)vk->vkGetInstanceProcAddr(
1759         instance, "vkSetDebugUtilsObjectTagEXT");
1760     out->vkQueueBeginDebugUtilsLabelEXT =
1761         (PFN_vkQueueBeginDebugUtilsLabelEXT)vk->vkGetInstanceProcAddr(
1762             instance, "vkQueueBeginDebugUtilsLabelEXT");
1763     out->vkQueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)vk->vkGetInstanceProcAddr(
1764         instance, "vkQueueEndDebugUtilsLabelEXT");
1765     out->vkQueueInsertDebugUtilsLabelEXT =
1766         (PFN_vkQueueInsertDebugUtilsLabelEXT)vk->vkGetInstanceProcAddr(
1767             instance, "vkQueueInsertDebugUtilsLabelEXT");
1768     out->vkCmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)vk->vkGetInstanceProcAddr(
1769         instance, "vkCmdBeginDebugUtilsLabelEXT");
1770     out->vkCmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)vk->vkGetInstanceProcAddr(
1771         instance, "vkCmdEndDebugUtilsLabelEXT");
1772     out->vkCmdInsertDebugUtilsLabelEXT =
1773         (PFN_vkCmdInsertDebugUtilsLabelEXT)vk->vkGetInstanceProcAddr(
1774             instance, "vkCmdInsertDebugUtilsLabelEXT");
1775 #endif
1776 #ifdef VK_EXT_tooling_info
1777     out->vkGetPhysicalDeviceToolPropertiesEXT =
1778         (PFN_vkGetPhysicalDeviceToolPropertiesEXT)vk->vkGetInstanceProcAddr(
1779             instance, "vkGetPhysicalDeviceToolPropertiesEXT");
1780 #endif
1781 #ifdef VK_EXT_line_rasterization
1782     out->vkCmdSetLineStippleEXT =
1783         (PFN_vkCmdSetLineStippleEXT)vk->vkGetInstanceProcAddr(instance, "vkCmdSetLineStippleEXT");
1784 #endif
1785 #ifdef VK_EXT_extended_dynamic_state
1786     out->vkCmdSetCullModeEXT =
1787         (PFN_vkCmdSetCullModeEXT)vk->vkGetInstanceProcAddr(instance, "vkCmdSetCullModeEXT");
1788     out->vkCmdSetFrontFaceEXT =
1789         (PFN_vkCmdSetFrontFaceEXT)vk->vkGetInstanceProcAddr(instance, "vkCmdSetFrontFaceEXT");
1790     out->vkCmdSetPrimitiveTopologyEXT = (PFN_vkCmdSetPrimitiveTopologyEXT)vk->vkGetInstanceProcAddr(
1791         instance, "vkCmdSetPrimitiveTopologyEXT");
1792     out->vkCmdSetViewportWithCountEXT = (PFN_vkCmdSetViewportWithCountEXT)vk->vkGetInstanceProcAddr(
1793         instance, "vkCmdSetViewportWithCountEXT");
1794     out->vkCmdSetScissorWithCountEXT = (PFN_vkCmdSetScissorWithCountEXT)vk->vkGetInstanceProcAddr(
1795         instance, "vkCmdSetScissorWithCountEXT");
1796     out->vkCmdBindVertexBuffers2EXT = (PFN_vkCmdBindVertexBuffers2EXT)vk->vkGetInstanceProcAddr(
1797         instance, "vkCmdBindVertexBuffers2EXT");
1798     out->vkCmdSetDepthTestEnableEXT = (PFN_vkCmdSetDepthTestEnableEXT)vk->vkGetInstanceProcAddr(
1799         instance, "vkCmdSetDepthTestEnableEXT");
1800     out->vkCmdSetDepthWriteEnableEXT = (PFN_vkCmdSetDepthWriteEnableEXT)vk->vkGetInstanceProcAddr(
1801         instance, "vkCmdSetDepthWriteEnableEXT");
1802     out->vkCmdSetDepthCompareOpEXT = (PFN_vkCmdSetDepthCompareOpEXT)vk->vkGetInstanceProcAddr(
1803         instance, "vkCmdSetDepthCompareOpEXT");
1804     out->vkCmdSetDepthBoundsTestEnableEXT =
1805         (PFN_vkCmdSetDepthBoundsTestEnableEXT)vk->vkGetInstanceProcAddr(
1806             instance, "vkCmdSetDepthBoundsTestEnableEXT");
1807     out->vkCmdSetStencilTestEnableEXT = (PFN_vkCmdSetStencilTestEnableEXT)vk->vkGetInstanceProcAddr(
1808         instance, "vkCmdSetStencilTestEnableEXT");
1809     out->vkCmdSetStencilOpEXT =
1810         (PFN_vkCmdSetStencilOpEXT)vk->vkGetInstanceProcAddr(instance, "vkCmdSetStencilOpEXT");
1811 #endif
1812 #ifdef VK_EXT_host_image_copy
1813     out->vkCopyMemoryToImageEXT =
1814         (PFN_vkCopyMemoryToImageEXT)vk->vkGetInstanceProcAddr(instance, "vkCopyMemoryToImageEXT");
1815     out->vkCopyImageToMemoryEXT =
1816         (PFN_vkCopyImageToMemoryEXT)vk->vkGetInstanceProcAddr(instance, "vkCopyImageToMemoryEXT");
1817     out->vkCopyImageToImageEXT =
1818         (PFN_vkCopyImageToImageEXT)vk->vkGetInstanceProcAddr(instance, "vkCopyImageToImageEXT");
1819     out->vkTransitionImageLayoutEXT = (PFN_vkTransitionImageLayoutEXT)vk->vkGetInstanceProcAddr(
1820         instance, "vkTransitionImageLayoutEXT");
1821     out->vkGetImageSubresourceLayout2EXT =
1822         (PFN_vkGetImageSubresourceLayout2EXT)vk->vkGetInstanceProcAddr(
1823             instance, "vkGetImageSubresourceLayout2EXT");
1824 #endif
1825 #ifdef VK_EXT_swapchain_maintenance1
1826     out->vkReleaseSwapchainImagesEXT = (PFN_vkReleaseSwapchainImagesEXT)vk->vkGetInstanceProcAddr(
1827         instance, "vkReleaseSwapchainImagesEXT");
1828 #endif
1829 #ifdef VK_EXT_private_data
1830     out->vkCreatePrivateDataSlotEXT = (PFN_vkCreatePrivateDataSlotEXT)vk->vkGetInstanceProcAddr(
1831         instance, "vkCreatePrivateDataSlotEXT");
1832     out->vkDestroyPrivateDataSlotEXT = (PFN_vkDestroyPrivateDataSlotEXT)vk->vkGetInstanceProcAddr(
1833         instance, "vkDestroyPrivateDataSlotEXT");
1834     out->vkSetPrivateDataEXT =
1835         (PFN_vkSetPrivateDataEXT)vk->vkGetInstanceProcAddr(instance, "vkSetPrivateDataEXT");
1836     out->vkGetPrivateDataEXT =
1837         (PFN_vkGetPrivateDataEXT)vk->vkGetInstanceProcAddr(instance, "vkGetPrivateDataEXT");
1838 #endif
1839 #ifdef VK_EXT_metal_objects
1840     out->vkExportMetalObjectsEXT =
1841         (PFN_vkExportMetalObjectsEXT)vk->vkGetInstanceProcAddr(instance, "vkExportMetalObjectsEXT");
1842 #endif
1843 #ifdef VK_EXT_extended_dynamic_state2
1844     out->vkCmdSetPatchControlPointsEXT =
1845         (PFN_vkCmdSetPatchControlPointsEXT)vk->vkGetInstanceProcAddr(
1846             instance, "vkCmdSetPatchControlPointsEXT");
1847     out->vkCmdSetRasterizerDiscardEnableEXT =
1848         (PFN_vkCmdSetRasterizerDiscardEnableEXT)vk->vkGetInstanceProcAddr(
1849             instance, "vkCmdSetRasterizerDiscardEnableEXT");
1850     out->vkCmdSetDepthBiasEnableEXT = (PFN_vkCmdSetDepthBiasEnableEXT)vk->vkGetInstanceProcAddr(
1851         instance, "vkCmdSetDepthBiasEnableEXT");
1852     out->vkCmdSetLogicOpEXT =
1853         (PFN_vkCmdSetLogicOpEXT)vk->vkGetInstanceProcAddr(instance, "vkCmdSetLogicOpEXT");
1854     out->vkCmdSetPrimitiveRestartEnableEXT =
1855         (PFN_vkCmdSetPrimitiveRestartEnableEXT)vk->vkGetInstanceProcAddr(
1856             instance, "vkCmdSetPrimitiveRestartEnableEXT");
1857 #endif
1858 #ifdef VK_GOOGLE_gfxstream
1859     out->vkMapMemoryIntoAddressSpaceGOOGLE =
1860         (PFN_vkMapMemoryIntoAddressSpaceGOOGLE)vk->vkGetInstanceProcAddr(
1861             instance, "vkMapMemoryIntoAddressSpaceGOOGLE");
1862     out->vkUpdateDescriptorSetWithTemplateSizedGOOGLE =
1863         (PFN_vkUpdateDescriptorSetWithTemplateSizedGOOGLE)vk->vkGetInstanceProcAddr(
1864             instance, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
1865     out->vkBeginCommandBufferAsyncGOOGLE =
1866         (PFN_vkBeginCommandBufferAsyncGOOGLE)vk->vkGetInstanceProcAddr(
1867             instance, "vkBeginCommandBufferAsyncGOOGLE");
1868     out->vkEndCommandBufferAsyncGOOGLE =
1869         (PFN_vkEndCommandBufferAsyncGOOGLE)vk->vkGetInstanceProcAddr(
1870             instance, "vkEndCommandBufferAsyncGOOGLE");
1871     out->vkResetCommandBufferAsyncGOOGLE =
1872         (PFN_vkResetCommandBufferAsyncGOOGLE)vk->vkGetInstanceProcAddr(
1873             instance, "vkResetCommandBufferAsyncGOOGLE");
1874     out->vkCommandBufferHostSyncGOOGLE =
1875         (PFN_vkCommandBufferHostSyncGOOGLE)vk->vkGetInstanceProcAddr(
1876             instance, "vkCommandBufferHostSyncGOOGLE");
1877     out->vkCreateImageWithRequirementsGOOGLE =
1878         (PFN_vkCreateImageWithRequirementsGOOGLE)vk->vkGetInstanceProcAddr(
1879             instance, "vkCreateImageWithRequirementsGOOGLE");
1880     out->vkCreateBufferWithRequirementsGOOGLE =
1881         (PFN_vkCreateBufferWithRequirementsGOOGLE)vk->vkGetInstanceProcAddr(
1882             instance, "vkCreateBufferWithRequirementsGOOGLE");
1883     out->vkGetMemoryHostAddressInfoGOOGLE =
1884         (PFN_vkGetMemoryHostAddressInfoGOOGLE)vk->vkGetInstanceProcAddr(
1885             instance, "vkGetMemoryHostAddressInfoGOOGLE");
1886     out->vkFreeMemorySyncGOOGLE =
1887         (PFN_vkFreeMemorySyncGOOGLE)vk->vkGetInstanceProcAddr(instance, "vkFreeMemorySyncGOOGLE");
1888     out->vkQueueHostSyncGOOGLE =
1889         (PFN_vkQueueHostSyncGOOGLE)vk->vkGetInstanceProcAddr(instance, "vkQueueHostSyncGOOGLE");
1890     out->vkQueueSubmitAsyncGOOGLE = (PFN_vkQueueSubmitAsyncGOOGLE)vk->vkGetInstanceProcAddr(
1891         instance, "vkQueueSubmitAsyncGOOGLE");
1892     out->vkQueueWaitIdleAsyncGOOGLE = (PFN_vkQueueWaitIdleAsyncGOOGLE)vk->vkGetInstanceProcAddr(
1893         instance, "vkQueueWaitIdleAsyncGOOGLE");
1894     out->vkQueueBindSparseAsyncGOOGLE = (PFN_vkQueueBindSparseAsyncGOOGLE)vk->vkGetInstanceProcAddr(
1895         instance, "vkQueueBindSparseAsyncGOOGLE");
1896     out->vkGetLinearImageLayoutGOOGLE = (PFN_vkGetLinearImageLayoutGOOGLE)vk->vkGetInstanceProcAddr(
1897         instance, "vkGetLinearImageLayoutGOOGLE");
1898     out->vkGetLinearImageLayout2GOOGLE =
1899         (PFN_vkGetLinearImageLayout2GOOGLE)vk->vkGetInstanceProcAddr(
1900             instance, "vkGetLinearImageLayout2GOOGLE");
1901     out->vkQueueFlushCommandsGOOGLE = (PFN_vkQueueFlushCommandsGOOGLE)vk->vkGetInstanceProcAddr(
1902         instance, "vkQueueFlushCommandsGOOGLE");
1903     out->vkQueueCommitDescriptorSetUpdatesGOOGLE =
1904         (PFN_vkQueueCommitDescriptorSetUpdatesGOOGLE)vk->vkGetInstanceProcAddr(
1905             instance, "vkQueueCommitDescriptorSetUpdatesGOOGLE");
1906     out->vkCollectDescriptorPoolIdsGOOGLE =
1907         (PFN_vkCollectDescriptorPoolIdsGOOGLE)vk->vkGetInstanceProcAddr(
1908             instance, "vkCollectDescriptorPoolIdsGOOGLE");
1909     out->vkQueueSignalReleaseImageANDROIDAsyncGOOGLE =
1910         (PFN_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE)vk->vkGetInstanceProcAddr(
1911             instance, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE");
1912     out->vkQueueFlushCommandsFromAuxMemoryGOOGLE =
1913         (PFN_vkQueueFlushCommandsFromAuxMemoryGOOGLE)vk->vkGetInstanceProcAddr(
1914             instance, "vkQueueFlushCommandsFromAuxMemoryGOOGLE");
1915     out->vkGetBlobGOOGLE =
1916         (PFN_vkGetBlobGOOGLE)vk->vkGetInstanceProcAddr(instance, "vkGetBlobGOOGLE");
1917     out->vkUpdateDescriptorSetWithTemplateSized2GOOGLE =
1918         (PFN_vkUpdateDescriptorSetWithTemplateSized2GOOGLE)vk->vkGetInstanceProcAddr(
1919             instance, "vkUpdateDescriptorSetWithTemplateSized2GOOGLE");
1920     out->vkQueueSubmitAsync2GOOGLE = (PFN_vkQueueSubmitAsync2GOOGLE)vk->vkGetInstanceProcAddr(
1921         instance, "vkQueueSubmitAsync2GOOGLE");
1922 #endif
1923 #ifdef VK_QNX_external_memory_screen_buffer
1924     out->vkGetScreenBufferPropertiesQNX =
1925         (PFN_vkGetScreenBufferPropertiesQNX)vk->vkGetInstanceProcAddr(
1926             instance, "vkGetScreenBufferPropertiesQNX");
1927 #endif
1928 }
1929 
init_vulkan_dispatch_from_device(VulkanDispatch * vk,VkDevice device,VulkanDispatch * out)1930 void init_vulkan_dispatch_from_device(VulkanDispatch* vk, VkDevice device, VulkanDispatch* out) {
1931     memset(out, 0x0, sizeof(VulkanDispatch));
1932 #ifdef VK_VERSION_1_0
1933     out->vkDestroyInstance =
1934         (PFN_vkDestroyInstance)vk->vkGetDeviceProcAddr(device, "vkDestroyInstance");
1935     out->vkEnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices)vk->vkGetDeviceProcAddr(
1936         device, "vkEnumeratePhysicalDevices");
1937     out->vkGetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures)vk->vkGetDeviceProcAddr(
1938         device, "vkGetPhysicalDeviceFeatures");
1939     out->vkGetPhysicalDeviceFormatProperties =
1940         (PFN_vkGetPhysicalDeviceFormatProperties)vk->vkGetDeviceProcAddr(
1941             device, "vkGetPhysicalDeviceFormatProperties");
1942     out->vkGetPhysicalDeviceImageFormatProperties =
1943         (PFN_vkGetPhysicalDeviceImageFormatProperties)vk->vkGetDeviceProcAddr(
1944             device, "vkGetPhysicalDeviceImageFormatProperties");
1945     out->vkGetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties)vk->vkGetDeviceProcAddr(
1946         device, "vkGetPhysicalDeviceProperties");
1947     out->vkGetPhysicalDeviceQueueFamilyProperties =
1948         (PFN_vkGetPhysicalDeviceQueueFamilyProperties)vk->vkGetDeviceProcAddr(
1949             device, "vkGetPhysicalDeviceQueueFamilyProperties");
1950     out->vkGetPhysicalDeviceMemoryProperties =
1951         (PFN_vkGetPhysicalDeviceMemoryProperties)vk->vkGetDeviceProcAddr(
1952             device, "vkGetPhysicalDeviceMemoryProperties");
1953     out->vkGetInstanceProcAddr =
1954         (PFN_vkGetInstanceProcAddr)vk->vkGetDeviceProcAddr(device, "vkGetInstanceProcAddr");
1955     out->vkCreateDevice = (PFN_vkCreateDevice)vk->vkGetDeviceProcAddr(device, "vkCreateDevice");
1956     out->vkDestroyDevice = (PFN_vkDestroyDevice)vk->vkGetDeviceProcAddr(device, "vkDestroyDevice");
1957     out->vkEnumerateDeviceExtensionProperties =
1958         (PFN_vkEnumerateDeviceExtensionProperties)vk->vkGetDeviceProcAddr(
1959             device, "vkEnumerateDeviceExtensionProperties");
1960     out->vkEnumerateDeviceLayerProperties =
1961         (PFN_vkEnumerateDeviceLayerProperties)vk->vkGetDeviceProcAddr(
1962             device, "vkEnumerateDeviceLayerProperties");
1963     out->vkCreateInstance =
1964         (PFN_vkCreateInstance)vk->vkGetDeviceProcAddr(device, "vkCreateInstance");
1965     out->vkEnumerateInstanceExtensionProperties =
1966         (PFN_vkEnumerateInstanceExtensionProperties)vk->vkGetDeviceProcAddr(
1967             device, "vkEnumerateInstanceExtensionProperties");
1968     out->vkEnumerateInstanceLayerProperties =
1969         (PFN_vkEnumerateInstanceLayerProperties)vk->vkGetDeviceProcAddr(
1970             device, "vkEnumerateInstanceLayerProperties");
1971     out->vkGetDeviceProcAddr =
1972         (PFN_vkGetDeviceProcAddr)vk->vkGetDeviceProcAddr(device, "vkGetDeviceProcAddr");
1973     out->vkGetPhysicalDeviceSparseImageFormatProperties =
1974         (PFN_vkGetPhysicalDeviceSparseImageFormatProperties)vk->vkGetDeviceProcAddr(
1975             device, "vkGetPhysicalDeviceSparseImageFormatProperties");
1976 #endif
1977 #ifdef VK_VERSION_1_1
1978     out->vkEnumerateInstanceVersion = (PFN_vkEnumerateInstanceVersion)vk->vkGetDeviceProcAddr(
1979         device, "vkEnumerateInstanceVersion");
1980     out->vkEnumeratePhysicalDeviceGroups =
1981         (PFN_vkEnumeratePhysicalDeviceGroups)vk->vkGetDeviceProcAddr(
1982             device, "vkEnumeratePhysicalDeviceGroups");
1983     out->vkGetPhysicalDeviceFeatures2 = (PFN_vkGetPhysicalDeviceFeatures2)vk->vkGetDeviceProcAddr(
1984         device, "vkGetPhysicalDeviceFeatures2");
1985     out->vkGetPhysicalDeviceProperties2 =
1986         (PFN_vkGetPhysicalDeviceProperties2)vk->vkGetDeviceProcAddr(
1987             device, "vkGetPhysicalDeviceProperties2");
1988     out->vkGetPhysicalDeviceFormatProperties2 =
1989         (PFN_vkGetPhysicalDeviceFormatProperties2)vk->vkGetDeviceProcAddr(
1990             device, "vkGetPhysicalDeviceFormatProperties2");
1991     out->vkGetPhysicalDeviceImageFormatProperties2 =
1992         (PFN_vkGetPhysicalDeviceImageFormatProperties2)vk->vkGetDeviceProcAddr(
1993             device, "vkGetPhysicalDeviceImageFormatProperties2");
1994     out->vkGetPhysicalDeviceQueueFamilyProperties2 =
1995         (PFN_vkGetPhysicalDeviceQueueFamilyProperties2)vk->vkGetDeviceProcAddr(
1996             device, "vkGetPhysicalDeviceQueueFamilyProperties2");
1997     out->vkGetPhysicalDeviceMemoryProperties2 =
1998         (PFN_vkGetPhysicalDeviceMemoryProperties2)vk->vkGetDeviceProcAddr(
1999             device, "vkGetPhysicalDeviceMemoryProperties2");
2000     out->vkGetPhysicalDeviceSparseImageFormatProperties2 =
2001         (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)vk->vkGetDeviceProcAddr(
2002             device, "vkGetPhysicalDeviceSparseImageFormatProperties2");
2003     out->vkGetPhysicalDeviceExternalBufferProperties =
2004         (PFN_vkGetPhysicalDeviceExternalBufferProperties)vk->vkGetDeviceProcAddr(
2005             device, "vkGetPhysicalDeviceExternalBufferProperties");
2006     out->vkGetPhysicalDeviceExternalFenceProperties =
2007         (PFN_vkGetPhysicalDeviceExternalFenceProperties)vk->vkGetDeviceProcAddr(
2008             device, "vkGetPhysicalDeviceExternalFenceProperties");
2009     out->vkGetPhysicalDeviceExternalSemaphoreProperties =
2010         (PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)vk->vkGetDeviceProcAddr(
2011             device, "vkGetPhysicalDeviceExternalSemaphoreProperties");
2012 #endif
2013 #ifdef VK_KHR_surface
2014     out->vkDestroySurfaceKHR =
2015         (PFN_vkDestroySurfaceKHR)vk->vkGetDeviceProcAddr(device, "vkDestroySurfaceKHR");
2016 #endif
2017 #ifdef VK_KHR_swapchain
2018     out->vkCreateSwapchainKHR =
2019         (PFN_vkCreateSwapchainKHR)vk->vkGetDeviceProcAddr(device, "vkCreateSwapchainKHR");
2020     out->vkDestroySwapchainKHR =
2021         (PFN_vkDestroySwapchainKHR)vk->vkGetDeviceProcAddr(device, "vkDestroySwapchainKHR");
2022     out->vkGetSwapchainImagesKHR =
2023         (PFN_vkGetSwapchainImagesKHR)vk->vkGetDeviceProcAddr(device, "vkGetSwapchainImagesKHR");
2024     out->vkAcquireNextImageKHR =
2025         (PFN_vkAcquireNextImageKHR)vk->vkGetDeviceProcAddr(device, "vkAcquireNextImageKHR");
2026     out->vkQueuePresentKHR =
2027         (PFN_vkQueuePresentKHR)vk->vkGetDeviceProcAddr(device, "vkQueuePresentKHR");
2028 #endif
2029 #ifdef VK_KHR_xcb_surface
2030     out->vkCreateXcbSurfaceKHR =
2031         (PFN_vkCreateXcbSurfaceKHR)vk->vkGetDeviceProcAddr(device, "vkCreateXcbSurfaceKHR");
2032     out->vkGetPhysicalDeviceXcbPresentationSupportKHR =
2033         (PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)vk->vkGetDeviceProcAddr(
2034             device, "vkGetPhysicalDeviceXcbPresentationSupportKHR");
2035 #endif
2036 #ifdef VK_KHR_win32_surface
2037     out->vkCreateWin32SurfaceKHR =
2038         (PFN_vkCreateWin32SurfaceKHR)vk->vkGetDeviceProcAddr(device, "vkCreateWin32SurfaceKHR");
2039     out->vkGetPhysicalDeviceWin32PresentationSupportKHR =
2040         (PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)vk->vkGetDeviceProcAddr(
2041             device, "vkGetPhysicalDeviceWin32PresentationSupportKHR");
2042 #endif
2043 #ifdef VK_EXT_debug_utils
2044     out->vkCreateDebugUtilsMessengerEXT =
2045         (PFN_vkCreateDebugUtilsMessengerEXT)vk->vkGetDeviceProcAddr(
2046             device, "vkCreateDebugUtilsMessengerEXT");
2047     out->vkDestroyDebugUtilsMessengerEXT =
2048         (PFN_vkDestroyDebugUtilsMessengerEXT)vk->vkGetDeviceProcAddr(
2049             device, "vkDestroyDebugUtilsMessengerEXT");
2050     out->vkSubmitDebugUtilsMessageEXT = (PFN_vkSubmitDebugUtilsMessageEXT)vk->vkGetDeviceProcAddr(
2051         device, "vkSubmitDebugUtilsMessageEXT");
2052 #endif
2053 #ifdef VK_EXT_metal_surface
2054     out->vkCreateMetalSurfaceEXT =
2055         (PFN_vkCreateMetalSurfaceEXT)vk->vkGetDeviceProcAddr(device, "vkCreateMetalSurfaceEXT");
2056 #endif
2057 #ifdef VK_VERSION_1_0
2058     out->vkGetDeviceQueue =
2059         (PFN_vkGetDeviceQueue)vk->vkGetDeviceProcAddr(device, "vkGetDeviceQueue");
2060     out->vkQueueSubmit = (PFN_vkQueueSubmit)vk->vkGetDeviceProcAddr(device, "vkQueueSubmit");
2061     out->vkQueueWaitIdle = (PFN_vkQueueWaitIdle)vk->vkGetDeviceProcAddr(device, "vkQueueWaitIdle");
2062     out->vkDeviceWaitIdle =
2063         (PFN_vkDeviceWaitIdle)vk->vkGetDeviceProcAddr(device, "vkDeviceWaitIdle");
2064     out->vkAllocateMemory =
2065         (PFN_vkAllocateMemory)vk->vkGetDeviceProcAddr(device, "vkAllocateMemory");
2066     out->vkFreeMemory = (PFN_vkFreeMemory)vk->vkGetDeviceProcAddr(device, "vkFreeMemory");
2067     out->vkMapMemory = (PFN_vkMapMemory)vk->vkGetDeviceProcAddr(device, "vkMapMemory");
2068     out->vkUnmapMemory = (PFN_vkUnmapMemory)vk->vkGetDeviceProcAddr(device, "vkUnmapMemory");
2069     out->vkFlushMappedMemoryRanges =
2070         (PFN_vkFlushMappedMemoryRanges)vk->vkGetDeviceProcAddr(device, "vkFlushMappedMemoryRanges");
2071     out->vkInvalidateMappedMemoryRanges =
2072         (PFN_vkInvalidateMappedMemoryRanges)vk->vkGetDeviceProcAddr(
2073             device, "vkInvalidateMappedMemoryRanges");
2074     out->vkGetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment)vk->vkGetDeviceProcAddr(
2075         device, "vkGetDeviceMemoryCommitment");
2076     out->vkBindBufferMemory =
2077         (PFN_vkBindBufferMemory)vk->vkGetDeviceProcAddr(device, "vkBindBufferMemory");
2078     out->vkBindImageMemory =
2079         (PFN_vkBindImageMemory)vk->vkGetDeviceProcAddr(device, "vkBindImageMemory");
2080     out->vkGetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements)vk->vkGetDeviceProcAddr(
2081         device, "vkGetBufferMemoryRequirements");
2082     out->vkGetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements)vk->vkGetDeviceProcAddr(
2083         device, "vkGetImageMemoryRequirements");
2084     out->vkGetImageSparseMemoryRequirements =
2085         (PFN_vkGetImageSparseMemoryRequirements)vk->vkGetDeviceProcAddr(
2086             device, "vkGetImageSparseMemoryRequirements");
2087     out->vkQueueBindSparse =
2088         (PFN_vkQueueBindSparse)vk->vkGetDeviceProcAddr(device, "vkQueueBindSparse");
2089     out->vkCreateFence = (PFN_vkCreateFence)vk->vkGetDeviceProcAddr(device, "vkCreateFence");
2090     out->vkDestroyFence = (PFN_vkDestroyFence)vk->vkGetDeviceProcAddr(device, "vkDestroyFence");
2091     out->vkResetFences = (PFN_vkResetFences)vk->vkGetDeviceProcAddr(device, "vkResetFences");
2092     out->vkGetFenceStatus =
2093         (PFN_vkGetFenceStatus)vk->vkGetDeviceProcAddr(device, "vkGetFenceStatus");
2094     out->vkWaitForFences = (PFN_vkWaitForFences)vk->vkGetDeviceProcAddr(device, "vkWaitForFences");
2095     out->vkCreateSemaphore =
2096         (PFN_vkCreateSemaphore)vk->vkGetDeviceProcAddr(device, "vkCreateSemaphore");
2097     out->vkDestroySemaphore =
2098         (PFN_vkDestroySemaphore)vk->vkGetDeviceProcAddr(device, "vkDestroySemaphore");
2099     out->vkCreateEvent = (PFN_vkCreateEvent)vk->vkGetDeviceProcAddr(device, "vkCreateEvent");
2100     out->vkDestroyEvent = (PFN_vkDestroyEvent)vk->vkGetDeviceProcAddr(device, "vkDestroyEvent");
2101     out->vkGetEventStatus =
2102         (PFN_vkGetEventStatus)vk->vkGetDeviceProcAddr(device, "vkGetEventStatus");
2103     out->vkSetEvent = (PFN_vkSetEvent)vk->vkGetDeviceProcAddr(device, "vkSetEvent");
2104     out->vkResetEvent = (PFN_vkResetEvent)vk->vkGetDeviceProcAddr(device, "vkResetEvent");
2105     out->vkCreateQueryPool =
2106         (PFN_vkCreateQueryPool)vk->vkGetDeviceProcAddr(device, "vkCreateQueryPool");
2107     out->vkDestroyQueryPool =
2108         (PFN_vkDestroyQueryPool)vk->vkGetDeviceProcAddr(device, "vkDestroyQueryPool");
2109     out->vkGetQueryPoolResults =
2110         (PFN_vkGetQueryPoolResults)vk->vkGetDeviceProcAddr(device, "vkGetQueryPoolResults");
2111     out->vkCreateBuffer = (PFN_vkCreateBuffer)vk->vkGetDeviceProcAddr(device, "vkCreateBuffer");
2112     out->vkDestroyBuffer = (PFN_vkDestroyBuffer)vk->vkGetDeviceProcAddr(device, "vkDestroyBuffer");
2113     out->vkCreateBufferView =
2114         (PFN_vkCreateBufferView)vk->vkGetDeviceProcAddr(device, "vkCreateBufferView");
2115     out->vkDestroyBufferView =
2116         (PFN_vkDestroyBufferView)vk->vkGetDeviceProcAddr(device, "vkDestroyBufferView");
2117     out->vkCreateImage = (PFN_vkCreateImage)vk->vkGetDeviceProcAddr(device, "vkCreateImage");
2118     out->vkDestroyImage = (PFN_vkDestroyImage)vk->vkGetDeviceProcAddr(device, "vkDestroyImage");
2119     out->vkGetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout)vk->vkGetDeviceProcAddr(
2120         device, "vkGetImageSubresourceLayout");
2121     out->vkCreateImageView =
2122         (PFN_vkCreateImageView)vk->vkGetDeviceProcAddr(device, "vkCreateImageView");
2123     out->vkDestroyImageView =
2124         (PFN_vkDestroyImageView)vk->vkGetDeviceProcAddr(device, "vkDestroyImageView");
2125     out->vkCreateShaderModule =
2126         (PFN_vkCreateShaderModule)vk->vkGetDeviceProcAddr(device, "vkCreateShaderModule");
2127     out->vkDestroyShaderModule =
2128         (PFN_vkDestroyShaderModule)vk->vkGetDeviceProcAddr(device, "vkDestroyShaderModule");
2129     out->vkCreatePipelineCache =
2130         (PFN_vkCreatePipelineCache)vk->vkGetDeviceProcAddr(device, "vkCreatePipelineCache");
2131     out->vkDestroyPipelineCache =
2132         (PFN_vkDestroyPipelineCache)vk->vkGetDeviceProcAddr(device, "vkDestroyPipelineCache");
2133     out->vkGetPipelineCacheData =
2134         (PFN_vkGetPipelineCacheData)vk->vkGetDeviceProcAddr(device, "vkGetPipelineCacheData");
2135     out->vkMergePipelineCaches =
2136         (PFN_vkMergePipelineCaches)vk->vkGetDeviceProcAddr(device, "vkMergePipelineCaches");
2137     out->vkCreateGraphicsPipelines =
2138         (PFN_vkCreateGraphicsPipelines)vk->vkGetDeviceProcAddr(device, "vkCreateGraphicsPipelines");
2139     out->vkCreateComputePipelines =
2140         (PFN_vkCreateComputePipelines)vk->vkGetDeviceProcAddr(device, "vkCreateComputePipelines");
2141     out->vkDestroyPipeline =
2142         (PFN_vkDestroyPipeline)vk->vkGetDeviceProcAddr(device, "vkDestroyPipeline");
2143     out->vkCreatePipelineLayout =
2144         (PFN_vkCreatePipelineLayout)vk->vkGetDeviceProcAddr(device, "vkCreatePipelineLayout");
2145     out->vkDestroyPipelineLayout =
2146         (PFN_vkDestroyPipelineLayout)vk->vkGetDeviceProcAddr(device, "vkDestroyPipelineLayout");
2147     out->vkCreateSampler = (PFN_vkCreateSampler)vk->vkGetDeviceProcAddr(device, "vkCreateSampler");
2148     out->vkDestroySampler =
2149         (PFN_vkDestroySampler)vk->vkGetDeviceProcAddr(device, "vkDestroySampler");
2150     out->vkCreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout)vk->vkGetDeviceProcAddr(
2151         device, "vkCreateDescriptorSetLayout");
2152     out->vkDestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout)vk->vkGetDeviceProcAddr(
2153         device, "vkDestroyDescriptorSetLayout");
2154     out->vkCreateDescriptorPool =
2155         (PFN_vkCreateDescriptorPool)vk->vkGetDeviceProcAddr(device, "vkCreateDescriptorPool");
2156     out->vkDestroyDescriptorPool =
2157         (PFN_vkDestroyDescriptorPool)vk->vkGetDeviceProcAddr(device, "vkDestroyDescriptorPool");
2158     out->vkResetDescriptorPool =
2159         (PFN_vkResetDescriptorPool)vk->vkGetDeviceProcAddr(device, "vkResetDescriptorPool");
2160     out->vkAllocateDescriptorSets =
2161         (PFN_vkAllocateDescriptorSets)vk->vkGetDeviceProcAddr(device, "vkAllocateDescriptorSets");
2162     out->vkFreeDescriptorSets =
2163         (PFN_vkFreeDescriptorSets)vk->vkGetDeviceProcAddr(device, "vkFreeDescriptorSets");
2164     out->vkUpdateDescriptorSets =
2165         (PFN_vkUpdateDescriptorSets)vk->vkGetDeviceProcAddr(device, "vkUpdateDescriptorSets");
2166     out->vkCreateFramebuffer =
2167         (PFN_vkCreateFramebuffer)vk->vkGetDeviceProcAddr(device, "vkCreateFramebuffer");
2168     out->vkDestroyFramebuffer =
2169         (PFN_vkDestroyFramebuffer)vk->vkGetDeviceProcAddr(device, "vkDestroyFramebuffer");
2170     out->vkCreateRenderPass =
2171         (PFN_vkCreateRenderPass)vk->vkGetDeviceProcAddr(device, "vkCreateRenderPass");
2172     out->vkDestroyRenderPass =
2173         (PFN_vkDestroyRenderPass)vk->vkGetDeviceProcAddr(device, "vkDestroyRenderPass");
2174     out->vkGetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity)vk->vkGetDeviceProcAddr(
2175         device, "vkGetRenderAreaGranularity");
2176     out->vkCreateCommandPool =
2177         (PFN_vkCreateCommandPool)vk->vkGetDeviceProcAddr(device, "vkCreateCommandPool");
2178     out->vkDestroyCommandPool =
2179         (PFN_vkDestroyCommandPool)vk->vkGetDeviceProcAddr(device, "vkDestroyCommandPool");
2180     out->vkResetCommandPool =
2181         (PFN_vkResetCommandPool)vk->vkGetDeviceProcAddr(device, "vkResetCommandPool");
2182     out->vkAllocateCommandBuffers =
2183         (PFN_vkAllocateCommandBuffers)vk->vkGetDeviceProcAddr(device, "vkAllocateCommandBuffers");
2184     out->vkFreeCommandBuffers =
2185         (PFN_vkFreeCommandBuffers)vk->vkGetDeviceProcAddr(device, "vkFreeCommandBuffers");
2186     out->vkBeginCommandBuffer =
2187         (PFN_vkBeginCommandBuffer)vk->vkGetDeviceProcAddr(device, "vkBeginCommandBuffer");
2188     out->vkEndCommandBuffer =
2189         (PFN_vkEndCommandBuffer)vk->vkGetDeviceProcAddr(device, "vkEndCommandBuffer");
2190     out->vkResetCommandBuffer =
2191         (PFN_vkResetCommandBuffer)vk->vkGetDeviceProcAddr(device, "vkResetCommandBuffer");
2192     out->vkCmdBindPipeline =
2193         (PFN_vkCmdBindPipeline)vk->vkGetDeviceProcAddr(device, "vkCmdBindPipeline");
2194     out->vkCmdSetViewport =
2195         (PFN_vkCmdSetViewport)vk->vkGetDeviceProcAddr(device, "vkCmdSetViewport");
2196     out->vkCmdSetScissor = (PFN_vkCmdSetScissor)vk->vkGetDeviceProcAddr(device, "vkCmdSetScissor");
2197     out->vkCmdSetLineWidth =
2198         (PFN_vkCmdSetLineWidth)vk->vkGetDeviceProcAddr(device, "vkCmdSetLineWidth");
2199     out->vkCmdSetDepthBias =
2200         (PFN_vkCmdSetDepthBias)vk->vkGetDeviceProcAddr(device, "vkCmdSetDepthBias");
2201     out->vkCmdSetBlendConstants =
2202         (PFN_vkCmdSetBlendConstants)vk->vkGetDeviceProcAddr(device, "vkCmdSetBlendConstants");
2203     out->vkCmdSetDepthBounds =
2204         (PFN_vkCmdSetDepthBounds)vk->vkGetDeviceProcAddr(device, "vkCmdSetDepthBounds");
2205     out->vkCmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask)vk->vkGetDeviceProcAddr(
2206         device, "vkCmdSetStencilCompareMask");
2207     out->vkCmdSetStencilWriteMask =
2208         (PFN_vkCmdSetStencilWriteMask)vk->vkGetDeviceProcAddr(device, "vkCmdSetStencilWriteMask");
2209     out->vkCmdSetStencilReference =
2210         (PFN_vkCmdSetStencilReference)vk->vkGetDeviceProcAddr(device, "vkCmdSetStencilReference");
2211     out->vkCmdBindDescriptorSets =
2212         (PFN_vkCmdBindDescriptorSets)vk->vkGetDeviceProcAddr(device, "vkCmdBindDescriptorSets");
2213     out->vkCmdBindIndexBuffer =
2214         (PFN_vkCmdBindIndexBuffer)vk->vkGetDeviceProcAddr(device, "vkCmdBindIndexBuffer");
2215     out->vkCmdBindVertexBuffers =
2216         (PFN_vkCmdBindVertexBuffers)vk->vkGetDeviceProcAddr(device, "vkCmdBindVertexBuffers");
2217     out->vkCmdDraw = (PFN_vkCmdDraw)vk->vkGetDeviceProcAddr(device, "vkCmdDraw");
2218     out->vkCmdDrawIndexed =
2219         (PFN_vkCmdDrawIndexed)vk->vkGetDeviceProcAddr(device, "vkCmdDrawIndexed");
2220     out->vkCmdDrawIndirect =
2221         (PFN_vkCmdDrawIndirect)vk->vkGetDeviceProcAddr(device, "vkCmdDrawIndirect");
2222     out->vkCmdDrawIndexedIndirect =
2223         (PFN_vkCmdDrawIndexedIndirect)vk->vkGetDeviceProcAddr(device, "vkCmdDrawIndexedIndirect");
2224     out->vkCmdDispatch = (PFN_vkCmdDispatch)vk->vkGetDeviceProcAddr(device, "vkCmdDispatch");
2225     out->vkCmdDispatchIndirect =
2226         (PFN_vkCmdDispatchIndirect)vk->vkGetDeviceProcAddr(device, "vkCmdDispatchIndirect");
2227     out->vkCmdCopyBuffer = (PFN_vkCmdCopyBuffer)vk->vkGetDeviceProcAddr(device, "vkCmdCopyBuffer");
2228     out->vkCmdCopyImage = (PFN_vkCmdCopyImage)vk->vkGetDeviceProcAddr(device, "vkCmdCopyImage");
2229     out->vkCmdBlitImage = (PFN_vkCmdBlitImage)vk->vkGetDeviceProcAddr(device, "vkCmdBlitImage");
2230     out->vkCmdCopyBufferToImage =
2231         (PFN_vkCmdCopyBufferToImage)vk->vkGetDeviceProcAddr(device, "vkCmdCopyBufferToImage");
2232     out->vkCmdCopyImageToBuffer =
2233         (PFN_vkCmdCopyImageToBuffer)vk->vkGetDeviceProcAddr(device, "vkCmdCopyImageToBuffer");
2234     out->vkCmdUpdateBuffer =
2235         (PFN_vkCmdUpdateBuffer)vk->vkGetDeviceProcAddr(device, "vkCmdUpdateBuffer");
2236     out->vkCmdFillBuffer = (PFN_vkCmdFillBuffer)vk->vkGetDeviceProcAddr(device, "vkCmdFillBuffer");
2237     out->vkCmdClearColorImage =
2238         (PFN_vkCmdClearColorImage)vk->vkGetDeviceProcAddr(device, "vkCmdClearColorImage");
2239     out->vkCmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage)vk->vkGetDeviceProcAddr(
2240         device, "vkCmdClearDepthStencilImage");
2241     out->vkCmdClearAttachments =
2242         (PFN_vkCmdClearAttachments)vk->vkGetDeviceProcAddr(device, "vkCmdClearAttachments");
2243     out->vkCmdResolveImage =
2244         (PFN_vkCmdResolveImage)vk->vkGetDeviceProcAddr(device, "vkCmdResolveImage");
2245     out->vkCmdSetEvent = (PFN_vkCmdSetEvent)vk->vkGetDeviceProcAddr(device, "vkCmdSetEvent");
2246     out->vkCmdResetEvent = (PFN_vkCmdResetEvent)vk->vkGetDeviceProcAddr(device, "vkCmdResetEvent");
2247     out->vkCmdWaitEvents = (PFN_vkCmdWaitEvents)vk->vkGetDeviceProcAddr(device, "vkCmdWaitEvents");
2248     out->vkCmdPipelineBarrier =
2249         (PFN_vkCmdPipelineBarrier)vk->vkGetDeviceProcAddr(device, "vkCmdPipelineBarrier");
2250     out->vkCmdBeginQuery = (PFN_vkCmdBeginQuery)vk->vkGetDeviceProcAddr(device, "vkCmdBeginQuery");
2251     out->vkCmdEndQuery = (PFN_vkCmdEndQuery)vk->vkGetDeviceProcAddr(device, "vkCmdEndQuery");
2252     out->vkCmdResetQueryPool =
2253         (PFN_vkCmdResetQueryPool)vk->vkGetDeviceProcAddr(device, "vkCmdResetQueryPool");
2254     out->vkCmdWriteTimestamp =
2255         (PFN_vkCmdWriteTimestamp)vk->vkGetDeviceProcAddr(device, "vkCmdWriteTimestamp");
2256     out->vkCmdCopyQueryPoolResults =
2257         (PFN_vkCmdCopyQueryPoolResults)vk->vkGetDeviceProcAddr(device, "vkCmdCopyQueryPoolResults");
2258     out->vkCmdPushConstants =
2259         (PFN_vkCmdPushConstants)vk->vkGetDeviceProcAddr(device, "vkCmdPushConstants");
2260     out->vkCmdBeginRenderPass =
2261         (PFN_vkCmdBeginRenderPass)vk->vkGetDeviceProcAddr(device, "vkCmdBeginRenderPass");
2262     out->vkCmdNextSubpass =
2263         (PFN_vkCmdNextSubpass)vk->vkGetDeviceProcAddr(device, "vkCmdNextSubpass");
2264     out->vkCmdEndRenderPass =
2265         (PFN_vkCmdEndRenderPass)vk->vkGetDeviceProcAddr(device, "vkCmdEndRenderPass");
2266     out->vkCmdExecuteCommands =
2267         (PFN_vkCmdExecuteCommands)vk->vkGetDeviceProcAddr(device, "vkCmdExecuteCommands");
2268 #endif
2269 #ifdef VK_VERSION_1_1
2270     out->vkBindBufferMemory2 =
2271         (PFN_vkBindBufferMemory2)vk->vkGetDeviceProcAddr(device, "vkBindBufferMemory2");
2272     out->vkBindImageMemory2 =
2273         (PFN_vkBindImageMemory2)vk->vkGetDeviceProcAddr(device, "vkBindImageMemory2");
2274     out->vkGetDeviceGroupPeerMemoryFeatures =
2275         (PFN_vkGetDeviceGroupPeerMemoryFeatures)vk->vkGetDeviceProcAddr(
2276             device, "vkGetDeviceGroupPeerMemoryFeatures");
2277     out->vkCmdSetDeviceMask =
2278         (PFN_vkCmdSetDeviceMask)vk->vkGetDeviceProcAddr(device, "vkCmdSetDeviceMask");
2279     out->vkCmdDispatchBase =
2280         (PFN_vkCmdDispatchBase)vk->vkGetDeviceProcAddr(device, "vkCmdDispatchBase");
2281     out->vkGetImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2)vk->vkGetDeviceProcAddr(
2282         device, "vkGetImageMemoryRequirements2");
2283     out->vkGetBufferMemoryRequirements2 =
2284         (PFN_vkGetBufferMemoryRequirements2)vk->vkGetDeviceProcAddr(
2285             device, "vkGetBufferMemoryRequirements2");
2286     out->vkGetImageSparseMemoryRequirements2 =
2287         (PFN_vkGetImageSparseMemoryRequirements2)vk->vkGetDeviceProcAddr(
2288             device, "vkGetImageSparseMemoryRequirements2");
2289     out->vkTrimCommandPool =
2290         (PFN_vkTrimCommandPool)vk->vkGetDeviceProcAddr(device, "vkTrimCommandPool");
2291     out->vkGetDeviceQueue2 =
2292         (PFN_vkGetDeviceQueue2)vk->vkGetDeviceProcAddr(device, "vkGetDeviceQueue2");
2293     out->vkCreateSamplerYcbcrConversion =
2294         (PFN_vkCreateSamplerYcbcrConversion)vk->vkGetDeviceProcAddr(
2295             device, "vkCreateSamplerYcbcrConversion");
2296     out->vkDestroySamplerYcbcrConversion =
2297         (PFN_vkDestroySamplerYcbcrConversion)vk->vkGetDeviceProcAddr(
2298             device, "vkDestroySamplerYcbcrConversion");
2299     out->vkCreateDescriptorUpdateTemplate =
2300         (PFN_vkCreateDescriptorUpdateTemplate)vk->vkGetDeviceProcAddr(
2301             device, "vkCreateDescriptorUpdateTemplate");
2302     out->vkDestroyDescriptorUpdateTemplate =
2303         (PFN_vkDestroyDescriptorUpdateTemplate)vk->vkGetDeviceProcAddr(
2304             device, "vkDestroyDescriptorUpdateTemplate");
2305     out->vkUpdateDescriptorSetWithTemplate =
2306         (PFN_vkUpdateDescriptorSetWithTemplate)vk->vkGetDeviceProcAddr(
2307             device, "vkUpdateDescriptorSetWithTemplate");
2308     out->vkGetDescriptorSetLayoutSupport =
2309         (PFN_vkGetDescriptorSetLayoutSupport)vk->vkGetDeviceProcAddr(
2310             device, "vkGetDescriptorSetLayoutSupport");
2311 #endif
2312 #ifdef VK_VERSION_1_2
2313     out->vkCmdDrawIndirectCount =
2314         (PFN_vkCmdDrawIndirectCount)vk->vkGetDeviceProcAddr(device, "vkCmdDrawIndirectCount");
2315     out->vkCmdDrawIndexedIndirectCount = (PFN_vkCmdDrawIndexedIndirectCount)vk->vkGetDeviceProcAddr(
2316         device, "vkCmdDrawIndexedIndirectCount");
2317     out->vkCreateRenderPass2 =
2318         (PFN_vkCreateRenderPass2)vk->vkGetDeviceProcAddr(device, "vkCreateRenderPass2");
2319     out->vkCmdBeginRenderPass2 =
2320         (PFN_vkCmdBeginRenderPass2)vk->vkGetDeviceProcAddr(device, "vkCmdBeginRenderPass2");
2321     out->vkCmdNextSubpass2 =
2322         (PFN_vkCmdNextSubpass2)vk->vkGetDeviceProcAddr(device, "vkCmdNextSubpass2");
2323     out->vkCmdEndRenderPass2 =
2324         (PFN_vkCmdEndRenderPass2)vk->vkGetDeviceProcAddr(device, "vkCmdEndRenderPass2");
2325     out->vkResetQueryPool =
2326         (PFN_vkResetQueryPool)vk->vkGetDeviceProcAddr(device, "vkResetQueryPool");
2327     out->vkGetSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue)vk->vkGetDeviceProcAddr(
2328         device, "vkGetSemaphoreCounterValue");
2329     out->vkWaitSemaphores =
2330         (PFN_vkWaitSemaphores)vk->vkGetDeviceProcAddr(device, "vkWaitSemaphores");
2331     out->vkSignalSemaphore =
2332         (PFN_vkSignalSemaphore)vk->vkGetDeviceProcAddr(device, "vkSignalSemaphore");
2333     out->vkGetBufferDeviceAddress =
2334         (PFN_vkGetBufferDeviceAddress)vk->vkGetDeviceProcAddr(device, "vkGetBufferDeviceAddress");
2335     out->vkGetBufferOpaqueCaptureAddress =
2336         (PFN_vkGetBufferOpaqueCaptureAddress)vk->vkGetDeviceProcAddr(
2337             device, "vkGetBufferOpaqueCaptureAddress");
2338     out->vkGetDeviceMemoryOpaqueCaptureAddress =
2339         (PFN_vkGetDeviceMemoryOpaqueCaptureAddress)vk->vkGetDeviceProcAddr(
2340             device, "vkGetDeviceMemoryOpaqueCaptureAddress");
2341 #endif
2342 #ifdef VK_VERSION_1_3
2343     out->vkGetPhysicalDeviceToolProperties =
2344         (PFN_vkGetPhysicalDeviceToolProperties)vk->vkGetDeviceProcAddr(
2345             device, "vkGetPhysicalDeviceToolProperties");
2346     out->vkCreatePrivateDataSlot =
2347         (PFN_vkCreatePrivateDataSlot)vk->vkGetDeviceProcAddr(device, "vkCreatePrivateDataSlot");
2348     out->vkDestroyPrivateDataSlot =
2349         (PFN_vkDestroyPrivateDataSlot)vk->vkGetDeviceProcAddr(device, "vkDestroyPrivateDataSlot");
2350     out->vkSetPrivateData =
2351         (PFN_vkSetPrivateData)vk->vkGetDeviceProcAddr(device, "vkSetPrivateData");
2352     out->vkGetPrivateData =
2353         (PFN_vkGetPrivateData)vk->vkGetDeviceProcAddr(device, "vkGetPrivateData");
2354     out->vkCmdSetEvent2 = (PFN_vkCmdSetEvent2)vk->vkGetDeviceProcAddr(device, "vkCmdSetEvent2");
2355     out->vkCmdResetEvent2 =
2356         (PFN_vkCmdResetEvent2)vk->vkGetDeviceProcAddr(device, "vkCmdResetEvent2");
2357     out->vkCmdWaitEvents2 =
2358         (PFN_vkCmdWaitEvents2)vk->vkGetDeviceProcAddr(device, "vkCmdWaitEvents2");
2359     out->vkCmdPipelineBarrier2 =
2360         (PFN_vkCmdPipelineBarrier2)vk->vkGetDeviceProcAddr(device, "vkCmdPipelineBarrier2");
2361     out->vkCmdWriteTimestamp2 =
2362         (PFN_vkCmdWriteTimestamp2)vk->vkGetDeviceProcAddr(device, "vkCmdWriteTimestamp2");
2363     out->vkQueueSubmit2 = (PFN_vkQueueSubmit2)vk->vkGetDeviceProcAddr(device, "vkQueueSubmit2");
2364     out->vkCmdCopyBuffer2 =
2365         (PFN_vkCmdCopyBuffer2)vk->vkGetDeviceProcAddr(device, "vkCmdCopyBuffer2");
2366     out->vkCmdCopyImage2 = (PFN_vkCmdCopyImage2)vk->vkGetDeviceProcAddr(device, "vkCmdCopyImage2");
2367     out->vkCmdCopyBufferToImage2 =
2368         (PFN_vkCmdCopyBufferToImage2)vk->vkGetDeviceProcAddr(device, "vkCmdCopyBufferToImage2");
2369     out->vkCmdCopyImageToBuffer2 =
2370         (PFN_vkCmdCopyImageToBuffer2)vk->vkGetDeviceProcAddr(device, "vkCmdCopyImageToBuffer2");
2371     out->vkCmdBlitImage2 = (PFN_vkCmdBlitImage2)vk->vkGetDeviceProcAddr(device, "vkCmdBlitImage2");
2372     out->vkCmdResolveImage2 =
2373         (PFN_vkCmdResolveImage2)vk->vkGetDeviceProcAddr(device, "vkCmdResolveImage2");
2374     out->vkCmdBeginRendering =
2375         (PFN_vkCmdBeginRendering)vk->vkGetDeviceProcAddr(device, "vkCmdBeginRendering");
2376     out->vkCmdEndRendering =
2377         (PFN_vkCmdEndRendering)vk->vkGetDeviceProcAddr(device, "vkCmdEndRendering");
2378     out->vkCmdSetCullMode =
2379         (PFN_vkCmdSetCullMode)vk->vkGetDeviceProcAddr(device, "vkCmdSetCullMode");
2380     out->vkCmdSetFrontFace =
2381         (PFN_vkCmdSetFrontFace)vk->vkGetDeviceProcAddr(device, "vkCmdSetFrontFace");
2382     out->vkCmdSetPrimitiveTopology =
2383         (PFN_vkCmdSetPrimitiveTopology)vk->vkGetDeviceProcAddr(device, "vkCmdSetPrimitiveTopology");
2384     out->vkCmdSetViewportWithCount =
2385         (PFN_vkCmdSetViewportWithCount)vk->vkGetDeviceProcAddr(device, "vkCmdSetViewportWithCount");
2386     out->vkCmdSetScissorWithCount =
2387         (PFN_vkCmdSetScissorWithCount)vk->vkGetDeviceProcAddr(device, "vkCmdSetScissorWithCount");
2388     out->vkCmdBindVertexBuffers2 =
2389         (PFN_vkCmdBindVertexBuffers2)vk->vkGetDeviceProcAddr(device, "vkCmdBindVertexBuffers2");
2390     out->vkCmdSetDepthTestEnable =
2391         (PFN_vkCmdSetDepthTestEnable)vk->vkGetDeviceProcAddr(device, "vkCmdSetDepthTestEnable");
2392     out->vkCmdSetDepthWriteEnable =
2393         (PFN_vkCmdSetDepthWriteEnable)vk->vkGetDeviceProcAddr(device, "vkCmdSetDepthWriteEnable");
2394     out->vkCmdSetDepthCompareOp =
2395         (PFN_vkCmdSetDepthCompareOp)vk->vkGetDeviceProcAddr(device, "vkCmdSetDepthCompareOp");
2396     out->vkCmdSetDepthBoundsTestEnable = (PFN_vkCmdSetDepthBoundsTestEnable)vk->vkGetDeviceProcAddr(
2397         device, "vkCmdSetDepthBoundsTestEnable");
2398     out->vkCmdSetStencilTestEnable =
2399         (PFN_vkCmdSetStencilTestEnable)vk->vkGetDeviceProcAddr(device, "vkCmdSetStencilTestEnable");
2400     out->vkCmdSetStencilOp =
2401         (PFN_vkCmdSetStencilOp)vk->vkGetDeviceProcAddr(device, "vkCmdSetStencilOp");
2402     out->vkCmdSetRasterizerDiscardEnable =
2403         (PFN_vkCmdSetRasterizerDiscardEnable)vk->vkGetDeviceProcAddr(
2404             device, "vkCmdSetRasterizerDiscardEnable");
2405     out->vkCmdSetDepthBiasEnable =
2406         (PFN_vkCmdSetDepthBiasEnable)vk->vkGetDeviceProcAddr(device, "vkCmdSetDepthBiasEnable");
2407     out->vkCmdSetPrimitiveRestartEnable =
2408         (PFN_vkCmdSetPrimitiveRestartEnable)vk->vkGetDeviceProcAddr(
2409             device, "vkCmdSetPrimitiveRestartEnable");
2410     out->vkGetDeviceBufferMemoryRequirements =
2411         (PFN_vkGetDeviceBufferMemoryRequirements)vk->vkGetDeviceProcAddr(
2412             device, "vkGetDeviceBufferMemoryRequirements");
2413     out->vkGetDeviceImageMemoryRequirements =
2414         (PFN_vkGetDeviceImageMemoryRequirements)vk->vkGetDeviceProcAddr(
2415             device, "vkGetDeviceImageMemoryRequirements");
2416     out->vkGetDeviceImageSparseMemoryRequirements =
2417         (PFN_vkGetDeviceImageSparseMemoryRequirements)vk->vkGetDeviceProcAddr(
2418             device, "vkGetDeviceImageSparseMemoryRequirements");
2419 #endif
2420 #ifdef VK_KHR_surface
2421     out->vkGetPhysicalDeviceSurfaceSupportKHR =
2422         (PFN_vkGetPhysicalDeviceSurfaceSupportKHR)vk->vkGetDeviceProcAddr(
2423             device, "vkGetPhysicalDeviceSurfaceSupportKHR");
2424     out->vkGetPhysicalDeviceSurfaceCapabilitiesKHR =
2425         (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)vk->vkGetDeviceProcAddr(
2426             device, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
2427     out->vkGetPhysicalDeviceSurfaceFormatsKHR =
2428         (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)vk->vkGetDeviceProcAddr(
2429             device, "vkGetPhysicalDeviceSurfaceFormatsKHR");
2430     out->vkGetPhysicalDeviceSurfacePresentModesKHR =
2431         (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)vk->vkGetDeviceProcAddr(
2432             device, "vkGetPhysicalDeviceSurfacePresentModesKHR");
2433 #endif
2434 #ifdef VK_KHR_swapchain
2435     out->vkGetDeviceGroupPresentCapabilitiesKHR =
2436         (PFN_vkGetDeviceGroupPresentCapabilitiesKHR)vk->vkGetDeviceProcAddr(
2437             device, "vkGetDeviceGroupPresentCapabilitiesKHR");
2438     out->vkGetDeviceGroupSurfacePresentModesKHR =
2439         (PFN_vkGetDeviceGroupSurfacePresentModesKHR)vk->vkGetDeviceProcAddr(
2440             device, "vkGetDeviceGroupSurfacePresentModesKHR");
2441     out->vkGetPhysicalDevicePresentRectanglesKHR =
2442         (PFN_vkGetPhysicalDevicePresentRectanglesKHR)vk->vkGetDeviceProcAddr(
2443             device, "vkGetPhysicalDevicePresentRectanglesKHR");
2444     out->vkAcquireNextImage2KHR =
2445         (PFN_vkAcquireNextImage2KHR)vk->vkGetDeviceProcAddr(device, "vkAcquireNextImage2KHR");
2446 #endif
2447 #ifdef VK_KHR_dynamic_rendering
2448     out->vkCmdBeginRenderingKHR =
2449         (PFN_vkCmdBeginRenderingKHR)vk->vkGetDeviceProcAddr(device, "vkCmdBeginRenderingKHR");
2450     out->vkCmdEndRenderingKHR =
2451         (PFN_vkCmdEndRenderingKHR)vk->vkGetDeviceProcAddr(device, "vkCmdEndRenderingKHR");
2452 #endif
2453 #ifdef VK_KHR_get_physical_device_properties2
2454     out->vkGetPhysicalDeviceFeatures2KHR =
2455         (PFN_vkGetPhysicalDeviceFeatures2KHR)vk->vkGetDeviceProcAddr(
2456             device, "vkGetPhysicalDeviceFeatures2KHR");
2457     out->vkGetPhysicalDeviceProperties2KHR =
2458         (PFN_vkGetPhysicalDeviceProperties2KHR)vk->vkGetDeviceProcAddr(
2459             device, "vkGetPhysicalDeviceProperties2KHR");
2460     out->vkGetPhysicalDeviceFormatProperties2KHR =
2461         (PFN_vkGetPhysicalDeviceFormatProperties2KHR)vk->vkGetDeviceProcAddr(
2462             device, "vkGetPhysicalDeviceFormatProperties2KHR");
2463     out->vkGetPhysicalDeviceImageFormatProperties2KHR =
2464         (PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)vk->vkGetDeviceProcAddr(
2465             device, "vkGetPhysicalDeviceImageFormatProperties2KHR");
2466     out->vkGetPhysicalDeviceQueueFamilyProperties2KHR =
2467         (PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)vk->vkGetDeviceProcAddr(
2468             device, "vkGetPhysicalDeviceQueueFamilyProperties2KHR");
2469     out->vkGetPhysicalDeviceMemoryProperties2KHR =
2470         (PFN_vkGetPhysicalDeviceMemoryProperties2KHR)vk->vkGetDeviceProcAddr(
2471             device, "vkGetPhysicalDeviceMemoryProperties2KHR");
2472     out->vkGetPhysicalDeviceSparseImageFormatProperties2KHR =
2473         (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)vk->vkGetDeviceProcAddr(
2474             device, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
2475 #endif
2476 #ifdef VK_KHR_maintenance1
2477     out->vkTrimCommandPoolKHR =
2478         (PFN_vkTrimCommandPoolKHR)vk->vkGetDeviceProcAddr(device, "vkTrimCommandPoolKHR");
2479 #endif
2480 #ifdef VK_KHR_external_memory_capabilities
2481     out->vkGetPhysicalDeviceExternalBufferPropertiesKHR =
2482         (PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)vk->vkGetDeviceProcAddr(
2483             device, "vkGetPhysicalDeviceExternalBufferPropertiesKHR");
2484 #endif
2485 #ifdef VK_KHR_external_memory_win32
2486     out->vkGetMemoryWin32HandleKHR =
2487         (PFN_vkGetMemoryWin32HandleKHR)vk->vkGetDeviceProcAddr(device, "vkGetMemoryWin32HandleKHR");
2488     out->vkGetMemoryWin32HandlePropertiesKHR =
2489         (PFN_vkGetMemoryWin32HandlePropertiesKHR)vk->vkGetDeviceProcAddr(
2490             device, "vkGetMemoryWin32HandlePropertiesKHR");
2491 #endif
2492 #ifdef VK_KHR_external_memory_fd
2493     out->vkGetMemoryFdKHR =
2494         (PFN_vkGetMemoryFdKHR)vk->vkGetDeviceProcAddr(device, "vkGetMemoryFdKHR");
2495     out->vkGetMemoryFdPropertiesKHR = (PFN_vkGetMemoryFdPropertiesKHR)vk->vkGetDeviceProcAddr(
2496         device, "vkGetMemoryFdPropertiesKHR");
2497 #endif
2498 #ifdef VK_KHR_external_semaphore_capabilities
2499     out->vkGetPhysicalDeviceExternalSemaphorePropertiesKHR =
2500         (PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)vk->vkGetDeviceProcAddr(
2501             device, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
2502 #endif
2503 #ifdef VK_KHR_external_semaphore_win32
2504     out->vkImportSemaphoreWin32HandleKHR =
2505         (PFN_vkImportSemaphoreWin32HandleKHR)vk->vkGetDeviceProcAddr(
2506             device, "vkImportSemaphoreWin32HandleKHR");
2507     out->vkGetSemaphoreWin32HandleKHR = (PFN_vkGetSemaphoreWin32HandleKHR)vk->vkGetDeviceProcAddr(
2508         device, "vkGetSemaphoreWin32HandleKHR");
2509 #endif
2510 #ifdef VK_KHR_external_semaphore_fd
2511     out->vkImportSemaphoreFdKHR =
2512         (PFN_vkImportSemaphoreFdKHR)vk->vkGetDeviceProcAddr(device, "vkImportSemaphoreFdKHR");
2513     out->vkGetSemaphoreFdKHR =
2514         (PFN_vkGetSemaphoreFdKHR)vk->vkGetDeviceProcAddr(device, "vkGetSemaphoreFdKHR");
2515 #endif
2516 #ifdef VK_KHR_descriptor_update_template
2517     out->vkCreateDescriptorUpdateTemplateKHR =
2518         (PFN_vkCreateDescriptorUpdateTemplateKHR)vk->vkGetDeviceProcAddr(
2519             device, "vkCreateDescriptorUpdateTemplateKHR");
2520     out->vkDestroyDescriptorUpdateTemplateKHR =
2521         (PFN_vkDestroyDescriptorUpdateTemplateKHR)vk->vkGetDeviceProcAddr(
2522             device, "vkDestroyDescriptorUpdateTemplateKHR");
2523     out->vkUpdateDescriptorSetWithTemplateKHR =
2524         (PFN_vkUpdateDescriptorSetWithTemplateKHR)vk->vkGetDeviceProcAddr(
2525             device, "vkUpdateDescriptorSetWithTemplateKHR");
2526 #endif
2527 #ifdef VK_KHR_create_renderpass2
2528     out->vkCreateRenderPass2KHR =
2529         (PFN_vkCreateRenderPass2KHR)vk->vkGetDeviceProcAddr(device, "vkCreateRenderPass2KHR");
2530     out->vkCmdBeginRenderPass2KHR =
2531         (PFN_vkCmdBeginRenderPass2KHR)vk->vkGetDeviceProcAddr(device, "vkCmdBeginRenderPass2KHR");
2532     out->vkCmdNextSubpass2KHR =
2533         (PFN_vkCmdNextSubpass2KHR)vk->vkGetDeviceProcAddr(device, "vkCmdNextSubpass2KHR");
2534     out->vkCmdEndRenderPass2KHR =
2535         (PFN_vkCmdEndRenderPass2KHR)vk->vkGetDeviceProcAddr(device, "vkCmdEndRenderPass2KHR");
2536 #endif
2537 #ifdef VK_KHR_external_fence_capabilities
2538     out->vkGetPhysicalDeviceExternalFencePropertiesKHR =
2539         (PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)vk->vkGetDeviceProcAddr(
2540             device, "vkGetPhysicalDeviceExternalFencePropertiesKHR");
2541 #endif
2542 #ifdef VK_KHR_external_fence_fd
2543     out->vkImportFenceFdKHR =
2544         (PFN_vkImportFenceFdKHR)vk->vkGetDeviceProcAddr(device, "vkImportFenceFdKHR");
2545     out->vkGetFenceFdKHR = (PFN_vkGetFenceFdKHR)vk->vkGetDeviceProcAddr(device, "vkGetFenceFdKHR");
2546 #endif
2547 #ifdef VK_KHR_get_memory_requirements2
2548     out->vkGetImageMemoryRequirements2KHR =
2549         (PFN_vkGetImageMemoryRequirements2KHR)vk->vkGetDeviceProcAddr(
2550             device, "vkGetImageMemoryRequirements2KHR");
2551     out->vkGetBufferMemoryRequirements2KHR =
2552         (PFN_vkGetBufferMemoryRequirements2KHR)vk->vkGetDeviceProcAddr(
2553             device, "vkGetBufferMemoryRequirements2KHR");
2554     out->vkGetImageSparseMemoryRequirements2KHR =
2555         (PFN_vkGetImageSparseMemoryRequirements2KHR)vk->vkGetDeviceProcAddr(
2556             device, "vkGetImageSparseMemoryRequirements2KHR");
2557 #endif
2558 #ifdef VK_KHR_sampler_ycbcr_conversion
2559     out->vkCreateSamplerYcbcrConversionKHR =
2560         (PFN_vkCreateSamplerYcbcrConversionKHR)vk->vkGetDeviceProcAddr(
2561             device, "vkCreateSamplerYcbcrConversionKHR");
2562     out->vkDestroySamplerYcbcrConversionKHR =
2563         (PFN_vkDestroySamplerYcbcrConversionKHR)vk->vkGetDeviceProcAddr(
2564             device, "vkDestroySamplerYcbcrConversionKHR");
2565 #endif
2566 #ifdef VK_KHR_bind_memory2
2567     out->vkBindBufferMemory2KHR =
2568         (PFN_vkBindBufferMemory2KHR)vk->vkGetDeviceProcAddr(device, "vkBindBufferMemory2KHR");
2569     out->vkBindImageMemory2KHR =
2570         (PFN_vkBindImageMemory2KHR)vk->vkGetDeviceProcAddr(device, "vkBindImageMemory2KHR");
2571 #endif
2572 #ifdef VK_KHR_maintenance3
2573     out->vkGetDescriptorSetLayoutSupportKHR =
2574         (PFN_vkGetDescriptorSetLayoutSupportKHR)vk->vkGetDeviceProcAddr(
2575             device, "vkGetDescriptorSetLayoutSupportKHR");
2576 #endif
2577 #ifdef VK_KHR_buffer_device_address
2578     out->vkGetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR)vk->vkGetDeviceProcAddr(
2579         device, "vkGetBufferDeviceAddressKHR");
2580     out->vkGetBufferOpaqueCaptureAddressKHR =
2581         (PFN_vkGetBufferOpaqueCaptureAddressKHR)vk->vkGetDeviceProcAddr(
2582             device, "vkGetBufferOpaqueCaptureAddressKHR");
2583     out->vkGetDeviceMemoryOpaqueCaptureAddressKHR =
2584         (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)vk->vkGetDeviceProcAddr(
2585             device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR");
2586 #endif
2587 #ifdef VK_KHR_pipeline_executable_properties
2588     out->vkGetPipelineExecutablePropertiesKHR =
2589         (PFN_vkGetPipelineExecutablePropertiesKHR)vk->vkGetDeviceProcAddr(
2590             device, "vkGetPipelineExecutablePropertiesKHR");
2591     out->vkGetPipelineExecutableStatisticsKHR =
2592         (PFN_vkGetPipelineExecutableStatisticsKHR)vk->vkGetDeviceProcAddr(
2593             device, "vkGetPipelineExecutableStatisticsKHR");
2594     out->vkGetPipelineExecutableInternalRepresentationsKHR =
2595         (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)vk->vkGetDeviceProcAddr(
2596             device, "vkGetPipelineExecutableInternalRepresentationsKHR");
2597 #endif
2598 #ifdef VK_KHR_synchronization2
2599     out->vkCmdSetEvent2KHR =
2600         (PFN_vkCmdSetEvent2KHR)vk->vkGetDeviceProcAddr(device, "vkCmdSetEvent2KHR");
2601     out->vkCmdResetEvent2KHR =
2602         (PFN_vkCmdResetEvent2KHR)vk->vkGetDeviceProcAddr(device, "vkCmdResetEvent2KHR");
2603     out->vkCmdWaitEvents2KHR =
2604         (PFN_vkCmdWaitEvents2KHR)vk->vkGetDeviceProcAddr(device, "vkCmdWaitEvents2KHR");
2605     out->vkCmdPipelineBarrier2KHR =
2606         (PFN_vkCmdPipelineBarrier2KHR)vk->vkGetDeviceProcAddr(device, "vkCmdPipelineBarrier2KHR");
2607     out->vkCmdWriteTimestamp2KHR =
2608         (PFN_vkCmdWriteTimestamp2KHR)vk->vkGetDeviceProcAddr(device, "vkCmdWriteTimestamp2KHR");
2609     out->vkQueueSubmit2KHR =
2610         (PFN_vkQueueSubmit2KHR)vk->vkGetDeviceProcAddr(device, "vkQueueSubmit2KHR");
2611     out->vkCmdWriteBufferMarker2AMD = (PFN_vkCmdWriteBufferMarker2AMD)vk->vkGetDeviceProcAddr(
2612         device, "vkCmdWriteBufferMarker2AMD");
2613     out->vkGetQueueCheckpointData2NV = (PFN_vkGetQueueCheckpointData2NV)vk->vkGetDeviceProcAddr(
2614         device, "vkGetQueueCheckpointData2NV");
2615 #endif
2616 #ifdef VK_KHR_copy_commands2
2617     out->vkCmdCopyBuffer2KHR =
2618         (PFN_vkCmdCopyBuffer2KHR)vk->vkGetDeviceProcAddr(device, "vkCmdCopyBuffer2KHR");
2619     out->vkCmdCopyImage2KHR =
2620         (PFN_vkCmdCopyImage2KHR)vk->vkGetDeviceProcAddr(device, "vkCmdCopyImage2KHR");
2621     out->vkCmdCopyBufferToImage2KHR = (PFN_vkCmdCopyBufferToImage2KHR)vk->vkGetDeviceProcAddr(
2622         device, "vkCmdCopyBufferToImage2KHR");
2623     out->vkCmdCopyImageToBuffer2KHR = (PFN_vkCmdCopyImageToBuffer2KHR)vk->vkGetDeviceProcAddr(
2624         device, "vkCmdCopyImageToBuffer2KHR");
2625     out->vkCmdBlitImage2KHR =
2626         (PFN_vkCmdBlitImage2KHR)vk->vkGetDeviceProcAddr(device, "vkCmdBlitImage2KHR");
2627     out->vkCmdResolveImage2KHR =
2628         (PFN_vkCmdResolveImage2KHR)vk->vkGetDeviceProcAddr(device, "vkCmdResolveImage2KHR");
2629 #endif
2630 #ifdef VK_KHR_maintenance4
2631     out->vkGetDeviceBufferMemoryRequirementsKHR =
2632         (PFN_vkGetDeviceBufferMemoryRequirementsKHR)vk->vkGetDeviceProcAddr(
2633             device, "vkGetDeviceBufferMemoryRequirementsKHR");
2634     out->vkGetDeviceImageMemoryRequirementsKHR =
2635         (PFN_vkGetDeviceImageMemoryRequirementsKHR)vk->vkGetDeviceProcAddr(
2636             device, "vkGetDeviceImageMemoryRequirementsKHR");
2637     out->vkGetDeviceImageSparseMemoryRequirementsKHR =
2638         (PFN_vkGetDeviceImageSparseMemoryRequirementsKHR)vk->vkGetDeviceProcAddr(
2639             device, "vkGetDeviceImageSparseMemoryRequirementsKHR");
2640 #endif
2641 #ifdef VK_KHR_maintenance5
2642     out->vkCmdBindIndexBuffer2KHR =
2643         (PFN_vkCmdBindIndexBuffer2KHR)vk->vkGetDeviceProcAddr(device, "vkCmdBindIndexBuffer2KHR");
2644     out->vkGetRenderingAreaGranularityKHR =
2645         (PFN_vkGetRenderingAreaGranularityKHR)vk->vkGetDeviceProcAddr(
2646             device, "vkGetRenderingAreaGranularityKHR");
2647     out->vkGetDeviceImageSubresourceLayoutKHR =
2648         (PFN_vkGetDeviceImageSubresourceLayoutKHR)vk->vkGetDeviceProcAddr(
2649             device, "vkGetDeviceImageSubresourceLayoutKHR");
2650     out->vkGetImageSubresourceLayout2KHR =
2651         (PFN_vkGetImageSubresourceLayout2KHR)vk->vkGetDeviceProcAddr(
2652             device, "vkGetImageSubresourceLayout2KHR");
2653 #endif
2654 #ifdef VK_ANDROID_native_buffer
2655     out->vkGetSwapchainGrallocUsageANDROID =
2656         (PFN_vkGetSwapchainGrallocUsageANDROID)vk->vkGetDeviceProcAddr(
2657             device, "vkGetSwapchainGrallocUsageANDROID");
2658     out->vkAcquireImageANDROID =
2659         (PFN_vkAcquireImageANDROID)vk->vkGetDeviceProcAddr(device, "vkAcquireImageANDROID");
2660     out->vkQueueSignalReleaseImageANDROID =
2661         (PFN_vkQueueSignalReleaseImageANDROID)vk->vkGetDeviceProcAddr(
2662             device, "vkQueueSignalReleaseImageANDROID");
2663     out->vkGetSwapchainGrallocUsage2ANDROID =
2664         (PFN_vkGetSwapchainGrallocUsage2ANDROID)vk->vkGetDeviceProcAddr(
2665             device, "vkGetSwapchainGrallocUsage2ANDROID");
2666 #endif
2667 #ifdef VK_EXT_transform_feedback
2668     out->vkCmdBindTransformFeedbackBuffersEXT =
2669         (PFN_vkCmdBindTransformFeedbackBuffersEXT)vk->vkGetDeviceProcAddr(
2670             device, "vkCmdBindTransformFeedbackBuffersEXT");
2671     out->vkCmdBeginTransformFeedbackEXT =
2672         (PFN_vkCmdBeginTransformFeedbackEXT)vk->vkGetDeviceProcAddr(
2673             device, "vkCmdBeginTransformFeedbackEXT");
2674     out->vkCmdEndTransformFeedbackEXT = (PFN_vkCmdEndTransformFeedbackEXT)vk->vkGetDeviceProcAddr(
2675         device, "vkCmdEndTransformFeedbackEXT");
2676     out->vkCmdBeginQueryIndexedEXT =
2677         (PFN_vkCmdBeginQueryIndexedEXT)vk->vkGetDeviceProcAddr(device, "vkCmdBeginQueryIndexedEXT");
2678     out->vkCmdEndQueryIndexedEXT =
2679         (PFN_vkCmdEndQueryIndexedEXT)vk->vkGetDeviceProcAddr(device, "vkCmdEndQueryIndexedEXT");
2680     out->vkCmdDrawIndirectByteCountEXT = (PFN_vkCmdDrawIndirectByteCountEXT)vk->vkGetDeviceProcAddr(
2681         device, "vkCmdDrawIndirectByteCountEXT");
2682 #endif
2683 #ifdef VK_EXT_debug_utils
2684     out->vkSetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)vk->vkGetDeviceProcAddr(
2685         device, "vkSetDebugUtilsObjectNameEXT");
2686     out->vkSetDebugUtilsObjectTagEXT = (PFN_vkSetDebugUtilsObjectTagEXT)vk->vkGetDeviceProcAddr(
2687         device, "vkSetDebugUtilsObjectTagEXT");
2688     out->vkQueueBeginDebugUtilsLabelEXT =
2689         (PFN_vkQueueBeginDebugUtilsLabelEXT)vk->vkGetDeviceProcAddr(
2690             device, "vkQueueBeginDebugUtilsLabelEXT");
2691     out->vkQueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)vk->vkGetDeviceProcAddr(
2692         device, "vkQueueEndDebugUtilsLabelEXT");
2693     out->vkQueueInsertDebugUtilsLabelEXT =
2694         (PFN_vkQueueInsertDebugUtilsLabelEXT)vk->vkGetDeviceProcAddr(
2695             device, "vkQueueInsertDebugUtilsLabelEXT");
2696     out->vkCmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)vk->vkGetDeviceProcAddr(
2697         device, "vkCmdBeginDebugUtilsLabelEXT");
2698     out->vkCmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)vk->vkGetDeviceProcAddr(
2699         device, "vkCmdEndDebugUtilsLabelEXT");
2700     out->vkCmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT)vk->vkGetDeviceProcAddr(
2701         device, "vkCmdInsertDebugUtilsLabelEXT");
2702 #endif
2703 #ifdef VK_EXT_tooling_info
2704     out->vkGetPhysicalDeviceToolPropertiesEXT =
2705         (PFN_vkGetPhysicalDeviceToolPropertiesEXT)vk->vkGetDeviceProcAddr(
2706             device, "vkGetPhysicalDeviceToolPropertiesEXT");
2707 #endif
2708 #ifdef VK_EXT_line_rasterization
2709     out->vkCmdSetLineStippleEXT =
2710         (PFN_vkCmdSetLineStippleEXT)vk->vkGetDeviceProcAddr(device, "vkCmdSetLineStippleEXT");
2711 #endif
2712 #ifdef VK_EXT_extended_dynamic_state
2713     out->vkCmdSetCullModeEXT =
2714         (PFN_vkCmdSetCullModeEXT)vk->vkGetDeviceProcAddr(device, "vkCmdSetCullModeEXT");
2715     out->vkCmdSetFrontFaceEXT =
2716         (PFN_vkCmdSetFrontFaceEXT)vk->vkGetDeviceProcAddr(device, "vkCmdSetFrontFaceEXT");
2717     out->vkCmdSetPrimitiveTopologyEXT = (PFN_vkCmdSetPrimitiveTopologyEXT)vk->vkGetDeviceProcAddr(
2718         device, "vkCmdSetPrimitiveTopologyEXT");
2719     out->vkCmdSetViewportWithCountEXT = (PFN_vkCmdSetViewportWithCountEXT)vk->vkGetDeviceProcAddr(
2720         device, "vkCmdSetViewportWithCountEXT");
2721     out->vkCmdSetScissorWithCountEXT = (PFN_vkCmdSetScissorWithCountEXT)vk->vkGetDeviceProcAddr(
2722         device, "vkCmdSetScissorWithCountEXT");
2723     out->vkCmdBindVertexBuffers2EXT = (PFN_vkCmdBindVertexBuffers2EXT)vk->vkGetDeviceProcAddr(
2724         device, "vkCmdBindVertexBuffers2EXT");
2725     out->vkCmdSetDepthTestEnableEXT = (PFN_vkCmdSetDepthTestEnableEXT)vk->vkGetDeviceProcAddr(
2726         device, "vkCmdSetDepthTestEnableEXT");
2727     out->vkCmdSetDepthWriteEnableEXT = (PFN_vkCmdSetDepthWriteEnableEXT)vk->vkGetDeviceProcAddr(
2728         device, "vkCmdSetDepthWriteEnableEXT");
2729     out->vkCmdSetDepthCompareOpEXT =
2730         (PFN_vkCmdSetDepthCompareOpEXT)vk->vkGetDeviceProcAddr(device, "vkCmdSetDepthCompareOpEXT");
2731     out->vkCmdSetDepthBoundsTestEnableEXT =
2732         (PFN_vkCmdSetDepthBoundsTestEnableEXT)vk->vkGetDeviceProcAddr(
2733             device, "vkCmdSetDepthBoundsTestEnableEXT");
2734     out->vkCmdSetStencilTestEnableEXT = (PFN_vkCmdSetStencilTestEnableEXT)vk->vkGetDeviceProcAddr(
2735         device, "vkCmdSetStencilTestEnableEXT");
2736     out->vkCmdSetStencilOpEXT =
2737         (PFN_vkCmdSetStencilOpEXT)vk->vkGetDeviceProcAddr(device, "vkCmdSetStencilOpEXT");
2738 #endif
2739 #ifdef VK_EXT_host_image_copy
2740     out->vkCopyMemoryToImageEXT =
2741         (PFN_vkCopyMemoryToImageEXT)vk->vkGetDeviceProcAddr(device, "vkCopyMemoryToImageEXT");
2742     out->vkCopyImageToMemoryEXT =
2743         (PFN_vkCopyImageToMemoryEXT)vk->vkGetDeviceProcAddr(device, "vkCopyImageToMemoryEXT");
2744     out->vkCopyImageToImageEXT =
2745         (PFN_vkCopyImageToImageEXT)vk->vkGetDeviceProcAddr(device, "vkCopyImageToImageEXT");
2746     out->vkTransitionImageLayoutEXT = (PFN_vkTransitionImageLayoutEXT)vk->vkGetDeviceProcAddr(
2747         device, "vkTransitionImageLayoutEXT");
2748     out->vkGetImageSubresourceLayout2EXT =
2749         (PFN_vkGetImageSubresourceLayout2EXT)vk->vkGetDeviceProcAddr(
2750             device, "vkGetImageSubresourceLayout2EXT");
2751 #endif
2752 #ifdef VK_EXT_swapchain_maintenance1
2753     out->vkReleaseSwapchainImagesEXT = (PFN_vkReleaseSwapchainImagesEXT)vk->vkGetDeviceProcAddr(
2754         device, "vkReleaseSwapchainImagesEXT");
2755 #endif
2756 #ifdef VK_EXT_private_data
2757     out->vkCreatePrivateDataSlotEXT = (PFN_vkCreatePrivateDataSlotEXT)vk->vkGetDeviceProcAddr(
2758         device, "vkCreatePrivateDataSlotEXT");
2759     out->vkDestroyPrivateDataSlotEXT = (PFN_vkDestroyPrivateDataSlotEXT)vk->vkGetDeviceProcAddr(
2760         device, "vkDestroyPrivateDataSlotEXT");
2761     out->vkSetPrivateDataEXT =
2762         (PFN_vkSetPrivateDataEXT)vk->vkGetDeviceProcAddr(device, "vkSetPrivateDataEXT");
2763     out->vkGetPrivateDataEXT =
2764         (PFN_vkGetPrivateDataEXT)vk->vkGetDeviceProcAddr(device, "vkGetPrivateDataEXT");
2765 #endif
2766 #ifdef VK_EXT_metal_objects
2767     out->vkExportMetalObjectsEXT =
2768         (PFN_vkExportMetalObjectsEXT)vk->vkGetDeviceProcAddr(device, "vkExportMetalObjectsEXT");
2769 #endif
2770 #ifdef VK_EXT_extended_dynamic_state2
2771     out->vkCmdSetPatchControlPointsEXT = (PFN_vkCmdSetPatchControlPointsEXT)vk->vkGetDeviceProcAddr(
2772         device, "vkCmdSetPatchControlPointsEXT");
2773     out->vkCmdSetRasterizerDiscardEnableEXT =
2774         (PFN_vkCmdSetRasterizerDiscardEnableEXT)vk->vkGetDeviceProcAddr(
2775             device, "vkCmdSetRasterizerDiscardEnableEXT");
2776     out->vkCmdSetDepthBiasEnableEXT = (PFN_vkCmdSetDepthBiasEnableEXT)vk->vkGetDeviceProcAddr(
2777         device, "vkCmdSetDepthBiasEnableEXT");
2778     out->vkCmdSetLogicOpEXT =
2779         (PFN_vkCmdSetLogicOpEXT)vk->vkGetDeviceProcAddr(device, "vkCmdSetLogicOpEXT");
2780     out->vkCmdSetPrimitiveRestartEnableEXT =
2781         (PFN_vkCmdSetPrimitiveRestartEnableEXT)vk->vkGetDeviceProcAddr(
2782             device, "vkCmdSetPrimitiveRestartEnableEXT");
2783 #endif
2784 #ifdef VK_GOOGLE_gfxstream
2785     out->vkMapMemoryIntoAddressSpaceGOOGLE =
2786         (PFN_vkMapMemoryIntoAddressSpaceGOOGLE)vk->vkGetDeviceProcAddr(
2787             device, "vkMapMemoryIntoAddressSpaceGOOGLE");
2788     out->vkUpdateDescriptorSetWithTemplateSizedGOOGLE =
2789         (PFN_vkUpdateDescriptorSetWithTemplateSizedGOOGLE)vk->vkGetDeviceProcAddr(
2790             device, "vkUpdateDescriptorSetWithTemplateSizedGOOGLE");
2791     out->vkBeginCommandBufferAsyncGOOGLE =
2792         (PFN_vkBeginCommandBufferAsyncGOOGLE)vk->vkGetDeviceProcAddr(
2793             device, "vkBeginCommandBufferAsyncGOOGLE");
2794     out->vkEndCommandBufferAsyncGOOGLE = (PFN_vkEndCommandBufferAsyncGOOGLE)vk->vkGetDeviceProcAddr(
2795         device, "vkEndCommandBufferAsyncGOOGLE");
2796     out->vkResetCommandBufferAsyncGOOGLE =
2797         (PFN_vkResetCommandBufferAsyncGOOGLE)vk->vkGetDeviceProcAddr(
2798             device, "vkResetCommandBufferAsyncGOOGLE");
2799     out->vkCommandBufferHostSyncGOOGLE = (PFN_vkCommandBufferHostSyncGOOGLE)vk->vkGetDeviceProcAddr(
2800         device, "vkCommandBufferHostSyncGOOGLE");
2801     out->vkCreateImageWithRequirementsGOOGLE =
2802         (PFN_vkCreateImageWithRequirementsGOOGLE)vk->vkGetDeviceProcAddr(
2803             device, "vkCreateImageWithRequirementsGOOGLE");
2804     out->vkCreateBufferWithRequirementsGOOGLE =
2805         (PFN_vkCreateBufferWithRequirementsGOOGLE)vk->vkGetDeviceProcAddr(
2806             device, "vkCreateBufferWithRequirementsGOOGLE");
2807     out->vkGetMemoryHostAddressInfoGOOGLE =
2808         (PFN_vkGetMemoryHostAddressInfoGOOGLE)vk->vkGetDeviceProcAddr(
2809             device, "vkGetMemoryHostAddressInfoGOOGLE");
2810     out->vkFreeMemorySyncGOOGLE =
2811         (PFN_vkFreeMemorySyncGOOGLE)vk->vkGetDeviceProcAddr(device, "vkFreeMemorySyncGOOGLE");
2812     out->vkQueueHostSyncGOOGLE =
2813         (PFN_vkQueueHostSyncGOOGLE)vk->vkGetDeviceProcAddr(device, "vkQueueHostSyncGOOGLE");
2814     out->vkQueueSubmitAsyncGOOGLE =
2815         (PFN_vkQueueSubmitAsyncGOOGLE)vk->vkGetDeviceProcAddr(device, "vkQueueSubmitAsyncGOOGLE");
2816     out->vkQueueWaitIdleAsyncGOOGLE = (PFN_vkQueueWaitIdleAsyncGOOGLE)vk->vkGetDeviceProcAddr(
2817         device, "vkQueueWaitIdleAsyncGOOGLE");
2818     out->vkQueueBindSparseAsyncGOOGLE = (PFN_vkQueueBindSparseAsyncGOOGLE)vk->vkGetDeviceProcAddr(
2819         device, "vkQueueBindSparseAsyncGOOGLE");
2820     out->vkGetLinearImageLayoutGOOGLE = (PFN_vkGetLinearImageLayoutGOOGLE)vk->vkGetDeviceProcAddr(
2821         device, "vkGetLinearImageLayoutGOOGLE");
2822     out->vkGetLinearImageLayout2GOOGLE = (PFN_vkGetLinearImageLayout2GOOGLE)vk->vkGetDeviceProcAddr(
2823         device, "vkGetLinearImageLayout2GOOGLE");
2824     out->vkQueueFlushCommandsGOOGLE = (PFN_vkQueueFlushCommandsGOOGLE)vk->vkGetDeviceProcAddr(
2825         device, "vkQueueFlushCommandsGOOGLE");
2826     out->vkQueueCommitDescriptorSetUpdatesGOOGLE =
2827         (PFN_vkQueueCommitDescriptorSetUpdatesGOOGLE)vk->vkGetDeviceProcAddr(
2828             device, "vkQueueCommitDescriptorSetUpdatesGOOGLE");
2829     out->vkCollectDescriptorPoolIdsGOOGLE =
2830         (PFN_vkCollectDescriptorPoolIdsGOOGLE)vk->vkGetDeviceProcAddr(
2831             device, "vkCollectDescriptorPoolIdsGOOGLE");
2832     out->vkQueueSignalReleaseImageANDROIDAsyncGOOGLE =
2833         (PFN_vkQueueSignalReleaseImageANDROIDAsyncGOOGLE)vk->vkGetDeviceProcAddr(
2834             device, "vkQueueSignalReleaseImageANDROIDAsyncGOOGLE");
2835     out->vkQueueFlushCommandsFromAuxMemoryGOOGLE =
2836         (PFN_vkQueueFlushCommandsFromAuxMemoryGOOGLE)vk->vkGetDeviceProcAddr(
2837             device, "vkQueueFlushCommandsFromAuxMemoryGOOGLE");
2838     out->vkGetBlobGOOGLE = (PFN_vkGetBlobGOOGLE)vk->vkGetDeviceProcAddr(device, "vkGetBlobGOOGLE");
2839     out->vkUpdateDescriptorSetWithTemplateSized2GOOGLE =
2840         (PFN_vkUpdateDescriptorSetWithTemplateSized2GOOGLE)vk->vkGetDeviceProcAddr(
2841             device, "vkUpdateDescriptorSetWithTemplateSized2GOOGLE");
2842     out->vkQueueSubmitAsync2GOOGLE =
2843         (PFN_vkQueueSubmitAsync2GOOGLE)vk->vkGetDeviceProcAddr(device, "vkQueueSubmitAsync2GOOGLE");
2844 #endif
2845 #ifdef VK_QNX_external_memory_screen_buffer
2846     out->vkGetScreenBufferPropertiesQNX =
2847         (PFN_vkGetScreenBufferPropertiesQNX)vk->vkGetDeviceProcAddr(
2848             device, "vkGetScreenBufferPropertiesQNX");
2849 #endif
2850 }
2851 
vulkan_dispatch_check_instance_VK_VERSION_1_0(const VulkanDispatch * vk)2852 bool vulkan_dispatch_check_instance_VK_VERSION_1_0(const VulkanDispatch* vk)
2853 
2854 {
2855     bool good = true;
2856     if (!vk->vkCreateInstance) {
2857         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreateInstance not found\n");
2858         good = false;
2859     }
2860     if (!vk->vkEnumerateInstanceExtensionProperties) {
2861         fprintf(stderr,
2862                 "VK_VERSION_1_0 check failed: vkEnumerateInstanceExtensionProperties not found\n");
2863         good = false;
2864     }
2865     if (!vk->vkEnumerateInstanceLayerProperties) {
2866         fprintf(stderr,
2867                 "VK_VERSION_1_0 check failed: vkEnumerateInstanceLayerProperties not found\n");
2868         good = false;
2869     }
2870     if (!vk->vkGetDeviceProcAddr) {
2871         fprintf(stderr, "VK_VERSION_1_0 check failed: vkGetDeviceProcAddr not found\n");
2872         good = false;
2873     }
2874     if (!vk->vkGetPhysicalDeviceSparseImageFormatProperties) {
2875         fprintf(stderr,
2876                 "VK_VERSION_1_0 check failed: vkGetPhysicalDeviceSparseImageFormatProperties not "
2877                 "found\n");
2878         good = false;
2879     }
2880     return good;
2881 }
2882 
vulkan_dispatch_check_instance_VK_VERSION_1_1(const VulkanDispatch * vk)2883 bool vulkan_dispatch_check_instance_VK_VERSION_1_1(const VulkanDispatch* vk)
2884 
2885 {
2886     bool good = true;
2887     if (!vk->vkEnumerateInstanceVersion) {
2888         fprintf(stderr, "VK_VERSION_1_1 check failed: vkEnumerateInstanceVersion not found\n");
2889         good = false;
2890     }
2891     if (!vk->vkEnumeratePhysicalDeviceGroups) {
2892         fprintf(stderr, "VK_VERSION_1_1 check failed: vkEnumeratePhysicalDeviceGroups not found\n");
2893         good = false;
2894     }
2895     if (!vk->vkGetPhysicalDeviceFeatures2) {
2896         fprintf(stderr, "VK_VERSION_1_1 check failed: vkGetPhysicalDeviceFeatures2 not found\n");
2897         good = false;
2898     }
2899     if (!vk->vkGetPhysicalDeviceProperties2) {
2900         fprintf(stderr, "VK_VERSION_1_1 check failed: vkGetPhysicalDeviceProperties2 not found\n");
2901         good = false;
2902     }
2903     if (!vk->vkGetPhysicalDeviceFormatProperties2) {
2904         fprintf(stderr,
2905                 "VK_VERSION_1_1 check failed: vkGetPhysicalDeviceFormatProperties2 not found\n");
2906         good = false;
2907     }
2908     if (!vk->vkGetPhysicalDeviceImageFormatProperties2) {
2909         fprintf(
2910             stderr,
2911             "VK_VERSION_1_1 check failed: vkGetPhysicalDeviceImageFormatProperties2 not found\n");
2912         good = false;
2913     }
2914     if (!vk->vkGetPhysicalDeviceQueueFamilyProperties2) {
2915         fprintf(
2916             stderr,
2917             "VK_VERSION_1_1 check failed: vkGetPhysicalDeviceQueueFamilyProperties2 not found\n");
2918         good = false;
2919     }
2920     if (!vk->vkGetPhysicalDeviceMemoryProperties2) {
2921         fprintf(stderr,
2922                 "VK_VERSION_1_1 check failed: vkGetPhysicalDeviceMemoryProperties2 not found\n");
2923         good = false;
2924     }
2925     if (!vk->vkGetPhysicalDeviceSparseImageFormatProperties2) {
2926         fprintf(stderr,
2927                 "VK_VERSION_1_1 check failed: vkGetPhysicalDeviceSparseImageFormatProperties2 not "
2928                 "found\n");
2929         good = false;
2930     }
2931     if (!vk->vkGetPhysicalDeviceExternalBufferProperties) {
2932         fprintf(
2933             stderr,
2934             "VK_VERSION_1_1 check failed: vkGetPhysicalDeviceExternalBufferProperties not found\n");
2935         good = false;
2936     }
2937     if (!vk->vkGetPhysicalDeviceExternalFenceProperties) {
2938         fprintf(
2939             stderr,
2940             "VK_VERSION_1_1 check failed: vkGetPhysicalDeviceExternalFenceProperties not found\n");
2941         good = false;
2942     }
2943     if (!vk->vkGetPhysicalDeviceExternalSemaphoreProperties) {
2944         fprintf(stderr,
2945                 "VK_VERSION_1_1 check failed: vkGetPhysicalDeviceExternalSemaphoreProperties not "
2946                 "found\n");
2947         good = false;
2948     }
2949     return good;
2950 }
2951 
vulkan_dispatch_check_device_VK_VERSION_1_0(const VulkanDispatch * vk)2952 bool vulkan_dispatch_check_device_VK_VERSION_1_0(const VulkanDispatch* vk)
2953 
2954 {
2955     bool good = true;
2956     if (!vk->vkGetDeviceQueue) {
2957         fprintf(stderr, "VK_VERSION_1_0 check failed: vkGetDeviceQueue not found\n");
2958         good = false;
2959     }
2960     if (!vk->vkQueueSubmit) {
2961         fprintf(stderr, "VK_VERSION_1_0 check failed: vkQueueSubmit not found\n");
2962         good = false;
2963     }
2964     if (!vk->vkQueueWaitIdle) {
2965         fprintf(stderr, "VK_VERSION_1_0 check failed: vkQueueWaitIdle not found\n");
2966         good = false;
2967     }
2968     if (!vk->vkDeviceWaitIdle) {
2969         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDeviceWaitIdle not found\n");
2970         good = false;
2971     }
2972     if (!vk->vkAllocateMemory) {
2973         fprintf(stderr, "VK_VERSION_1_0 check failed: vkAllocateMemory not found\n");
2974         good = false;
2975     }
2976     if (!vk->vkFreeMemory) {
2977         fprintf(stderr, "VK_VERSION_1_0 check failed: vkFreeMemory not found\n");
2978         good = false;
2979     }
2980     if (!vk->vkMapMemory) {
2981         fprintf(stderr, "VK_VERSION_1_0 check failed: vkMapMemory not found\n");
2982         good = false;
2983     }
2984     if (!vk->vkUnmapMemory) {
2985         fprintf(stderr, "VK_VERSION_1_0 check failed: vkUnmapMemory not found\n");
2986         good = false;
2987     }
2988     if (!vk->vkFlushMappedMemoryRanges) {
2989         fprintf(stderr, "VK_VERSION_1_0 check failed: vkFlushMappedMemoryRanges not found\n");
2990         good = false;
2991     }
2992     if (!vk->vkInvalidateMappedMemoryRanges) {
2993         fprintf(stderr, "VK_VERSION_1_0 check failed: vkInvalidateMappedMemoryRanges not found\n");
2994         good = false;
2995     }
2996     if (!vk->vkGetDeviceMemoryCommitment) {
2997         fprintf(stderr, "VK_VERSION_1_0 check failed: vkGetDeviceMemoryCommitment not found\n");
2998         good = false;
2999     }
3000     if (!vk->vkBindBufferMemory) {
3001         fprintf(stderr, "VK_VERSION_1_0 check failed: vkBindBufferMemory not found\n");
3002         good = false;
3003     }
3004     if (!vk->vkBindImageMemory) {
3005         fprintf(stderr, "VK_VERSION_1_0 check failed: vkBindImageMemory not found\n");
3006         good = false;
3007     }
3008     if (!vk->vkGetBufferMemoryRequirements) {
3009         fprintf(stderr, "VK_VERSION_1_0 check failed: vkGetBufferMemoryRequirements not found\n");
3010         good = false;
3011     }
3012     if (!vk->vkGetImageMemoryRequirements) {
3013         fprintf(stderr, "VK_VERSION_1_0 check failed: vkGetImageMemoryRequirements not found\n");
3014         good = false;
3015     }
3016     if (!vk->vkGetImageSparseMemoryRequirements) {
3017         fprintf(stderr,
3018                 "VK_VERSION_1_0 check failed: vkGetImageSparseMemoryRequirements not found\n");
3019         good = false;
3020     }
3021     if (!vk->vkQueueBindSparse) {
3022         fprintf(stderr, "VK_VERSION_1_0 check failed: vkQueueBindSparse not found\n");
3023         good = false;
3024     }
3025     if (!vk->vkCreateFence) {
3026         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreateFence not found\n");
3027         good = false;
3028     }
3029     if (!vk->vkDestroyFence) {
3030         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDestroyFence not found\n");
3031         good = false;
3032     }
3033     if (!vk->vkResetFences) {
3034         fprintf(stderr, "VK_VERSION_1_0 check failed: vkResetFences not found\n");
3035         good = false;
3036     }
3037     if (!vk->vkGetFenceStatus) {
3038         fprintf(stderr, "VK_VERSION_1_0 check failed: vkGetFenceStatus not found\n");
3039         good = false;
3040     }
3041     if (!vk->vkWaitForFences) {
3042         fprintf(stderr, "VK_VERSION_1_0 check failed: vkWaitForFences not found\n");
3043         good = false;
3044     }
3045     if (!vk->vkCreateSemaphore) {
3046         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreateSemaphore not found\n");
3047         good = false;
3048     }
3049     if (!vk->vkDestroySemaphore) {
3050         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDestroySemaphore not found\n");
3051         good = false;
3052     }
3053     if (!vk->vkCreateEvent) {
3054         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreateEvent not found\n");
3055         good = false;
3056     }
3057     if (!vk->vkDestroyEvent) {
3058         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDestroyEvent not found\n");
3059         good = false;
3060     }
3061     if (!vk->vkGetEventStatus) {
3062         fprintf(stderr, "VK_VERSION_1_0 check failed: vkGetEventStatus not found\n");
3063         good = false;
3064     }
3065     if (!vk->vkSetEvent) {
3066         fprintf(stderr, "VK_VERSION_1_0 check failed: vkSetEvent not found\n");
3067         good = false;
3068     }
3069     if (!vk->vkResetEvent) {
3070         fprintf(stderr, "VK_VERSION_1_0 check failed: vkResetEvent not found\n");
3071         good = false;
3072     }
3073     if (!vk->vkCreateQueryPool) {
3074         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreateQueryPool not found\n");
3075         good = false;
3076     }
3077     if (!vk->vkDestroyQueryPool) {
3078         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDestroyQueryPool not found\n");
3079         good = false;
3080     }
3081     if (!vk->vkGetQueryPoolResults) {
3082         fprintf(stderr, "VK_VERSION_1_0 check failed: vkGetQueryPoolResults not found\n");
3083         good = false;
3084     }
3085     if (!vk->vkCreateBuffer) {
3086         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreateBuffer not found\n");
3087         good = false;
3088     }
3089     if (!vk->vkDestroyBuffer) {
3090         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDestroyBuffer not found\n");
3091         good = false;
3092     }
3093     if (!vk->vkCreateBufferView) {
3094         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreateBufferView not found\n");
3095         good = false;
3096     }
3097     if (!vk->vkDestroyBufferView) {
3098         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDestroyBufferView not found\n");
3099         good = false;
3100     }
3101     if (!vk->vkCreateImage) {
3102         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreateImage not found\n");
3103         good = false;
3104     }
3105     if (!vk->vkDestroyImage) {
3106         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDestroyImage not found\n");
3107         good = false;
3108     }
3109     if (!vk->vkGetImageSubresourceLayout) {
3110         fprintf(stderr, "VK_VERSION_1_0 check failed: vkGetImageSubresourceLayout not found\n");
3111         good = false;
3112     }
3113     if (!vk->vkCreateImageView) {
3114         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreateImageView not found\n");
3115         good = false;
3116     }
3117     if (!vk->vkDestroyImageView) {
3118         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDestroyImageView not found\n");
3119         good = false;
3120     }
3121     if (!vk->vkCreateShaderModule) {
3122         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreateShaderModule not found\n");
3123         good = false;
3124     }
3125     if (!vk->vkDestroyShaderModule) {
3126         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDestroyShaderModule not found\n");
3127         good = false;
3128     }
3129     if (!vk->vkCreatePipelineCache) {
3130         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreatePipelineCache not found\n");
3131         good = false;
3132     }
3133     if (!vk->vkDestroyPipelineCache) {
3134         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDestroyPipelineCache not found\n");
3135         good = false;
3136     }
3137     if (!vk->vkGetPipelineCacheData) {
3138         fprintf(stderr, "VK_VERSION_1_0 check failed: vkGetPipelineCacheData not found\n");
3139         good = false;
3140     }
3141     if (!vk->vkMergePipelineCaches) {
3142         fprintf(stderr, "VK_VERSION_1_0 check failed: vkMergePipelineCaches not found\n");
3143         good = false;
3144     }
3145     if (!vk->vkCreateGraphicsPipelines) {
3146         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreateGraphicsPipelines not found\n");
3147         good = false;
3148     }
3149     if (!vk->vkCreateComputePipelines) {
3150         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreateComputePipelines not found\n");
3151         good = false;
3152     }
3153     if (!vk->vkDestroyPipeline) {
3154         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDestroyPipeline not found\n");
3155         good = false;
3156     }
3157     if (!vk->vkCreatePipelineLayout) {
3158         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreatePipelineLayout not found\n");
3159         good = false;
3160     }
3161     if (!vk->vkDestroyPipelineLayout) {
3162         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDestroyPipelineLayout not found\n");
3163         good = false;
3164     }
3165     if (!vk->vkCreateSampler) {
3166         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreateSampler not found\n");
3167         good = false;
3168     }
3169     if (!vk->vkDestroySampler) {
3170         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDestroySampler not found\n");
3171         good = false;
3172     }
3173     if (!vk->vkCreateDescriptorSetLayout) {
3174         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreateDescriptorSetLayout not found\n");
3175         good = false;
3176     }
3177     if (!vk->vkDestroyDescriptorSetLayout) {
3178         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDestroyDescriptorSetLayout not found\n");
3179         good = false;
3180     }
3181     if (!vk->vkCreateDescriptorPool) {
3182         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreateDescriptorPool not found\n");
3183         good = false;
3184     }
3185     if (!vk->vkDestroyDescriptorPool) {
3186         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDestroyDescriptorPool not found\n");
3187         good = false;
3188     }
3189     if (!vk->vkResetDescriptorPool) {
3190         fprintf(stderr, "VK_VERSION_1_0 check failed: vkResetDescriptorPool not found\n");
3191         good = false;
3192     }
3193     if (!vk->vkAllocateDescriptorSets) {
3194         fprintf(stderr, "VK_VERSION_1_0 check failed: vkAllocateDescriptorSets not found\n");
3195         good = false;
3196     }
3197     if (!vk->vkFreeDescriptorSets) {
3198         fprintf(stderr, "VK_VERSION_1_0 check failed: vkFreeDescriptorSets not found\n");
3199         good = false;
3200     }
3201     if (!vk->vkUpdateDescriptorSets) {
3202         fprintf(stderr, "VK_VERSION_1_0 check failed: vkUpdateDescriptorSets not found\n");
3203         good = false;
3204     }
3205     if (!vk->vkCreateFramebuffer) {
3206         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreateFramebuffer not found\n");
3207         good = false;
3208     }
3209     if (!vk->vkDestroyFramebuffer) {
3210         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDestroyFramebuffer not found\n");
3211         good = false;
3212     }
3213     if (!vk->vkCreateRenderPass) {
3214         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreateRenderPass not found\n");
3215         good = false;
3216     }
3217     if (!vk->vkDestroyRenderPass) {
3218         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDestroyRenderPass not found\n");
3219         good = false;
3220     }
3221     if (!vk->vkGetRenderAreaGranularity) {
3222         fprintf(stderr, "VK_VERSION_1_0 check failed: vkGetRenderAreaGranularity not found\n");
3223         good = false;
3224     }
3225     if (!vk->vkCreateCommandPool) {
3226         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCreateCommandPool not found\n");
3227         good = false;
3228     }
3229     if (!vk->vkDestroyCommandPool) {
3230         fprintf(stderr, "VK_VERSION_1_0 check failed: vkDestroyCommandPool not found\n");
3231         good = false;
3232     }
3233     if (!vk->vkResetCommandPool) {
3234         fprintf(stderr, "VK_VERSION_1_0 check failed: vkResetCommandPool not found\n");
3235         good = false;
3236     }
3237     if (!vk->vkAllocateCommandBuffers) {
3238         fprintf(stderr, "VK_VERSION_1_0 check failed: vkAllocateCommandBuffers not found\n");
3239         good = false;
3240     }
3241     if (!vk->vkFreeCommandBuffers) {
3242         fprintf(stderr, "VK_VERSION_1_0 check failed: vkFreeCommandBuffers not found\n");
3243         good = false;
3244     }
3245     if (!vk->vkBeginCommandBuffer) {
3246         fprintf(stderr, "VK_VERSION_1_0 check failed: vkBeginCommandBuffer not found\n");
3247         good = false;
3248     }
3249     if (!vk->vkEndCommandBuffer) {
3250         fprintf(stderr, "VK_VERSION_1_0 check failed: vkEndCommandBuffer not found\n");
3251         good = false;
3252     }
3253     if (!vk->vkResetCommandBuffer) {
3254         fprintf(stderr, "VK_VERSION_1_0 check failed: vkResetCommandBuffer not found\n");
3255         good = false;
3256     }
3257     if (!vk->vkCmdBindPipeline) {
3258         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdBindPipeline not found\n");
3259         good = false;
3260     }
3261     if (!vk->vkCmdSetViewport) {
3262         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdSetViewport not found\n");
3263         good = false;
3264     }
3265     if (!vk->vkCmdSetScissor) {
3266         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdSetScissor not found\n");
3267         good = false;
3268     }
3269     if (!vk->vkCmdSetLineWidth) {
3270         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdSetLineWidth not found\n");
3271         good = false;
3272     }
3273     if (!vk->vkCmdSetDepthBias) {
3274         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdSetDepthBias not found\n");
3275         good = false;
3276     }
3277     if (!vk->vkCmdSetBlendConstants) {
3278         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdSetBlendConstants not found\n");
3279         good = false;
3280     }
3281     if (!vk->vkCmdSetDepthBounds) {
3282         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdSetDepthBounds not found\n");
3283         good = false;
3284     }
3285     if (!vk->vkCmdSetStencilCompareMask) {
3286         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdSetStencilCompareMask not found\n");
3287         good = false;
3288     }
3289     if (!vk->vkCmdSetStencilWriteMask) {
3290         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdSetStencilWriteMask not found\n");
3291         good = false;
3292     }
3293     if (!vk->vkCmdSetStencilReference) {
3294         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdSetStencilReference not found\n");
3295         good = false;
3296     }
3297     if (!vk->vkCmdBindDescriptorSets) {
3298         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdBindDescriptorSets not found\n");
3299         good = false;
3300     }
3301     if (!vk->vkCmdBindIndexBuffer) {
3302         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdBindIndexBuffer not found\n");
3303         good = false;
3304     }
3305     if (!vk->vkCmdBindVertexBuffers) {
3306         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdBindVertexBuffers not found\n");
3307         good = false;
3308     }
3309     if (!vk->vkCmdDraw) {
3310         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdDraw not found\n");
3311         good = false;
3312     }
3313     if (!vk->vkCmdDrawIndexed) {
3314         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdDrawIndexed not found\n");
3315         good = false;
3316     }
3317     if (!vk->vkCmdDrawIndirect) {
3318         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdDrawIndirect not found\n");
3319         good = false;
3320     }
3321     if (!vk->vkCmdDrawIndexedIndirect) {
3322         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdDrawIndexedIndirect not found\n");
3323         good = false;
3324     }
3325     if (!vk->vkCmdDispatch) {
3326         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdDispatch not found\n");
3327         good = false;
3328     }
3329     if (!vk->vkCmdDispatchIndirect) {
3330         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdDispatchIndirect not found\n");
3331         good = false;
3332     }
3333     if (!vk->vkCmdCopyBuffer) {
3334         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdCopyBuffer not found\n");
3335         good = false;
3336     }
3337     if (!vk->vkCmdCopyImage) {
3338         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdCopyImage not found\n");
3339         good = false;
3340     }
3341     if (!vk->vkCmdBlitImage) {
3342         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdBlitImage not found\n");
3343         good = false;
3344     }
3345     if (!vk->vkCmdCopyBufferToImage) {
3346         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdCopyBufferToImage not found\n");
3347         good = false;
3348     }
3349     if (!vk->vkCmdCopyImageToBuffer) {
3350         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdCopyImageToBuffer not found\n");
3351         good = false;
3352     }
3353     if (!vk->vkCmdUpdateBuffer) {
3354         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdUpdateBuffer not found\n");
3355         good = false;
3356     }
3357     if (!vk->vkCmdFillBuffer) {
3358         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdFillBuffer not found\n");
3359         good = false;
3360     }
3361     if (!vk->vkCmdClearColorImage) {
3362         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdClearColorImage not found\n");
3363         good = false;
3364     }
3365     if (!vk->vkCmdClearDepthStencilImage) {
3366         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdClearDepthStencilImage not found\n");
3367         good = false;
3368     }
3369     if (!vk->vkCmdClearAttachments) {
3370         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdClearAttachments not found\n");
3371         good = false;
3372     }
3373     if (!vk->vkCmdResolveImage) {
3374         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdResolveImage not found\n");
3375         good = false;
3376     }
3377     if (!vk->vkCmdSetEvent) {
3378         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdSetEvent not found\n");
3379         good = false;
3380     }
3381     if (!vk->vkCmdResetEvent) {
3382         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdResetEvent not found\n");
3383         good = false;
3384     }
3385     if (!vk->vkCmdWaitEvents) {
3386         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdWaitEvents not found\n");
3387         good = false;
3388     }
3389     if (!vk->vkCmdPipelineBarrier) {
3390         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdPipelineBarrier not found\n");
3391         good = false;
3392     }
3393     if (!vk->vkCmdBeginQuery) {
3394         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdBeginQuery not found\n");
3395         good = false;
3396     }
3397     if (!vk->vkCmdEndQuery) {
3398         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdEndQuery not found\n");
3399         good = false;
3400     }
3401     if (!vk->vkCmdResetQueryPool) {
3402         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdResetQueryPool not found\n");
3403         good = false;
3404     }
3405     if (!vk->vkCmdWriteTimestamp) {
3406         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdWriteTimestamp not found\n");
3407         good = false;
3408     }
3409     if (!vk->vkCmdCopyQueryPoolResults) {
3410         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdCopyQueryPoolResults not found\n");
3411         good = false;
3412     }
3413     if (!vk->vkCmdPushConstants) {
3414         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdPushConstants not found\n");
3415         good = false;
3416     }
3417     if (!vk->vkCmdBeginRenderPass) {
3418         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdBeginRenderPass not found\n");
3419         good = false;
3420     }
3421     if (!vk->vkCmdNextSubpass) {
3422         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdNextSubpass not found\n");
3423         good = false;
3424     }
3425     if (!vk->vkCmdEndRenderPass) {
3426         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdEndRenderPass not found\n");
3427         good = false;
3428     }
3429     if (!vk->vkCmdExecuteCommands) {
3430         fprintf(stderr, "VK_VERSION_1_0 check failed: vkCmdExecuteCommands not found\n");
3431         good = false;
3432     }
3433     return good;
3434 }
3435 
vulkan_dispatch_check_device_VK_VERSION_1_1(const VulkanDispatch * vk)3436 bool vulkan_dispatch_check_device_VK_VERSION_1_1(const VulkanDispatch* vk)
3437 
3438 {
3439     bool good = true;
3440     if (!vk->vkBindBufferMemory2) {
3441         fprintf(stderr, "VK_VERSION_1_1 check failed: vkBindBufferMemory2 not found\n");
3442         good = false;
3443     }
3444     if (!vk->vkBindImageMemory2) {
3445         fprintf(stderr, "VK_VERSION_1_1 check failed: vkBindImageMemory2 not found\n");
3446         good = false;
3447     }
3448     if (!vk->vkGetDeviceGroupPeerMemoryFeatures) {
3449         fprintf(stderr,
3450                 "VK_VERSION_1_1 check failed: vkGetDeviceGroupPeerMemoryFeatures not found\n");
3451         good = false;
3452     }
3453     if (!vk->vkCmdSetDeviceMask) {
3454         fprintf(stderr, "VK_VERSION_1_1 check failed: vkCmdSetDeviceMask not found\n");
3455         good = false;
3456     }
3457     if (!vk->vkCmdDispatchBase) {
3458         fprintf(stderr, "VK_VERSION_1_1 check failed: vkCmdDispatchBase not found\n");
3459         good = false;
3460     }
3461     if (!vk->vkGetImageMemoryRequirements2) {
3462         fprintf(stderr, "VK_VERSION_1_1 check failed: vkGetImageMemoryRequirements2 not found\n");
3463         good = false;
3464     }
3465     if (!vk->vkGetBufferMemoryRequirements2) {
3466         fprintf(stderr, "VK_VERSION_1_1 check failed: vkGetBufferMemoryRequirements2 not found\n");
3467         good = false;
3468     }
3469     if (!vk->vkGetImageSparseMemoryRequirements2) {
3470         fprintf(stderr,
3471                 "VK_VERSION_1_1 check failed: vkGetImageSparseMemoryRequirements2 not found\n");
3472         good = false;
3473     }
3474     if (!vk->vkTrimCommandPool) {
3475         fprintf(stderr, "VK_VERSION_1_1 check failed: vkTrimCommandPool not found\n");
3476         good = false;
3477     }
3478     if (!vk->vkGetDeviceQueue2) {
3479         fprintf(stderr, "VK_VERSION_1_1 check failed: vkGetDeviceQueue2 not found\n");
3480         good = false;
3481     }
3482     if (!vk->vkCreateSamplerYcbcrConversion) {
3483         fprintf(stderr, "VK_VERSION_1_1 check failed: vkCreateSamplerYcbcrConversion not found\n");
3484         good = false;
3485     }
3486     if (!vk->vkDestroySamplerYcbcrConversion) {
3487         fprintf(stderr, "VK_VERSION_1_1 check failed: vkDestroySamplerYcbcrConversion not found\n");
3488         good = false;
3489     }
3490     if (!vk->vkCreateDescriptorUpdateTemplate) {
3491         fprintf(stderr,
3492                 "VK_VERSION_1_1 check failed: vkCreateDescriptorUpdateTemplate not found\n");
3493         good = false;
3494     }
3495     if (!vk->vkDestroyDescriptorUpdateTemplate) {
3496         fprintf(stderr,
3497                 "VK_VERSION_1_1 check failed: vkDestroyDescriptorUpdateTemplate not found\n");
3498         good = false;
3499     }
3500     if (!vk->vkUpdateDescriptorSetWithTemplate) {
3501         fprintf(stderr,
3502                 "VK_VERSION_1_1 check failed: vkUpdateDescriptorSetWithTemplate not found\n");
3503         good = false;
3504     }
3505     if (!vk->vkGetDescriptorSetLayoutSupport) {
3506         fprintf(stderr, "VK_VERSION_1_1 check failed: vkGetDescriptorSetLayoutSupport not found\n");
3507         good = false;
3508     }
3509     return good;
3510 }
3511 
3512 }  // namespace vk
3513 }  // namespace gfxstream
3514