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