• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // *** THIS FILE IS GENERATED - DO NOT EDIT ***
2 // See loader_extension_generator.py for modifications
3 
4 /*
5  * Copyright (c) 2015-2022 The Khronos Group Inc.
6  * Copyright (c) 2015-2022 Valve Corporation
7  * Copyright (c) 2015-2022 LunarG, Inc.
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *     http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  *
21  * Author: Mark Lobodzinski <mark@lunarg.com>
22  * Author: Mark Young <marky@lunarg.com>
23  */
24 
25 #include <stdio.h>
26 #include <stdlib.h>
27 #include <string.h>
28 #include "vk_loader_platform.h"
29 #include "loader.h"
30 #include "vk_loader_extensions.h"
31 #include <vulkan/vk_icd.h>
32 #include "wsi.h"
33 #include "debug_utils.h"
34 #include "extension_manual.h"
35 
36 // Device extension error function
vkDevExtError(VkDevice dev)37 VKAPI_ATTR VkResult VKAPI_CALL vkDevExtError(VkDevice dev) {
38     struct loader_device *found_dev;
39     // The device going in is a trampoline device
40     struct loader_icd_term *icd_term = loader_get_icd_and_device(dev, &found_dev, NULL);
41 
42     if (icd_term)
43         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
44                    "Bad destination in loader trampoline dispatch,"
45                    "Are layers and extensions that you are calling enabled?");
46     return VK_ERROR_EXTENSION_NOT_PRESENT;
47 }
48 
loader_icd_init_entries(struct loader_icd_term * icd_term,VkInstance inst,const PFN_vkGetInstanceProcAddr fp_gipa)49 VKAPI_ATTR bool VKAPI_CALL loader_icd_init_entries(struct loader_icd_term *icd_term, VkInstance inst,
50                                                    const PFN_vkGetInstanceProcAddr fp_gipa) {
51 
52 #define LOOKUP_GIPA(func, required)                                                        \
53     do {                                                                                   \
54         icd_term->dispatch.func = (PFN_vk##func)fp_gipa(inst, "vk" #func);                 \
55         if (!icd_term->dispatch.func && required) {                                        \
56             loader_log((struct loader_instance *)inst, VULKAN_LOADER_WARN_BIT, 0, \
57                        loader_platform_get_proc_address_error("vk" #func));                \
58             return false;                                                                  \
59         }                                                                                  \
60     } while (0)
61 
62 
63     // ---- Core 1_0
64     LOOKUP_GIPA(DestroyInstance, true);
65     LOOKUP_GIPA(EnumeratePhysicalDevices, true);
66     LOOKUP_GIPA(GetPhysicalDeviceFeatures, true);
67     LOOKUP_GIPA(GetPhysicalDeviceFormatProperties, true);
68     LOOKUP_GIPA(GetPhysicalDeviceImageFormatProperties, true);
69     LOOKUP_GIPA(GetPhysicalDeviceProperties, true);
70     LOOKUP_GIPA(GetPhysicalDeviceQueueFamilyProperties, true);
71     LOOKUP_GIPA(GetPhysicalDeviceMemoryProperties, true);
72     LOOKUP_GIPA(GetDeviceProcAddr, true);
73     LOOKUP_GIPA(CreateDevice, true);
74     LOOKUP_GIPA(EnumerateDeviceExtensionProperties, true);
75     LOOKUP_GIPA(GetPhysicalDeviceSparseImageFormatProperties, true);
76 
77     // ---- Core 1_1
78     LOOKUP_GIPA(EnumeratePhysicalDeviceGroups, false);
79     LOOKUP_GIPA(GetPhysicalDeviceFeatures2, false);
80     LOOKUP_GIPA(GetPhysicalDeviceProperties2, false);
81     LOOKUP_GIPA(GetPhysicalDeviceFormatProperties2, false);
82     LOOKUP_GIPA(GetPhysicalDeviceImageFormatProperties2, false);
83     LOOKUP_GIPA(GetPhysicalDeviceQueueFamilyProperties2, false);
84     LOOKUP_GIPA(GetPhysicalDeviceMemoryProperties2, false);
85     LOOKUP_GIPA(GetPhysicalDeviceSparseImageFormatProperties2, false);
86     LOOKUP_GIPA(GetPhysicalDeviceExternalBufferProperties, false);
87     LOOKUP_GIPA(GetPhysicalDeviceExternalFenceProperties, false);
88     LOOKUP_GIPA(GetPhysicalDeviceExternalSemaphoreProperties, false);
89 
90     // ---- Core 1_3
91     LOOKUP_GIPA(GetPhysicalDeviceToolProperties, false);
92 
93     // ---- VK_KHR_surface extension commands
94     LOOKUP_GIPA(DestroySurfaceKHR, false);
95     LOOKUP_GIPA(GetPhysicalDeviceSurfaceSupportKHR, false);
96     LOOKUP_GIPA(GetPhysicalDeviceSurfaceCapabilitiesKHR, false);
97     LOOKUP_GIPA(GetPhysicalDeviceSurfaceFormatsKHR, false);
98     LOOKUP_GIPA(GetPhysicalDeviceSurfacePresentModesKHR, false);
99 
100     // ---- VK_KHR_swapchain extension commands
101     LOOKUP_GIPA(CreateSwapchainKHR, false);
102     LOOKUP_GIPA(GetDeviceGroupSurfacePresentModesKHR, false);
103     LOOKUP_GIPA(GetPhysicalDevicePresentRectanglesKHR, false);
104 
105     // ---- VK_KHR_display extension commands
106     LOOKUP_GIPA(GetPhysicalDeviceDisplayPropertiesKHR, false);
107     LOOKUP_GIPA(GetPhysicalDeviceDisplayPlanePropertiesKHR, false);
108     LOOKUP_GIPA(GetDisplayPlaneSupportedDisplaysKHR, false);
109     LOOKUP_GIPA(GetDisplayModePropertiesKHR, false);
110     LOOKUP_GIPA(CreateDisplayModeKHR, false);
111     LOOKUP_GIPA(GetDisplayPlaneCapabilitiesKHR, false);
112     LOOKUP_GIPA(CreateDisplayPlaneSurfaceKHR, false);
113 
114     // ---- VK_KHR_display_swapchain extension commands
115     LOOKUP_GIPA(CreateSharedSwapchainsKHR, false);
116 
117     // ---- VK_KHR_xlib_surface extension commands
118 #ifdef VK_USE_PLATFORM_XLIB_KHR
119     LOOKUP_GIPA(CreateXlibSurfaceKHR, false);
120 #endif // VK_USE_PLATFORM_XLIB_KHR
121 #ifdef VK_USE_PLATFORM_XLIB_KHR
122     LOOKUP_GIPA(GetPhysicalDeviceXlibPresentationSupportKHR, false);
123 #endif // VK_USE_PLATFORM_XLIB_KHR
124 
125     // ---- VK_KHR_xcb_surface extension commands
126 #ifdef VK_USE_PLATFORM_XCB_KHR
127     LOOKUP_GIPA(CreateXcbSurfaceKHR, false);
128 #endif // VK_USE_PLATFORM_XCB_KHR
129 #ifdef VK_USE_PLATFORM_XCB_KHR
130     LOOKUP_GIPA(GetPhysicalDeviceXcbPresentationSupportKHR, false);
131 #endif // VK_USE_PLATFORM_XCB_KHR
132 
133     // ---- VK_KHR_wayland_surface extension commands
134 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
135     LOOKUP_GIPA(CreateWaylandSurfaceKHR, false);
136 #endif // VK_USE_PLATFORM_WAYLAND_KHR
137 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
138     LOOKUP_GIPA(GetPhysicalDeviceWaylandPresentationSupportKHR, false);
139 #endif // VK_USE_PLATFORM_WAYLAND_KHR
140 
141     // ---- VK_KHR_android_surface extension commands
142 #ifdef VK_USE_PLATFORM_ANDROID_KHR
143     LOOKUP_GIPA(CreateAndroidSurfaceKHR, false);
144 #endif // VK_USE_PLATFORM_ANDROID_KHR
145 
146     // ---- VK_KHR_win32_surface extension commands
147 #ifdef VK_USE_PLATFORM_WIN32_KHR
148     LOOKUP_GIPA(CreateWin32SurfaceKHR, false);
149 #endif // VK_USE_PLATFORM_WIN32_KHR
150 #ifdef VK_USE_PLATFORM_WIN32_KHR
151     LOOKUP_GIPA(GetPhysicalDeviceWin32PresentationSupportKHR, false);
152 #endif // VK_USE_PLATFORM_WIN32_KHR
153 
154     // ---- VK_KHR_video_queue extension commands
155 #ifdef VK_ENABLE_BETA_EXTENSIONS
156     LOOKUP_GIPA(GetPhysicalDeviceVideoCapabilitiesKHR, false);
157 #endif // VK_ENABLE_BETA_EXTENSIONS
158 #ifdef VK_ENABLE_BETA_EXTENSIONS
159     LOOKUP_GIPA(GetPhysicalDeviceVideoFormatPropertiesKHR, false);
160 #endif // VK_ENABLE_BETA_EXTENSIONS
161 
162     // ---- VK_KHR_get_physical_device_properties2 extension commands
163     LOOKUP_GIPA(GetPhysicalDeviceFeatures2KHR, false);
164     LOOKUP_GIPA(GetPhysicalDeviceProperties2KHR, false);
165     LOOKUP_GIPA(GetPhysicalDeviceFormatProperties2KHR, false);
166     LOOKUP_GIPA(GetPhysicalDeviceImageFormatProperties2KHR, false);
167     LOOKUP_GIPA(GetPhysicalDeviceQueueFamilyProperties2KHR, false);
168     LOOKUP_GIPA(GetPhysicalDeviceMemoryProperties2KHR, false);
169     LOOKUP_GIPA(GetPhysicalDeviceSparseImageFormatProperties2KHR, false);
170 
171     // ---- VK_KHR_device_group_creation extension commands
172     LOOKUP_GIPA(EnumeratePhysicalDeviceGroupsKHR, false);
173 
174     // ---- VK_KHR_external_memory_capabilities extension commands
175     LOOKUP_GIPA(GetPhysicalDeviceExternalBufferPropertiesKHR, false);
176 
177     // ---- VK_KHR_external_semaphore_capabilities extension commands
178     LOOKUP_GIPA(GetPhysicalDeviceExternalSemaphorePropertiesKHR, false);
179 
180     // ---- VK_KHR_external_fence_capabilities extension commands
181     LOOKUP_GIPA(GetPhysicalDeviceExternalFencePropertiesKHR, false);
182 
183     // ---- VK_KHR_performance_query extension commands
184     LOOKUP_GIPA(EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR, false);
185     LOOKUP_GIPA(GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR, false);
186 
187     // ---- VK_KHR_get_surface_capabilities2 extension commands
188     LOOKUP_GIPA(GetPhysicalDeviceSurfaceCapabilities2KHR, false);
189     LOOKUP_GIPA(GetPhysicalDeviceSurfaceFormats2KHR, false);
190 
191     // ---- VK_KHR_get_display_properties2 extension commands
192     LOOKUP_GIPA(GetPhysicalDeviceDisplayProperties2KHR, false);
193     LOOKUP_GIPA(GetPhysicalDeviceDisplayPlaneProperties2KHR, false);
194     LOOKUP_GIPA(GetDisplayModeProperties2KHR, false);
195     LOOKUP_GIPA(GetDisplayPlaneCapabilities2KHR, false);
196 
197     // ---- VK_KHR_fragment_shading_rate extension commands
198     LOOKUP_GIPA(GetPhysicalDeviceFragmentShadingRatesKHR, false);
199 
200     // ---- VK_EXT_debug_report extension commands
201     LOOKUP_GIPA(CreateDebugReportCallbackEXT, false);
202     LOOKUP_GIPA(DestroyDebugReportCallbackEXT, false);
203     LOOKUP_GIPA(DebugReportMessageEXT, false);
204 
205     // ---- VK_EXT_debug_marker extension commands
206     LOOKUP_GIPA(DebugMarkerSetObjectTagEXT, false);
207     LOOKUP_GIPA(DebugMarkerSetObjectNameEXT, false);
208 
209     // ---- VK_GGP_stream_descriptor_surface extension commands
210 #ifdef VK_USE_PLATFORM_GGP
211     LOOKUP_GIPA(CreateStreamDescriptorSurfaceGGP, false);
212 #endif // VK_USE_PLATFORM_GGP
213 
214     // ---- VK_NV_external_memory_capabilities extension commands
215     LOOKUP_GIPA(GetPhysicalDeviceExternalImageFormatPropertiesNV, false);
216 
217     // ---- VK_NN_vi_surface extension commands
218 #ifdef VK_USE_PLATFORM_VI_NN
219     LOOKUP_GIPA(CreateViSurfaceNN, false);
220 #endif // VK_USE_PLATFORM_VI_NN
221 
222     // ---- VK_EXT_direct_mode_display extension commands
223     LOOKUP_GIPA(ReleaseDisplayEXT, false);
224 
225     // ---- VK_EXT_acquire_xlib_display extension commands
226 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
227     LOOKUP_GIPA(AcquireXlibDisplayEXT, false);
228 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
229 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
230     LOOKUP_GIPA(GetRandROutputDisplayEXT, false);
231 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
232 
233     // ---- VK_EXT_display_surface_counter extension commands
234     LOOKUP_GIPA(GetPhysicalDeviceSurfaceCapabilities2EXT, false);
235 
236     // ---- VK_MVK_ios_surface extension commands
237 #ifdef VK_USE_PLATFORM_IOS_MVK
238     LOOKUP_GIPA(CreateIOSSurfaceMVK, false);
239 #endif // VK_USE_PLATFORM_IOS_MVK
240 
241     // ---- VK_MVK_macos_surface extension commands
242 #ifdef VK_USE_PLATFORM_MACOS_MVK
243     LOOKUP_GIPA(CreateMacOSSurfaceMVK, false);
244 #endif // VK_USE_PLATFORM_MACOS_MVK
245 
246     // ---- VK_EXT_debug_utils extension commands
247     LOOKUP_GIPA(SetDebugUtilsObjectNameEXT, false);
248     LOOKUP_GIPA(SetDebugUtilsObjectTagEXT, false);
249     LOOKUP_GIPA(QueueBeginDebugUtilsLabelEXT, false);
250     LOOKUP_GIPA(QueueEndDebugUtilsLabelEXT, false);
251     LOOKUP_GIPA(QueueInsertDebugUtilsLabelEXT, false);
252     LOOKUP_GIPA(CmdBeginDebugUtilsLabelEXT, false);
253     LOOKUP_GIPA(CmdEndDebugUtilsLabelEXT, false);
254     LOOKUP_GIPA(CmdInsertDebugUtilsLabelEXT, false);
255     LOOKUP_GIPA(CreateDebugUtilsMessengerEXT, false);
256     LOOKUP_GIPA(DestroyDebugUtilsMessengerEXT, false);
257     LOOKUP_GIPA(SubmitDebugUtilsMessageEXT, false);
258 
259     // ---- VK_EXT_sample_locations extension commands
260     LOOKUP_GIPA(GetPhysicalDeviceMultisamplePropertiesEXT, false);
261 
262     // ---- VK_EXT_calibrated_timestamps extension commands
263     LOOKUP_GIPA(GetPhysicalDeviceCalibrateableTimeDomainsEXT, false);
264 
265     // ---- VK_FUCHSIA_imagepipe_surface extension commands
266 #ifdef VK_USE_PLATFORM_FUCHSIA
267     LOOKUP_GIPA(CreateImagePipeSurfaceFUCHSIA, false);
268 #endif // VK_USE_PLATFORM_FUCHSIA
269 
270     // ---- VK_EXT_metal_surface extension commands
271 #ifdef VK_USE_PLATFORM_METAL_EXT
272     LOOKUP_GIPA(CreateMetalSurfaceEXT, false);
273 #endif // VK_USE_PLATFORM_METAL_EXT
274 
275     // ---- VK_EXT_tooling_info extension commands
276     LOOKUP_GIPA(GetPhysicalDeviceToolPropertiesEXT, false);
277 
278     // ---- VK_NV_cooperative_matrix extension commands
279     LOOKUP_GIPA(GetPhysicalDeviceCooperativeMatrixPropertiesNV, false);
280 
281     // ---- VK_NV_coverage_reduction_mode extension commands
282     LOOKUP_GIPA(GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV, false);
283 
284     // ---- VK_EXT_full_screen_exclusive extension commands
285 #ifdef VK_USE_PLATFORM_WIN32_KHR
286     LOOKUP_GIPA(GetPhysicalDeviceSurfacePresentModes2EXT, false);
287 #endif // VK_USE_PLATFORM_WIN32_KHR
288 #ifdef VK_USE_PLATFORM_WIN32_KHR
289     LOOKUP_GIPA(GetDeviceGroupSurfacePresentModes2EXT, false);
290 #endif // VK_USE_PLATFORM_WIN32_KHR
291 
292     // ---- VK_EXT_headless_surface extension commands
293     LOOKUP_GIPA(CreateHeadlessSurfaceEXT, false);
294 
295     // ---- VK_EXT_acquire_drm_display extension commands
296     LOOKUP_GIPA(AcquireDrmDisplayEXT, false);
297     LOOKUP_GIPA(GetDrmDisplayEXT, false);
298 
299     // ---- VK_NV_acquire_winrt_display extension commands
300 #ifdef VK_USE_PLATFORM_WIN32_KHR
301     LOOKUP_GIPA(AcquireWinrtDisplayNV, false);
302 #endif // VK_USE_PLATFORM_WIN32_KHR
303 #ifdef VK_USE_PLATFORM_WIN32_KHR
304     LOOKUP_GIPA(GetWinrtDisplayNV, false);
305 #endif // VK_USE_PLATFORM_WIN32_KHR
306 
307     // ---- VK_EXT_directfb_surface extension commands
308 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT
309     LOOKUP_GIPA(CreateDirectFBSurfaceEXT, false);
310 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
311 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT
312     LOOKUP_GIPA(GetPhysicalDeviceDirectFBPresentationSupportEXT, false);
313 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
314 
315     // ---- VK_QNX_screen_surface extension commands
316 #ifdef VK_USE_PLATFORM_SCREEN_QNX
317     LOOKUP_GIPA(CreateScreenSurfaceQNX, false);
318 #endif // VK_USE_PLATFORM_SCREEN_QNX
319 #ifdef VK_USE_PLATFORM_SCREEN_QNX
320     LOOKUP_GIPA(GetPhysicalDeviceScreenPresentationSupportQNX, false);
321 #endif // VK_USE_PLATFORM_SCREEN_QNX
322 
323     // ---- VK_NV_optical_flow extension commands
324     LOOKUP_GIPA(GetPhysicalDeviceOpticalFlowImageFormatsNV, false);
325 
326     // ---- VK_OHOS_surface extension commands
327 #ifdef VK_USE_PLATFORM_OHOS
328     LOOKUP_GIPA(CreateSurfaceOHOS, false);
329 #endif // VK_USE_PLATFORM_OHOS
330 
331 #undef LOOKUP_GIPA
332 
333     return true;
334 };
335 
336 // Init Device function pointer dispatch table with core commands
loader_init_device_dispatch_table(struct loader_dev_dispatch_table * dev_table,PFN_vkGetDeviceProcAddr gpa,VkDevice dev)337 VKAPI_ATTR void VKAPI_CALL loader_init_device_dispatch_table(struct loader_dev_dispatch_table *dev_table, PFN_vkGetDeviceProcAddr gpa,
338                                                              VkDevice dev) {
339     VkLayerDispatchTable *table = &dev_table->core_dispatch;
340     table->magic = DEVICE_DISP_TABLE_MAGIC_NUMBER;
341     for (uint32_t i = 0; i < MAX_NUM_UNKNOWN_EXTS; i++) dev_table->ext_dispatch[i] = (PFN_vkDevExt)vkDevExtError;
342 
343     // ---- Core 1_0 commands
344     table->GetDeviceProcAddr = gpa;
345     table->DestroyDevice = (PFN_vkDestroyDevice)gpa(dev, "vkDestroyDevice");
346     table->GetDeviceQueue = (PFN_vkGetDeviceQueue)gpa(dev, "vkGetDeviceQueue");
347     table->QueueSubmit = (PFN_vkQueueSubmit)gpa(dev, "vkQueueSubmit");
348     table->QueueWaitIdle = (PFN_vkQueueWaitIdle)gpa(dev, "vkQueueWaitIdle");
349     table->DeviceWaitIdle = (PFN_vkDeviceWaitIdle)gpa(dev, "vkDeviceWaitIdle");
350     table->AllocateMemory = (PFN_vkAllocateMemory)gpa(dev, "vkAllocateMemory");
351     table->FreeMemory = (PFN_vkFreeMemory)gpa(dev, "vkFreeMemory");
352     table->MapMemory = (PFN_vkMapMemory)gpa(dev, "vkMapMemory");
353     table->UnmapMemory = (PFN_vkUnmapMemory)gpa(dev, "vkUnmapMemory");
354     table->FlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges)gpa(dev, "vkFlushMappedMemoryRanges");
355     table->InvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges)gpa(dev, "vkInvalidateMappedMemoryRanges");
356     table->GetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment)gpa(dev, "vkGetDeviceMemoryCommitment");
357     table->BindBufferMemory = (PFN_vkBindBufferMemory)gpa(dev, "vkBindBufferMemory");
358     table->BindImageMemory = (PFN_vkBindImageMemory)gpa(dev, "vkBindImageMemory");
359     table->GetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements)gpa(dev, "vkGetBufferMemoryRequirements");
360     table->GetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements)gpa(dev, "vkGetImageMemoryRequirements");
361     table->GetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements)gpa(dev, "vkGetImageSparseMemoryRequirements");
362     table->QueueBindSparse = (PFN_vkQueueBindSparse)gpa(dev, "vkQueueBindSparse");
363     table->CreateFence = (PFN_vkCreateFence)gpa(dev, "vkCreateFence");
364     table->DestroyFence = (PFN_vkDestroyFence)gpa(dev, "vkDestroyFence");
365     table->ResetFences = (PFN_vkResetFences)gpa(dev, "vkResetFences");
366     table->GetFenceStatus = (PFN_vkGetFenceStatus)gpa(dev, "vkGetFenceStatus");
367     table->WaitForFences = (PFN_vkWaitForFences)gpa(dev, "vkWaitForFences");
368     table->CreateSemaphore = (PFN_vkCreateSemaphore)gpa(dev, "vkCreateSemaphore");
369     table->DestroySemaphore = (PFN_vkDestroySemaphore)gpa(dev, "vkDestroySemaphore");
370     table->CreateEvent = (PFN_vkCreateEvent)gpa(dev, "vkCreateEvent");
371     table->DestroyEvent = (PFN_vkDestroyEvent)gpa(dev, "vkDestroyEvent");
372     table->GetEventStatus = (PFN_vkGetEventStatus)gpa(dev, "vkGetEventStatus");
373     table->SetEvent = (PFN_vkSetEvent)gpa(dev, "vkSetEvent");
374     table->ResetEvent = (PFN_vkResetEvent)gpa(dev, "vkResetEvent");
375     table->CreateQueryPool = (PFN_vkCreateQueryPool)gpa(dev, "vkCreateQueryPool");
376     table->DestroyQueryPool = (PFN_vkDestroyQueryPool)gpa(dev, "vkDestroyQueryPool");
377     table->GetQueryPoolResults = (PFN_vkGetQueryPoolResults)gpa(dev, "vkGetQueryPoolResults");
378     table->CreateBuffer = (PFN_vkCreateBuffer)gpa(dev, "vkCreateBuffer");
379     table->DestroyBuffer = (PFN_vkDestroyBuffer)gpa(dev, "vkDestroyBuffer");
380     table->CreateBufferView = (PFN_vkCreateBufferView)gpa(dev, "vkCreateBufferView");
381     table->DestroyBufferView = (PFN_vkDestroyBufferView)gpa(dev, "vkDestroyBufferView");
382     table->CreateImage = (PFN_vkCreateImage)gpa(dev, "vkCreateImage");
383     table->DestroyImage = (PFN_vkDestroyImage)gpa(dev, "vkDestroyImage");
384     table->GetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout)gpa(dev, "vkGetImageSubresourceLayout");
385     table->CreateImageView = (PFN_vkCreateImageView)gpa(dev, "vkCreateImageView");
386     table->DestroyImageView = (PFN_vkDestroyImageView)gpa(dev, "vkDestroyImageView");
387     table->CreateShaderModule = (PFN_vkCreateShaderModule)gpa(dev, "vkCreateShaderModule");
388     table->DestroyShaderModule = (PFN_vkDestroyShaderModule)gpa(dev, "vkDestroyShaderModule");
389     table->CreatePipelineCache = (PFN_vkCreatePipelineCache)gpa(dev, "vkCreatePipelineCache");
390     table->DestroyPipelineCache = (PFN_vkDestroyPipelineCache)gpa(dev, "vkDestroyPipelineCache");
391     table->GetPipelineCacheData = (PFN_vkGetPipelineCacheData)gpa(dev, "vkGetPipelineCacheData");
392     table->MergePipelineCaches = (PFN_vkMergePipelineCaches)gpa(dev, "vkMergePipelineCaches");
393     table->CreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines)gpa(dev, "vkCreateGraphicsPipelines");
394     table->CreateComputePipelines = (PFN_vkCreateComputePipelines)gpa(dev, "vkCreateComputePipelines");
395     table->DestroyPipeline = (PFN_vkDestroyPipeline)gpa(dev, "vkDestroyPipeline");
396     table->CreatePipelineLayout = (PFN_vkCreatePipelineLayout)gpa(dev, "vkCreatePipelineLayout");
397     table->DestroyPipelineLayout = (PFN_vkDestroyPipelineLayout)gpa(dev, "vkDestroyPipelineLayout");
398     table->CreateSampler = (PFN_vkCreateSampler)gpa(dev, "vkCreateSampler");
399     table->DestroySampler = (PFN_vkDestroySampler)gpa(dev, "vkDestroySampler");
400     table->CreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout)gpa(dev, "vkCreateDescriptorSetLayout");
401     table->DestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout)gpa(dev, "vkDestroyDescriptorSetLayout");
402     table->CreateDescriptorPool = (PFN_vkCreateDescriptorPool)gpa(dev, "vkCreateDescriptorPool");
403     table->DestroyDescriptorPool = (PFN_vkDestroyDescriptorPool)gpa(dev, "vkDestroyDescriptorPool");
404     table->ResetDescriptorPool = (PFN_vkResetDescriptorPool)gpa(dev, "vkResetDescriptorPool");
405     table->AllocateDescriptorSets = (PFN_vkAllocateDescriptorSets)gpa(dev, "vkAllocateDescriptorSets");
406     table->FreeDescriptorSets = (PFN_vkFreeDescriptorSets)gpa(dev, "vkFreeDescriptorSets");
407     table->UpdateDescriptorSets = (PFN_vkUpdateDescriptorSets)gpa(dev, "vkUpdateDescriptorSets");
408     table->CreateFramebuffer = (PFN_vkCreateFramebuffer)gpa(dev, "vkCreateFramebuffer");
409     table->DestroyFramebuffer = (PFN_vkDestroyFramebuffer)gpa(dev, "vkDestroyFramebuffer");
410     table->CreateRenderPass = (PFN_vkCreateRenderPass)gpa(dev, "vkCreateRenderPass");
411     table->DestroyRenderPass = (PFN_vkDestroyRenderPass)gpa(dev, "vkDestroyRenderPass");
412     table->GetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity)gpa(dev, "vkGetRenderAreaGranularity");
413     table->CreateCommandPool = (PFN_vkCreateCommandPool)gpa(dev, "vkCreateCommandPool");
414     table->DestroyCommandPool = (PFN_vkDestroyCommandPool)gpa(dev, "vkDestroyCommandPool");
415     table->ResetCommandPool = (PFN_vkResetCommandPool)gpa(dev, "vkResetCommandPool");
416     table->AllocateCommandBuffers = (PFN_vkAllocateCommandBuffers)gpa(dev, "vkAllocateCommandBuffers");
417     table->FreeCommandBuffers = (PFN_vkFreeCommandBuffers)gpa(dev, "vkFreeCommandBuffers");
418     table->BeginCommandBuffer = (PFN_vkBeginCommandBuffer)gpa(dev, "vkBeginCommandBuffer");
419     table->EndCommandBuffer = (PFN_vkEndCommandBuffer)gpa(dev, "vkEndCommandBuffer");
420     table->ResetCommandBuffer = (PFN_vkResetCommandBuffer)gpa(dev, "vkResetCommandBuffer");
421     table->CmdBindPipeline = (PFN_vkCmdBindPipeline)gpa(dev, "vkCmdBindPipeline");
422     table->CmdSetViewport = (PFN_vkCmdSetViewport)gpa(dev, "vkCmdSetViewport");
423     table->CmdSetScissor = (PFN_vkCmdSetScissor)gpa(dev, "vkCmdSetScissor");
424     table->CmdSetLineWidth = (PFN_vkCmdSetLineWidth)gpa(dev, "vkCmdSetLineWidth");
425     table->CmdSetDepthBias = (PFN_vkCmdSetDepthBias)gpa(dev, "vkCmdSetDepthBias");
426     table->CmdSetBlendConstants = (PFN_vkCmdSetBlendConstants)gpa(dev, "vkCmdSetBlendConstants");
427     table->CmdSetDepthBounds = (PFN_vkCmdSetDepthBounds)gpa(dev, "vkCmdSetDepthBounds");
428     table->CmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask)gpa(dev, "vkCmdSetStencilCompareMask");
429     table->CmdSetStencilWriteMask = (PFN_vkCmdSetStencilWriteMask)gpa(dev, "vkCmdSetStencilWriteMask");
430     table->CmdSetStencilReference = (PFN_vkCmdSetStencilReference)gpa(dev, "vkCmdSetStencilReference");
431     table->CmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets)gpa(dev, "vkCmdBindDescriptorSets");
432     table->CmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer)gpa(dev, "vkCmdBindIndexBuffer");
433     table->CmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers)gpa(dev, "vkCmdBindVertexBuffers");
434     table->CmdDraw = (PFN_vkCmdDraw)gpa(dev, "vkCmdDraw");
435     table->CmdDrawIndexed = (PFN_vkCmdDrawIndexed)gpa(dev, "vkCmdDrawIndexed");
436     table->CmdDrawIndirect = (PFN_vkCmdDrawIndirect)gpa(dev, "vkCmdDrawIndirect");
437     table->CmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect)gpa(dev, "vkCmdDrawIndexedIndirect");
438     table->CmdDispatch = (PFN_vkCmdDispatch)gpa(dev, "vkCmdDispatch");
439     table->CmdDispatchIndirect = (PFN_vkCmdDispatchIndirect)gpa(dev, "vkCmdDispatchIndirect");
440     table->CmdCopyBuffer = (PFN_vkCmdCopyBuffer)gpa(dev, "vkCmdCopyBuffer");
441     table->CmdCopyImage = (PFN_vkCmdCopyImage)gpa(dev, "vkCmdCopyImage");
442     table->CmdBlitImage = (PFN_vkCmdBlitImage)gpa(dev, "vkCmdBlitImage");
443     table->CmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage)gpa(dev, "vkCmdCopyBufferToImage");
444     table->CmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer)gpa(dev, "vkCmdCopyImageToBuffer");
445     table->CmdUpdateBuffer = (PFN_vkCmdUpdateBuffer)gpa(dev, "vkCmdUpdateBuffer");
446     table->CmdFillBuffer = (PFN_vkCmdFillBuffer)gpa(dev, "vkCmdFillBuffer");
447     table->CmdClearColorImage = (PFN_vkCmdClearColorImage)gpa(dev, "vkCmdClearColorImage");
448     table->CmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage)gpa(dev, "vkCmdClearDepthStencilImage");
449     table->CmdClearAttachments = (PFN_vkCmdClearAttachments)gpa(dev, "vkCmdClearAttachments");
450     table->CmdResolveImage = (PFN_vkCmdResolveImage)gpa(dev, "vkCmdResolveImage");
451     table->CmdSetEvent = (PFN_vkCmdSetEvent)gpa(dev, "vkCmdSetEvent");
452     table->CmdResetEvent = (PFN_vkCmdResetEvent)gpa(dev, "vkCmdResetEvent");
453     table->CmdWaitEvents = (PFN_vkCmdWaitEvents)gpa(dev, "vkCmdWaitEvents");
454     table->CmdPipelineBarrier = (PFN_vkCmdPipelineBarrier)gpa(dev, "vkCmdPipelineBarrier");
455     table->CmdBeginQuery = (PFN_vkCmdBeginQuery)gpa(dev, "vkCmdBeginQuery");
456     table->CmdEndQuery = (PFN_vkCmdEndQuery)gpa(dev, "vkCmdEndQuery");
457     table->CmdResetQueryPool = (PFN_vkCmdResetQueryPool)gpa(dev, "vkCmdResetQueryPool");
458     table->CmdWriteTimestamp = (PFN_vkCmdWriteTimestamp)gpa(dev, "vkCmdWriteTimestamp");
459     table->CmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults)gpa(dev, "vkCmdCopyQueryPoolResults");
460     table->CmdPushConstants = (PFN_vkCmdPushConstants)gpa(dev, "vkCmdPushConstants");
461     table->CmdBeginRenderPass = (PFN_vkCmdBeginRenderPass)gpa(dev, "vkCmdBeginRenderPass");
462     table->CmdNextSubpass = (PFN_vkCmdNextSubpass)gpa(dev, "vkCmdNextSubpass");
463     table->CmdEndRenderPass = (PFN_vkCmdEndRenderPass)gpa(dev, "vkCmdEndRenderPass");
464     table->CmdExecuteCommands = (PFN_vkCmdExecuteCommands)gpa(dev, "vkCmdExecuteCommands");
465 
466     // ---- Core 1_1 commands
467     table->BindBufferMemory2 = (PFN_vkBindBufferMemory2)gpa(dev, "vkBindBufferMemory2");
468     table->BindImageMemory2 = (PFN_vkBindImageMemory2)gpa(dev, "vkBindImageMemory2");
469     table->GetDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures)gpa(dev, "vkGetDeviceGroupPeerMemoryFeatures");
470     table->CmdSetDeviceMask = (PFN_vkCmdSetDeviceMask)gpa(dev, "vkCmdSetDeviceMask");
471     table->CmdDispatchBase = (PFN_vkCmdDispatchBase)gpa(dev, "vkCmdDispatchBase");
472     table->GetImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2)gpa(dev, "vkGetImageMemoryRequirements2");
473     table->GetBufferMemoryRequirements2 = (PFN_vkGetBufferMemoryRequirements2)gpa(dev, "vkGetBufferMemoryRequirements2");
474     table->GetImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2)gpa(dev, "vkGetImageSparseMemoryRequirements2");
475     table->TrimCommandPool = (PFN_vkTrimCommandPool)gpa(dev, "vkTrimCommandPool");
476     table->GetDeviceQueue2 = (PFN_vkGetDeviceQueue2)gpa(dev, "vkGetDeviceQueue2");
477     table->CreateSamplerYcbcrConversion = (PFN_vkCreateSamplerYcbcrConversion)gpa(dev, "vkCreateSamplerYcbcrConversion");
478     table->DestroySamplerYcbcrConversion = (PFN_vkDestroySamplerYcbcrConversion)gpa(dev, "vkDestroySamplerYcbcrConversion");
479     table->CreateDescriptorUpdateTemplate = (PFN_vkCreateDescriptorUpdateTemplate)gpa(dev, "vkCreateDescriptorUpdateTemplate");
480     table->DestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate)gpa(dev, "vkDestroyDescriptorUpdateTemplate");
481     table->UpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate)gpa(dev, "vkUpdateDescriptorSetWithTemplate");
482     table->GetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport)gpa(dev, "vkGetDescriptorSetLayoutSupport");
483 
484     // ---- Core 1_2 commands
485     table->CmdDrawIndirectCount = (PFN_vkCmdDrawIndirectCount)gpa(dev, "vkCmdDrawIndirectCount");
486     table->CmdDrawIndexedIndirectCount = (PFN_vkCmdDrawIndexedIndirectCount)gpa(dev, "vkCmdDrawIndexedIndirectCount");
487     table->CreateRenderPass2 = (PFN_vkCreateRenderPass2)gpa(dev, "vkCreateRenderPass2");
488     table->CmdBeginRenderPass2 = (PFN_vkCmdBeginRenderPass2)gpa(dev, "vkCmdBeginRenderPass2");
489     table->CmdNextSubpass2 = (PFN_vkCmdNextSubpass2)gpa(dev, "vkCmdNextSubpass2");
490     table->CmdEndRenderPass2 = (PFN_vkCmdEndRenderPass2)gpa(dev, "vkCmdEndRenderPass2");
491     table->ResetQueryPool = (PFN_vkResetQueryPool)gpa(dev, "vkResetQueryPool");
492     table->GetSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue)gpa(dev, "vkGetSemaphoreCounterValue");
493     table->WaitSemaphores = (PFN_vkWaitSemaphores)gpa(dev, "vkWaitSemaphores");
494     table->SignalSemaphore = (PFN_vkSignalSemaphore)gpa(dev, "vkSignalSemaphore");
495     table->GetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddress)gpa(dev, "vkGetBufferDeviceAddress");
496     table->GetBufferOpaqueCaptureAddress = (PFN_vkGetBufferOpaqueCaptureAddress)gpa(dev, "vkGetBufferOpaqueCaptureAddress");
497     table->GetDeviceMemoryOpaqueCaptureAddress = (PFN_vkGetDeviceMemoryOpaqueCaptureAddress)gpa(dev, "vkGetDeviceMemoryOpaqueCaptureAddress");
498 
499     // ---- Core 1_3 commands
500     table->CreatePrivateDataSlot = (PFN_vkCreatePrivateDataSlot)gpa(dev, "vkCreatePrivateDataSlot");
501     table->DestroyPrivateDataSlot = (PFN_vkDestroyPrivateDataSlot)gpa(dev, "vkDestroyPrivateDataSlot");
502     table->SetPrivateData = (PFN_vkSetPrivateData)gpa(dev, "vkSetPrivateData");
503     table->GetPrivateData = (PFN_vkGetPrivateData)gpa(dev, "vkGetPrivateData");
504     table->CmdSetEvent2 = (PFN_vkCmdSetEvent2)gpa(dev, "vkCmdSetEvent2");
505     table->CmdResetEvent2 = (PFN_vkCmdResetEvent2)gpa(dev, "vkCmdResetEvent2");
506     table->CmdWaitEvents2 = (PFN_vkCmdWaitEvents2)gpa(dev, "vkCmdWaitEvents2");
507     table->CmdPipelineBarrier2 = (PFN_vkCmdPipelineBarrier2)gpa(dev, "vkCmdPipelineBarrier2");
508     table->CmdWriteTimestamp2 = (PFN_vkCmdWriteTimestamp2)gpa(dev, "vkCmdWriteTimestamp2");
509     table->QueueSubmit2 = (PFN_vkQueueSubmit2)gpa(dev, "vkQueueSubmit2");
510     table->CmdCopyBuffer2 = (PFN_vkCmdCopyBuffer2)gpa(dev, "vkCmdCopyBuffer2");
511     table->CmdCopyImage2 = (PFN_vkCmdCopyImage2)gpa(dev, "vkCmdCopyImage2");
512     table->CmdCopyBufferToImage2 = (PFN_vkCmdCopyBufferToImage2)gpa(dev, "vkCmdCopyBufferToImage2");
513     table->CmdCopyImageToBuffer2 = (PFN_vkCmdCopyImageToBuffer2)gpa(dev, "vkCmdCopyImageToBuffer2");
514     table->CmdBlitImage2 = (PFN_vkCmdBlitImage2)gpa(dev, "vkCmdBlitImage2");
515     table->CmdResolveImage2 = (PFN_vkCmdResolveImage2)gpa(dev, "vkCmdResolveImage2");
516     table->CmdBeginRendering = (PFN_vkCmdBeginRendering)gpa(dev, "vkCmdBeginRendering");
517     table->CmdEndRendering = (PFN_vkCmdEndRendering)gpa(dev, "vkCmdEndRendering");
518     table->CmdSetCullMode = (PFN_vkCmdSetCullMode)gpa(dev, "vkCmdSetCullMode");
519     table->CmdSetFrontFace = (PFN_vkCmdSetFrontFace)gpa(dev, "vkCmdSetFrontFace");
520     table->CmdSetPrimitiveTopology = (PFN_vkCmdSetPrimitiveTopology)gpa(dev, "vkCmdSetPrimitiveTopology");
521     table->CmdSetViewportWithCount = (PFN_vkCmdSetViewportWithCount)gpa(dev, "vkCmdSetViewportWithCount");
522     table->CmdSetScissorWithCount = (PFN_vkCmdSetScissorWithCount)gpa(dev, "vkCmdSetScissorWithCount");
523     table->CmdBindVertexBuffers2 = (PFN_vkCmdBindVertexBuffers2)gpa(dev, "vkCmdBindVertexBuffers2");
524     table->CmdSetDepthTestEnable = (PFN_vkCmdSetDepthTestEnable)gpa(dev, "vkCmdSetDepthTestEnable");
525     table->CmdSetDepthWriteEnable = (PFN_vkCmdSetDepthWriteEnable)gpa(dev, "vkCmdSetDepthWriteEnable");
526     table->CmdSetDepthCompareOp = (PFN_vkCmdSetDepthCompareOp)gpa(dev, "vkCmdSetDepthCompareOp");
527     table->CmdSetDepthBoundsTestEnable = (PFN_vkCmdSetDepthBoundsTestEnable)gpa(dev, "vkCmdSetDepthBoundsTestEnable");
528     table->CmdSetStencilTestEnable = (PFN_vkCmdSetStencilTestEnable)gpa(dev, "vkCmdSetStencilTestEnable");
529     table->CmdSetStencilOp = (PFN_vkCmdSetStencilOp)gpa(dev, "vkCmdSetStencilOp");
530     table->CmdSetRasterizerDiscardEnable = (PFN_vkCmdSetRasterizerDiscardEnable)gpa(dev, "vkCmdSetRasterizerDiscardEnable");
531     table->CmdSetDepthBiasEnable = (PFN_vkCmdSetDepthBiasEnable)gpa(dev, "vkCmdSetDepthBiasEnable");
532     table->CmdSetPrimitiveRestartEnable = (PFN_vkCmdSetPrimitiveRestartEnable)gpa(dev, "vkCmdSetPrimitiveRestartEnable");
533     table->GetDeviceBufferMemoryRequirements = (PFN_vkGetDeviceBufferMemoryRequirements)gpa(dev, "vkGetDeviceBufferMemoryRequirements");
534     table->GetDeviceImageMemoryRequirements = (PFN_vkGetDeviceImageMemoryRequirements)gpa(dev, "vkGetDeviceImageMemoryRequirements");
535     table->GetDeviceImageSparseMemoryRequirements = (PFN_vkGetDeviceImageSparseMemoryRequirements)gpa(dev, "vkGetDeviceImageSparseMemoryRequirements");
536 }
537 
538 // Init Device function pointer dispatch table with extension commands
loader_init_device_extension_dispatch_table(struct loader_dev_dispatch_table * dev_table,PFN_vkGetInstanceProcAddr gipa,PFN_vkGetDeviceProcAddr gdpa,VkInstance inst,VkDevice dev)539 VKAPI_ATTR void VKAPI_CALL loader_init_device_extension_dispatch_table(struct loader_dev_dispatch_table *dev_table,
540                                                                        PFN_vkGetInstanceProcAddr gipa,
541                                                                        PFN_vkGetDeviceProcAddr gdpa,
542                                                                        VkInstance inst,
543                                                                        VkDevice dev) {
544     VkLayerDispatchTable *table = &dev_table->core_dispatch;
545     table->magic = DEVICE_DISP_TABLE_MAGIC_NUMBER;
546 
547     // ---- VK_KHR_swapchain extension commands
548     table->CreateSwapchainKHR = (PFN_vkCreateSwapchainKHR)gdpa(dev, "vkCreateSwapchainKHR");
549     table->DestroySwapchainKHR = (PFN_vkDestroySwapchainKHR)gdpa(dev, "vkDestroySwapchainKHR");
550     table->GetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR)gdpa(dev, "vkGetSwapchainImagesKHR");
551     table->AcquireNextImageKHR = (PFN_vkAcquireNextImageKHR)gdpa(dev, "vkAcquireNextImageKHR");
552     table->QueuePresentKHR = (PFN_vkQueuePresentKHR)gdpa(dev, "vkQueuePresentKHR");
553     table->GetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR)gdpa(dev, "vkGetDeviceGroupPresentCapabilitiesKHR");
554     table->GetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR)gdpa(dev, "vkGetDeviceGroupSurfacePresentModesKHR");
555     table->AcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR)gdpa(dev, "vkAcquireNextImage2KHR");
556 
557     // ---- VK_KHR_display_swapchain extension commands
558     table->CreateSharedSwapchainsKHR = (PFN_vkCreateSharedSwapchainsKHR)gdpa(dev, "vkCreateSharedSwapchainsKHR");
559 
560     // ---- VK_KHR_video_queue extension commands
561 #ifdef VK_ENABLE_BETA_EXTENSIONS
562     table->CreateVideoSessionKHR = (PFN_vkCreateVideoSessionKHR)gdpa(dev, "vkCreateVideoSessionKHR");
563 #endif // VK_ENABLE_BETA_EXTENSIONS
564 #ifdef VK_ENABLE_BETA_EXTENSIONS
565     table->DestroyVideoSessionKHR = (PFN_vkDestroyVideoSessionKHR)gdpa(dev, "vkDestroyVideoSessionKHR");
566 #endif // VK_ENABLE_BETA_EXTENSIONS
567 #ifdef VK_ENABLE_BETA_EXTENSIONS
568     table->GetVideoSessionMemoryRequirementsKHR = (PFN_vkGetVideoSessionMemoryRequirementsKHR)gdpa(dev, "vkGetVideoSessionMemoryRequirementsKHR");
569 #endif // VK_ENABLE_BETA_EXTENSIONS
570 #ifdef VK_ENABLE_BETA_EXTENSIONS
571     table->BindVideoSessionMemoryKHR = (PFN_vkBindVideoSessionMemoryKHR)gdpa(dev, "vkBindVideoSessionMemoryKHR");
572 #endif // VK_ENABLE_BETA_EXTENSIONS
573 #ifdef VK_ENABLE_BETA_EXTENSIONS
574     table->CreateVideoSessionParametersKHR = (PFN_vkCreateVideoSessionParametersKHR)gdpa(dev, "vkCreateVideoSessionParametersKHR");
575 #endif // VK_ENABLE_BETA_EXTENSIONS
576 #ifdef VK_ENABLE_BETA_EXTENSIONS
577     table->UpdateVideoSessionParametersKHR = (PFN_vkUpdateVideoSessionParametersKHR)gdpa(dev, "vkUpdateVideoSessionParametersKHR");
578 #endif // VK_ENABLE_BETA_EXTENSIONS
579 #ifdef VK_ENABLE_BETA_EXTENSIONS
580     table->DestroyVideoSessionParametersKHR = (PFN_vkDestroyVideoSessionParametersKHR)gdpa(dev, "vkDestroyVideoSessionParametersKHR");
581 #endif // VK_ENABLE_BETA_EXTENSIONS
582 #ifdef VK_ENABLE_BETA_EXTENSIONS
583     table->CmdBeginVideoCodingKHR = (PFN_vkCmdBeginVideoCodingKHR)gdpa(dev, "vkCmdBeginVideoCodingKHR");
584 #endif // VK_ENABLE_BETA_EXTENSIONS
585 #ifdef VK_ENABLE_BETA_EXTENSIONS
586     table->CmdEndVideoCodingKHR = (PFN_vkCmdEndVideoCodingKHR)gdpa(dev, "vkCmdEndVideoCodingKHR");
587 #endif // VK_ENABLE_BETA_EXTENSIONS
588 #ifdef VK_ENABLE_BETA_EXTENSIONS
589     table->CmdControlVideoCodingKHR = (PFN_vkCmdControlVideoCodingKHR)gdpa(dev, "vkCmdControlVideoCodingKHR");
590 #endif // VK_ENABLE_BETA_EXTENSIONS
591 
592     // ---- VK_KHR_video_decode_queue extension commands
593 #ifdef VK_ENABLE_BETA_EXTENSIONS
594     table->CmdDecodeVideoKHR = (PFN_vkCmdDecodeVideoKHR)gdpa(dev, "vkCmdDecodeVideoKHR");
595 #endif // VK_ENABLE_BETA_EXTENSIONS
596 
597     // ---- VK_KHR_dynamic_rendering extension commands
598     table->CmdBeginRenderingKHR = (PFN_vkCmdBeginRenderingKHR)gdpa(dev, "vkCmdBeginRenderingKHR");
599     table->CmdEndRenderingKHR = (PFN_vkCmdEndRenderingKHR)gdpa(dev, "vkCmdEndRenderingKHR");
600 
601     // ---- VK_KHR_device_group extension commands
602     table->GetDeviceGroupPeerMemoryFeaturesKHR = (PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)gdpa(dev, "vkGetDeviceGroupPeerMemoryFeaturesKHR");
603     table->CmdSetDeviceMaskKHR = (PFN_vkCmdSetDeviceMaskKHR)gdpa(dev, "vkCmdSetDeviceMaskKHR");
604     table->CmdDispatchBaseKHR = (PFN_vkCmdDispatchBaseKHR)gdpa(dev, "vkCmdDispatchBaseKHR");
605 
606     // ---- VK_KHR_maintenance1 extension commands
607     table->TrimCommandPoolKHR = (PFN_vkTrimCommandPoolKHR)gdpa(dev, "vkTrimCommandPoolKHR");
608 
609     // ---- VK_KHR_external_memory_win32 extension commands
610 #ifdef VK_USE_PLATFORM_WIN32_KHR
611     table->GetMemoryWin32HandleKHR = (PFN_vkGetMemoryWin32HandleKHR)gdpa(dev, "vkGetMemoryWin32HandleKHR");
612 #endif // VK_USE_PLATFORM_WIN32_KHR
613 #ifdef VK_USE_PLATFORM_WIN32_KHR
614     table->GetMemoryWin32HandlePropertiesKHR = (PFN_vkGetMemoryWin32HandlePropertiesKHR)gdpa(dev, "vkGetMemoryWin32HandlePropertiesKHR");
615 #endif // VK_USE_PLATFORM_WIN32_KHR
616 
617     // ---- VK_KHR_external_memory_fd extension commands
618     table->GetMemoryFdKHR = (PFN_vkGetMemoryFdKHR)gdpa(dev, "vkGetMemoryFdKHR");
619     table->GetMemoryFdPropertiesKHR = (PFN_vkGetMemoryFdPropertiesKHR)gdpa(dev, "vkGetMemoryFdPropertiesKHR");
620 
621     // ---- VK_KHR_external_semaphore_win32 extension commands
622 #ifdef VK_USE_PLATFORM_WIN32_KHR
623     table->ImportSemaphoreWin32HandleKHR = (PFN_vkImportSemaphoreWin32HandleKHR)gdpa(dev, "vkImportSemaphoreWin32HandleKHR");
624 #endif // VK_USE_PLATFORM_WIN32_KHR
625 #ifdef VK_USE_PLATFORM_WIN32_KHR
626     table->GetSemaphoreWin32HandleKHR = (PFN_vkGetSemaphoreWin32HandleKHR)gdpa(dev, "vkGetSemaphoreWin32HandleKHR");
627 #endif // VK_USE_PLATFORM_WIN32_KHR
628 
629     // ---- VK_KHR_external_semaphore_fd extension commands
630     table->ImportSemaphoreFdKHR = (PFN_vkImportSemaphoreFdKHR)gdpa(dev, "vkImportSemaphoreFdKHR");
631     table->GetSemaphoreFdKHR = (PFN_vkGetSemaphoreFdKHR)gdpa(dev, "vkGetSemaphoreFdKHR");
632 
633     // ---- VK_KHR_push_descriptor extension commands
634     table->CmdPushDescriptorSetKHR = (PFN_vkCmdPushDescriptorSetKHR)gdpa(dev, "vkCmdPushDescriptorSetKHR");
635     table->CmdPushDescriptorSetWithTemplateKHR = (PFN_vkCmdPushDescriptorSetWithTemplateKHR)gdpa(dev, "vkCmdPushDescriptorSetWithTemplateKHR");
636 
637     // ---- VK_KHR_descriptor_update_template extension commands
638     table->CreateDescriptorUpdateTemplateKHR = (PFN_vkCreateDescriptorUpdateTemplateKHR)gdpa(dev, "vkCreateDescriptorUpdateTemplateKHR");
639     table->DestroyDescriptorUpdateTemplateKHR = (PFN_vkDestroyDescriptorUpdateTemplateKHR)gdpa(dev, "vkDestroyDescriptorUpdateTemplateKHR");
640     table->UpdateDescriptorSetWithTemplateKHR = (PFN_vkUpdateDescriptorSetWithTemplateKHR)gdpa(dev, "vkUpdateDescriptorSetWithTemplateKHR");
641 
642     // ---- VK_KHR_create_renderpass2 extension commands
643     table->CreateRenderPass2KHR = (PFN_vkCreateRenderPass2KHR)gdpa(dev, "vkCreateRenderPass2KHR");
644     table->CmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR)gdpa(dev, "vkCmdBeginRenderPass2KHR");
645     table->CmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR)gdpa(dev, "vkCmdNextSubpass2KHR");
646     table->CmdEndRenderPass2KHR = (PFN_vkCmdEndRenderPass2KHR)gdpa(dev, "vkCmdEndRenderPass2KHR");
647 
648     // ---- VK_KHR_shared_presentable_image extension commands
649     table->GetSwapchainStatusKHR = (PFN_vkGetSwapchainStatusKHR)gdpa(dev, "vkGetSwapchainStatusKHR");
650 
651     // ---- VK_KHR_external_fence_win32 extension commands
652 #ifdef VK_USE_PLATFORM_WIN32_KHR
653     table->ImportFenceWin32HandleKHR = (PFN_vkImportFenceWin32HandleKHR)gdpa(dev, "vkImportFenceWin32HandleKHR");
654 #endif // VK_USE_PLATFORM_WIN32_KHR
655 #ifdef VK_USE_PLATFORM_WIN32_KHR
656     table->GetFenceWin32HandleKHR = (PFN_vkGetFenceWin32HandleKHR)gdpa(dev, "vkGetFenceWin32HandleKHR");
657 #endif // VK_USE_PLATFORM_WIN32_KHR
658 
659     // ---- VK_KHR_external_fence_fd extension commands
660     table->ImportFenceFdKHR = (PFN_vkImportFenceFdKHR)gdpa(dev, "vkImportFenceFdKHR");
661     table->GetFenceFdKHR = (PFN_vkGetFenceFdKHR)gdpa(dev, "vkGetFenceFdKHR");
662 
663     // ---- VK_KHR_performance_query extension commands
664     table->AcquireProfilingLockKHR = (PFN_vkAcquireProfilingLockKHR)gdpa(dev, "vkAcquireProfilingLockKHR");
665     table->ReleaseProfilingLockKHR = (PFN_vkReleaseProfilingLockKHR)gdpa(dev, "vkReleaseProfilingLockKHR");
666 
667     // ---- VK_KHR_get_memory_requirements2 extension commands
668     table->GetImageMemoryRequirements2KHR = (PFN_vkGetImageMemoryRequirements2KHR)gdpa(dev, "vkGetImageMemoryRequirements2KHR");
669     table->GetBufferMemoryRequirements2KHR = (PFN_vkGetBufferMemoryRequirements2KHR)gdpa(dev, "vkGetBufferMemoryRequirements2KHR");
670     table->GetImageSparseMemoryRequirements2KHR = (PFN_vkGetImageSparseMemoryRequirements2KHR)gdpa(dev, "vkGetImageSparseMemoryRequirements2KHR");
671 
672     // ---- VK_KHR_sampler_ycbcr_conversion extension commands
673     table->CreateSamplerYcbcrConversionKHR = (PFN_vkCreateSamplerYcbcrConversionKHR)gdpa(dev, "vkCreateSamplerYcbcrConversionKHR");
674     table->DestroySamplerYcbcrConversionKHR = (PFN_vkDestroySamplerYcbcrConversionKHR)gdpa(dev, "vkDestroySamplerYcbcrConversionKHR");
675 
676     // ---- VK_KHR_bind_memory2 extension commands
677     table->BindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)gdpa(dev, "vkBindBufferMemory2KHR");
678     table->BindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)gdpa(dev, "vkBindImageMemory2KHR");
679 
680     // ---- VK_KHR_maintenance3 extension commands
681     table->GetDescriptorSetLayoutSupportKHR = (PFN_vkGetDescriptorSetLayoutSupportKHR)gdpa(dev, "vkGetDescriptorSetLayoutSupportKHR");
682 
683     // ---- VK_KHR_draw_indirect_count extension commands
684     table->CmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)gdpa(dev, "vkCmdDrawIndirectCountKHR");
685     table->CmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)gdpa(dev, "vkCmdDrawIndexedIndirectCountKHR");
686 
687     // ---- VK_KHR_timeline_semaphore extension commands
688     table->GetSemaphoreCounterValueKHR = (PFN_vkGetSemaphoreCounterValueKHR)gdpa(dev, "vkGetSemaphoreCounterValueKHR");
689     table->WaitSemaphoresKHR = (PFN_vkWaitSemaphoresKHR)gdpa(dev, "vkWaitSemaphoresKHR");
690     table->SignalSemaphoreKHR = (PFN_vkSignalSemaphoreKHR)gdpa(dev, "vkSignalSemaphoreKHR");
691 
692     // ---- VK_KHR_fragment_shading_rate extension commands
693     table->CmdSetFragmentShadingRateKHR = (PFN_vkCmdSetFragmentShadingRateKHR)gdpa(dev, "vkCmdSetFragmentShadingRateKHR");
694 
695     // ---- VK_KHR_present_wait extension commands
696     table->WaitForPresentKHR = (PFN_vkWaitForPresentKHR)gdpa(dev, "vkWaitForPresentKHR");
697 
698     // ---- VK_KHR_buffer_device_address extension commands
699     table->GetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR)gdpa(dev, "vkGetBufferDeviceAddressKHR");
700     table->GetBufferOpaqueCaptureAddressKHR = (PFN_vkGetBufferOpaqueCaptureAddressKHR)gdpa(dev, "vkGetBufferOpaqueCaptureAddressKHR");
701     table->GetDeviceMemoryOpaqueCaptureAddressKHR = (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)gdpa(dev, "vkGetDeviceMemoryOpaqueCaptureAddressKHR");
702 
703     // ---- VK_KHR_deferred_host_operations extension commands
704     table->CreateDeferredOperationKHR = (PFN_vkCreateDeferredOperationKHR)gdpa(dev, "vkCreateDeferredOperationKHR");
705     table->DestroyDeferredOperationKHR = (PFN_vkDestroyDeferredOperationKHR)gdpa(dev, "vkDestroyDeferredOperationKHR");
706     table->GetDeferredOperationMaxConcurrencyKHR = (PFN_vkGetDeferredOperationMaxConcurrencyKHR)gdpa(dev, "vkGetDeferredOperationMaxConcurrencyKHR");
707     table->GetDeferredOperationResultKHR = (PFN_vkGetDeferredOperationResultKHR)gdpa(dev, "vkGetDeferredOperationResultKHR");
708     table->DeferredOperationJoinKHR = (PFN_vkDeferredOperationJoinKHR)gdpa(dev, "vkDeferredOperationJoinKHR");
709 
710     // ---- VK_KHR_pipeline_executable_properties extension commands
711     table->GetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)gdpa(dev, "vkGetPipelineExecutablePropertiesKHR");
712     table->GetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)gdpa(dev, "vkGetPipelineExecutableStatisticsKHR");
713     table->GetPipelineExecutableInternalRepresentationsKHR = (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)gdpa(dev, "vkGetPipelineExecutableInternalRepresentationsKHR");
714 
715     // ---- VK_KHR_video_encode_queue extension commands
716 #ifdef VK_ENABLE_BETA_EXTENSIONS
717     table->CmdEncodeVideoKHR = (PFN_vkCmdEncodeVideoKHR)gdpa(dev, "vkCmdEncodeVideoKHR");
718 #endif // VK_ENABLE_BETA_EXTENSIONS
719 
720     // ---- VK_KHR_synchronization2 extension commands
721     table->CmdSetEvent2KHR = (PFN_vkCmdSetEvent2KHR)gdpa(dev, "vkCmdSetEvent2KHR");
722     table->CmdResetEvent2KHR = (PFN_vkCmdResetEvent2KHR)gdpa(dev, "vkCmdResetEvent2KHR");
723     table->CmdWaitEvents2KHR = (PFN_vkCmdWaitEvents2KHR)gdpa(dev, "vkCmdWaitEvents2KHR");
724     table->CmdPipelineBarrier2KHR = (PFN_vkCmdPipelineBarrier2KHR)gdpa(dev, "vkCmdPipelineBarrier2KHR");
725     table->CmdWriteTimestamp2KHR = (PFN_vkCmdWriteTimestamp2KHR)gdpa(dev, "vkCmdWriteTimestamp2KHR");
726     table->QueueSubmit2KHR = (PFN_vkQueueSubmit2KHR)gdpa(dev, "vkQueueSubmit2KHR");
727     table->CmdWriteBufferMarker2AMD = (PFN_vkCmdWriteBufferMarker2AMD)gdpa(dev, "vkCmdWriteBufferMarker2AMD");
728     table->GetQueueCheckpointData2NV = (PFN_vkGetQueueCheckpointData2NV)gdpa(dev, "vkGetQueueCheckpointData2NV");
729 
730     // ---- VK_KHR_copy_commands2 extension commands
731     table->CmdCopyBuffer2KHR = (PFN_vkCmdCopyBuffer2KHR)gdpa(dev, "vkCmdCopyBuffer2KHR");
732     table->CmdCopyImage2KHR = (PFN_vkCmdCopyImage2KHR)gdpa(dev, "vkCmdCopyImage2KHR");
733     table->CmdCopyBufferToImage2KHR = (PFN_vkCmdCopyBufferToImage2KHR)gdpa(dev, "vkCmdCopyBufferToImage2KHR");
734     table->CmdCopyImageToBuffer2KHR = (PFN_vkCmdCopyImageToBuffer2KHR)gdpa(dev, "vkCmdCopyImageToBuffer2KHR");
735     table->CmdBlitImage2KHR = (PFN_vkCmdBlitImage2KHR)gdpa(dev, "vkCmdBlitImage2KHR");
736     table->CmdResolveImage2KHR = (PFN_vkCmdResolveImage2KHR)gdpa(dev, "vkCmdResolveImage2KHR");
737 
738     // ---- VK_KHR_ray_tracing_maintenance1 extension commands
739     table->CmdTraceRaysIndirect2KHR = (PFN_vkCmdTraceRaysIndirect2KHR)gdpa(dev, "vkCmdTraceRaysIndirect2KHR");
740 
741     // ---- VK_KHR_maintenance4 extension commands
742     table->GetDeviceBufferMemoryRequirementsKHR = (PFN_vkGetDeviceBufferMemoryRequirementsKHR)gdpa(dev, "vkGetDeviceBufferMemoryRequirementsKHR");
743     table->GetDeviceImageMemoryRequirementsKHR = (PFN_vkGetDeviceImageMemoryRequirementsKHR)gdpa(dev, "vkGetDeviceImageMemoryRequirementsKHR");
744     table->GetDeviceImageSparseMemoryRequirementsKHR = (PFN_vkGetDeviceImageSparseMemoryRequirementsKHR)gdpa(dev, "vkGetDeviceImageSparseMemoryRequirementsKHR");
745 
746     // ---- VK_EXT_debug_marker extension commands
747     table->DebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)gdpa(dev, "vkDebugMarkerSetObjectTagEXT");
748     table->DebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)gdpa(dev, "vkDebugMarkerSetObjectNameEXT");
749     table->CmdDebugMarkerBeginEXT = (PFN_vkCmdDebugMarkerBeginEXT)gdpa(dev, "vkCmdDebugMarkerBeginEXT");
750     table->CmdDebugMarkerEndEXT = (PFN_vkCmdDebugMarkerEndEXT)gdpa(dev, "vkCmdDebugMarkerEndEXT");
751     table->CmdDebugMarkerInsertEXT = (PFN_vkCmdDebugMarkerInsertEXT)gdpa(dev, "vkCmdDebugMarkerInsertEXT");
752 
753     // ---- VK_EXT_transform_feedback extension commands
754     table->CmdBindTransformFeedbackBuffersEXT = (PFN_vkCmdBindTransformFeedbackBuffersEXT)gdpa(dev, "vkCmdBindTransformFeedbackBuffersEXT");
755     table->CmdBeginTransformFeedbackEXT = (PFN_vkCmdBeginTransformFeedbackEXT)gdpa(dev, "vkCmdBeginTransformFeedbackEXT");
756     table->CmdEndTransformFeedbackEXT = (PFN_vkCmdEndTransformFeedbackEXT)gdpa(dev, "vkCmdEndTransformFeedbackEXT");
757     table->CmdBeginQueryIndexedEXT = (PFN_vkCmdBeginQueryIndexedEXT)gdpa(dev, "vkCmdBeginQueryIndexedEXT");
758     table->CmdEndQueryIndexedEXT = (PFN_vkCmdEndQueryIndexedEXT)gdpa(dev, "vkCmdEndQueryIndexedEXT");
759     table->CmdDrawIndirectByteCountEXT = (PFN_vkCmdDrawIndirectByteCountEXT)gdpa(dev, "vkCmdDrawIndirectByteCountEXT");
760 
761     // ---- VK_NVX_binary_import extension commands
762     table->CreateCuModuleNVX = (PFN_vkCreateCuModuleNVX)gdpa(dev, "vkCreateCuModuleNVX");
763     table->CreateCuFunctionNVX = (PFN_vkCreateCuFunctionNVX)gdpa(dev, "vkCreateCuFunctionNVX");
764     table->DestroyCuModuleNVX = (PFN_vkDestroyCuModuleNVX)gdpa(dev, "vkDestroyCuModuleNVX");
765     table->DestroyCuFunctionNVX = (PFN_vkDestroyCuFunctionNVX)gdpa(dev, "vkDestroyCuFunctionNVX");
766     table->CmdCuLaunchKernelNVX = (PFN_vkCmdCuLaunchKernelNVX)gdpa(dev, "vkCmdCuLaunchKernelNVX");
767 
768     // ---- VK_NVX_image_view_handle extension commands
769     table->GetImageViewHandleNVX = (PFN_vkGetImageViewHandleNVX)gdpa(dev, "vkGetImageViewHandleNVX");
770     table->GetImageViewAddressNVX = (PFN_vkGetImageViewAddressNVX)gdpa(dev, "vkGetImageViewAddressNVX");
771 
772     // ---- VK_AMD_draw_indirect_count extension commands
773     table->CmdDrawIndirectCountAMD = (PFN_vkCmdDrawIndirectCountAMD)gdpa(dev, "vkCmdDrawIndirectCountAMD");
774     table->CmdDrawIndexedIndirectCountAMD = (PFN_vkCmdDrawIndexedIndirectCountAMD)gdpa(dev, "vkCmdDrawIndexedIndirectCountAMD");
775 
776     // ---- VK_AMD_shader_info extension commands
777     table->GetShaderInfoAMD = (PFN_vkGetShaderInfoAMD)gdpa(dev, "vkGetShaderInfoAMD");
778 
779     // ---- VK_NV_external_memory_win32 extension commands
780 #ifdef VK_USE_PLATFORM_WIN32_KHR
781     table->GetMemoryWin32HandleNV = (PFN_vkGetMemoryWin32HandleNV)gdpa(dev, "vkGetMemoryWin32HandleNV");
782 #endif // VK_USE_PLATFORM_WIN32_KHR
783 
784     // ---- VK_EXT_conditional_rendering extension commands
785     table->CmdBeginConditionalRenderingEXT = (PFN_vkCmdBeginConditionalRenderingEXT)gdpa(dev, "vkCmdBeginConditionalRenderingEXT");
786     table->CmdEndConditionalRenderingEXT = (PFN_vkCmdEndConditionalRenderingEXT)gdpa(dev, "vkCmdEndConditionalRenderingEXT");
787 
788     // ---- VK_NV_clip_space_w_scaling extension commands
789     table->CmdSetViewportWScalingNV = (PFN_vkCmdSetViewportWScalingNV)gdpa(dev, "vkCmdSetViewportWScalingNV");
790 
791     // ---- VK_EXT_display_control extension commands
792     table->DisplayPowerControlEXT = (PFN_vkDisplayPowerControlEXT)gdpa(dev, "vkDisplayPowerControlEXT");
793     table->RegisterDeviceEventEXT = (PFN_vkRegisterDeviceEventEXT)gdpa(dev, "vkRegisterDeviceEventEXT");
794     table->RegisterDisplayEventEXT = (PFN_vkRegisterDisplayEventEXT)gdpa(dev, "vkRegisterDisplayEventEXT");
795     table->GetSwapchainCounterEXT = (PFN_vkGetSwapchainCounterEXT)gdpa(dev, "vkGetSwapchainCounterEXT");
796 
797     // ---- VK_GOOGLE_display_timing extension commands
798     table->GetRefreshCycleDurationGOOGLE = (PFN_vkGetRefreshCycleDurationGOOGLE)gdpa(dev, "vkGetRefreshCycleDurationGOOGLE");
799     table->GetPastPresentationTimingGOOGLE = (PFN_vkGetPastPresentationTimingGOOGLE)gdpa(dev, "vkGetPastPresentationTimingGOOGLE");
800 
801     // ---- VK_EXT_discard_rectangles extension commands
802     table->CmdSetDiscardRectangleEXT = (PFN_vkCmdSetDiscardRectangleEXT)gdpa(dev, "vkCmdSetDiscardRectangleEXT");
803 
804     // ---- VK_EXT_hdr_metadata extension commands
805     table->SetHdrMetadataEXT = (PFN_vkSetHdrMetadataEXT)gdpa(dev, "vkSetHdrMetadataEXT");
806 
807     // ---- VK_EXT_debug_utils extension commands
808     table->SetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)gipa(inst, "vkSetDebugUtilsObjectNameEXT");
809     table->SetDebugUtilsObjectTagEXT = (PFN_vkSetDebugUtilsObjectTagEXT)gipa(inst, "vkSetDebugUtilsObjectTagEXT");
810     table->QueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT)gipa(inst, "vkQueueBeginDebugUtilsLabelEXT");
811     table->QueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)gipa(inst, "vkQueueEndDebugUtilsLabelEXT");
812     table->QueueInsertDebugUtilsLabelEXT = (PFN_vkQueueInsertDebugUtilsLabelEXT)gipa(inst, "vkQueueInsertDebugUtilsLabelEXT");
813     table->CmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)gipa(inst, "vkCmdBeginDebugUtilsLabelEXT");
814     table->CmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)gipa(inst, "vkCmdEndDebugUtilsLabelEXT");
815     table->CmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT)gipa(inst, "vkCmdInsertDebugUtilsLabelEXT");
816 
817     // ---- VK_ANDROID_external_memory_android_hardware_buffer extension commands
818 #ifdef VK_USE_PLATFORM_ANDROID_KHR
819     table->GetAndroidHardwareBufferPropertiesANDROID = (PFN_vkGetAndroidHardwareBufferPropertiesANDROID)gdpa(dev, "vkGetAndroidHardwareBufferPropertiesANDROID");
820 #endif // VK_USE_PLATFORM_ANDROID_KHR
821 #ifdef VK_USE_PLATFORM_ANDROID_KHR
822     table->GetMemoryAndroidHardwareBufferANDROID = (PFN_vkGetMemoryAndroidHardwareBufferANDROID)gdpa(dev, "vkGetMemoryAndroidHardwareBufferANDROID");
823 #endif // VK_USE_PLATFORM_ANDROID_KHR
824 
825     // ---- VK_EXT_sample_locations extension commands
826     table->CmdSetSampleLocationsEXT = (PFN_vkCmdSetSampleLocationsEXT)gdpa(dev, "vkCmdSetSampleLocationsEXT");
827 
828     // ---- VK_EXT_image_drm_format_modifier extension commands
829     table->GetImageDrmFormatModifierPropertiesEXT = (PFN_vkGetImageDrmFormatModifierPropertiesEXT)gdpa(dev, "vkGetImageDrmFormatModifierPropertiesEXT");
830 
831     // ---- VK_EXT_validation_cache extension commands
832     table->CreateValidationCacheEXT = (PFN_vkCreateValidationCacheEXT)gdpa(dev, "vkCreateValidationCacheEXT");
833     table->DestroyValidationCacheEXT = (PFN_vkDestroyValidationCacheEXT)gdpa(dev, "vkDestroyValidationCacheEXT");
834     table->MergeValidationCachesEXT = (PFN_vkMergeValidationCachesEXT)gdpa(dev, "vkMergeValidationCachesEXT");
835     table->GetValidationCacheDataEXT = (PFN_vkGetValidationCacheDataEXT)gdpa(dev, "vkGetValidationCacheDataEXT");
836 
837     // ---- VK_NV_shading_rate_image extension commands
838     table->CmdBindShadingRateImageNV = (PFN_vkCmdBindShadingRateImageNV)gdpa(dev, "vkCmdBindShadingRateImageNV");
839     table->CmdSetViewportShadingRatePaletteNV = (PFN_vkCmdSetViewportShadingRatePaletteNV)gdpa(dev, "vkCmdSetViewportShadingRatePaletteNV");
840     table->CmdSetCoarseSampleOrderNV = (PFN_vkCmdSetCoarseSampleOrderNV)gdpa(dev, "vkCmdSetCoarseSampleOrderNV");
841 
842     // ---- VK_NV_ray_tracing extension commands
843     table->CreateAccelerationStructureNV = (PFN_vkCreateAccelerationStructureNV)gdpa(dev, "vkCreateAccelerationStructureNV");
844     table->DestroyAccelerationStructureNV = (PFN_vkDestroyAccelerationStructureNV)gdpa(dev, "vkDestroyAccelerationStructureNV");
845     table->GetAccelerationStructureMemoryRequirementsNV = (PFN_vkGetAccelerationStructureMemoryRequirementsNV)gdpa(dev, "vkGetAccelerationStructureMemoryRequirementsNV");
846     table->BindAccelerationStructureMemoryNV = (PFN_vkBindAccelerationStructureMemoryNV)gdpa(dev, "vkBindAccelerationStructureMemoryNV");
847     table->CmdBuildAccelerationStructureNV = (PFN_vkCmdBuildAccelerationStructureNV)gdpa(dev, "vkCmdBuildAccelerationStructureNV");
848     table->CmdCopyAccelerationStructureNV = (PFN_vkCmdCopyAccelerationStructureNV)gdpa(dev, "vkCmdCopyAccelerationStructureNV");
849     table->CmdTraceRaysNV = (PFN_vkCmdTraceRaysNV)gdpa(dev, "vkCmdTraceRaysNV");
850     table->CreateRayTracingPipelinesNV = (PFN_vkCreateRayTracingPipelinesNV)gdpa(dev, "vkCreateRayTracingPipelinesNV");
851     table->GetRayTracingShaderGroupHandlesKHR = (PFN_vkGetRayTracingShaderGroupHandlesKHR)gdpa(dev, "vkGetRayTracingShaderGroupHandlesKHR");
852     table->GetRayTracingShaderGroupHandlesNV = (PFN_vkGetRayTracingShaderGroupHandlesNV)gdpa(dev, "vkGetRayTracingShaderGroupHandlesNV");
853     table->GetAccelerationStructureHandleNV = (PFN_vkGetAccelerationStructureHandleNV)gdpa(dev, "vkGetAccelerationStructureHandleNV");
854     table->CmdWriteAccelerationStructuresPropertiesNV = (PFN_vkCmdWriteAccelerationStructuresPropertiesNV)gdpa(dev, "vkCmdWriteAccelerationStructuresPropertiesNV");
855     table->CompileDeferredNV = (PFN_vkCompileDeferredNV)gdpa(dev, "vkCompileDeferredNV");
856 
857     // ---- VK_EXT_external_memory_host extension commands
858     table->GetMemoryHostPointerPropertiesEXT = (PFN_vkGetMemoryHostPointerPropertiesEXT)gdpa(dev, "vkGetMemoryHostPointerPropertiesEXT");
859 
860     // ---- VK_AMD_buffer_marker extension commands
861     table->CmdWriteBufferMarkerAMD = (PFN_vkCmdWriteBufferMarkerAMD)gdpa(dev, "vkCmdWriteBufferMarkerAMD");
862 
863     // ---- VK_EXT_calibrated_timestamps extension commands
864     table->GetCalibratedTimestampsEXT = (PFN_vkGetCalibratedTimestampsEXT)gdpa(dev, "vkGetCalibratedTimestampsEXT");
865 
866     // ---- VK_NV_mesh_shader extension commands
867     table->CmdDrawMeshTasksNV = (PFN_vkCmdDrawMeshTasksNV)gdpa(dev, "vkCmdDrawMeshTasksNV");
868     table->CmdDrawMeshTasksIndirectNV = (PFN_vkCmdDrawMeshTasksIndirectNV)gdpa(dev, "vkCmdDrawMeshTasksIndirectNV");
869     table->CmdDrawMeshTasksIndirectCountNV = (PFN_vkCmdDrawMeshTasksIndirectCountNV)gdpa(dev, "vkCmdDrawMeshTasksIndirectCountNV");
870 
871     // ---- VK_NV_scissor_exclusive extension commands
872     table->CmdSetExclusiveScissorNV = (PFN_vkCmdSetExclusiveScissorNV)gdpa(dev, "vkCmdSetExclusiveScissorNV");
873 
874     // ---- VK_NV_device_diagnostic_checkpoints extension commands
875     table->CmdSetCheckpointNV = (PFN_vkCmdSetCheckpointNV)gdpa(dev, "vkCmdSetCheckpointNV");
876     table->GetQueueCheckpointDataNV = (PFN_vkGetQueueCheckpointDataNV)gdpa(dev, "vkGetQueueCheckpointDataNV");
877 
878     // ---- VK_INTEL_performance_query extension commands
879     table->InitializePerformanceApiINTEL = (PFN_vkInitializePerformanceApiINTEL)gdpa(dev, "vkInitializePerformanceApiINTEL");
880     table->UninitializePerformanceApiINTEL = (PFN_vkUninitializePerformanceApiINTEL)gdpa(dev, "vkUninitializePerformanceApiINTEL");
881     table->CmdSetPerformanceMarkerINTEL = (PFN_vkCmdSetPerformanceMarkerINTEL)gdpa(dev, "vkCmdSetPerformanceMarkerINTEL");
882     table->CmdSetPerformanceStreamMarkerINTEL = (PFN_vkCmdSetPerformanceStreamMarkerINTEL)gdpa(dev, "vkCmdSetPerformanceStreamMarkerINTEL");
883     table->CmdSetPerformanceOverrideINTEL = (PFN_vkCmdSetPerformanceOverrideINTEL)gdpa(dev, "vkCmdSetPerformanceOverrideINTEL");
884     table->AcquirePerformanceConfigurationINTEL = (PFN_vkAcquirePerformanceConfigurationINTEL)gdpa(dev, "vkAcquirePerformanceConfigurationINTEL");
885     table->ReleasePerformanceConfigurationINTEL = (PFN_vkReleasePerformanceConfigurationINTEL)gdpa(dev, "vkReleasePerformanceConfigurationINTEL");
886     table->QueueSetPerformanceConfigurationINTEL = (PFN_vkQueueSetPerformanceConfigurationINTEL)gdpa(dev, "vkQueueSetPerformanceConfigurationINTEL");
887     table->GetPerformanceParameterINTEL = (PFN_vkGetPerformanceParameterINTEL)gdpa(dev, "vkGetPerformanceParameterINTEL");
888 
889     // ---- VK_AMD_display_native_hdr extension commands
890     table->SetLocalDimmingAMD = (PFN_vkSetLocalDimmingAMD)gdpa(dev, "vkSetLocalDimmingAMD");
891 
892     // ---- VK_EXT_buffer_device_address extension commands
893     table->GetBufferDeviceAddressEXT = (PFN_vkGetBufferDeviceAddressEXT)gdpa(dev, "vkGetBufferDeviceAddressEXT");
894 
895     // ---- VK_EXT_full_screen_exclusive extension commands
896 #ifdef VK_USE_PLATFORM_WIN32_KHR
897     table->AcquireFullScreenExclusiveModeEXT = (PFN_vkAcquireFullScreenExclusiveModeEXT)gdpa(dev, "vkAcquireFullScreenExclusiveModeEXT");
898 #endif // VK_USE_PLATFORM_WIN32_KHR
899 #ifdef VK_USE_PLATFORM_WIN32_KHR
900     table->ReleaseFullScreenExclusiveModeEXT = (PFN_vkReleaseFullScreenExclusiveModeEXT)gdpa(dev, "vkReleaseFullScreenExclusiveModeEXT");
901 #endif // VK_USE_PLATFORM_WIN32_KHR
902 #ifdef VK_USE_PLATFORM_WIN32_KHR
903     table->GetDeviceGroupSurfacePresentModes2EXT = (PFN_vkGetDeviceGroupSurfacePresentModes2EXT)gdpa(dev, "vkGetDeviceGroupSurfacePresentModes2EXT");
904 #endif // VK_USE_PLATFORM_WIN32_KHR
905 
906     // ---- VK_EXT_line_rasterization extension commands
907     table->CmdSetLineStippleEXT = (PFN_vkCmdSetLineStippleEXT)gdpa(dev, "vkCmdSetLineStippleEXT");
908 
909     // ---- VK_EXT_host_query_reset extension commands
910     table->ResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT)gdpa(dev, "vkResetQueryPoolEXT");
911 
912     // ---- VK_EXT_extended_dynamic_state extension commands
913     table->CmdSetCullModeEXT = (PFN_vkCmdSetCullModeEXT)gdpa(dev, "vkCmdSetCullModeEXT");
914     table->CmdSetFrontFaceEXT = (PFN_vkCmdSetFrontFaceEXT)gdpa(dev, "vkCmdSetFrontFaceEXT");
915     table->CmdSetPrimitiveTopologyEXT = (PFN_vkCmdSetPrimitiveTopologyEXT)gdpa(dev, "vkCmdSetPrimitiveTopologyEXT");
916     table->CmdSetViewportWithCountEXT = (PFN_vkCmdSetViewportWithCountEXT)gdpa(dev, "vkCmdSetViewportWithCountEXT");
917     table->CmdSetScissorWithCountEXT = (PFN_vkCmdSetScissorWithCountEXT)gdpa(dev, "vkCmdSetScissorWithCountEXT");
918     table->CmdBindVertexBuffers2EXT = (PFN_vkCmdBindVertexBuffers2EXT)gdpa(dev, "vkCmdBindVertexBuffers2EXT");
919     table->CmdSetDepthTestEnableEXT = (PFN_vkCmdSetDepthTestEnableEXT)gdpa(dev, "vkCmdSetDepthTestEnableEXT");
920     table->CmdSetDepthWriteEnableEXT = (PFN_vkCmdSetDepthWriteEnableEXT)gdpa(dev, "vkCmdSetDepthWriteEnableEXT");
921     table->CmdSetDepthCompareOpEXT = (PFN_vkCmdSetDepthCompareOpEXT)gdpa(dev, "vkCmdSetDepthCompareOpEXT");
922     table->CmdSetDepthBoundsTestEnableEXT = (PFN_vkCmdSetDepthBoundsTestEnableEXT)gdpa(dev, "vkCmdSetDepthBoundsTestEnableEXT");
923     table->CmdSetStencilTestEnableEXT = (PFN_vkCmdSetStencilTestEnableEXT)gdpa(dev, "vkCmdSetStencilTestEnableEXT");
924     table->CmdSetStencilOpEXT = (PFN_vkCmdSetStencilOpEXT)gdpa(dev, "vkCmdSetStencilOpEXT");
925 
926     // ---- VK_NV_device_generated_commands extension commands
927     table->GetGeneratedCommandsMemoryRequirementsNV = (PFN_vkGetGeneratedCommandsMemoryRequirementsNV)gdpa(dev, "vkGetGeneratedCommandsMemoryRequirementsNV");
928     table->CmdPreprocessGeneratedCommandsNV = (PFN_vkCmdPreprocessGeneratedCommandsNV)gdpa(dev, "vkCmdPreprocessGeneratedCommandsNV");
929     table->CmdExecuteGeneratedCommandsNV = (PFN_vkCmdExecuteGeneratedCommandsNV)gdpa(dev, "vkCmdExecuteGeneratedCommandsNV");
930     table->CmdBindPipelineShaderGroupNV = (PFN_vkCmdBindPipelineShaderGroupNV)gdpa(dev, "vkCmdBindPipelineShaderGroupNV");
931     table->CreateIndirectCommandsLayoutNV = (PFN_vkCreateIndirectCommandsLayoutNV)gdpa(dev, "vkCreateIndirectCommandsLayoutNV");
932     table->DestroyIndirectCommandsLayoutNV = (PFN_vkDestroyIndirectCommandsLayoutNV)gdpa(dev, "vkDestroyIndirectCommandsLayoutNV");
933 
934     // ---- VK_EXT_private_data extension commands
935     table->CreatePrivateDataSlotEXT = (PFN_vkCreatePrivateDataSlotEXT)gdpa(dev, "vkCreatePrivateDataSlotEXT");
936     table->DestroyPrivateDataSlotEXT = (PFN_vkDestroyPrivateDataSlotEXT)gdpa(dev, "vkDestroyPrivateDataSlotEXT");
937     table->SetPrivateDataEXT = (PFN_vkSetPrivateDataEXT)gdpa(dev, "vkSetPrivateDataEXT");
938     table->GetPrivateDataEXT = (PFN_vkGetPrivateDataEXT)gdpa(dev, "vkGetPrivateDataEXT");
939 
940     // ---- VK_EXT_metal_objects extension commands
941 #ifdef VK_USE_PLATFORM_METAL_EXT
942     table->ExportMetalObjectsEXT = (PFN_vkExportMetalObjectsEXT)gdpa(dev, "vkExportMetalObjectsEXT");
943 #endif // VK_USE_PLATFORM_METAL_EXT
944 
945     // ---- VK_NV_fragment_shading_rate_enums extension commands
946     table->CmdSetFragmentShadingRateEnumNV = (PFN_vkCmdSetFragmentShadingRateEnumNV)gdpa(dev, "vkCmdSetFragmentShadingRateEnumNV");
947 
948     // ---- VK_EXT_image_compression_control extension commands
949     table->GetImageSubresourceLayout2EXT = (PFN_vkGetImageSubresourceLayout2EXT)gdpa(dev, "vkGetImageSubresourceLayout2EXT");
950 
951     // ---- VK_EXT_device_fault extension commands
952     table->GetDeviceFaultInfoEXT = (PFN_vkGetDeviceFaultInfoEXT)gdpa(dev, "vkGetDeviceFaultInfoEXT");
953 
954     // ---- VK_EXT_vertex_input_dynamic_state extension commands
955     table->CmdSetVertexInputEXT = (PFN_vkCmdSetVertexInputEXT)gdpa(dev, "vkCmdSetVertexInputEXT");
956 
957     // ---- VK_FUCHSIA_external_memory extension commands
958 #ifdef VK_USE_PLATFORM_FUCHSIA
959     table->GetMemoryZirconHandleFUCHSIA = (PFN_vkGetMemoryZirconHandleFUCHSIA)gdpa(dev, "vkGetMemoryZirconHandleFUCHSIA");
960 #endif // VK_USE_PLATFORM_FUCHSIA
961 #ifdef VK_USE_PLATFORM_FUCHSIA
962     table->GetMemoryZirconHandlePropertiesFUCHSIA = (PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)gdpa(dev, "vkGetMemoryZirconHandlePropertiesFUCHSIA");
963 #endif // VK_USE_PLATFORM_FUCHSIA
964 
965     // ---- VK_FUCHSIA_external_semaphore extension commands
966 #ifdef VK_USE_PLATFORM_FUCHSIA
967     table->ImportSemaphoreZirconHandleFUCHSIA = (PFN_vkImportSemaphoreZirconHandleFUCHSIA)gdpa(dev, "vkImportSemaphoreZirconHandleFUCHSIA");
968 #endif // VK_USE_PLATFORM_FUCHSIA
969 #ifdef VK_USE_PLATFORM_FUCHSIA
970     table->GetSemaphoreZirconHandleFUCHSIA = (PFN_vkGetSemaphoreZirconHandleFUCHSIA)gdpa(dev, "vkGetSemaphoreZirconHandleFUCHSIA");
971 #endif // VK_USE_PLATFORM_FUCHSIA
972 
973     // ---- VK_FUCHSIA_buffer_collection extension commands
974 #ifdef VK_USE_PLATFORM_FUCHSIA
975     table->CreateBufferCollectionFUCHSIA = (PFN_vkCreateBufferCollectionFUCHSIA)gdpa(dev, "vkCreateBufferCollectionFUCHSIA");
976 #endif // VK_USE_PLATFORM_FUCHSIA
977 #ifdef VK_USE_PLATFORM_FUCHSIA
978     table->SetBufferCollectionImageConstraintsFUCHSIA = (PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)gdpa(dev, "vkSetBufferCollectionImageConstraintsFUCHSIA");
979 #endif // VK_USE_PLATFORM_FUCHSIA
980 #ifdef VK_USE_PLATFORM_FUCHSIA
981     table->SetBufferCollectionBufferConstraintsFUCHSIA = (PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)gdpa(dev, "vkSetBufferCollectionBufferConstraintsFUCHSIA");
982 #endif // VK_USE_PLATFORM_FUCHSIA
983 #ifdef VK_USE_PLATFORM_FUCHSIA
984     table->DestroyBufferCollectionFUCHSIA = (PFN_vkDestroyBufferCollectionFUCHSIA)gdpa(dev, "vkDestroyBufferCollectionFUCHSIA");
985 #endif // VK_USE_PLATFORM_FUCHSIA
986 #ifdef VK_USE_PLATFORM_FUCHSIA
987     table->GetBufferCollectionPropertiesFUCHSIA = (PFN_vkGetBufferCollectionPropertiesFUCHSIA)gdpa(dev, "vkGetBufferCollectionPropertiesFUCHSIA");
988 #endif // VK_USE_PLATFORM_FUCHSIA
989 
990     // ---- VK_HUAWEI_subpass_shading extension commands
991     table->GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = (PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI)gdpa(dev, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI");
992     table->CmdSubpassShadingHUAWEI = (PFN_vkCmdSubpassShadingHUAWEI)gdpa(dev, "vkCmdSubpassShadingHUAWEI");
993 
994     // ---- VK_HUAWEI_invocation_mask extension commands
995     table->CmdBindInvocationMaskHUAWEI = (PFN_vkCmdBindInvocationMaskHUAWEI)gdpa(dev, "vkCmdBindInvocationMaskHUAWEI");
996 
997     // ---- VK_NV_external_memory_rdma extension commands
998     table->GetMemoryRemoteAddressNV = (PFN_vkGetMemoryRemoteAddressNV)gdpa(dev, "vkGetMemoryRemoteAddressNV");
999 
1000     // ---- VK_EXT_pipeline_properties extension commands
1001     table->GetPipelinePropertiesEXT = (PFN_vkGetPipelinePropertiesEXT)gdpa(dev, "vkGetPipelinePropertiesEXT");
1002 
1003     // ---- VK_EXT_extended_dynamic_state2 extension commands
1004     table->CmdSetPatchControlPointsEXT = (PFN_vkCmdSetPatchControlPointsEXT)gdpa(dev, "vkCmdSetPatchControlPointsEXT");
1005     table->CmdSetRasterizerDiscardEnableEXT = (PFN_vkCmdSetRasterizerDiscardEnableEXT)gdpa(dev, "vkCmdSetRasterizerDiscardEnableEXT");
1006     table->CmdSetDepthBiasEnableEXT = (PFN_vkCmdSetDepthBiasEnableEXT)gdpa(dev, "vkCmdSetDepthBiasEnableEXT");
1007     table->CmdSetLogicOpEXT = (PFN_vkCmdSetLogicOpEXT)gdpa(dev, "vkCmdSetLogicOpEXT");
1008     table->CmdSetPrimitiveRestartEnableEXT = (PFN_vkCmdSetPrimitiveRestartEnableEXT)gdpa(dev, "vkCmdSetPrimitiveRestartEnableEXT");
1009 
1010     // ---- VK_EXT_color_write_enable extension commands
1011     table->CmdSetColorWriteEnableEXT = (PFN_vkCmdSetColorWriteEnableEXT)gdpa(dev, "vkCmdSetColorWriteEnableEXT");
1012 
1013     // ---- VK_EXT_multi_draw extension commands
1014     table->CmdDrawMultiEXT = (PFN_vkCmdDrawMultiEXT)gdpa(dev, "vkCmdDrawMultiEXT");
1015     table->CmdDrawMultiIndexedEXT = (PFN_vkCmdDrawMultiIndexedEXT)gdpa(dev, "vkCmdDrawMultiIndexedEXT");
1016 
1017     // ---- VK_EXT_opacity_micromap extension commands
1018     table->CreateMicromapEXT = (PFN_vkCreateMicromapEXT)gdpa(dev, "vkCreateMicromapEXT");
1019     table->DestroyMicromapEXT = (PFN_vkDestroyMicromapEXT)gdpa(dev, "vkDestroyMicromapEXT");
1020     table->CmdBuildMicromapsEXT = (PFN_vkCmdBuildMicromapsEXT)gdpa(dev, "vkCmdBuildMicromapsEXT");
1021     table->BuildMicromapsEXT = (PFN_vkBuildMicromapsEXT)gdpa(dev, "vkBuildMicromapsEXT");
1022     table->CopyMicromapEXT = (PFN_vkCopyMicromapEXT)gdpa(dev, "vkCopyMicromapEXT");
1023     table->CopyMicromapToMemoryEXT = (PFN_vkCopyMicromapToMemoryEXT)gdpa(dev, "vkCopyMicromapToMemoryEXT");
1024     table->CopyMemoryToMicromapEXT = (PFN_vkCopyMemoryToMicromapEXT)gdpa(dev, "vkCopyMemoryToMicromapEXT");
1025     table->WriteMicromapsPropertiesEXT = (PFN_vkWriteMicromapsPropertiesEXT)gdpa(dev, "vkWriteMicromapsPropertiesEXT");
1026     table->CmdCopyMicromapEXT = (PFN_vkCmdCopyMicromapEXT)gdpa(dev, "vkCmdCopyMicromapEXT");
1027     table->CmdCopyMicromapToMemoryEXT = (PFN_vkCmdCopyMicromapToMemoryEXT)gdpa(dev, "vkCmdCopyMicromapToMemoryEXT");
1028     table->CmdCopyMemoryToMicromapEXT = (PFN_vkCmdCopyMemoryToMicromapEXT)gdpa(dev, "vkCmdCopyMemoryToMicromapEXT");
1029     table->CmdWriteMicromapsPropertiesEXT = (PFN_vkCmdWriteMicromapsPropertiesEXT)gdpa(dev, "vkCmdWriteMicromapsPropertiesEXT");
1030     table->GetDeviceMicromapCompatibilityEXT = (PFN_vkGetDeviceMicromapCompatibilityEXT)gdpa(dev, "vkGetDeviceMicromapCompatibilityEXT");
1031     table->GetMicromapBuildSizesEXT = (PFN_vkGetMicromapBuildSizesEXT)gdpa(dev, "vkGetMicromapBuildSizesEXT");
1032 
1033     // ---- VK_EXT_pageable_device_local_memory extension commands
1034     table->SetDeviceMemoryPriorityEXT = (PFN_vkSetDeviceMemoryPriorityEXT)gdpa(dev, "vkSetDeviceMemoryPriorityEXT");
1035 
1036     // ---- VK_VALVE_descriptor_set_host_mapping extension commands
1037     table->GetDescriptorSetLayoutHostMappingInfoVALVE = (PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE)gdpa(dev, "vkGetDescriptorSetLayoutHostMappingInfoVALVE");
1038     table->GetDescriptorSetHostMappingVALVE = (PFN_vkGetDescriptorSetHostMappingVALVE)gdpa(dev, "vkGetDescriptorSetHostMappingVALVE");
1039 
1040     // ---- VK_EXT_extended_dynamic_state3 extension commands
1041     table->CmdSetTessellationDomainOriginEXT = (PFN_vkCmdSetTessellationDomainOriginEXT)gdpa(dev, "vkCmdSetTessellationDomainOriginEXT");
1042     table->CmdSetDepthClampEnableEXT = (PFN_vkCmdSetDepthClampEnableEXT)gdpa(dev, "vkCmdSetDepthClampEnableEXT");
1043     table->CmdSetPolygonModeEXT = (PFN_vkCmdSetPolygonModeEXT)gdpa(dev, "vkCmdSetPolygonModeEXT");
1044     table->CmdSetRasterizationSamplesEXT = (PFN_vkCmdSetRasterizationSamplesEXT)gdpa(dev, "vkCmdSetRasterizationSamplesEXT");
1045     table->CmdSetSampleMaskEXT = (PFN_vkCmdSetSampleMaskEXT)gdpa(dev, "vkCmdSetSampleMaskEXT");
1046     table->CmdSetAlphaToCoverageEnableEXT = (PFN_vkCmdSetAlphaToCoverageEnableEXT)gdpa(dev, "vkCmdSetAlphaToCoverageEnableEXT");
1047     table->CmdSetAlphaToOneEnableEXT = (PFN_vkCmdSetAlphaToOneEnableEXT)gdpa(dev, "vkCmdSetAlphaToOneEnableEXT");
1048     table->CmdSetLogicOpEnableEXT = (PFN_vkCmdSetLogicOpEnableEXT)gdpa(dev, "vkCmdSetLogicOpEnableEXT");
1049     table->CmdSetColorBlendEnableEXT = (PFN_vkCmdSetColorBlendEnableEXT)gdpa(dev, "vkCmdSetColorBlendEnableEXT");
1050     table->CmdSetColorBlendEquationEXT = (PFN_vkCmdSetColorBlendEquationEXT)gdpa(dev, "vkCmdSetColorBlendEquationEXT");
1051     table->CmdSetColorWriteMaskEXT = (PFN_vkCmdSetColorWriteMaskEXT)gdpa(dev, "vkCmdSetColorWriteMaskEXT");
1052     table->CmdSetRasterizationStreamEXT = (PFN_vkCmdSetRasterizationStreamEXT)gdpa(dev, "vkCmdSetRasterizationStreamEXT");
1053     table->CmdSetConservativeRasterizationModeEXT = (PFN_vkCmdSetConservativeRasterizationModeEXT)gdpa(dev, "vkCmdSetConservativeRasterizationModeEXT");
1054     table->CmdSetExtraPrimitiveOverestimationSizeEXT = (PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT)gdpa(dev, "vkCmdSetExtraPrimitiveOverestimationSizeEXT");
1055     table->CmdSetDepthClipEnableEXT = (PFN_vkCmdSetDepthClipEnableEXT)gdpa(dev, "vkCmdSetDepthClipEnableEXT");
1056     table->CmdSetSampleLocationsEnableEXT = (PFN_vkCmdSetSampleLocationsEnableEXT)gdpa(dev, "vkCmdSetSampleLocationsEnableEXT");
1057     table->CmdSetColorBlendAdvancedEXT = (PFN_vkCmdSetColorBlendAdvancedEXT)gdpa(dev, "vkCmdSetColorBlendAdvancedEXT");
1058     table->CmdSetProvokingVertexModeEXT = (PFN_vkCmdSetProvokingVertexModeEXT)gdpa(dev, "vkCmdSetProvokingVertexModeEXT");
1059     table->CmdSetLineRasterizationModeEXT = (PFN_vkCmdSetLineRasterizationModeEXT)gdpa(dev, "vkCmdSetLineRasterizationModeEXT");
1060     table->CmdSetLineStippleEnableEXT = (PFN_vkCmdSetLineStippleEnableEXT)gdpa(dev, "vkCmdSetLineStippleEnableEXT");
1061     table->CmdSetDepthClipNegativeOneToOneEXT = (PFN_vkCmdSetDepthClipNegativeOneToOneEXT)gdpa(dev, "vkCmdSetDepthClipNegativeOneToOneEXT");
1062     table->CmdSetViewportWScalingEnableNV = (PFN_vkCmdSetViewportWScalingEnableNV)gdpa(dev, "vkCmdSetViewportWScalingEnableNV");
1063     table->CmdSetViewportSwizzleNV = (PFN_vkCmdSetViewportSwizzleNV)gdpa(dev, "vkCmdSetViewportSwizzleNV");
1064     table->CmdSetCoverageToColorEnableNV = (PFN_vkCmdSetCoverageToColorEnableNV)gdpa(dev, "vkCmdSetCoverageToColorEnableNV");
1065     table->CmdSetCoverageToColorLocationNV = (PFN_vkCmdSetCoverageToColorLocationNV)gdpa(dev, "vkCmdSetCoverageToColorLocationNV");
1066     table->CmdSetCoverageModulationModeNV = (PFN_vkCmdSetCoverageModulationModeNV)gdpa(dev, "vkCmdSetCoverageModulationModeNV");
1067     table->CmdSetCoverageModulationTableEnableNV = (PFN_vkCmdSetCoverageModulationTableEnableNV)gdpa(dev, "vkCmdSetCoverageModulationTableEnableNV");
1068     table->CmdSetCoverageModulationTableNV = (PFN_vkCmdSetCoverageModulationTableNV)gdpa(dev, "vkCmdSetCoverageModulationTableNV");
1069     table->CmdSetShadingRateImageEnableNV = (PFN_vkCmdSetShadingRateImageEnableNV)gdpa(dev, "vkCmdSetShadingRateImageEnableNV");
1070     table->CmdSetRepresentativeFragmentTestEnableNV = (PFN_vkCmdSetRepresentativeFragmentTestEnableNV)gdpa(dev, "vkCmdSetRepresentativeFragmentTestEnableNV");
1071     table->CmdSetCoverageReductionModeNV = (PFN_vkCmdSetCoverageReductionModeNV)gdpa(dev, "vkCmdSetCoverageReductionModeNV");
1072 
1073     // ---- VK_EXT_shader_module_identifier extension commands
1074     table->GetShaderModuleIdentifierEXT = (PFN_vkGetShaderModuleIdentifierEXT)gdpa(dev, "vkGetShaderModuleIdentifierEXT");
1075     table->GetShaderModuleCreateInfoIdentifierEXT = (PFN_vkGetShaderModuleCreateInfoIdentifierEXT)gdpa(dev, "vkGetShaderModuleCreateInfoIdentifierEXT");
1076 
1077     // ---- VK_NV_optical_flow extension commands
1078     table->CreateOpticalFlowSessionNV = (PFN_vkCreateOpticalFlowSessionNV)gdpa(dev, "vkCreateOpticalFlowSessionNV");
1079     table->DestroyOpticalFlowSessionNV = (PFN_vkDestroyOpticalFlowSessionNV)gdpa(dev, "vkDestroyOpticalFlowSessionNV");
1080     table->BindOpticalFlowSessionImageNV = (PFN_vkBindOpticalFlowSessionImageNV)gdpa(dev, "vkBindOpticalFlowSessionImageNV");
1081     table->CmdOpticalFlowExecuteNV = (PFN_vkCmdOpticalFlowExecuteNV)gdpa(dev, "vkCmdOpticalFlowExecuteNV");
1082 
1083     // ---- VK_QCOM_tile_properties extension commands
1084     table->GetFramebufferTilePropertiesQCOM = (PFN_vkGetFramebufferTilePropertiesQCOM)gdpa(dev, "vkGetFramebufferTilePropertiesQCOM");
1085     table->GetDynamicRenderingTilePropertiesQCOM = (PFN_vkGetDynamicRenderingTilePropertiesQCOM)gdpa(dev, "vkGetDynamicRenderingTilePropertiesQCOM");
1086 
1087     // ---- VK_OHOS_native_buffer extension commands
1088 #ifdef VK_USE_PLATFORM_OHOS
1089     table->SetNativeFenceFdOpenHarmony = (PFN_vkSetNativeFenceFdOpenHarmony)gdpa(dev, "vkSetNativeFenceFdOpenHarmony");
1090 #endif // VK_USE_PLATFORM_OHOS
1091 #ifdef VK_USE_PLATFORM_OHOS
1092     table->GetNativeFenceFdOpenHarmony = (PFN_vkGetNativeFenceFdOpenHarmony)gdpa(dev, "vkGetNativeFenceFdOpenHarmony");
1093 #endif // VK_USE_PLATFORM_OHOS
1094 #ifdef VK_USE_PLATFORM_OHOS
1095     table->GetSwapchainGrallocUsageOHOS = (PFN_vkGetSwapchainGrallocUsageOHOS)gdpa(dev, "vkGetSwapchainGrallocUsageOHOS");
1096 #endif // VK_USE_PLATFORM_OHOS
1097 #ifdef VK_USE_PLATFORM_OHOS
1098     table->AcquireImageOHOS = (PFN_vkAcquireImageOHOS)gdpa(dev, "vkAcquireImageOHOS");
1099 #endif // VK_USE_PLATFORM_OHOS
1100 #ifdef VK_USE_PLATFORM_OHOS
1101     table->QueueSignalReleaseImageOHOS = (PFN_vkQueueSignalReleaseImageOHOS)gdpa(dev, "vkQueueSignalReleaseImageOHOS");
1102 #endif // VK_USE_PLATFORM_OHOS
1103 
1104     // ---- VK_OHOS_external_memory extension commands
1105 #ifdef VK_USE_PLATFORM_OHOS
1106     table->GetNativeBufferPropertiesOHOS = (PFN_vkGetNativeBufferPropertiesOHOS)gdpa(dev, "vkGetNativeBufferPropertiesOHOS");
1107 #endif // VK_USE_PLATFORM_OHOS
1108 #ifdef VK_USE_PLATFORM_OHOS
1109     table->GetMemoryNativeBufferOHOS = (PFN_vkGetMemoryNativeBufferOHOS)gdpa(dev, "vkGetMemoryNativeBufferOHOS");
1110 #endif // VK_USE_PLATFORM_OHOS
1111 
1112     // ---- VK_KHR_acceleration_structure extension commands
1113     table->CreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)gdpa(dev, "vkCreateAccelerationStructureKHR");
1114     table->DestroyAccelerationStructureKHR = (PFN_vkDestroyAccelerationStructureKHR)gdpa(dev, "vkDestroyAccelerationStructureKHR");
1115     table->CmdBuildAccelerationStructuresKHR = (PFN_vkCmdBuildAccelerationStructuresKHR)gdpa(dev, "vkCmdBuildAccelerationStructuresKHR");
1116     table->CmdBuildAccelerationStructuresIndirectKHR = (PFN_vkCmdBuildAccelerationStructuresIndirectKHR)gdpa(dev, "vkCmdBuildAccelerationStructuresIndirectKHR");
1117     table->BuildAccelerationStructuresKHR = (PFN_vkBuildAccelerationStructuresKHR)gdpa(dev, "vkBuildAccelerationStructuresKHR");
1118     table->CopyAccelerationStructureKHR = (PFN_vkCopyAccelerationStructureKHR)gdpa(dev, "vkCopyAccelerationStructureKHR");
1119     table->CopyAccelerationStructureToMemoryKHR = (PFN_vkCopyAccelerationStructureToMemoryKHR)gdpa(dev, "vkCopyAccelerationStructureToMemoryKHR");
1120     table->CopyMemoryToAccelerationStructureKHR = (PFN_vkCopyMemoryToAccelerationStructureKHR)gdpa(dev, "vkCopyMemoryToAccelerationStructureKHR");
1121     table->WriteAccelerationStructuresPropertiesKHR = (PFN_vkWriteAccelerationStructuresPropertiesKHR)gdpa(dev, "vkWriteAccelerationStructuresPropertiesKHR");
1122     table->CmdCopyAccelerationStructureKHR = (PFN_vkCmdCopyAccelerationStructureKHR)gdpa(dev, "vkCmdCopyAccelerationStructureKHR");
1123     table->CmdCopyAccelerationStructureToMemoryKHR = (PFN_vkCmdCopyAccelerationStructureToMemoryKHR)gdpa(dev, "vkCmdCopyAccelerationStructureToMemoryKHR");
1124     table->CmdCopyMemoryToAccelerationStructureKHR = (PFN_vkCmdCopyMemoryToAccelerationStructureKHR)gdpa(dev, "vkCmdCopyMemoryToAccelerationStructureKHR");
1125     table->GetAccelerationStructureDeviceAddressKHR = (PFN_vkGetAccelerationStructureDeviceAddressKHR)gdpa(dev, "vkGetAccelerationStructureDeviceAddressKHR");
1126     table->CmdWriteAccelerationStructuresPropertiesKHR = (PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)gdpa(dev, "vkCmdWriteAccelerationStructuresPropertiesKHR");
1127     table->GetDeviceAccelerationStructureCompatibilityKHR = (PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)gdpa(dev, "vkGetDeviceAccelerationStructureCompatibilityKHR");
1128     table->GetAccelerationStructureBuildSizesKHR = (PFN_vkGetAccelerationStructureBuildSizesKHR)gdpa(dev, "vkGetAccelerationStructureBuildSizesKHR");
1129 
1130     // ---- VK_KHR_ray_tracing_pipeline extension commands
1131     table->CmdTraceRaysKHR = (PFN_vkCmdTraceRaysKHR)gdpa(dev, "vkCmdTraceRaysKHR");
1132     table->CreateRayTracingPipelinesKHR = (PFN_vkCreateRayTracingPipelinesKHR)gdpa(dev, "vkCreateRayTracingPipelinesKHR");
1133     table->GetRayTracingCaptureReplayShaderGroupHandlesKHR = (PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)gdpa(dev, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
1134     table->CmdTraceRaysIndirectKHR = (PFN_vkCmdTraceRaysIndirectKHR)gdpa(dev, "vkCmdTraceRaysIndirectKHR");
1135     table->GetRayTracingShaderGroupStackSizeKHR = (PFN_vkGetRayTracingShaderGroupStackSizeKHR)gdpa(dev, "vkGetRayTracingShaderGroupStackSizeKHR");
1136     table->CmdSetRayTracingPipelineStackSizeKHR = (PFN_vkCmdSetRayTracingPipelineStackSizeKHR)gdpa(dev, "vkCmdSetRayTracingPipelineStackSizeKHR");
1137 
1138     // ---- VK_EXT_mesh_shader extension commands
1139     table->CmdDrawMeshTasksEXT = (PFN_vkCmdDrawMeshTasksEXT)gdpa(dev, "vkCmdDrawMeshTasksEXT");
1140     table->CmdDrawMeshTasksIndirectEXT = (PFN_vkCmdDrawMeshTasksIndirectEXT)gdpa(dev, "vkCmdDrawMeshTasksIndirectEXT");
1141     table->CmdDrawMeshTasksIndirectCountEXT = (PFN_vkCmdDrawMeshTasksIndirectCountEXT)gdpa(dev, "vkCmdDrawMeshTasksIndirectCountEXT");
1142 }
1143 
1144 // Init Instance function pointer dispatch table with core commands
loader_init_instance_core_dispatch_table(VkLayerInstanceDispatchTable * table,PFN_vkGetInstanceProcAddr gpa,VkInstance inst)1145 VKAPI_ATTR void VKAPI_CALL loader_init_instance_core_dispatch_table(VkLayerInstanceDispatchTable *table, PFN_vkGetInstanceProcAddr gpa,
1146                                                                     VkInstance inst) {
1147 
1148     // ---- Core 1_0 commands
1149     table->DestroyInstance = (PFN_vkDestroyInstance)gpa(inst, "vkDestroyInstance");
1150     table->EnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices)gpa(inst, "vkEnumeratePhysicalDevices");
1151     table->GetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures)gpa(inst, "vkGetPhysicalDeviceFeatures");
1152     table->GetPhysicalDeviceFormatProperties = (PFN_vkGetPhysicalDeviceFormatProperties)gpa(inst, "vkGetPhysicalDeviceFormatProperties");
1153     table->GetPhysicalDeviceImageFormatProperties = (PFN_vkGetPhysicalDeviceImageFormatProperties)gpa(inst, "vkGetPhysicalDeviceImageFormatProperties");
1154     table->GetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties)gpa(inst, "vkGetPhysicalDeviceProperties");
1155     table->GetPhysicalDeviceQueueFamilyProperties = (PFN_vkGetPhysicalDeviceQueueFamilyProperties)gpa(inst, "vkGetPhysicalDeviceQueueFamilyProperties");
1156     table->GetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties)gpa(inst, "vkGetPhysicalDeviceMemoryProperties");
1157     table->GetInstanceProcAddr = gpa;
1158     table->EnumerateDeviceExtensionProperties = (PFN_vkEnumerateDeviceExtensionProperties)gpa(inst, "vkEnumerateDeviceExtensionProperties");
1159     table->EnumerateDeviceLayerProperties = (PFN_vkEnumerateDeviceLayerProperties)gpa(inst, "vkEnumerateDeviceLayerProperties");
1160     table->GetPhysicalDeviceSparseImageFormatProperties = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties)gpa(inst, "vkGetPhysicalDeviceSparseImageFormatProperties");
1161 
1162     // ---- Core 1_1 commands
1163     table->EnumeratePhysicalDeviceGroups = (PFN_vkEnumeratePhysicalDeviceGroups)gpa(inst, "vkEnumeratePhysicalDeviceGroups");
1164     table->GetPhysicalDeviceFeatures2 = (PFN_vkGetPhysicalDeviceFeatures2)gpa(inst, "vkGetPhysicalDeviceFeatures2");
1165     table->GetPhysicalDeviceProperties2 = (PFN_vkGetPhysicalDeviceProperties2)gpa(inst, "vkGetPhysicalDeviceProperties2");
1166     table->GetPhysicalDeviceFormatProperties2 = (PFN_vkGetPhysicalDeviceFormatProperties2)gpa(inst, "vkGetPhysicalDeviceFormatProperties2");
1167     table->GetPhysicalDeviceImageFormatProperties2 = (PFN_vkGetPhysicalDeviceImageFormatProperties2)gpa(inst, "vkGetPhysicalDeviceImageFormatProperties2");
1168     table->GetPhysicalDeviceQueueFamilyProperties2 = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2)gpa(inst, "vkGetPhysicalDeviceQueueFamilyProperties2");
1169     table->GetPhysicalDeviceMemoryProperties2 = (PFN_vkGetPhysicalDeviceMemoryProperties2)gpa(inst, "vkGetPhysicalDeviceMemoryProperties2");
1170     table->GetPhysicalDeviceSparseImageFormatProperties2 = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)gpa(inst, "vkGetPhysicalDeviceSparseImageFormatProperties2");
1171     table->GetPhysicalDeviceExternalBufferProperties = (PFN_vkGetPhysicalDeviceExternalBufferProperties)gpa(inst, "vkGetPhysicalDeviceExternalBufferProperties");
1172     table->GetPhysicalDeviceExternalFenceProperties = (PFN_vkGetPhysicalDeviceExternalFenceProperties)gpa(inst, "vkGetPhysicalDeviceExternalFenceProperties");
1173     table->GetPhysicalDeviceExternalSemaphoreProperties = (PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)gpa(inst, "vkGetPhysicalDeviceExternalSemaphoreProperties");
1174 
1175     // ---- Core 1_3 commands
1176     table->GetPhysicalDeviceToolProperties = (PFN_vkGetPhysicalDeviceToolProperties)gpa(inst, "vkGetPhysicalDeviceToolProperties");
1177 }
1178 
1179 // Init Instance function pointer dispatch table with core commands
loader_init_instance_extension_dispatch_table(VkLayerInstanceDispatchTable * table,PFN_vkGetInstanceProcAddr gpa,VkInstance inst)1180 VKAPI_ATTR void VKAPI_CALL loader_init_instance_extension_dispatch_table(VkLayerInstanceDispatchTable *table, PFN_vkGetInstanceProcAddr gpa,
1181                                                                         VkInstance inst) {
1182 
1183     // ---- VK_KHR_surface extension commands
1184     table->DestroySurfaceKHR = (PFN_vkDestroySurfaceKHR)gpa(inst, "vkDestroySurfaceKHR");
1185     table->GetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR)gpa(inst, "vkGetPhysicalDeviceSurfaceSupportKHR");
1186     table->GetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)gpa(inst, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
1187     table->GetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)gpa(inst, "vkGetPhysicalDeviceSurfaceFormatsKHR");
1188     table->GetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)gpa(inst, "vkGetPhysicalDeviceSurfacePresentModesKHR");
1189 
1190     // ---- VK_KHR_swapchain extension commands
1191     table->GetPhysicalDevicePresentRectanglesKHR = (PFN_vkGetPhysicalDevicePresentRectanglesKHR)gpa(inst, "vkGetPhysicalDevicePresentRectanglesKHR");
1192 
1193     // ---- VK_KHR_display extension commands
1194     table->GetPhysicalDeviceDisplayPropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)gpa(inst, "vkGetPhysicalDeviceDisplayPropertiesKHR");
1195     table->GetPhysicalDeviceDisplayPlanePropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)gpa(inst, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
1196     table->GetDisplayPlaneSupportedDisplaysKHR = (PFN_vkGetDisplayPlaneSupportedDisplaysKHR)gpa(inst, "vkGetDisplayPlaneSupportedDisplaysKHR");
1197     table->GetDisplayModePropertiesKHR = (PFN_vkGetDisplayModePropertiesKHR)gpa(inst, "vkGetDisplayModePropertiesKHR");
1198     table->CreateDisplayModeKHR = (PFN_vkCreateDisplayModeKHR)gpa(inst, "vkCreateDisplayModeKHR");
1199     table->GetDisplayPlaneCapabilitiesKHR = (PFN_vkGetDisplayPlaneCapabilitiesKHR)gpa(inst, "vkGetDisplayPlaneCapabilitiesKHR");
1200     table->CreateDisplayPlaneSurfaceKHR = (PFN_vkCreateDisplayPlaneSurfaceKHR)gpa(inst, "vkCreateDisplayPlaneSurfaceKHR");
1201 
1202     // ---- VK_KHR_xlib_surface extension commands
1203 #ifdef VK_USE_PLATFORM_XLIB_KHR
1204     table->CreateXlibSurfaceKHR = (PFN_vkCreateXlibSurfaceKHR)gpa(inst, "vkCreateXlibSurfaceKHR");
1205 #endif // VK_USE_PLATFORM_XLIB_KHR
1206 #ifdef VK_USE_PLATFORM_XLIB_KHR
1207     table->GetPhysicalDeviceXlibPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)gpa(inst, "vkGetPhysicalDeviceXlibPresentationSupportKHR");
1208 #endif // VK_USE_PLATFORM_XLIB_KHR
1209 
1210     // ---- VK_KHR_xcb_surface extension commands
1211 #ifdef VK_USE_PLATFORM_XCB_KHR
1212     table->CreateXcbSurfaceKHR = (PFN_vkCreateXcbSurfaceKHR)gpa(inst, "vkCreateXcbSurfaceKHR");
1213 #endif // VK_USE_PLATFORM_XCB_KHR
1214 #ifdef VK_USE_PLATFORM_XCB_KHR
1215     table->GetPhysicalDeviceXcbPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)gpa(inst, "vkGetPhysicalDeviceXcbPresentationSupportKHR");
1216 #endif // VK_USE_PLATFORM_XCB_KHR
1217 
1218     // ---- VK_KHR_wayland_surface extension commands
1219 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
1220     table->CreateWaylandSurfaceKHR = (PFN_vkCreateWaylandSurfaceKHR)gpa(inst, "vkCreateWaylandSurfaceKHR");
1221 #endif // VK_USE_PLATFORM_WAYLAND_KHR
1222 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
1223     table->GetPhysicalDeviceWaylandPresentationSupportKHR = (PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)gpa(inst, "vkGetPhysicalDeviceWaylandPresentationSupportKHR");
1224 #endif // VK_USE_PLATFORM_WAYLAND_KHR
1225 
1226     // ---- VK_KHR_android_surface extension commands
1227 #ifdef VK_USE_PLATFORM_ANDROID_KHR
1228     table->CreateAndroidSurfaceKHR = (PFN_vkCreateAndroidSurfaceKHR)gpa(inst, "vkCreateAndroidSurfaceKHR");
1229 #endif // VK_USE_PLATFORM_ANDROID_KHR
1230 
1231     // ---- VK_KHR_win32_surface extension commands
1232 #ifdef VK_USE_PLATFORM_WIN32_KHR
1233     table->CreateWin32SurfaceKHR = (PFN_vkCreateWin32SurfaceKHR)gpa(inst, "vkCreateWin32SurfaceKHR");
1234 #endif // VK_USE_PLATFORM_WIN32_KHR
1235 #ifdef VK_USE_PLATFORM_WIN32_KHR
1236     table->GetPhysicalDeviceWin32PresentationSupportKHR = (PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)gpa(inst, "vkGetPhysicalDeviceWin32PresentationSupportKHR");
1237 #endif // VK_USE_PLATFORM_WIN32_KHR
1238 
1239     // ---- VK_KHR_video_queue extension commands
1240 #ifdef VK_ENABLE_BETA_EXTENSIONS
1241     table->GetPhysicalDeviceVideoCapabilitiesKHR = (PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)gpa(inst, "vkGetPhysicalDeviceVideoCapabilitiesKHR");
1242 #endif // VK_ENABLE_BETA_EXTENSIONS
1243 #ifdef VK_ENABLE_BETA_EXTENSIONS
1244     table->GetPhysicalDeviceVideoFormatPropertiesKHR = (PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)gpa(inst, "vkGetPhysicalDeviceVideoFormatPropertiesKHR");
1245 #endif // VK_ENABLE_BETA_EXTENSIONS
1246 
1247     // ---- VK_KHR_get_physical_device_properties2 extension commands
1248     table->GetPhysicalDeviceFeatures2KHR = (PFN_vkGetPhysicalDeviceFeatures2KHR)gpa(inst, "vkGetPhysicalDeviceFeatures2KHR");
1249     table->GetPhysicalDeviceProperties2KHR = (PFN_vkGetPhysicalDeviceProperties2KHR)gpa(inst, "vkGetPhysicalDeviceProperties2KHR");
1250     table->GetPhysicalDeviceFormatProperties2KHR = (PFN_vkGetPhysicalDeviceFormatProperties2KHR)gpa(inst, "vkGetPhysicalDeviceFormatProperties2KHR");
1251     table->GetPhysicalDeviceImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)gpa(inst, "vkGetPhysicalDeviceImageFormatProperties2KHR");
1252     table->GetPhysicalDeviceQueueFamilyProperties2KHR = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)gpa(inst, "vkGetPhysicalDeviceQueueFamilyProperties2KHR");
1253     table->GetPhysicalDeviceMemoryProperties2KHR = (PFN_vkGetPhysicalDeviceMemoryProperties2KHR)gpa(inst, "vkGetPhysicalDeviceMemoryProperties2KHR");
1254     table->GetPhysicalDeviceSparseImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)gpa(inst, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
1255 
1256     // ---- VK_KHR_device_group_creation extension commands
1257     table->EnumeratePhysicalDeviceGroupsKHR = (PFN_vkEnumeratePhysicalDeviceGroupsKHR)gpa(inst, "vkEnumeratePhysicalDeviceGroupsKHR");
1258 
1259     // ---- VK_KHR_external_memory_capabilities extension commands
1260     table->GetPhysicalDeviceExternalBufferPropertiesKHR = (PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)gpa(inst, "vkGetPhysicalDeviceExternalBufferPropertiesKHR");
1261 
1262     // ---- VK_KHR_external_semaphore_capabilities extension commands
1263     table->GetPhysicalDeviceExternalSemaphorePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)gpa(inst, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
1264 
1265     // ---- VK_KHR_external_fence_capabilities extension commands
1266     table->GetPhysicalDeviceExternalFencePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)gpa(inst, "vkGetPhysicalDeviceExternalFencePropertiesKHR");
1267 
1268     // ---- VK_KHR_performance_query extension commands
1269     table->EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = (PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)gpa(inst, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
1270     table->GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = (PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)gpa(inst, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
1271 
1272     // ---- VK_KHR_get_surface_capabilities2 extension commands
1273     table->GetPhysicalDeviceSurfaceCapabilities2KHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)gpa(inst, "vkGetPhysicalDeviceSurfaceCapabilities2KHR");
1274     table->GetPhysicalDeviceSurfaceFormats2KHR = (PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)gpa(inst, "vkGetPhysicalDeviceSurfaceFormats2KHR");
1275 
1276     // ---- VK_KHR_get_display_properties2 extension commands
1277     table->GetPhysicalDeviceDisplayProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayProperties2KHR)gpa(inst, "vkGetPhysicalDeviceDisplayProperties2KHR");
1278     table->GetPhysicalDeviceDisplayPlaneProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)gpa(inst, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
1279     table->GetDisplayModeProperties2KHR = (PFN_vkGetDisplayModeProperties2KHR)gpa(inst, "vkGetDisplayModeProperties2KHR");
1280     table->GetDisplayPlaneCapabilities2KHR = (PFN_vkGetDisplayPlaneCapabilities2KHR)gpa(inst, "vkGetDisplayPlaneCapabilities2KHR");
1281 
1282     // ---- VK_KHR_fragment_shading_rate extension commands
1283     table->GetPhysicalDeviceFragmentShadingRatesKHR = (PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR)gpa(inst, "vkGetPhysicalDeviceFragmentShadingRatesKHR");
1284 
1285     // ---- VK_EXT_debug_report extension commands
1286     table->CreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)gpa(inst, "vkCreateDebugReportCallbackEXT");
1287     table->DestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT)gpa(inst, "vkDestroyDebugReportCallbackEXT");
1288     table->DebugReportMessageEXT = (PFN_vkDebugReportMessageEXT)gpa(inst, "vkDebugReportMessageEXT");
1289 
1290     // ---- VK_GGP_stream_descriptor_surface extension commands
1291 #ifdef VK_USE_PLATFORM_GGP
1292     table->CreateStreamDescriptorSurfaceGGP = (PFN_vkCreateStreamDescriptorSurfaceGGP)gpa(inst, "vkCreateStreamDescriptorSurfaceGGP");
1293 #endif // VK_USE_PLATFORM_GGP
1294 
1295     // ---- VK_NV_external_memory_capabilities extension commands
1296     table->GetPhysicalDeviceExternalImageFormatPropertiesNV = (PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)gpa(inst, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
1297 
1298     // ---- VK_NN_vi_surface extension commands
1299 #ifdef VK_USE_PLATFORM_VI_NN
1300     table->CreateViSurfaceNN = (PFN_vkCreateViSurfaceNN)gpa(inst, "vkCreateViSurfaceNN");
1301 #endif // VK_USE_PLATFORM_VI_NN
1302 
1303     // ---- VK_EXT_direct_mode_display extension commands
1304     table->ReleaseDisplayEXT = (PFN_vkReleaseDisplayEXT)gpa(inst, "vkReleaseDisplayEXT");
1305 
1306     // ---- VK_EXT_acquire_xlib_display extension commands
1307 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
1308     table->AcquireXlibDisplayEXT = (PFN_vkAcquireXlibDisplayEXT)gpa(inst, "vkAcquireXlibDisplayEXT");
1309 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
1310 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
1311     table->GetRandROutputDisplayEXT = (PFN_vkGetRandROutputDisplayEXT)gpa(inst, "vkGetRandROutputDisplayEXT");
1312 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
1313 
1314     // ---- VK_EXT_display_surface_counter extension commands
1315     table->GetPhysicalDeviceSurfaceCapabilities2EXT = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)gpa(inst, "vkGetPhysicalDeviceSurfaceCapabilities2EXT");
1316 
1317     // ---- VK_MVK_ios_surface extension commands
1318 #ifdef VK_USE_PLATFORM_IOS_MVK
1319     table->CreateIOSSurfaceMVK = (PFN_vkCreateIOSSurfaceMVK)gpa(inst, "vkCreateIOSSurfaceMVK");
1320 #endif // VK_USE_PLATFORM_IOS_MVK
1321 
1322     // ---- VK_MVK_macos_surface extension commands
1323 #ifdef VK_USE_PLATFORM_MACOS_MVK
1324     table->CreateMacOSSurfaceMVK = (PFN_vkCreateMacOSSurfaceMVK)gpa(inst, "vkCreateMacOSSurfaceMVK");
1325 #endif // VK_USE_PLATFORM_MACOS_MVK
1326 
1327     // ---- VK_EXT_debug_utils extension commands
1328     table->CreateDebugUtilsMessengerEXT = (PFN_vkCreateDebugUtilsMessengerEXT)gpa(inst, "vkCreateDebugUtilsMessengerEXT");
1329     table->DestroyDebugUtilsMessengerEXT = (PFN_vkDestroyDebugUtilsMessengerEXT)gpa(inst, "vkDestroyDebugUtilsMessengerEXT");
1330     table->SubmitDebugUtilsMessageEXT = (PFN_vkSubmitDebugUtilsMessageEXT)gpa(inst, "vkSubmitDebugUtilsMessageEXT");
1331 
1332     // ---- VK_EXT_sample_locations extension commands
1333     table->GetPhysicalDeviceMultisamplePropertiesEXT = (PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)gpa(inst, "vkGetPhysicalDeviceMultisamplePropertiesEXT");
1334 
1335     // ---- VK_EXT_calibrated_timestamps extension commands
1336     table->GetPhysicalDeviceCalibrateableTimeDomainsEXT = (PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)gpa(inst, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
1337 
1338     // ---- VK_FUCHSIA_imagepipe_surface extension commands
1339 #ifdef VK_USE_PLATFORM_FUCHSIA
1340     table->CreateImagePipeSurfaceFUCHSIA = (PFN_vkCreateImagePipeSurfaceFUCHSIA)gpa(inst, "vkCreateImagePipeSurfaceFUCHSIA");
1341 #endif // VK_USE_PLATFORM_FUCHSIA
1342 
1343     // ---- VK_EXT_metal_surface extension commands
1344 #ifdef VK_USE_PLATFORM_METAL_EXT
1345     table->CreateMetalSurfaceEXT = (PFN_vkCreateMetalSurfaceEXT)gpa(inst, "vkCreateMetalSurfaceEXT");
1346 #endif // VK_USE_PLATFORM_METAL_EXT
1347 
1348     // ---- VK_EXT_tooling_info extension commands
1349     table->GetPhysicalDeviceToolPropertiesEXT = (PFN_vkGetPhysicalDeviceToolPropertiesEXT)gpa(inst, "vkGetPhysicalDeviceToolPropertiesEXT");
1350 
1351     // ---- VK_NV_cooperative_matrix extension commands
1352     table->GetPhysicalDeviceCooperativeMatrixPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)gpa(inst, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
1353 
1354     // ---- VK_NV_coverage_reduction_mode extension commands
1355     table->GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = (PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)gpa(inst, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
1356 
1357     // ---- VK_EXT_full_screen_exclusive extension commands
1358 #ifdef VK_USE_PLATFORM_WIN32_KHR
1359     table->GetPhysicalDeviceSurfacePresentModes2EXT = (PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)gpa(inst, "vkGetPhysicalDeviceSurfacePresentModes2EXT");
1360 #endif // VK_USE_PLATFORM_WIN32_KHR
1361 
1362     // ---- VK_EXT_headless_surface extension commands
1363     table->CreateHeadlessSurfaceEXT = (PFN_vkCreateHeadlessSurfaceEXT)gpa(inst, "vkCreateHeadlessSurfaceEXT");
1364 
1365     // ---- VK_EXT_acquire_drm_display extension commands
1366     table->AcquireDrmDisplayEXT = (PFN_vkAcquireDrmDisplayEXT)gpa(inst, "vkAcquireDrmDisplayEXT");
1367     table->GetDrmDisplayEXT = (PFN_vkGetDrmDisplayEXT)gpa(inst, "vkGetDrmDisplayEXT");
1368 
1369     // ---- VK_NV_acquire_winrt_display extension commands
1370 #ifdef VK_USE_PLATFORM_WIN32_KHR
1371     table->AcquireWinrtDisplayNV = (PFN_vkAcquireWinrtDisplayNV)gpa(inst, "vkAcquireWinrtDisplayNV");
1372 #endif // VK_USE_PLATFORM_WIN32_KHR
1373 #ifdef VK_USE_PLATFORM_WIN32_KHR
1374     table->GetWinrtDisplayNV = (PFN_vkGetWinrtDisplayNV)gpa(inst, "vkGetWinrtDisplayNV");
1375 #endif // VK_USE_PLATFORM_WIN32_KHR
1376 
1377     // ---- VK_EXT_directfb_surface extension commands
1378 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT
1379     table->CreateDirectFBSurfaceEXT = (PFN_vkCreateDirectFBSurfaceEXT)gpa(inst, "vkCreateDirectFBSurfaceEXT");
1380 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
1381 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT
1382     table->GetPhysicalDeviceDirectFBPresentationSupportEXT = (PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT)gpa(inst, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT");
1383 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
1384 
1385     // ---- VK_QNX_screen_surface extension commands
1386 #ifdef VK_USE_PLATFORM_SCREEN_QNX
1387     table->CreateScreenSurfaceQNX = (PFN_vkCreateScreenSurfaceQNX)gpa(inst, "vkCreateScreenSurfaceQNX");
1388 #endif // VK_USE_PLATFORM_SCREEN_QNX
1389 #ifdef VK_USE_PLATFORM_SCREEN_QNX
1390     table->GetPhysicalDeviceScreenPresentationSupportQNX = (PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX)gpa(inst, "vkGetPhysicalDeviceScreenPresentationSupportQNX");
1391 #endif // VK_USE_PLATFORM_SCREEN_QNX
1392 
1393     // ---- VK_NV_optical_flow extension commands
1394     table->GetPhysicalDeviceOpticalFlowImageFormatsNV = (PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV)gpa(inst, "vkGetPhysicalDeviceOpticalFlowImageFormatsNV");
1395 
1396     // ---- VK_OHOS_surface extension commands
1397 #ifdef VK_USE_PLATFORM_OHOS
1398     table->CreateSurfaceOHOS = (PFN_vkCreateSurfaceOHOS)gpa(inst, "vkCreateSurfaceOHOS");
1399 #endif // VK_USE_PLATFORM_OHOS
1400 }
1401 
1402 // Device command lookup function
loader_lookup_device_dispatch_table(const VkLayerDispatchTable * table,const char * name)1403 VKAPI_ATTR void* VKAPI_CALL loader_lookup_device_dispatch_table(const VkLayerDispatchTable *table, const char *name) {
1404     if (!name || name[0] != 'v' || name[1] != 'k') return NULL;
1405 
1406     name += 2;
1407 
1408     // ---- Core 1_0 commands
1409     if (!strcmp(name, "GetDeviceProcAddr")) return (void *)table->GetDeviceProcAddr;
1410     if (!strcmp(name, "DestroyDevice")) return (void *)table->DestroyDevice;
1411     if (!strcmp(name, "GetDeviceQueue")) return (void *)table->GetDeviceQueue;
1412     if (!strcmp(name, "QueueSubmit")) return (void *)table->QueueSubmit;
1413     if (!strcmp(name, "QueueWaitIdle")) return (void *)table->QueueWaitIdle;
1414     if (!strcmp(name, "DeviceWaitIdle")) return (void *)table->DeviceWaitIdle;
1415     if (!strcmp(name, "AllocateMemory")) return (void *)table->AllocateMemory;
1416     if (!strcmp(name, "FreeMemory")) return (void *)table->FreeMemory;
1417     if (!strcmp(name, "MapMemory")) return (void *)table->MapMemory;
1418     if (!strcmp(name, "UnmapMemory")) return (void *)table->UnmapMemory;
1419     if (!strcmp(name, "FlushMappedMemoryRanges")) return (void *)table->FlushMappedMemoryRanges;
1420     if (!strcmp(name, "InvalidateMappedMemoryRanges")) return (void *)table->InvalidateMappedMemoryRanges;
1421     if (!strcmp(name, "GetDeviceMemoryCommitment")) return (void *)table->GetDeviceMemoryCommitment;
1422     if (!strcmp(name, "BindBufferMemory")) return (void *)table->BindBufferMemory;
1423     if (!strcmp(name, "BindImageMemory")) return (void *)table->BindImageMemory;
1424     if (!strcmp(name, "GetBufferMemoryRequirements")) return (void *)table->GetBufferMemoryRequirements;
1425     if (!strcmp(name, "GetImageMemoryRequirements")) return (void *)table->GetImageMemoryRequirements;
1426     if (!strcmp(name, "GetImageSparseMemoryRequirements")) return (void *)table->GetImageSparseMemoryRequirements;
1427     if (!strcmp(name, "QueueBindSparse")) return (void *)table->QueueBindSparse;
1428     if (!strcmp(name, "CreateFence")) return (void *)table->CreateFence;
1429     if (!strcmp(name, "DestroyFence")) return (void *)table->DestroyFence;
1430     if (!strcmp(name, "ResetFences")) return (void *)table->ResetFences;
1431     if (!strcmp(name, "GetFenceStatus")) return (void *)table->GetFenceStatus;
1432     if (!strcmp(name, "WaitForFences")) return (void *)table->WaitForFences;
1433     if (!strcmp(name, "CreateSemaphore")) return (void *)table->CreateSemaphore;
1434     if (!strcmp(name, "DestroySemaphore")) return (void *)table->DestroySemaphore;
1435     if (!strcmp(name, "CreateEvent")) return (void *)table->CreateEvent;
1436     if (!strcmp(name, "DestroyEvent")) return (void *)table->DestroyEvent;
1437     if (!strcmp(name, "GetEventStatus")) return (void *)table->GetEventStatus;
1438     if (!strcmp(name, "SetEvent")) return (void *)table->SetEvent;
1439     if (!strcmp(name, "ResetEvent")) return (void *)table->ResetEvent;
1440     if (!strcmp(name, "CreateQueryPool")) return (void *)table->CreateQueryPool;
1441     if (!strcmp(name, "DestroyQueryPool")) return (void *)table->DestroyQueryPool;
1442     if (!strcmp(name, "GetQueryPoolResults")) return (void *)table->GetQueryPoolResults;
1443     if (!strcmp(name, "CreateBuffer")) return (void *)table->CreateBuffer;
1444     if (!strcmp(name, "DestroyBuffer")) return (void *)table->DestroyBuffer;
1445     if (!strcmp(name, "CreateBufferView")) return (void *)table->CreateBufferView;
1446     if (!strcmp(name, "DestroyBufferView")) return (void *)table->DestroyBufferView;
1447     if (!strcmp(name, "CreateImage")) return (void *)table->CreateImage;
1448     if (!strcmp(name, "DestroyImage")) return (void *)table->DestroyImage;
1449     if (!strcmp(name, "GetImageSubresourceLayout")) return (void *)table->GetImageSubresourceLayout;
1450     if (!strcmp(name, "CreateImageView")) return (void *)table->CreateImageView;
1451     if (!strcmp(name, "DestroyImageView")) return (void *)table->DestroyImageView;
1452     if (!strcmp(name, "CreateShaderModule")) return (void *)table->CreateShaderModule;
1453     if (!strcmp(name, "DestroyShaderModule")) return (void *)table->DestroyShaderModule;
1454     if (!strcmp(name, "CreatePipelineCache")) return (void *)table->CreatePipelineCache;
1455     if (!strcmp(name, "DestroyPipelineCache")) return (void *)table->DestroyPipelineCache;
1456     if (!strcmp(name, "GetPipelineCacheData")) return (void *)table->GetPipelineCacheData;
1457     if (!strcmp(name, "MergePipelineCaches")) return (void *)table->MergePipelineCaches;
1458     if (!strcmp(name, "CreateGraphicsPipelines")) return (void *)table->CreateGraphicsPipelines;
1459     if (!strcmp(name, "CreateComputePipelines")) return (void *)table->CreateComputePipelines;
1460     if (!strcmp(name, "DestroyPipeline")) return (void *)table->DestroyPipeline;
1461     if (!strcmp(name, "CreatePipelineLayout")) return (void *)table->CreatePipelineLayout;
1462     if (!strcmp(name, "DestroyPipelineLayout")) return (void *)table->DestroyPipelineLayout;
1463     if (!strcmp(name, "CreateSampler")) return (void *)table->CreateSampler;
1464     if (!strcmp(name, "DestroySampler")) return (void *)table->DestroySampler;
1465     if (!strcmp(name, "CreateDescriptorSetLayout")) return (void *)table->CreateDescriptorSetLayout;
1466     if (!strcmp(name, "DestroyDescriptorSetLayout")) return (void *)table->DestroyDescriptorSetLayout;
1467     if (!strcmp(name, "CreateDescriptorPool")) return (void *)table->CreateDescriptorPool;
1468     if (!strcmp(name, "DestroyDescriptorPool")) return (void *)table->DestroyDescriptorPool;
1469     if (!strcmp(name, "ResetDescriptorPool")) return (void *)table->ResetDescriptorPool;
1470     if (!strcmp(name, "AllocateDescriptorSets")) return (void *)table->AllocateDescriptorSets;
1471     if (!strcmp(name, "FreeDescriptorSets")) return (void *)table->FreeDescriptorSets;
1472     if (!strcmp(name, "UpdateDescriptorSets")) return (void *)table->UpdateDescriptorSets;
1473     if (!strcmp(name, "CreateFramebuffer")) return (void *)table->CreateFramebuffer;
1474     if (!strcmp(name, "DestroyFramebuffer")) return (void *)table->DestroyFramebuffer;
1475     if (!strcmp(name, "CreateRenderPass")) return (void *)table->CreateRenderPass;
1476     if (!strcmp(name, "DestroyRenderPass")) return (void *)table->DestroyRenderPass;
1477     if (!strcmp(name, "GetRenderAreaGranularity")) return (void *)table->GetRenderAreaGranularity;
1478     if (!strcmp(name, "CreateCommandPool")) return (void *)table->CreateCommandPool;
1479     if (!strcmp(name, "DestroyCommandPool")) return (void *)table->DestroyCommandPool;
1480     if (!strcmp(name, "ResetCommandPool")) return (void *)table->ResetCommandPool;
1481     if (!strcmp(name, "AllocateCommandBuffers")) return (void *)table->AllocateCommandBuffers;
1482     if (!strcmp(name, "FreeCommandBuffers")) return (void *)table->FreeCommandBuffers;
1483     if (!strcmp(name, "BeginCommandBuffer")) return (void *)table->BeginCommandBuffer;
1484     if (!strcmp(name, "EndCommandBuffer")) return (void *)table->EndCommandBuffer;
1485     if (!strcmp(name, "ResetCommandBuffer")) return (void *)table->ResetCommandBuffer;
1486     if (!strcmp(name, "CmdBindPipeline")) return (void *)table->CmdBindPipeline;
1487     if (!strcmp(name, "CmdSetViewport")) return (void *)table->CmdSetViewport;
1488     if (!strcmp(name, "CmdSetScissor")) return (void *)table->CmdSetScissor;
1489     if (!strcmp(name, "CmdSetLineWidth")) return (void *)table->CmdSetLineWidth;
1490     if (!strcmp(name, "CmdSetDepthBias")) return (void *)table->CmdSetDepthBias;
1491     if (!strcmp(name, "CmdSetBlendConstants")) return (void *)table->CmdSetBlendConstants;
1492     if (!strcmp(name, "CmdSetDepthBounds")) return (void *)table->CmdSetDepthBounds;
1493     if (!strcmp(name, "CmdSetStencilCompareMask")) return (void *)table->CmdSetStencilCompareMask;
1494     if (!strcmp(name, "CmdSetStencilWriteMask")) return (void *)table->CmdSetStencilWriteMask;
1495     if (!strcmp(name, "CmdSetStencilReference")) return (void *)table->CmdSetStencilReference;
1496     if (!strcmp(name, "CmdBindDescriptorSets")) return (void *)table->CmdBindDescriptorSets;
1497     if (!strcmp(name, "CmdBindIndexBuffer")) return (void *)table->CmdBindIndexBuffer;
1498     if (!strcmp(name, "CmdBindVertexBuffers")) return (void *)table->CmdBindVertexBuffers;
1499     if (!strcmp(name, "CmdDraw")) return (void *)table->CmdDraw;
1500     if (!strcmp(name, "CmdDrawIndexed")) return (void *)table->CmdDrawIndexed;
1501     if (!strcmp(name, "CmdDrawIndirect")) return (void *)table->CmdDrawIndirect;
1502     if (!strcmp(name, "CmdDrawIndexedIndirect")) return (void *)table->CmdDrawIndexedIndirect;
1503     if (!strcmp(name, "CmdDispatch")) return (void *)table->CmdDispatch;
1504     if (!strcmp(name, "CmdDispatchIndirect")) return (void *)table->CmdDispatchIndirect;
1505     if (!strcmp(name, "CmdCopyBuffer")) return (void *)table->CmdCopyBuffer;
1506     if (!strcmp(name, "CmdCopyImage")) return (void *)table->CmdCopyImage;
1507     if (!strcmp(name, "CmdBlitImage")) return (void *)table->CmdBlitImage;
1508     if (!strcmp(name, "CmdCopyBufferToImage")) return (void *)table->CmdCopyBufferToImage;
1509     if (!strcmp(name, "CmdCopyImageToBuffer")) return (void *)table->CmdCopyImageToBuffer;
1510     if (!strcmp(name, "CmdUpdateBuffer")) return (void *)table->CmdUpdateBuffer;
1511     if (!strcmp(name, "CmdFillBuffer")) return (void *)table->CmdFillBuffer;
1512     if (!strcmp(name, "CmdClearColorImage")) return (void *)table->CmdClearColorImage;
1513     if (!strcmp(name, "CmdClearDepthStencilImage")) return (void *)table->CmdClearDepthStencilImage;
1514     if (!strcmp(name, "CmdClearAttachments")) return (void *)table->CmdClearAttachments;
1515     if (!strcmp(name, "CmdResolveImage")) return (void *)table->CmdResolveImage;
1516     if (!strcmp(name, "CmdSetEvent")) return (void *)table->CmdSetEvent;
1517     if (!strcmp(name, "CmdResetEvent")) return (void *)table->CmdResetEvent;
1518     if (!strcmp(name, "CmdWaitEvents")) return (void *)table->CmdWaitEvents;
1519     if (!strcmp(name, "CmdPipelineBarrier")) return (void *)table->CmdPipelineBarrier;
1520     if (!strcmp(name, "CmdBeginQuery")) return (void *)table->CmdBeginQuery;
1521     if (!strcmp(name, "CmdEndQuery")) return (void *)table->CmdEndQuery;
1522     if (!strcmp(name, "CmdResetQueryPool")) return (void *)table->CmdResetQueryPool;
1523     if (!strcmp(name, "CmdWriteTimestamp")) return (void *)table->CmdWriteTimestamp;
1524     if (!strcmp(name, "CmdCopyQueryPoolResults")) return (void *)table->CmdCopyQueryPoolResults;
1525     if (!strcmp(name, "CmdPushConstants")) return (void *)table->CmdPushConstants;
1526     if (!strcmp(name, "CmdBeginRenderPass")) return (void *)table->CmdBeginRenderPass;
1527     if (!strcmp(name, "CmdNextSubpass")) return (void *)table->CmdNextSubpass;
1528     if (!strcmp(name, "CmdEndRenderPass")) return (void *)table->CmdEndRenderPass;
1529     if (!strcmp(name, "CmdExecuteCommands")) return (void *)table->CmdExecuteCommands;
1530 
1531     // ---- Core 1_1 commands
1532     if (!strcmp(name, "BindBufferMemory2")) return (void *)table->BindBufferMemory2;
1533     if (!strcmp(name, "BindImageMemory2")) return (void *)table->BindImageMemory2;
1534     if (!strcmp(name, "GetDeviceGroupPeerMemoryFeatures")) return (void *)table->GetDeviceGroupPeerMemoryFeatures;
1535     if (!strcmp(name, "CmdSetDeviceMask")) return (void *)table->CmdSetDeviceMask;
1536     if (!strcmp(name, "CmdDispatchBase")) return (void *)table->CmdDispatchBase;
1537     if (!strcmp(name, "GetImageMemoryRequirements2")) return (void *)table->GetImageMemoryRequirements2;
1538     if (!strcmp(name, "GetBufferMemoryRequirements2")) return (void *)table->GetBufferMemoryRequirements2;
1539     if (!strcmp(name, "GetImageSparseMemoryRequirements2")) return (void *)table->GetImageSparseMemoryRequirements2;
1540     if (!strcmp(name, "TrimCommandPool")) return (void *)table->TrimCommandPool;
1541     if (!strcmp(name, "GetDeviceQueue2")) return (void *)table->GetDeviceQueue2;
1542     if (!strcmp(name, "CreateSamplerYcbcrConversion")) return (void *)table->CreateSamplerYcbcrConversion;
1543     if (!strcmp(name, "DestroySamplerYcbcrConversion")) return (void *)table->DestroySamplerYcbcrConversion;
1544     if (!strcmp(name, "CreateDescriptorUpdateTemplate")) return (void *)table->CreateDescriptorUpdateTemplate;
1545     if (!strcmp(name, "DestroyDescriptorUpdateTemplate")) return (void *)table->DestroyDescriptorUpdateTemplate;
1546     if (!strcmp(name, "UpdateDescriptorSetWithTemplate")) return (void *)table->UpdateDescriptorSetWithTemplate;
1547     if (!strcmp(name, "GetDescriptorSetLayoutSupport")) return (void *)table->GetDescriptorSetLayoutSupport;
1548 
1549     // ---- Core 1_2 commands
1550     if (!strcmp(name, "CmdDrawIndirectCount")) return (void *)table->CmdDrawIndirectCount;
1551     if (!strcmp(name, "CmdDrawIndexedIndirectCount")) return (void *)table->CmdDrawIndexedIndirectCount;
1552     if (!strcmp(name, "CreateRenderPass2")) return (void *)table->CreateRenderPass2;
1553     if (!strcmp(name, "CmdBeginRenderPass2")) return (void *)table->CmdBeginRenderPass2;
1554     if (!strcmp(name, "CmdNextSubpass2")) return (void *)table->CmdNextSubpass2;
1555     if (!strcmp(name, "CmdEndRenderPass2")) return (void *)table->CmdEndRenderPass2;
1556     if (!strcmp(name, "ResetQueryPool")) return (void *)table->ResetQueryPool;
1557     if (!strcmp(name, "GetSemaphoreCounterValue")) return (void *)table->GetSemaphoreCounterValue;
1558     if (!strcmp(name, "WaitSemaphores")) return (void *)table->WaitSemaphores;
1559     if (!strcmp(name, "SignalSemaphore")) return (void *)table->SignalSemaphore;
1560     if (!strcmp(name, "GetBufferDeviceAddress")) return (void *)table->GetBufferDeviceAddress;
1561     if (!strcmp(name, "GetBufferOpaqueCaptureAddress")) return (void *)table->GetBufferOpaqueCaptureAddress;
1562     if (!strcmp(name, "GetDeviceMemoryOpaqueCaptureAddress")) return (void *)table->GetDeviceMemoryOpaqueCaptureAddress;
1563 
1564     // ---- Core 1_3 commands
1565     if (!strcmp(name, "CreatePrivateDataSlot")) return (void *)table->CreatePrivateDataSlot;
1566     if (!strcmp(name, "DestroyPrivateDataSlot")) return (void *)table->DestroyPrivateDataSlot;
1567     if (!strcmp(name, "SetPrivateData")) return (void *)table->SetPrivateData;
1568     if (!strcmp(name, "GetPrivateData")) return (void *)table->GetPrivateData;
1569     if (!strcmp(name, "CmdSetEvent2")) return (void *)table->CmdSetEvent2;
1570     if (!strcmp(name, "CmdResetEvent2")) return (void *)table->CmdResetEvent2;
1571     if (!strcmp(name, "CmdWaitEvents2")) return (void *)table->CmdWaitEvents2;
1572     if (!strcmp(name, "CmdPipelineBarrier2")) return (void *)table->CmdPipelineBarrier2;
1573     if (!strcmp(name, "CmdWriteTimestamp2")) return (void *)table->CmdWriteTimestamp2;
1574     if (!strcmp(name, "QueueSubmit2")) return (void *)table->QueueSubmit2;
1575     if (!strcmp(name, "CmdCopyBuffer2")) return (void *)table->CmdCopyBuffer2;
1576     if (!strcmp(name, "CmdCopyImage2")) return (void *)table->CmdCopyImage2;
1577     if (!strcmp(name, "CmdCopyBufferToImage2")) return (void *)table->CmdCopyBufferToImage2;
1578     if (!strcmp(name, "CmdCopyImageToBuffer2")) return (void *)table->CmdCopyImageToBuffer2;
1579     if (!strcmp(name, "CmdBlitImage2")) return (void *)table->CmdBlitImage2;
1580     if (!strcmp(name, "CmdResolveImage2")) return (void *)table->CmdResolveImage2;
1581     if (!strcmp(name, "CmdBeginRendering")) return (void *)table->CmdBeginRendering;
1582     if (!strcmp(name, "CmdEndRendering")) return (void *)table->CmdEndRendering;
1583     if (!strcmp(name, "CmdSetCullMode")) return (void *)table->CmdSetCullMode;
1584     if (!strcmp(name, "CmdSetFrontFace")) return (void *)table->CmdSetFrontFace;
1585     if (!strcmp(name, "CmdSetPrimitiveTopology")) return (void *)table->CmdSetPrimitiveTopology;
1586     if (!strcmp(name, "CmdSetViewportWithCount")) return (void *)table->CmdSetViewportWithCount;
1587     if (!strcmp(name, "CmdSetScissorWithCount")) return (void *)table->CmdSetScissorWithCount;
1588     if (!strcmp(name, "CmdBindVertexBuffers2")) return (void *)table->CmdBindVertexBuffers2;
1589     if (!strcmp(name, "CmdSetDepthTestEnable")) return (void *)table->CmdSetDepthTestEnable;
1590     if (!strcmp(name, "CmdSetDepthWriteEnable")) return (void *)table->CmdSetDepthWriteEnable;
1591     if (!strcmp(name, "CmdSetDepthCompareOp")) return (void *)table->CmdSetDepthCompareOp;
1592     if (!strcmp(name, "CmdSetDepthBoundsTestEnable")) return (void *)table->CmdSetDepthBoundsTestEnable;
1593     if (!strcmp(name, "CmdSetStencilTestEnable")) return (void *)table->CmdSetStencilTestEnable;
1594     if (!strcmp(name, "CmdSetStencilOp")) return (void *)table->CmdSetStencilOp;
1595     if (!strcmp(name, "CmdSetRasterizerDiscardEnable")) return (void *)table->CmdSetRasterizerDiscardEnable;
1596     if (!strcmp(name, "CmdSetDepthBiasEnable")) return (void *)table->CmdSetDepthBiasEnable;
1597     if (!strcmp(name, "CmdSetPrimitiveRestartEnable")) return (void *)table->CmdSetPrimitiveRestartEnable;
1598     if (!strcmp(name, "GetDeviceBufferMemoryRequirements")) return (void *)table->GetDeviceBufferMemoryRequirements;
1599     if (!strcmp(name, "GetDeviceImageMemoryRequirements")) return (void *)table->GetDeviceImageMemoryRequirements;
1600     if (!strcmp(name, "GetDeviceImageSparseMemoryRequirements")) return (void *)table->GetDeviceImageSparseMemoryRequirements;
1601 
1602     // ---- VK_KHR_swapchain extension commands
1603     if (!strcmp(name, "CreateSwapchainKHR")) return (void *)table->CreateSwapchainKHR;
1604     if (!strcmp(name, "DestroySwapchainKHR")) return (void *)table->DestroySwapchainKHR;
1605     if (!strcmp(name, "GetSwapchainImagesKHR")) return (void *)table->GetSwapchainImagesKHR;
1606     if (!strcmp(name, "AcquireNextImageKHR")) return (void *)table->AcquireNextImageKHR;
1607     if (!strcmp(name, "QueuePresentKHR")) return (void *)table->QueuePresentKHR;
1608     if (!strcmp(name, "GetDeviceGroupPresentCapabilitiesKHR")) return (void *)table->GetDeviceGroupPresentCapabilitiesKHR;
1609     if (!strcmp(name, "GetDeviceGroupSurfacePresentModesKHR")) return (void *)table->GetDeviceGroupSurfacePresentModesKHR;
1610     if (!strcmp(name, "AcquireNextImage2KHR")) return (void *)table->AcquireNextImage2KHR;
1611 
1612     // ---- VK_KHR_display_swapchain extension commands
1613     if (!strcmp(name, "CreateSharedSwapchainsKHR")) return (void *)table->CreateSharedSwapchainsKHR;
1614 
1615     // ---- VK_KHR_video_queue extension commands
1616 #ifdef VK_ENABLE_BETA_EXTENSIONS
1617     if (!strcmp(name, "CreateVideoSessionKHR")) return (void *)table->CreateVideoSessionKHR;
1618 #endif // VK_ENABLE_BETA_EXTENSIONS
1619 #ifdef VK_ENABLE_BETA_EXTENSIONS
1620     if (!strcmp(name, "DestroyVideoSessionKHR")) return (void *)table->DestroyVideoSessionKHR;
1621 #endif // VK_ENABLE_BETA_EXTENSIONS
1622 #ifdef VK_ENABLE_BETA_EXTENSIONS
1623     if (!strcmp(name, "GetVideoSessionMemoryRequirementsKHR")) return (void *)table->GetVideoSessionMemoryRequirementsKHR;
1624 #endif // VK_ENABLE_BETA_EXTENSIONS
1625 #ifdef VK_ENABLE_BETA_EXTENSIONS
1626     if (!strcmp(name, "BindVideoSessionMemoryKHR")) return (void *)table->BindVideoSessionMemoryKHR;
1627 #endif // VK_ENABLE_BETA_EXTENSIONS
1628 #ifdef VK_ENABLE_BETA_EXTENSIONS
1629     if (!strcmp(name, "CreateVideoSessionParametersKHR")) return (void *)table->CreateVideoSessionParametersKHR;
1630 #endif // VK_ENABLE_BETA_EXTENSIONS
1631 #ifdef VK_ENABLE_BETA_EXTENSIONS
1632     if (!strcmp(name, "UpdateVideoSessionParametersKHR")) return (void *)table->UpdateVideoSessionParametersKHR;
1633 #endif // VK_ENABLE_BETA_EXTENSIONS
1634 #ifdef VK_ENABLE_BETA_EXTENSIONS
1635     if (!strcmp(name, "DestroyVideoSessionParametersKHR")) return (void *)table->DestroyVideoSessionParametersKHR;
1636 #endif // VK_ENABLE_BETA_EXTENSIONS
1637 #ifdef VK_ENABLE_BETA_EXTENSIONS
1638     if (!strcmp(name, "CmdBeginVideoCodingKHR")) return (void *)table->CmdBeginVideoCodingKHR;
1639 #endif // VK_ENABLE_BETA_EXTENSIONS
1640 #ifdef VK_ENABLE_BETA_EXTENSIONS
1641     if (!strcmp(name, "CmdEndVideoCodingKHR")) return (void *)table->CmdEndVideoCodingKHR;
1642 #endif // VK_ENABLE_BETA_EXTENSIONS
1643 #ifdef VK_ENABLE_BETA_EXTENSIONS
1644     if (!strcmp(name, "CmdControlVideoCodingKHR")) return (void *)table->CmdControlVideoCodingKHR;
1645 #endif // VK_ENABLE_BETA_EXTENSIONS
1646 
1647     // ---- VK_KHR_video_decode_queue extension commands
1648 #ifdef VK_ENABLE_BETA_EXTENSIONS
1649     if (!strcmp(name, "CmdDecodeVideoKHR")) return (void *)table->CmdDecodeVideoKHR;
1650 #endif // VK_ENABLE_BETA_EXTENSIONS
1651 
1652     // ---- VK_KHR_dynamic_rendering extension commands
1653     if (!strcmp(name, "CmdBeginRenderingKHR")) return (void *)table->CmdBeginRenderingKHR;
1654     if (!strcmp(name, "CmdEndRenderingKHR")) return (void *)table->CmdEndRenderingKHR;
1655 
1656     // ---- VK_KHR_device_group extension commands
1657     if (!strcmp(name, "GetDeviceGroupPeerMemoryFeaturesKHR")) return (void *)table->GetDeviceGroupPeerMemoryFeaturesKHR;
1658     if (!strcmp(name, "CmdSetDeviceMaskKHR")) return (void *)table->CmdSetDeviceMaskKHR;
1659     if (!strcmp(name, "CmdDispatchBaseKHR")) return (void *)table->CmdDispatchBaseKHR;
1660 
1661     // ---- VK_KHR_maintenance1 extension commands
1662     if (!strcmp(name, "TrimCommandPoolKHR")) return (void *)table->TrimCommandPoolKHR;
1663 
1664     // ---- VK_KHR_external_memory_win32 extension commands
1665 #ifdef VK_USE_PLATFORM_WIN32_KHR
1666     if (!strcmp(name, "GetMemoryWin32HandleKHR")) return (void *)table->GetMemoryWin32HandleKHR;
1667 #endif // VK_USE_PLATFORM_WIN32_KHR
1668 #ifdef VK_USE_PLATFORM_WIN32_KHR
1669     if (!strcmp(name, "GetMemoryWin32HandlePropertiesKHR")) return (void *)table->GetMemoryWin32HandlePropertiesKHR;
1670 #endif // VK_USE_PLATFORM_WIN32_KHR
1671 
1672     // ---- VK_KHR_external_memory_fd extension commands
1673     if (!strcmp(name, "GetMemoryFdKHR")) return (void *)table->GetMemoryFdKHR;
1674     if (!strcmp(name, "GetMemoryFdPropertiesKHR")) return (void *)table->GetMemoryFdPropertiesKHR;
1675 
1676     // ---- VK_KHR_external_semaphore_win32 extension commands
1677 #ifdef VK_USE_PLATFORM_WIN32_KHR
1678     if (!strcmp(name, "ImportSemaphoreWin32HandleKHR")) return (void *)table->ImportSemaphoreWin32HandleKHR;
1679 #endif // VK_USE_PLATFORM_WIN32_KHR
1680 #ifdef VK_USE_PLATFORM_WIN32_KHR
1681     if (!strcmp(name, "GetSemaphoreWin32HandleKHR")) return (void *)table->GetSemaphoreWin32HandleKHR;
1682 #endif // VK_USE_PLATFORM_WIN32_KHR
1683 
1684     // ---- VK_KHR_external_semaphore_fd extension commands
1685     if (!strcmp(name, "ImportSemaphoreFdKHR")) return (void *)table->ImportSemaphoreFdKHR;
1686     if (!strcmp(name, "GetSemaphoreFdKHR")) return (void *)table->GetSemaphoreFdKHR;
1687 
1688     // ---- VK_KHR_push_descriptor extension commands
1689     if (!strcmp(name, "CmdPushDescriptorSetKHR")) return (void *)table->CmdPushDescriptorSetKHR;
1690     if (!strcmp(name, "CmdPushDescriptorSetWithTemplateKHR")) return (void *)table->CmdPushDescriptorSetWithTemplateKHR;
1691 
1692     // ---- VK_KHR_descriptor_update_template extension commands
1693     if (!strcmp(name, "CreateDescriptorUpdateTemplateKHR")) return (void *)table->CreateDescriptorUpdateTemplateKHR;
1694     if (!strcmp(name, "DestroyDescriptorUpdateTemplateKHR")) return (void *)table->DestroyDescriptorUpdateTemplateKHR;
1695     if (!strcmp(name, "UpdateDescriptorSetWithTemplateKHR")) return (void *)table->UpdateDescriptorSetWithTemplateKHR;
1696 
1697     // ---- VK_KHR_create_renderpass2 extension commands
1698     if (!strcmp(name, "CreateRenderPass2KHR")) return (void *)table->CreateRenderPass2KHR;
1699     if (!strcmp(name, "CmdBeginRenderPass2KHR")) return (void *)table->CmdBeginRenderPass2KHR;
1700     if (!strcmp(name, "CmdNextSubpass2KHR")) return (void *)table->CmdNextSubpass2KHR;
1701     if (!strcmp(name, "CmdEndRenderPass2KHR")) return (void *)table->CmdEndRenderPass2KHR;
1702 
1703     // ---- VK_KHR_shared_presentable_image extension commands
1704     if (!strcmp(name, "GetSwapchainStatusKHR")) return (void *)table->GetSwapchainStatusKHR;
1705 
1706     // ---- VK_KHR_external_fence_win32 extension commands
1707 #ifdef VK_USE_PLATFORM_WIN32_KHR
1708     if (!strcmp(name, "ImportFenceWin32HandleKHR")) return (void *)table->ImportFenceWin32HandleKHR;
1709 #endif // VK_USE_PLATFORM_WIN32_KHR
1710 #ifdef VK_USE_PLATFORM_WIN32_KHR
1711     if (!strcmp(name, "GetFenceWin32HandleKHR")) return (void *)table->GetFenceWin32HandleKHR;
1712 #endif // VK_USE_PLATFORM_WIN32_KHR
1713 
1714     // ---- VK_KHR_external_fence_fd extension commands
1715     if (!strcmp(name, "ImportFenceFdKHR")) return (void *)table->ImportFenceFdKHR;
1716     if (!strcmp(name, "GetFenceFdKHR")) return (void *)table->GetFenceFdKHR;
1717 
1718     // ---- VK_KHR_performance_query extension commands
1719     if (!strcmp(name, "AcquireProfilingLockKHR")) return (void *)table->AcquireProfilingLockKHR;
1720     if (!strcmp(name, "ReleaseProfilingLockKHR")) return (void *)table->ReleaseProfilingLockKHR;
1721 
1722     // ---- VK_KHR_get_memory_requirements2 extension commands
1723     if (!strcmp(name, "GetImageMemoryRequirements2KHR")) return (void *)table->GetImageMemoryRequirements2KHR;
1724     if (!strcmp(name, "GetBufferMemoryRequirements2KHR")) return (void *)table->GetBufferMemoryRequirements2KHR;
1725     if (!strcmp(name, "GetImageSparseMemoryRequirements2KHR")) return (void *)table->GetImageSparseMemoryRequirements2KHR;
1726 
1727     // ---- VK_KHR_sampler_ycbcr_conversion extension commands
1728     if (!strcmp(name, "CreateSamplerYcbcrConversionKHR")) return (void *)table->CreateSamplerYcbcrConversionKHR;
1729     if (!strcmp(name, "DestroySamplerYcbcrConversionKHR")) return (void *)table->DestroySamplerYcbcrConversionKHR;
1730 
1731     // ---- VK_KHR_bind_memory2 extension commands
1732     if (!strcmp(name, "BindBufferMemory2KHR")) return (void *)table->BindBufferMemory2KHR;
1733     if (!strcmp(name, "BindImageMemory2KHR")) return (void *)table->BindImageMemory2KHR;
1734 
1735     // ---- VK_KHR_maintenance3 extension commands
1736     if (!strcmp(name, "GetDescriptorSetLayoutSupportKHR")) return (void *)table->GetDescriptorSetLayoutSupportKHR;
1737 
1738     // ---- VK_KHR_draw_indirect_count extension commands
1739     if (!strcmp(name, "CmdDrawIndirectCountKHR")) return (void *)table->CmdDrawIndirectCountKHR;
1740     if (!strcmp(name, "CmdDrawIndexedIndirectCountKHR")) return (void *)table->CmdDrawIndexedIndirectCountKHR;
1741 
1742     // ---- VK_KHR_timeline_semaphore extension commands
1743     if (!strcmp(name, "GetSemaphoreCounterValueKHR")) return (void *)table->GetSemaphoreCounterValueKHR;
1744     if (!strcmp(name, "WaitSemaphoresKHR")) return (void *)table->WaitSemaphoresKHR;
1745     if (!strcmp(name, "SignalSemaphoreKHR")) return (void *)table->SignalSemaphoreKHR;
1746 
1747     // ---- VK_KHR_fragment_shading_rate extension commands
1748     if (!strcmp(name, "CmdSetFragmentShadingRateKHR")) return (void *)table->CmdSetFragmentShadingRateKHR;
1749 
1750     // ---- VK_KHR_present_wait extension commands
1751     if (!strcmp(name, "WaitForPresentKHR")) return (void *)table->WaitForPresentKHR;
1752 
1753     // ---- VK_KHR_buffer_device_address extension commands
1754     if (!strcmp(name, "GetBufferDeviceAddressKHR")) return (void *)table->GetBufferDeviceAddressKHR;
1755     if (!strcmp(name, "GetBufferOpaqueCaptureAddressKHR")) return (void *)table->GetBufferOpaqueCaptureAddressKHR;
1756     if (!strcmp(name, "GetDeviceMemoryOpaqueCaptureAddressKHR")) return (void *)table->GetDeviceMemoryOpaqueCaptureAddressKHR;
1757 
1758     // ---- VK_KHR_deferred_host_operations extension commands
1759     if (!strcmp(name, "CreateDeferredOperationKHR")) return (void *)table->CreateDeferredOperationKHR;
1760     if (!strcmp(name, "DestroyDeferredOperationKHR")) return (void *)table->DestroyDeferredOperationKHR;
1761     if (!strcmp(name, "GetDeferredOperationMaxConcurrencyKHR")) return (void *)table->GetDeferredOperationMaxConcurrencyKHR;
1762     if (!strcmp(name, "GetDeferredOperationResultKHR")) return (void *)table->GetDeferredOperationResultKHR;
1763     if (!strcmp(name, "DeferredOperationJoinKHR")) return (void *)table->DeferredOperationJoinKHR;
1764 
1765     // ---- VK_KHR_pipeline_executable_properties extension commands
1766     if (!strcmp(name, "GetPipelineExecutablePropertiesKHR")) return (void *)table->GetPipelineExecutablePropertiesKHR;
1767     if (!strcmp(name, "GetPipelineExecutableStatisticsKHR")) return (void *)table->GetPipelineExecutableStatisticsKHR;
1768     if (!strcmp(name, "GetPipelineExecutableInternalRepresentationsKHR")) return (void *)table->GetPipelineExecutableInternalRepresentationsKHR;
1769 
1770     // ---- VK_KHR_video_encode_queue extension commands
1771 #ifdef VK_ENABLE_BETA_EXTENSIONS
1772     if (!strcmp(name, "CmdEncodeVideoKHR")) return (void *)table->CmdEncodeVideoKHR;
1773 #endif // VK_ENABLE_BETA_EXTENSIONS
1774 
1775     // ---- VK_KHR_synchronization2 extension commands
1776     if (!strcmp(name, "CmdSetEvent2KHR")) return (void *)table->CmdSetEvent2KHR;
1777     if (!strcmp(name, "CmdResetEvent2KHR")) return (void *)table->CmdResetEvent2KHR;
1778     if (!strcmp(name, "CmdWaitEvents2KHR")) return (void *)table->CmdWaitEvents2KHR;
1779     if (!strcmp(name, "CmdPipelineBarrier2KHR")) return (void *)table->CmdPipelineBarrier2KHR;
1780     if (!strcmp(name, "CmdWriteTimestamp2KHR")) return (void *)table->CmdWriteTimestamp2KHR;
1781     if (!strcmp(name, "QueueSubmit2KHR")) return (void *)table->QueueSubmit2KHR;
1782     if (!strcmp(name, "CmdWriteBufferMarker2AMD")) return (void *)table->CmdWriteBufferMarker2AMD;
1783     if (!strcmp(name, "GetQueueCheckpointData2NV")) return (void *)table->GetQueueCheckpointData2NV;
1784 
1785     // ---- VK_KHR_copy_commands2 extension commands
1786     if (!strcmp(name, "CmdCopyBuffer2KHR")) return (void *)table->CmdCopyBuffer2KHR;
1787     if (!strcmp(name, "CmdCopyImage2KHR")) return (void *)table->CmdCopyImage2KHR;
1788     if (!strcmp(name, "CmdCopyBufferToImage2KHR")) return (void *)table->CmdCopyBufferToImage2KHR;
1789     if (!strcmp(name, "CmdCopyImageToBuffer2KHR")) return (void *)table->CmdCopyImageToBuffer2KHR;
1790     if (!strcmp(name, "CmdBlitImage2KHR")) return (void *)table->CmdBlitImage2KHR;
1791     if (!strcmp(name, "CmdResolveImage2KHR")) return (void *)table->CmdResolveImage2KHR;
1792 
1793     // ---- VK_KHR_ray_tracing_maintenance1 extension commands
1794     if (!strcmp(name, "CmdTraceRaysIndirect2KHR")) return (void *)table->CmdTraceRaysIndirect2KHR;
1795 
1796     // ---- VK_KHR_maintenance4 extension commands
1797     if (!strcmp(name, "GetDeviceBufferMemoryRequirementsKHR")) return (void *)table->GetDeviceBufferMemoryRequirementsKHR;
1798     if (!strcmp(name, "GetDeviceImageMemoryRequirementsKHR")) return (void *)table->GetDeviceImageMemoryRequirementsKHR;
1799     if (!strcmp(name, "GetDeviceImageSparseMemoryRequirementsKHR")) return (void *)table->GetDeviceImageSparseMemoryRequirementsKHR;
1800 
1801     // ---- VK_EXT_debug_marker extension commands
1802     if (!strcmp(name, "DebugMarkerSetObjectTagEXT")) return (void *)table->DebugMarkerSetObjectTagEXT;
1803     if (!strcmp(name, "DebugMarkerSetObjectNameEXT")) return (void *)table->DebugMarkerSetObjectNameEXT;
1804     if (!strcmp(name, "CmdDebugMarkerBeginEXT")) return (void *)table->CmdDebugMarkerBeginEXT;
1805     if (!strcmp(name, "CmdDebugMarkerEndEXT")) return (void *)table->CmdDebugMarkerEndEXT;
1806     if (!strcmp(name, "CmdDebugMarkerInsertEXT")) return (void *)table->CmdDebugMarkerInsertEXT;
1807 
1808     // ---- VK_EXT_transform_feedback extension commands
1809     if (!strcmp(name, "CmdBindTransformFeedbackBuffersEXT")) return (void *)table->CmdBindTransformFeedbackBuffersEXT;
1810     if (!strcmp(name, "CmdBeginTransformFeedbackEXT")) return (void *)table->CmdBeginTransformFeedbackEXT;
1811     if (!strcmp(name, "CmdEndTransformFeedbackEXT")) return (void *)table->CmdEndTransformFeedbackEXT;
1812     if (!strcmp(name, "CmdBeginQueryIndexedEXT")) return (void *)table->CmdBeginQueryIndexedEXT;
1813     if (!strcmp(name, "CmdEndQueryIndexedEXT")) return (void *)table->CmdEndQueryIndexedEXT;
1814     if (!strcmp(name, "CmdDrawIndirectByteCountEXT")) return (void *)table->CmdDrawIndirectByteCountEXT;
1815 
1816     // ---- VK_NVX_binary_import extension commands
1817     if (!strcmp(name, "CreateCuModuleNVX")) return (void *)table->CreateCuModuleNVX;
1818     if (!strcmp(name, "CreateCuFunctionNVX")) return (void *)table->CreateCuFunctionNVX;
1819     if (!strcmp(name, "DestroyCuModuleNVX")) return (void *)table->DestroyCuModuleNVX;
1820     if (!strcmp(name, "DestroyCuFunctionNVX")) return (void *)table->DestroyCuFunctionNVX;
1821     if (!strcmp(name, "CmdCuLaunchKernelNVX")) return (void *)table->CmdCuLaunchKernelNVX;
1822 
1823     // ---- VK_NVX_image_view_handle extension commands
1824     if (!strcmp(name, "GetImageViewHandleNVX")) return (void *)table->GetImageViewHandleNVX;
1825     if (!strcmp(name, "GetImageViewAddressNVX")) return (void *)table->GetImageViewAddressNVX;
1826 
1827     // ---- VK_AMD_draw_indirect_count extension commands
1828     if (!strcmp(name, "CmdDrawIndirectCountAMD")) return (void *)table->CmdDrawIndirectCountAMD;
1829     if (!strcmp(name, "CmdDrawIndexedIndirectCountAMD")) return (void *)table->CmdDrawIndexedIndirectCountAMD;
1830 
1831     // ---- VK_AMD_shader_info extension commands
1832     if (!strcmp(name, "GetShaderInfoAMD")) return (void *)table->GetShaderInfoAMD;
1833 
1834     // ---- VK_NV_external_memory_win32 extension commands
1835 #ifdef VK_USE_PLATFORM_WIN32_KHR
1836     if (!strcmp(name, "GetMemoryWin32HandleNV")) return (void *)table->GetMemoryWin32HandleNV;
1837 #endif // VK_USE_PLATFORM_WIN32_KHR
1838 
1839     // ---- VK_EXT_conditional_rendering extension commands
1840     if (!strcmp(name, "CmdBeginConditionalRenderingEXT")) return (void *)table->CmdBeginConditionalRenderingEXT;
1841     if (!strcmp(name, "CmdEndConditionalRenderingEXT")) return (void *)table->CmdEndConditionalRenderingEXT;
1842 
1843     // ---- VK_NV_clip_space_w_scaling extension commands
1844     if (!strcmp(name, "CmdSetViewportWScalingNV")) return (void *)table->CmdSetViewportWScalingNV;
1845 
1846     // ---- VK_EXT_display_control extension commands
1847     if (!strcmp(name, "DisplayPowerControlEXT")) return (void *)table->DisplayPowerControlEXT;
1848     if (!strcmp(name, "RegisterDeviceEventEXT")) return (void *)table->RegisterDeviceEventEXT;
1849     if (!strcmp(name, "RegisterDisplayEventEXT")) return (void *)table->RegisterDisplayEventEXT;
1850     if (!strcmp(name, "GetSwapchainCounterEXT")) return (void *)table->GetSwapchainCounterEXT;
1851 
1852     // ---- VK_GOOGLE_display_timing extension commands
1853     if (!strcmp(name, "GetRefreshCycleDurationGOOGLE")) return (void *)table->GetRefreshCycleDurationGOOGLE;
1854     if (!strcmp(name, "GetPastPresentationTimingGOOGLE")) return (void *)table->GetPastPresentationTimingGOOGLE;
1855 
1856     // ---- VK_EXT_discard_rectangles extension commands
1857     if (!strcmp(name, "CmdSetDiscardRectangleEXT")) return (void *)table->CmdSetDiscardRectangleEXT;
1858 
1859     // ---- VK_EXT_hdr_metadata extension commands
1860     if (!strcmp(name, "SetHdrMetadataEXT")) return (void *)table->SetHdrMetadataEXT;
1861 
1862     // ---- VK_EXT_debug_utils extension commands
1863     if (!strcmp(name, "SetDebugUtilsObjectNameEXT")) return (void *)table->SetDebugUtilsObjectNameEXT;
1864     if (!strcmp(name, "SetDebugUtilsObjectTagEXT")) return (void *)table->SetDebugUtilsObjectTagEXT;
1865     if (!strcmp(name, "QueueBeginDebugUtilsLabelEXT")) return (void *)table->QueueBeginDebugUtilsLabelEXT;
1866     if (!strcmp(name, "QueueEndDebugUtilsLabelEXT")) return (void *)table->QueueEndDebugUtilsLabelEXT;
1867     if (!strcmp(name, "QueueInsertDebugUtilsLabelEXT")) return (void *)table->QueueInsertDebugUtilsLabelEXT;
1868     if (!strcmp(name, "CmdBeginDebugUtilsLabelEXT")) return (void *)table->CmdBeginDebugUtilsLabelEXT;
1869     if (!strcmp(name, "CmdEndDebugUtilsLabelEXT")) return (void *)table->CmdEndDebugUtilsLabelEXT;
1870     if (!strcmp(name, "CmdInsertDebugUtilsLabelEXT")) return (void *)table->CmdInsertDebugUtilsLabelEXT;
1871 
1872     // ---- VK_ANDROID_external_memory_android_hardware_buffer extension commands
1873 #ifdef VK_USE_PLATFORM_ANDROID_KHR
1874     if (!strcmp(name, "GetAndroidHardwareBufferPropertiesANDROID")) return (void *)table->GetAndroidHardwareBufferPropertiesANDROID;
1875 #endif // VK_USE_PLATFORM_ANDROID_KHR
1876 #ifdef VK_USE_PLATFORM_ANDROID_KHR
1877     if (!strcmp(name, "GetMemoryAndroidHardwareBufferANDROID")) return (void *)table->GetMemoryAndroidHardwareBufferANDROID;
1878 #endif // VK_USE_PLATFORM_ANDROID_KHR
1879 
1880     // ---- VK_EXT_sample_locations extension commands
1881     if (!strcmp(name, "CmdSetSampleLocationsEXT")) return (void *)table->CmdSetSampleLocationsEXT;
1882 
1883     // ---- VK_EXT_image_drm_format_modifier extension commands
1884     if (!strcmp(name, "GetImageDrmFormatModifierPropertiesEXT")) return (void *)table->GetImageDrmFormatModifierPropertiesEXT;
1885 
1886     // ---- VK_EXT_validation_cache extension commands
1887     if (!strcmp(name, "CreateValidationCacheEXT")) return (void *)table->CreateValidationCacheEXT;
1888     if (!strcmp(name, "DestroyValidationCacheEXT")) return (void *)table->DestroyValidationCacheEXT;
1889     if (!strcmp(name, "MergeValidationCachesEXT")) return (void *)table->MergeValidationCachesEXT;
1890     if (!strcmp(name, "GetValidationCacheDataEXT")) return (void *)table->GetValidationCacheDataEXT;
1891 
1892     // ---- VK_NV_shading_rate_image extension commands
1893     if (!strcmp(name, "CmdBindShadingRateImageNV")) return (void *)table->CmdBindShadingRateImageNV;
1894     if (!strcmp(name, "CmdSetViewportShadingRatePaletteNV")) return (void *)table->CmdSetViewportShadingRatePaletteNV;
1895     if (!strcmp(name, "CmdSetCoarseSampleOrderNV")) return (void *)table->CmdSetCoarseSampleOrderNV;
1896 
1897     // ---- VK_NV_ray_tracing extension commands
1898     if (!strcmp(name, "CreateAccelerationStructureNV")) return (void *)table->CreateAccelerationStructureNV;
1899     if (!strcmp(name, "DestroyAccelerationStructureNV")) return (void *)table->DestroyAccelerationStructureNV;
1900     if (!strcmp(name, "GetAccelerationStructureMemoryRequirementsNV")) return (void *)table->GetAccelerationStructureMemoryRequirementsNV;
1901     if (!strcmp(name, "BindAccelerationStructureMemoryNV")) return (void *)table->BindAccelerationStructureMemoryNV;
1902     if (!strcmp(name, "CmdBuildAccelerationStructureNV")) return (void *)table->CmdBuildAccelerationStructureNV;
1903     if (!strcmp(name, "CmdCopyAccelerationStructureNV")) return (void *)table->CmdCopyAccelerationStructureNV;
1904     if (!strcmp(name, "CmdTraceRaysNV")) return (void *)table->CmdTraceRaysNV;
1905     if (!strcmp(name, "CreateRayTracingPipelinesNV")) return (void *)table->CreateRayTracingPipelinesNV;
1906     if (!strcmp(name, "GetRayTracingShaderGroupHandlesKHR")) return (void *)table->GetRayTracingShaderGroupHandlesKHR;
1907     if (!strcmp(name, "GetRayTracingShaderGroupHandlesNV")) return (void *)table->GetRayTracingShaderGroupHandlesNV;
1908     if (!strcmp(name, "GetAccelerationStructureHandleNV")) return (void *)table->GetAccelerationStructureHandleNV;
1909     if (!strcmp(name, "CmdWriteAccelerationStructuresPropertiesNV")) return (void *)table->CmdWriteAccelerationStructuresPropertiesNV;
1910     if (!strcmp(name, "CompileDeferredNV")) return (void *)table->CompileDeferredNV;
1911 
1912     // ---- VK_EXT_external_memory_host extension commands
1913     if (!strcmp(name, "GetMemoryHostPointerPropertiesEXT")) return (void *)table->GetMemoryHostPointerPropertiesEXT;
1914 
1915     // ---- VK_AMD_buffer_marker extension commands
1916     if (!strcmp(name, "CmdWriteBufferMarkerAMD")) return (void *)table->CmdWriteBufferMarkerAMD;
1917 
1918     // ---- VK_EXT_calibrated_timestamps extension commands
1919     if (!strcmp(name, "GetCalibratedTimestampsEXT")) return (void *)table->GetCalibratedTimestampsEXT;
1920 
1921     // ---- VK_NV_mesh_shader extension commands
1922     if (!strcmp(name, "CmdDrawMeshTasksNV")) return (void *)table->CmdDrawMeshTasksNV;
1923     if (!strcmp(name, "CmdDrawMeshTasksIndirectNV")) return (void *)table->CmdDrawMeshTasksIndirectNV;
1924     if (!strcmp(name, "CmdDrawMeshTasksIndirectCountNV")) return (void *)table->CmdDrawMeshTasksIndirectCountNV;
1925 
1926     // ---- VK_NV_scissor_exclusive extension commands
1927     if (!strcmp(name, "CmdSetExclusiveScissorNV")) return (void *)table->CmdSetExclusiveScissorNV;
1928 
1929     // ---- VK_NV_device_diagnostic_checkpoints extension commands
1930     if (!strcmp(name, "CmdSetCheckpointNV")) return (void *)table->CmdSetCheckpointNV;
1931     if (!strcmp(name, "GetQueueCheckpointDataNV")) return (void *)table->GetQueueCheckpointDataNV;
1932 
1933     // ---- VK_INTEL_performance_query extension commands
1934     if (!strcmp(name, "InitializePerformanceApiINTEL")) return (void *)table->InitializePerformanceApiINTEL;
1935     if (!strcmp(name, "UninitializePerformanceApiINTEL")) return (void *)table->UninitializePerformanceApiINTEL;
1936     if (!strcmp(name, "CmdSetPerformanceMarkerINTEL")) return (void *)table->CmdSetPerformanceMarkerINTEL;
1937     if (!strcmp(name, "CmdSetPerformanceStreamMarkerINTEL")) return (void *)table->CmdSetPerformanceStreamMarkerINTEL;
1938     if (!strcmp(name, "CmdSetPerformanceOverrideINTEL")) return (void *)table->CmdSetPerformanceOverrideINTEL;
1939     if (!strcmp(name, "AcquirePerformanceConfigurationINTEL")) return (void *)table->AcquirePerformanceConfigurationINTEL;
1940     if (!strcmp(name, "ReleasePerformanceConfigurationINTEL")) return (void *)table->ReleasePerformanceConfigurationINTEL;
1941     if (!strcmp(name, "QueueSetPerformanceConfigurationINTEL")) return (void *)table->QueueSetPerformanceConfigurationINTEL;
1942     if (!strcmp(name, "GetPerformanceParameterINTEL")) return (void *)table->GetPerformanceParameterINTEL;
1943 
1944     // ---- VK_AMD_display_native_hdr extension commands
1945     if (!strcmp(name, "SetLocalDimmingAMD")) return (void *)table->SetLocalDimmingAMD;
1946 
1947     // ---- VK_EXT_buffer_device_address extension commands
1948     if (!strcmp(name, "GetBufferDeviceAddressEXT")) return (void *)table->GetBufferDeviceAddressEXT;
1949 
1950     // ---- VK_EXT_full_screen_exclusive extension commands
1951 #ifdef VK_USE_PLATFORM_WIN32_KHR
1952     if (!strcmp(name, "AcquireFullScreenExclusiveModeEXT")) return (void *)table->AcquireFullScreenExclusiveModeEXT;
1953 #endif // VK_USE_PLATFORM_WIN32_KHR
1954 #ifdef VK_USE_PLATFORM_WIN32_KHR
1955     if (!strcmp(name, "ReleaseFullScreenExclusiveModeEXT")) return (void *)table->ReleaseFullScreenExclusiveModeEXT;
1956 #endif // VK_USE_PLATFORM_WIN32_KHR
1957 #ifdef VK_USE_PLATFORM_WIN32_KHR
1958     if (!strcmp(name, "GetDeviceGroupSurfacePresentModes2EXT")) return (void *)table->GetDeviceGroupSurfacePresentModes2EXT;
1959 #endif // VK_USE_PLATFORM_WIN32_KHR
1960 
1961     // ---- VK_EXT_line_rasterization extension commands
1962     if (!strcmp(name, "CmdSetLineStippleEXT")) return (void *)table->CmdSetLineStippleEXT;
1963 
1964     // ---- VK_EXT_host_query_reset extension commands
1965     if (!strcmp(name, "ResetQueryPoolEXT")) return (void *)table->ResetQueryPoolEXT;
1966 
1967     // ---- VK_EXT_extended_dynamic_state extension commands
1968     if (!strcmp(name, "CmdSetCullModeEXT")) return (void *)table->CmdSetCullModeEXT;
1969     if (!strcmp(name, "CmdSetFrontFaceEXT")) return (void *)table->CmdSetFrontFaceEXT;
1970     if (!strcmp(name, "CmdSetPrimitiveTopologyEXT")) return (void *)table->CmdSetPrimitiveTopologyEXT;
1971     if (!strcmp(name, "CmdSetViewportWithCountEXT")) return (void *)table->CmdSetViewportWithCountEXT;
1972     if (!strcmp(name, "CmdSetScissorWithCountEXT")) return (void *)table->CmdSetScissorWithCountEXT;
1973     if (!strcmp(name, "CmdBindVertexBuffers2EXT")) return (void *)table->CmdBindVertexBuffers2EXT;
1974     if (!strcmp(name, "CmdSetDepthTestEnableEXT")) return (void *)table->CmdSetDepthTestEnableEXT;
1975     if (!strcmp(name, "CmdSetDepthWriteEnableEXT")) return (void *)table->CmdSetDepthWriteEnableEXT;
1976     if (!strcmp(name, "CmdSetDepthCompareOpEXT")) return (void *)table->CmdSetDepthCompareOpEXT;
1977     if (!strcmp(name, "CmdSetDepthBoundsTestEnableEXT")) return (void *)table->CmdSetDepthBoundsTestEnableEXT;
1978     if (!strcmp(name, "CmdSetStencilTestEnableEXT")) return (void *)table->CmdSetStencilTestEnableEXT;
1979     if (!strcmp(name, "CmdSetStencilOpEXT")) return (void *)table->CmdSetStencilOpEXT;
1980 
1981     // ---- VK_NV_device_generated_commands extension commands
1982     if (!strcmp(name, "GetGeneratedCommandsMemoryRequirementsNV")) return (void *)table->GetGeneratedCommandsMemoryRequirementsNV;
1983     if (!strcmp(name, "CmdPreprocessGeneratedCommandsNV")) return (void *)table->CmdPreprocessGeneratedCommandsNV;
1984     if (!strcmp(name, "CmdExecuteGeneratedCommandsNV")) return (void *)table->CmdExecuteGeneratedCommandsNV;
1985     if (!strcmp(name, "CmdBindPipelineShaderGroupNV")) return (void *)table->CmdBindPipelineShaderGroupNV;
1986     if (!strcmp(name, "CreateIndirectCommandsLayoutNV")) return (void *)table->CreateIndirectCommandsLayoutNV;
1987     if (!strcmp(name, "DestroyIndirectCommandsLayoutNV")) return (void *)table->DestroyIndirectCommandsLayoutNV;
1988 
1989     // ---- VK_EXT_private_data extension commands
1990     if (!strcmp(name, "CreatePrivateDataSlotEXT")) return (void *)table->CreatePrivateDataSlotEXT;
1991     if (!strcmp(name, "DestroyPrivateDataSlotEXT")) return (void *)table->DestroyPrivateDataSlotEXT;
1992     if (!strcmp(name, "SetPrivateDataEXT")) return (void *)table->SetPrivateDataEXT;
1993     if (!strcmp(name, "GetPrivateDataEXT")) return (void *)table->GetPrivateDataEXT;
1994 
1995     // ---- VK_EXT_metal_objects extension commands
1996 #ifdef VK_USE_PLATFORM_METAL_EXT
1997     if (!strcmp(name, "ExportMetalObjectsEXT")) return (void *)table->ExportMetalObjectsEXT;
1998 #endif // VK_USE_PLATFORM_METAL_EXT
1999 
2000     // ---- VK_NV_fragment_shading_rate_enums extension commands
2001     if (!strcmp(name, "CmdSetFragmentShadingRateEnumNV")) return (void *)table->CmdSetFragmentShadingRateEnumNV;
2002 
2003     // ---- VK_EXT_image_compression_control extension commands
2004     if (!strcmp(name, "GetImageSubresourceLayout2EXT")) return (void *)table->GetImageSubresourceLayout2EXT;
2005 
2006     // ---- VK_EXT_device_fault extension commands
2007     if (!strcmp(name, "GetDeviceFaultInfoEXT")) return (void *)table->GetDeviceFaultInfoEXT;
2008 
2009     // ---- VK_EXT_vertex_input_dynamic_state extension commands
2010     if (!strcmp(name, "CmdSetVertexInputEXT")) return (void *)table->CmdSetVertexInputEXT;
2011 
2012     // ---- VK_FUCHSIA_external_memory extension commands
2013 #ifdef VK_USE_PLATFORM_FUCHSIA
2014     if (!strcmp(name, "GetMemoryZirconHandleFUCHSIA")) return (void *)table->GetMemoryZirconHandleFUCHSIA;
2015 #endif // VK_USE_PLATFORM_FUCHSIA
2016 #ifdef VK_USE_PLATFORM_FUCHSIA
2017     if (!strcmp(name, "GetMemoryZirconHandlePropertiesFUCHSIA")) return (void *)table->GetMemoryZirconHandlePropertiesFUCHSIA;
2018 #endif // VK_USE_PLATFORM_FUCHSIA
2019 
2020     // ---- VK_FUCHSIA_external_semaphore extension commands
2021 #ifdef VK_USE_PLATFORM_FUCHSIA
2022     if (!strcmp(name, "ImportSemaphoreZirconHandleFUCHSIA")) return (void *)table->ImportSemaphoreZirconHandleFUCHSIA;
2023 #endif // VK_USE_PLATFORM_FUCHSIA
2024 #ifdef VK_USE_PLATFORM_FUCHSIA
2025     if (!strcmp(name, "GetSemaphoreZirconHandleFUCHSIA")) return (void *)table->GetSemaphoreZirconHandleFUCHSIA;
2026 #endif // VK_USE_PLATFORM_FUCHSIA
2027 
2028     // ---- VK_FUCHSIA_buffer_collection extension commands
2029 #ifdef VK_USE_PLATFORM_FUCHSIA
2030     if (!strcmp(name, "CreateBufferCollectionFUCHSIA")) return (void *)table->CreateBufferCollectionFUCHSIA;
2031 #endif // VK_USE_PLATFORM_FUCHSIA
2032 #ifdef VK_USE_PLATFORM_FUCHSIA
2033     if (!strcmp(name, "SetBufferCollectionImageConstraintsFUCHSIA")) return (void *)table->SetBufferCollectionImageConstraintsFUCHSIA;
2034 #endif // VK_USE_PLATFORM_FUCHSIA
2035 #ifdef VK_USE_PLATFORM_FUCHSIA
2036     if (!strcmp(name, "SetBufferCollectionBufferConstraintsFUCHSIA")) return (void *)table->SetBufferCollectionBufferConstraintsFUCHSIA;
2037 #endif // VK_USE_PLATFORM_FUCHSIA
2038 #ifdef VK_USE_PLATFORM_FUCHSIA
2039     if (!strcmp(name, "DestroyBufferCollectionFUCHSIA")) return (void *)table->DestroyBufferCollectionFUCHSIA;
2040 #endif // VK_USE_PLATFORM_FUCHSIA
2041 #ifdef VK_USE_PLATFORM_FUCHSIA
2042     if (!strcmp(name, "GetBufferCollectionPropertiesFUCHSIA")) return (void *)table->GetBufferCollectionPropertiesFUCHSIA;
2043 #endif // VK_USE_PLATFORM_FUCHSIA
2044 
2045     // ---- VK_HUAWEI_subpass_shading extension commands
2046     if (!strcmp(name, "GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI")) return (void *)table->GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
2047     if (!strcmp(name, "CmdSubpassShadingHUAWEI")) return (void *)table->CmdSubpassShadingHUAWEI;
2048 
2049     // ---- VK_HUAWEI_invocation_mask extension commands
2050     if (!strcmp(name, "CmdBindInvocationMaskHUAWEI")) return (void *)table->CmdBindInvocationMaskHUAWEI;
2051 
2052     // ---- VK_NV_external_memory_rdma extension commands
2053     if (!strcmp(name, "GetMemoryRemoteAddressNV")) return (void *)table->GetMemoryRemoteAddressNV;
2054 
2055     // ---- VK_EXT_pipeline_properties extension commands
2056     if (!strcmp(name, "GetPipelinePropertiesEXT")) return (void *)table->GetPipelinePropertiesEXT;
2057 
2058     // ---- VK_EXT_extended_dynamic_state2 extension commands
2059     if (!strcmp(name, "CmdSetPatchControlPointsEXT")) return (void *)table->CmdSetPatchControlPointsEXT;
2060     if (!strcmp(name, "CmdSetRasterizerDiscardEnableEXT")) return (void *)table->CmdSetRasterizerDiscardEnableEXT;
2061     if (!strcmp(name, "CmdSetDepthBiasEnableEXT")) return (void *)table->CmdSetDepthBiasEnableEXT;
2062     if (!strcmp(name, "CmdSetLogicOpEXT")) return (void *)table->CmdSetLogicOpEXT;
2063     if (!strcmp(name, "CmdSetPrimitiveRestartEnableEXT")) return (void *)table->CmdSetPrimitiveRestartEnableEXT;
2064 
2065     // ---- VK_EXT_color_write_enable extension commands
2066     if (!strcmp(name, "CmdSetColorWriteEnableEXT")) return (void *)table->CmdSetColorWriteEnableEXT;
2067 
2068     // ---- VK_EXT_multi_draw extension commands
2069     if (!strcmp(name, "CmdDrawMultiEXT")) return (void *)table->CmdDrawMultiEXT;
2070     if (!strcmp(name, "CmdDrawMultiIndexedEXT")) return (void *)table->CmdDrawMultiIndexedEXT;
2071 
2072     // ---- VK_EXT_opacity_micromap extension commands
2073     if (!strcmp(name, "CreateMicromapEXT")) return (void *)table->CreateMicromapEXT;
2074     if (!strcmp(name, "DestroyMicromapEXT")) return (void *)table->DestroyMicromapEXT;
2075     if (!strcmp(name, "CmdBuildMicromapsEXT")) return (void *)table->CmdBuildMicromapsEXT;
2076     if (!strcmp(name, "BuildMicromapsEXT")) return (void *)table->BuildMicromapsEXT;
2077     if (!strcmp(name, "CopyMicromapEXT")) return (void *)table->CopyMicromapEXT;
2078     if (!strcmp(name, "CopyMicromapToMemoryEXT")) return (void *)table->CopyMicromapToMemoryEXT;
2079     if (!strcmp(name, "CopyMemoryToMicromapEXT")) return (void *)table->CopyMemoryToMicromapEXT;
2080     if (!strcmp(name, "WriteMicromapsPropertiesEXT")) return (void *)table->WriteMicromapsPropertiesEXT;
2081     if (!strcmp(name, "CmdCopyMicromapEXT")) return (void *)table->CmdCopyMicromapEXT;
2082     if (!strcmp(name, "CmdCopyMicromapToMemoryEXT")) return (void *)table->CmdCopyMicromapToMemoryEXT;
2083     if (!strcmp(name, "CmdCopyMemoryToMicromapEXT")) return (void *)table->CmdCopyMemoryToMicromapEXT;
2084     if (!strcmp(name, "CmdWriteMicromapsPropertiesEXT")) return (void *)table->CmdWriteMicromapsPropertiesEXT;
2085     if (!strcmp(name, "GetDeviceMicromapCompatibilityEXT")) return (void *)table->GetDeviceMicromapCompatibilityEXT;
2086     if (!strcmp(name, "GetMicromapBuildSizesEXT")) return (void *)table->GetMicromapBuildSizesEXT;
2087 
2088     // ---- VK_EXT_pageable_device_local_memory extension commands
2089     if (!strcmp(name, "SetDeviceMemoryPriorityEXT")) return (void *)table->SetDeviceMemoryPriorityEXT;
2090 
2091     // ---- VK_VALVE_descriptor_set_host_mapping extension commands
2092     if (!strcmp(name, "GetDescriptorSetLayoutHostMappingInfoVALVE")) return (void *)table->GetDescriptorSetLayoutHostMappingInfoVALVE;
2093     if (!strcmp(name, "GetDescriptorSetHostMappingVALVE")) return (void *)table->GetDescriptorSetHostMappingVALVE;
2094 
2095     // ---- VK_EXT_extended_dynamic_state3 extension commands
2096     if (!strcmp(name, "CmdSetTessellationDomainOriginEXT")) return (void *)table->CmdSetTessellationDomainOriginEXT;
2097     if (!strcmp(name, "CmdSetDepthClampEnableEXT")) return (void *)table->CmdSetDepthClampEnableEXT;
2098     if (!strcmp(name, "CmdSetPolygonModeEXT")) return (void *)table->CmdSetPolygonModeEXT;
2099     if (!strcmp(name, "CmdSetRasterizationSamplesEXT")) return (void *)table->CmdSetRasterizationSamplesEXT;
2100     if (!strcmp(name, "CmdSetSampleMaskEXT")) return (void *)table->CmdSetSampleMaskEXT;
2101     if (!strcmp(name, "CmdSetAlphaToCoverageEnableEXT")) return (void *)table->CmdSetAlphaToCoverageEnableEXT;
2102     if (!strcmp(name, "CmdSetAlphaToOneEnableEXT")) return (void *)table->CmdSetAlphaToOneEnableEXT;
2103     if (!strcmp(name, "CmdSetLogicOpEnableEXT")) return (void *)table->CmdSetLogicOpEnableEXT;
2104     if (!strcmp(name, "CmdSetColorBlendEnableEXT")) return (void *)table->CmdSetColorBlendEnableEXT;
2105     if (!strcmp(name, "CmdSetColorBlendEquationEXT")) return (void *)table->CmdSetColorBlendEquationEXT;
2106     if (!strcmp(name, "CmdSetColorWriteMaskEXT")) return (void *)table->CmdSetColorWriteMaskEXT;
2107     if (!strcmp(name, "CmdSetRasterizationStreamEXT")) return (void *)table->CmdSetRasterizationStreamEXT;
2108     if (!strcmp(name, "CmdSetConservativeRasterizationModeEXT")) return (void *)table->CmdSetConservativeRasterizationModeEXT;
2109     if (!strcmp(name, "CmdSetExtraPrimitiveOverestimationSizeEXT")) return (void *)table->CmdSetExtraPrimitiveOverestimationSizeEXT;
2110     if (!strcmp(name, "CmdSetDepthClipEnableEXT")) return (void *)table->CmdSetDepthClipEnableEXT;
2111     if (!strcmp(name, "CmdSetSampleLocationsEnableEXT")) return (void *)table->CmdSetSampleLocationsEnableEXT;
2112     if (!strcmp(name, "CmdSetColorBlendAdvancedEXT")) return (void *)table->CmdSetColorBlendAdvancedEXT;
2113     if (!strcmp(name, "CmdSetProvokingVertexModeEXT")) return (void *)table->CmdSetProvokingVertexModeEXT;
2114     if (!strcmp(name, "CmdSetLineRasterizationModeEXT")) return (void *)table->CmdSetLineRasterizationModeEXT;
2115     if (!strcmp(name, "CmdSetLineStippleEnableEXT")) return (void *)table->CmdSetLineStippleEnableEXT;
2116     if (!strcmp(name, "CmdSetDepthClipNegativeOneToOneEXT")) return (void *)table->CmdSetDepthClipNegativeOneToOneEXT;
2117     if (!strcmp(name, "CmdSetViewportWScalingEnableNV")) return (void *)table->CmdSetViewportWScalingEnableNV;
2118     if (!strcmp(name, "CmdSetViewportSwizzleNV")) return (void *)table->CmdSetViewportSwizzleNV;
2119     if (!strcmp(name, "CmdSetCoverageToColorEnableNV")) return (void *)table->CmdSetCoverageToColorEnableNV;
2120     if (!strcmp(name, "CmdSetCoverageToColorLocationNV")) return (void *)table->CmdSetCoverageToColorLocationNV;
2121     if (!strcmp(name, "CmdSetCoverageModulationModeNV")) return (void *)table->CmdSetCoverageModulationModeNV;
2122     if (!strcmp(name, "CmdSetCoverageModulationTableEnableNV")) return (void *)table->CmdSetCoverageModulationTableEnableNV;
2123     if (!strcmp(name, "CmdSetCoverageModulationTableNV")) return (void *)table->CmdSetCoverageModulationTableNV;
2124     if (!strcmp(name, "CmdSetShadingRateImageEnableNV")) return (void *)table->CmdSetShadingRateImageEnableNV;
2125     if (!strcmp(name, "CmdSetRepresentativeFragmentTestEnableNV")) return (void *)table->CmdSetRepresentativeFragmentTestEnableNV;
2126     if (!strcmp(name, "CmdSetCoverageReductionModeNV")) return (void *)table->CmdSetCoverageReductionModeNV;
2127 
2128     // ---- VK_EXT_shader_module_identifier extension commands
2129     if (!strcmp(name, "GetShaderModuleIdentifierEXT")) return (void *)table->GetShaderModuleIdentifierEXT;
2130     if (!strcmp(name, "GetShaderModuleCreateInfoIdentifierEXT")) return (void *)table->GetShaderModuleCreateInfoIdentifierEXT;
2131 
2132     // ---- VK_NV_optical_flow extension commands
2133     if (!strcmp(name, "CreateOpticalFlowSessionNV")) return (void *)table->CreateOpticalFlowSessionNV;
2134     if (!strcmp(name, "DestroyOpticalFlowSessionNV")) return (void *)table->DestroyOpticalFlowSessionNV;
2135     if (!strcmp(name, "BindOpticalFlowSessionImageNV")) return (void *)table->BindOpticalFlowSessionImageNV;
2136     if (!strcmp(name, "CmdOpticalFlowExecuteNV")) return (void *)table->CmdOpticalFlowExecuteNV;
2137 
2138     // ---- VK_QCOM_tile_properties extension commands
2139     if (!strcmp(name, "GetFramebufferTilePropertiesQCOM")) return (void *)table->GetFramebufferTilePropertiesQCOM;
2140     if (!strcmp(name, "GetDynamicRenderingTilePropertiesQCOM")) return (void *)table->GetDynamicRenderingTilePropertiesQCOM;
2141 
2142     // ---- VK_OHOS_native_buffer extension commands
2143 #ifdef VK_USE_PLATFORM_OHOS
2144     if (!strcmp(name, "SetNativeFenceFdOpenHarmony")) return (void *)table->SetNativeFenceFdOpenHarmony;
2145 #endif // VK_USE_PLATFORM_OHOS
2146 #ifdef VK_USE_PLATFORM_OHOS
2147     if (!strcmp(name, "GetNativeFenceFdOpenHarmony")) return (void *)table->GetNativeFenceFdOpenHarmony;
2148 #endif // VK_USE_PLATFORM_OHOS
2149 #ifdef VK_USE_PLATFORM_OHOS
2150     if (!strcmp(name, "GetSwapchainGrallocUsageOHOS")) return (void *)table->GetSwapchainGrallocUsageOHOS;
2151 #endif // VK_USE_PLATFORM_OHOS
2152 #ifdef VK_USE_PLATFORM_OHOS
2153     if (!strcmp(name, "AcquireImageOHOS")) return (void *)table->AcquireImageOHOS;
2154 #endif // VK_USE_PLATFORM_OHOS
2155 #ifdef VK_USE_PLATFORM_OHOS
2156     if (!strcmp(name, "QueueSignalReleaseImageOHOS")) return (void *)table->QueueSignalReleaseImageOHOS;
2157 #endif // VK_USE_PLATFORM_OHOS
2158 
2159     // ---- VK_OHOS_external_memory extension commands
2160 #ifdef VK_USE_PLATFORM_OHOS
2161     if (!strcmp(name, "GetNativeBufferPropertiesOHOS")) return (void *)table->GetNativeBufferPropertiesOHOS;
2162 #endif // VK_USE_PLATFORM_OHOS
2163 #ifdef VK_USE_PLATFORM_OHOS
2164     if (!strcmp(name, "GetMemoryNativeBufferOHOS")) return (void *)table->GetMemoryNativeBufferOHOS;
2165 #endif // VK_USE_PLATFORM_OHOS
2166 
2167     // ---- VK_KHR_acceleration_structure extension commands
2168     if (!strcmp(name, "CreateAccelerationStructureKHR")) return (void *)table->CreateAccelerationStructureKHR;
2169     if (!strcmp(name, "DestroyAccelerationStructureKHR")) return (void *)table->DestroyAccelerationStructureKHR;
2170     if (!strcmp(name, "CmdBuildAccelerationStructuresKHR")) return (void *)table->CmdBuildAccelerationStructuresKHR;
2171     if (!strcmp(name, "CmdBuildAccelerationStructuresIndirectKHR")) return (void *)table->CmdBuildAccelerationStructuresIndirectKHR;
2172     if (!strcmp(name, "BuildAccelerationStructuresKHR")) return (void *)table->BuildAccelerationStructuresKHR;
2173     if (!strcmp(name, "CopyAccelerationStructureKHR")) return (void *)table->CopyAccelerationStructureKHR;
2174     if (!strcmp(name, "CopyAccelerationStructureToMemoryKHR")) return (void *)table->CopyAccelerationStructureToMemoryKHR;
2175     if (!strcmp(name, "CopyMemoryToAccelerationStructureKHR")) return (void *)table->CopyMemoryToAccelerationStructureKHR;
2176     if (!strcmp(name, "WriteAccelerationStructuresPropertiesKHR")) return (void *)table->WriteAccelerationStructuresPropertiesKHR;
2177     if (!strcmp(name, "CmdCopyAccelerationStructureKHR")) return (void *)table->CmdCopyAccelerationStructureKHR;
2178     if (!strcmp(name, "CmdCopyAccelerationStructureToMemoryKHR")) return (void *)table->CmdCopyAccelerationStructureToMemoryKHR;
2179     if (!strcmp(name, "CmdCopyMemoryToAccelerationStructureKHR")) return (void *)table->CmdCopyMemoryToAccelerationStructureKHR;
2180     if (!strcmp(name, "GetAccelerationStructureDeviceAddressKHR")) return (void *)table->GetAccelerationStructureDeviceAddressKHR;
2181     if (!strcmp(name, "CmdWriteAccelerationStructuresPropertiesKHR")) return (void *)table->CmdWriteAccelerationStructuresPropertiesKHR;
2182     if (!strcmp(name, "GetDeviceAccelerationStructureCompatibilityKHR")) return (void *)table->GetDeviceAccelerationStructureCompatibilityKHR;
2183     if (!strcmp(name, "GetAccelerationStructureBuildSizesKHR")) return (void *)table->GetAccelerationStructureBuildSizesKHR;
2184 
2185     // ---- VK_KHR_ray_tracing_pipeline extension commands
2186     if (!strcmp(name, "CmdTraceRaysKHR")) return (void *)table->CmdTraceRaysKHR;
2187     if (!strcmp(name, "CreateRayTracingPipelinesKHR")) return (void *)table->CreateRayTracingPipelinesKHR;
2188     if (!strcmp(name, "GetRayTracingCaptureReplayShaderGroupHandlesKHR")) return (void *)table->GetRayTracingCaptureReplayShaderGroupHandlesKHR;
2189     if (!strcmp(name, "CmdTraceRaysIndirectKHR")) return (void *)table->CmdTraceRaysIndirectKHR;
2190     if (!strcmp(name, "GetRayTracingShaderGroupStackSizeKHR")) return (void *)table->GetRayTracingShaderGroupStackSizeKHR;
2191     if (!strcmp(name, "CmdSetRayTracingPipelineStackSizeKHR")) return (void *)table->CmdSetRayTracingPipelineStackSizeKHR;
2192 
2193     // ---- VK_EXT_mesh_shader extension commands
2194     if (!strcmp(name, "CmdDrawMeshTasksEXT")) return (void *)table->CmdDrawMeshTasksEXT;
2195     if (!strcmp(name, "CmdDrawMeshTasksIndirectEXT")) return (void *)table->CmdDrawMeshTasksIndirectEXT;
2196     if (!strcmp(name, "CmdDrawMeshTasksIndirectCountEXT")) return (void *)table->CmdDrawMeshTasksIndirectCountEXT;
2197 
2198     return NULL;
2199 }
2200 
2201 // Instance command lookup function
loader_lookup_instance_dispatch_table(const VkLayerInstanceDispatchTable * table,const char * name,bool * found_name)2202 VKAPI_ATTR void* VKAPI_CALL loader_lookup_instance_dispatch_table(const VkLayerInstanceDispatchTable *table, const char *name,
2203                                                                  bool *found_name) {
2204     if (!name || name[0] != 'v' || name[1] != 'k') {
2205         *found_name = false;
2206         return NULL;
2207     }
2208 
2209     *found_name = true;
2210     name += 2;
2211 
2212     // ---- Core 1_0 commands
2213     if (!strcmp(name, "DestroyInstance")) return (void *)table->DestroyInstance;
2214     if (!strcmp(name, "EnumeratePhysicalDevices")) return (void *)table->EnumeratePhysicalDevices;
2215     if (!strcmp(name, "GetPhysicalDeviceFeatures")) return (void *)table->GetPhysicalDeviceFeatures;
2216     if (!strcmp(name, "GetPhysicalDeviceFormatProperties")) return (void *)table->GetPhysicalDeviceFormatProperties;
2217     if (!strcmp(name, "GetPhysicalDeviceImageFormatProperties")) return (void *)table->GetPhysicalDeviceImageFormatProperties;
2218     if (!strcmp(name, "GetPhysicalDeviceProperties")) return (void *)table->GetPhysicalDeviceProperties;
2219     if (!strcmp(name, "GetPhysicalDeviceQueueFamilyProperties")) return (void *)table->GetPhysicalDeviceQueueFamilyProperties;
2220     if (!strcmp(name, "GetPhysicalDeviceMemoryProperties")) return (void *)table->GetPhysicalDeviceMemoryProperties;
2221     if (!strcmp(name, "GetInstanceProcAddr")) return (void *)table->GetInstanceProcAddr;
2222     if (!strcmp(name, "EnumerateDeviceExtensionProperties")) return (void *)table->EnumerateDeviceExtensionProperties;
2223     if (!strcmp(name, "EnumerateDeviceLayerProperties")) return (void *)table->EnumerateDeviceLayerProperties;
2224     if (!strcmp(name, "GetPhysicalDeviceSparseImageFormatProperties")) return (void *)table->GetPhysicalDeviceSparseImageFormatProperties;
2225 
2226     // ---- Core 1_1 commands
2227     if (!strcmp(name, "EnumeratePhysicalDeviceGroups")) return (void *)table->EnumeratePhysicalDeviceGroups;
2228     if (!strcmp(name, "GetPhysicalDeviceFeatures2")) return (void *)table->GetPhysicalDeviceFeatures2;
2229     if (!strcmp(name, "GetPhysicalDeviceProperties2")) return (void *)table->GetPhysicalDeviceProperties2;
2230     if (!strcmp(name, "GetPhysicalDeviceFormatProperties2")) return (void *)table->GetPhysicalDeviceFormatProperties2;
2231     if (!strcmp(name, "GetPhysicalDeviceImageFormatProperties2")) return (void *)table->GetPhysicalDeviceImageFormatProperties2;
2232     if (!strcmp(name, "GetPhysicalDeviceQueueFamilyProperties2")) return (void *)table->GetPhysicalDeviceQueueFamilyProperties2;
2233     if (!strcmp(name, "GetPhysicalDeviceMemoryProperties2")) return (void *)table->GetPhysicalDeviceMemoryProperties2;
2234     if (!strcmp(name, "GetPhysicalDeviceSparseImageFormatProperties2")) return (void *)table->GetPhysicalDeviceSparseImageFormatProperties2;
2235     if (!strcmp(name, "GetPhysicalDeviceExternalBufferProperties")) return (void *)table->GetPhysicalDeviceExternalBufferProperties;
2236     if (!strcmp(name, "GetPhysicalDeviceExternalFenceProperties")) return (void *)table->GetPhysicalDeviceExternalFenceProperties;
2237     if (!strcmp(name, "GetPhysicalDeviceExternalSemaphoreProperties")) return (void *)table->GetPhysicalDeviceExternalSemaphoreProperties;
2238 
2239     // ---- Core 1_3 commands
2240     if (!strcmp(name, "GetPhysicalDeviceToolProperties")) return (void *)table->GetPhysicalDeviceToolProperties;
2241 
2242     // ---- VK_KHR_surface extension commands
2243     if (!strcmp(name, "DestroySurfaceKHR")) return (void *)table->DestroySurfaceKHR;
2244     if (!strcmp(name, "GetPhysicalDeviceSurfaceSupportKHR")) return (void *)table->GetPhysicalDeviceSurfaceSupportKHR;
2245     if (!strcmp(name, "GetPhysicalDeviceSurfaceCapabilitiesKHR")) return (void *)table->GetPhysicalDeviceSurfaceCapabilitiesKHR;
2246     if (!strcmp(name, "GetPhysicalDeviceSurfaceFormatsKHR")) return (void *)table->GetPhysicalDeviceSurfaceFormatsKHR;
2247     if (!strcmp(name, "GetPhysicalDeviceSurfacePresentModesKHR")) return (void *)table->GetPhysicalDeviceSurfacePresentModesKHR;
2248 
2249     // ---- VK_KHR_swapchain extension commands
2250     if (!strcmp(name, "GetPhysicalDevicePresentRectanglesKHR")) return (void *)table->GetPhysicalDevicePresentRectanglesKHR;
2251 
2252     // ---- VK_KHR_display extension commands
2253     if (!strcmp(name, "GetPhysicalDeviceDisplayPropertiesKHR")) return (void *)table->GetPhysicalDeviceDisplayPropertiesKHR;
2254     if (!strcmp(name, "GetPhysicalDeviceDisplayPlanePropertiesKHR")) return (void *)table->GetPhysicalDeviceDisplayPlanePropertiesKHR;
2255     if (!strcmp(name, "GetDisplayPlaneSupportedDisplaysKHR")) return (void *)table->GetDisplayPlaneSupportedDisplaysKHR;
2256     if (!strcmp(name, "GetDisplayModePropertiesKHR")) return (void *)table->GetDisplayModePropertiesKHR;
2257     if (!strcmp(name, "CreateDisplayModeKHR")) return (void *)table->CreateDisplayModeKHR;
2258     if (!strcmp(name, "GetDisplayPlaneCapabilitiesKHR")) return (void *)table->GetDisplayPlaneCapabilitiesKHR;
2259     if (!strcmp(name, "CreateDisplayPlaneSurfaceKHR")) return (void *)table->CreateDisplayPlaneSurfaceKHR;
2260 
2261     // ---- VK_KHR_xlib_surface extension commands
2262 #ifdef VK_USE_PLATFORM_XLIB_KHR
2263     if (!strcmp(name, "CreateXlibSurfaceKHR")) return (void *)table->CreateXlibSurfaceKHR;
2264 #endif // VK_USE_PLATFORM_XLIB_KHR
2265 #ifdef VK_USE_PLATFORM_XLIB_KHR
2266     if (!strcmp(name, "GetPhysicalDeviceXlibPresentationSupportKHR")) return (void *)table->GetPhysicalDeviceXlibPresentationSupportKHR;
2267 #endif // VK_USE_PLATFORM_XLIB_KHR
2268 
2269     // ---- VK_KHR_xcb_surface extension commands
2270 #ifdef VK_USE_PLATFORM_XCB_KHR
2271     if (!strcmp(name, "CreateXcbSurfaceKHR")) return (void *)table->CreateXcbSurfaceKHR;
2272 #endif // VK_USE_PLATFORM_XCB_KHR
2273 #ifdef VK_USE_PLATFORM_XCB_KHR
2274     if (!strcmp(name, "GetPhysicalDeviceXcbPresentationSupportKHR")) return (void *)table->GetPhysicalDeviceXcbPresentationSupportKHR;
2275 #endif // VK_USE_PLATFORM_XCB_KHR
2276 
2277     // ---- VK_KHR_wayland_surface extension commands
2278 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
2279     if (!strcmp(name, "CreateWaylandSurfaceKHR")) return (void *)table->CreateWaylandSurfaceKHR;
2280 #endif // VK_USE_PLATFORM_WAYLAND_KHR
2281 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
2282     if (!strcmp(name, "GetPhysicalDeviceWaylandPresentationSupportKHR")) return (void *)table->GetPhysicalDeviceWaylandPresentationSupportKHR;
2283 #endif // VK_USE_PLATFORM_WAYLAND_KHR
2284 
2285     // ---- VK_KHR_android_surface extension commands
2286 #ifdef VK_USE_PLATFORM_ANDROID_KHR
2287     if (!strcmp(name, "CreateAndroidSurfaceKHR")) return (void *)table->CreateAndroidSurfaceKHR;
2288 #endif // VK_USE_PLATFORM_ANDROID_KHR
2289 
2290     // ---- VK_KHR_win32_surface extension commands
2291 #ifdef VK_USE_PLATFORM_WIN32_KHR
2292     if (!strcmp(name, "CreateWin32SurfaceKHR")) return (void *)table->CreateWin32SurfaceKHR;
2293 #endif // VK_USE_PLATFORM_WIN32_KHR
2294 #ifdef VK_USE_PLATFORM_WIN32_KHR
2295     if (!strcmp(name, "GetPhysicalDeviceWin32PresentationSupportKHR")) return (void *)table->GetPhysicalDeviceWin32PresentationSupportKHR;
2296 #endif // VK_USE_PLATFORM_WIN32_KHR
2297 
2298     // ---- VK_KHR_video_queue extension commands
2299 #ifdef VK_ENABLE_BETA_EXTENSIONS
2300     if (!strcmp(name, "GetPhysicalDeviceVideoCapabilitiesKHR")) return (void *)table->GetPhysicalDeviceVideoCapabilitiesKHR;
2301 #endif // VK_ENABLE_BETA_EXTENSIONS
2302 #ifdef VK_ENABLE_BETA_EXTENSIONS
2303     if (!strcmp(name, "GetPhysicalDeviceVideoFormatPropertiesKHR")) return (void *)table->GetPhysicalDeviceVideoFormatPropertiesKHR;
2304 #endif // VK_ENABLE_BETA_EXTENSIONS
2305 
2306     // ---- VK_KHR_get_physical_device_properties2 extension commands
2307     if (!strcmp(name, "GetPhysicalDeviceFeatures2KHR")) return (void *)table->GetPhysicalDeviceFeatures2KHR;
2308     if (!strcmp(name, "GetPhysicalDeviceProperties2KHR")) return (void *)table->GetPhysicalDeviceProperties2KHR;
2309     if (!strcmp(name, "GetPhysicalDeviceFormatProperties2KHR")) return (void *)table->GetPhysicalDeviceFormatProperties2KHR;
2310     if (!strcmp(name, "GetPhysicalDeviceImageFormatProperties2KHR")) return (void *)table->GetPhysicalDeviceImageFormatProperties2KHR;
2311     if (!strcmp(name, "GetPhysicalDeviceQueueFamilyProperties2KHR")) return (void *)table->GetPhysicalDeviceQueueFamilyProperties2KHR;
2312     if (!strcmp(name, "GetPhysicalDeviceMemoryProperties2KHR")) return (void *)table->GetPhysicalDeviceMemoryProperties2KHR;
2313     if (!strcmp(name, "GetPhysicalDeviceSparseImageFormatProperties2KHR")) return (void *)table->GetPhysicalDeviceSparseImageFormatProperties2KHR;
2314 
2315     // ---- VK_KHR_device_group_creation extension commands
2316     if (!strcmp(name, "EnumeratePhysicalDeviceGroupsKHR")) return (void *)table->EnumeratePhysicalDeviceGroupsKHR;
2317 
2318     // ---- VK_KHR_external_memory_capabilities extension commands
2319     if (!strcmp(name, "GetPhysicalDeviceExternalBufferPropertiesKHR")) return (void *)table->GetPhysicalDeviceExternalBufferPropertiesKHR;
2320 
2321     // ---- VK_KHR_external_semaphore_capabilities extension commands
2322     if (!strcmp(name, "GetPhysicalDeviceExternalSemaphorePropertiesKHR")) return (void *)table->GetPhysicalDeviceExternalSemaphorePropertiesKHR;
2323 
2324     // ---- VK_KHR_external_fence_capabilities extension commands
2325     if (!strcmp(name, "GetPhysicalDeviceExternalFencePropertiesKHR")) return (void *)table->GetPhysicalDeviceExternalFencePropertiesKHR;
2326 
2327     // ---- VK_KHR_performance_query extension commands
2328     if (!strcmp(name, "EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR")) return (void *)table->EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
2329     if (!strcmp(name, "GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR")) return (void *)table->GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
2330 
2331     // ---- VK_KHR_get_surface_capabilities2 extension commands
2332     if (!strcmp(name, "GetPhysicalDeviceSurfaceCapabilities2KHR")) return (void *)table->GetPhysicalDeviceSurfaceCapabilities2KHR;
2333     if (!strcmp(name, "GetPhysicalDeviceSurfaceFormats2KHR")) return (void *)table->GetPhysicalDeviceSurfaceFormats2KHR;
2334 
2335     // ---- VK_KHR_get_display_properties2 extension commands
2336     if (!strcmp(name, "GetPhysicalDeviceDisplayProperties2KHR")) return (void *)table->GetPhysicalDeviceDisplayProperties2KHR;
2337     if (!strcmp(name, "GetPhysicalDeviceDisplayPlaneProperties2KHR")) return (void *)table->GetPhysicalDeviceDisplayPlaneProperties2KHR;
2338     if (!strcmp(name, "GetDisplayModeProperties2KHR")) return (void *)table->GetDisplayModeProperties2KHR;
2339     if (!strcmp(name, "GetDisplayPlaneCapabilities2KHR")) return (void *)table->GetDisplayPlaneCapabilities2KHR;
2340 
2341     // ---- VK_KHR_fragment_shading_rate extension commands
2342     if (!strcmp(name, "GetPhysicalDeviceFragmentShadingRatesKHR")) return (void *)table->GetPhysicalDeviceFragmentShadingRatesKHR;
2343 
2344     // ---- VK_EXT_debug_report extension commands
2345     if (!strcmp(name, "CreateDebugReportCallbackEXT")) return (void *)table->CreateDebugReportCallbackEXT;
2346     if (!strcmp(name, "DestroyDebugReportCallbackEXT")) return (void *)table->DestroyDebugReportCallbackEXT;
2347     if (!strcmp(name, "DebugReportMessageEXT")) return (void *)table->DebugReportMessageEXT;
2348 
2349     // ---- VK_GGP_stream_descriptor_surface extension commands
2350 #ifdef VK_USE_PLATFORM_GGP
2351     if (!strcmp(name, "CreateStreamDescriptorSurfaceGGP")) return (void *)table->CreateStreamDescriptorSurfaceGGP;
2352 #endif // VK_USE_PLATFORM_GGP
2353 
2354     // ---- VK_NV_external_memory_capabilities extension commands
2355     if (!strcmp(name, "GetPhysicalDeviceExternalImageFormatPropertiesNV")) return (void *)table->GetPhysicalDeviceExternalImageFormatPropertiesNV;
2356 
2357     // ---- VK_NN_vi_surface extension commands
2358 #ifdef VK_USE_PLATFORM_VI_NN
2359     if (!strcmp(name, "CreateViSurfaceNN")) return (void *)table->CreateViSurfaceNN;
2360 #endif // VK_USE_PLATFORM_VI_NN
2361 
2362     // ---- VK_EXT_direct_mode_display extension commands
2363     if (!strcmp(name, "ReleaseDisplayEXT")) return (void *)table->ReleaseDisplayEXT;
2364 
2365     // ---- VK_EXT_acquire_xlib_display extension commands
2366 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
2367     if (!strcmp(name, "AcquireXlibDisplayEXT")) return (void *)table->AcquireXlibDisplayEXT;
2368 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
2369 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
2370     if (!strcmp(name, "GetRandROutputDisplayEXT")) return (void *)table->GetRandROutputDisplayEXT;
2371 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
2372 
2373     // ---- VK_EXT_display_surface_counter extension commands
2374     if (!strcmp(name, "GetPhysicalDeviceSurfaceCapabilities2EXT")) return (void *)table->GetPhysicalDeviceSurfaceCapabilities2EXT;
2375 
2376     // ---- VK_MVK_ios_surface extension commands
2377 #ifdef VK_USE_PLATFORM_IOS_MVK
2378     if (!strcmp(name, "CreateIOSSurfaceMVK")) return (void *)table->CreateIOSSurfaceMVK;
2379 #endif // VK_USE_PLATFORM_IOS_MVK
2380 
2381     // ---- VK_MVK_macos_surface extension commands
2382 #ifdef VK_USE_PLATFORM_MACOS_MVK
2383     if (!strcmp(name, "CreateMacOSSurfaceMVK")) return (void *)table->CreateMacOSSurfaceMVK;
2384 #endif // VK_USE_PLATFORM_MACOS_MVK
2385 
2386     // ---- VK_EXT_debug_utils extension commands
2387     if (!strcmp(name, "CreateDebugUtilsMessengerEXT")) return (void *)table->CreateDebugUtilsMessengerEXT;
2388     if (!strcmp(name, "DestroyDebugUtilsMessengerEXT")) return (void *)table->DestroyDebugUtilsMessengerEXT;
2389     if (!strcmp(name, "SubmitDebugUtilsMessageEXT")) return (void *)table->SubmitDebugUtilsMessageEXT;
2390 
2391     // ---- VK_EXT_sample_locations extension commands
2392     if (!strcmp(name, "GetPhysicalDeviceMultisamplePropertiesEXT")) return (void *)table->GetPhysicalDeviceMultisamplePropertiesEXT;
2393 
2394     // ---- VK_EXT_calibrated_timestamps extension commands
2395     if (!strcmp(name, "GetPhysicalDeviceCalibrateableTimeDomainsEXT")) return (void *)table->GetPhysicalDeviceCalibrateableTimeDomainsEXT;
2396 
2397     // ---- VK_FUCHSIA_imagepipe_surface extension commands
2398 #ifdef VK_USE_PLATFORM_FUCHSIA
2399     if (!strcmp(name, "CreateImagePipeSurfaceFUCHSIA")) return (void *)table->CreateImagePipeSurfaceFUCHSIA;
2400 #endif // VK_USE_PLATFORM_FUCHSIA
2401 
2402     // ---- VK_EXT_metal_surface extension commands
2403 #ifdef VK_USE_PLATFORM_METAL_EXT
2404     if (!strcmp(name, "CreateMetalSurfaceEXT")) return (void *)table->CreateMetalSurfaceEXT;
2405 #endif // VK_USE_PLATFORM_METAL_EXT
2406 
2407     // ---- VK_EXT_tooling_info extension commands
2408     if (!strcmp(name, "GetPhysicalDeviceToolPropertiesEXT")) return (void *)table->GetPhysicalDeviceToolPropertiesEXT;
2409 
2410     // ---- VK_NV_cooperative_matrix extension commands
2411     if (!strcmp(name, "GetPhysicalDeviceCooperativeMatrixPropertiesNV")) return (void *)table->GetPhysicalDeviceCooperativeMatrixPropertiesNV;
2412 
2413     // ---- VK_NV_coverage_reduction_mode extension commands
2414     if (!strcmp(name, "GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV")) return (void *)table->GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
2415 
2416     // ---- VK_EXT_full_screen_exclusive extension commands
2417 #ifdef VK_USE_PLATFORM_WIN32_KHR
2418     if (!strcmp(name, "GetPhysicalDeviceSurfacePresentModes2EXT")) return (void *)table->GetPhysicalDeviceSurfacePresentModes2EXT;
2419 #endif // VK_USE_PLATFORM_WIN32_KHR
2420 
2421     // ---- VK_EXT_headless_surface extension commands
2422     if (!strcmp(name, "CreateHeadlessSurfaceEXT")) return (void *)table->CreateHeadlessSurfaceEXT;
2423 
2424     // ---- VK_EXT_acquire_drm_display extension commands
2425     if (!strcmp(name, "AcquireDrmDisplayEXT")) return (void *)table->AcquireDrmDisplayEXT;
2426     if (!strcmp(name, "GetDrmDisplayEXT")) return (void *)table->GetDrmDisplayEXT;
2427 
2428     // ---- VK_NV_acquire_winrt_display extension commands
2429 #ifdef VK_USE_PLATFORM_WIN32_KHR
2430     if (!strcmp(name, "AcquireWinrtDisplayNV")) return (void *)table->AcquireWinrtDisplayNV;
2431 #endif // VK_USE_PLATFORM_WIN32_KHR
2432 #ifdef VK_USE_PLATFORM_WIN32_KHR
2433     if (!strcmp(name, "GetWinrtDisplayNV")) return (void *)table->GetWinrtDisplayNV;
2434 #endif // VK_USE_PLATFORM_WIN32_KHR
2435 
2436     // ---- VK_EXT_directfb_surface extension commands
2437 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT
2438     if (!strcmp(name, "CreateDirectFBSurfaceEXT")) return (void *)table->CreateDirectFBSurfaceEXT;
2439 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
2440 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT
2441     if (!strcmp(name, "GetPhysicalDeviceDirectFBPresentationSupportEXT")) return (void *)table->GetPhysicalDeviceDirectFBPresentationSupportEXT;
2442 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
2443 
2444     // ---- VK_QNX_screen_surface extension commands
2445 #ifdef VK_USE_PLATFORM_SCREEN_QNX
2446     if (!strcmp(name, "CreateScreenSurfaceQNX")) return (void *)table->CreateScreenSurfaceQNX;
2447 #endif // VK_USE_PLATFORM_SCREEN_QNX
2448 #ifdef VK_USE_PLATFORM_SCREEN_QNX
2449     if (!strcmp(name, "GetPhysicalDeviceScreenPresentationSupportQNX")) return (void *)table->GetPhysicalDeviceScreenPresentationSupportQNX;
2450 #endif // VK_USE_PLATFORM_SCREEN_QNX
2451 
2452     // ---- VK_NV_optical_flow extension commands
2453     if (!strcmp(name, "GetPhysicalDeviceOpticalFlowImageFormatsNV")) return (void *)table->GetPhysicalDeviceOpticalFlowImageFormatsNV;
2454 
2455     // ---- VK_OHOS_surface extension commands
2456 #ifdef VK_USE_PLATFORM_OHOS
2457     if (!strcmp(name, "CreateSurfaceOHOS")) return (void *)table->CreateSurfaceOHOS;
2458 #endif // VK_USE_PLATFORM_OHOS
2459 
2460     *found_name = false;
2461     return NULL;
2462 }
2463 
2464 
2465 // ---- VK_KHR_video_queue extension trampoline/terminators
2466 
2467 #ifdef VK_ENABLE_BETA_EXTENSIONS
GetPhysicalDeviceVideoCapabilitiesKHR(VkPhysicalDevice physicalDevice,const VkVideoProfileInfoKHR * pVideoProfile,VkVideoCapabilitiesKHR * pCapabilities)2468 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoCapabilitiesKHR(
2469     VkPhysicalDevice                            physicalDevice,
2470     const VkVideoProfileInfoKHR*                pVideoProfile,
2471     VkVideoCapabilitiesKHR*                     pCapabilities) {
2472     const VkLayerInstanceDispatchTable *disp;
2473     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
2474     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
2475         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2476                    "vkGetPhysicalDeviceVideoCapabilitiesKHR: Invalid physicalDevice "
2477                    "[VUID-vkGetPhysicalDeviceVideoCapabilitiesKHR-physicalDevice-parameter]");
2478         abort(); /* Intentionally fail so user can correct issue. */
2479     }
2480     disp = loader_get_instance_layer_dispatch(physicalDevice);
2481     return disp->GetPhysicalDeviceVideoCapabilitiesKHR(unwrapped_phys_dev, pVideoProfile, pCapabilities);
2482 }
2483 
terminator_GetPhysicalDeviceVideoCapabilitiesKHR(VkPhysicalDevice physicalDevice,const VkVideoProfileInfoKHR * pVideoProfile,VkVideoCapabilitiesKHR * pCapabilities)2484 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceVideoCapabilitiesKHR(
2485     VkPhysicalDevice                            physicalDevice,
2486     const VkVideoProfileInfoKHR*                pVideoProfile,
2487     VkVideoCapabilitiesKHR*                     pCapabilities) {
2488     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
2489     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
2490     if (NULL == icd_term->dispatch.GetPhysicalDeviceVideoCapabilitiesKHR) {
2491         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
2492                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceVideoCapabilitiesKHR");
2493         abort(); /* Intentionally fail so user can correct issue. */
2494     }
2495     return icd_term->dispatch.GetPhysicalDeviceVideoCapabilitiesKHR(phys_dev_term->phys_dev, pVideoProfile, pCapabilities);
2496 }
2497 
2498 #endif // VK_ENABLE_BETA_EXTENSIONS
2499 #ifdef VK_ENABLE_BETA_EXTENSIONS
GetPhysicalDeviceVideoFormatPropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo,uint32_t * pVideoFormatPropertyCount,VkVideoFormatPropertiesKHR * pVideoFormatProperties)2500 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoFormatPropertiesKHR(
2501     VkPhysicalDevice                            physicalDevice,
2502     const VkPhysicalDeviceVideoFormatInfoKHR*   pVideoFormatInfo,
2503     uint32_t*                                   pVideoFormatPropertyCount,
2504     VkVideoFormatPropertiesKHR*                 pVideoFormatProperties) {
2505     const VkLayerInstanceDispatchTable *disp;
2506     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
2507     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
2508         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2509                    "vkGetPhysicalDeviceVideoFormatPropertiesKHR: Invalid physicalDevice "
2510                    "[VUID-vkGetPhysicalDeviceVideoFormatPropertiesKHR-physicalDevice-parameter]");
2511         abort(); /* Intentionally fail so user can correct issue. */
2512     }
2513     disp = loader_get_instance_layer_dispatch(physicalDevice);
2514     return disp->GetPhysicalDeviceVideoFormatPropertiesKHR(unwrapped_phys_dev, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties);
2515 }
2516 
terminator_GetPhysicalDeviceVideoFormatPropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo,uint32_t * pVideoFormatPropertyCount,VkVideoFormatPropertiesKHR * pVideoFormatProperties)2517 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceVideoFormatPropertiesKHR(
2518     VkPhysicalDevice                            physicalDevice,
2519     const VkPhysicalDeviceVideoFormatInfoKHR*   pVideoFormatInfo,
2520     uint32_t*                                   pVideoFormatPropertyCount,
2521     VkVideoFormatPropertiesKHR*                 pVideoFormatProperties) {
2522     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
2523     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
2524     if (NULL == icd_term->dispatch.GetPhysicalDeviceVideoFormatPropertiesKHR) {
2525         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
2526                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceVideoFormatPropertiesKHR");
2527         abort(); /* Intentionally fail so user can correct issue. */
2528     }
2529     return icd_term->dispatch.GetPhysicalDeviceVideoFormatPropertiesKHR(phys_dev_term->phys_dev, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties);
2530 }
2531 
2532 #endif // VK_ENABLE_BETA_EXTENSIONS
2533 #ifdef VK_ENABLE_BETA_EXTENSIONS
CreateVideoSessionKHR(VkDevice device,const VkVideoSessionCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkVideoSessionKHR * pVideoSession)2534 VKAPI_ATTR VkResult VKAPI_CALL CreateVideoSessionKHR(
2535     VkDevice                                    device,
2536     const VkVideoSessionCreateInfoKHR*          pCreateInfo,
2537     const VkAllocationCallbacks*                pAllocator,
2538     VkVideoSessionKHR*                          pVideoSession) {
2539     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2540     if (NULL == disp) {
2541         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2542                    "vkCreateVideoSessionKHR: Invalid device "
2543                    "[VUID-vkCreateVideoSessionKHR-device-parameter]");
2544         abort(); /* Intentionally fail so user can correct issue. */
2545     }
2546     return disp->CreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession);
2547 }
2548 
2549 #endif // VK_ENABLE_BETA_EXTENSIONS
2550 #ifdef VK_ENABLE_BETA_EXTENSIONS
DestroyVideoSessionKHR(VkDevice device,VkVideoSessionKHR videoSession,const VkAllocationCallbacks * pAllocator)2551 VKAPI_ATTR void VKAPI_CALL DestroyVideoSessionKHR(
2552     VkDevice                                    device,
2553     VkVideoSessionKHR                           videoSession,
2554     const VkAllocationCallbacks*                pAllocator) {
2555     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2556     if (NULL == disp) {
2557         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2558                    "vkDestroyVideoSessionKHR: Invalid device "
2559                    "[VUID-vkDestroyVideoSessionKHR-device-parameter]");
2560         abort(); /* Intentionally fail so user can correct issue. */
2561     }
2562     disp->DestroyVideoSessionKHR(device, videoSession, pAllocator);
2563 }
2564 
2565 #endif // VK_ENABLE_BETA_EXTENSIONS
2566 #ifdef VK_ENABLE_BETA_EXTENSIONS
GetVideoSessionMemoryRequirementsKHR(VkDevice device,VkVideoSessionKHR videoSession,uint32_t * pMemoryRequirementsCount,VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements)2567 VKAPI_ATTR VkResult VKAPI_CALL GetVideoSessionMemoryRequirementsKHR(
2568     VkDevice                                    device,
2569     VkVideoSessionKHR                           videoSession,
2570     uint32_t*                                   pMemoryRequirementsCount,
2571     VkVideoSessionMemoryRequirementsKHR*        pMemoryRequirements) {
2572     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2573     if (NULL == disp) {
2574         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2575                    "vkGetVideoSessionMemoryRequirementsKHR: Invalid device "
2576                    "[VUID-vkGetVideoSessionMemoryRequirementsKHR-device-parameter]");
2577         abort(); /* Intentionally fail so user can correct issue. */
2578     }
2579     return disp->GetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements);
2580 }
2581 
2582 #endif // VK_ENABLE_BETA_EXTENSIONS
2583 #ifdef VK_ENABLE_BETA_EXTENSIONS
BindVideoSessionMemoryKHR(VkDevice device,VkVideoSessionKHR videoSession,uint32_t bindSessionMemoryInfoCount,const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos)2584 VKAPI_ATTR VkResult VKAPI_CALL BindVideoSessionMemoryKHR(
2585     VkDevice                                    device,
2586     VkVideoSessionKHR                           videoSession,
2587     uint32_t                                    bindSessionMemoryInfoCount,
2588     const VkBindVideoSessionMemoryInfoKHR*      pBindSessionMemoryInfos) {
2589     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2590     if (NULL == disp) {
2591         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2592                    "vkBindVideoSessionMemoryKHR: Invalid device "
2593                    "[VUID-vkBindVideoSessionMemoryKHR-device-parameter]");
2594         abort(); /* Intentionally fail so user can correct issue. */
2595     }
2596     return disp->BindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos);
2597 }
2598 
2599 #endif // VK_ENABLE_BETA_EXTENSIONS
2600 #ifdef VK_ENABLE_BETA_EXTENSIONS
CreateVideoSessionParametersKHR(VkDevice device,const VkVideoSessionParametersCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkVideoSessionParametersKHR * pVideoSessionParameters)2601 VKAPI_ATTR VkResult VKAPI_CALL CreateVideoSessionParametersKHR(
2602     VkDevice                                    device,
2603     const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
2604     const VkAllocationCallbacks*                pAllocator,
2605     VkVideoSessionParametersKHR*                pVideoSessionParameters) {
2606     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2607     if (NULL == disp) {
2608         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2609                    "vkCreateVideoSessionParametersKHR: Invalid device "
2610                    "[VUID-vkCreateVideoSessionParametersKHR-device-parameter]");
2611         abort(); /* Intentionally fail so user can correct issue. */
2612     }
2613     return disp->CreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters);
2614 }
2615 
2616 #endif // VK_ENABLE_BETA_EXTENSIONS
2617 #ifdef VK_ENABLE_BETA_EXTENSIONS
UpdateVideoSessionParametersKHR(VkDevice device,VkVideoSessionParametersKHR videoSessionParameters,const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo)2618 VKAPI_ATTR VkResult VKAPI_CALL UpdateVideoSessionParametersKHR(
2619     VkDevice                                    device,
2620     VkVideoSessionParametersKHR                 videoSessionParameters,
2621     const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo) {
2622     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2623     if (NULL == disp) {
2624         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2625                    "vkUpdateVideoSessionParametersKHR: Invalid device "
2626                    "[VUID-vkUpdateVideoSessionParametersKHR-device-parameter]");
2627         abort(); /* Intentionally fail so user can correct issue. */
2628     }
2629     return disp->UpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo);
2630 }
2631 
2632 #endif // VK_ENABLE_BETA_EXTENSIONS
2633 #ifdef VK_ENABLE_BETA_EXTENSIONS
DestroyVideoSessionParametersKHR(VkDevice device,VkVideoSessionParametersKHR videoSessionParameters,const VkAllocationCallbacks * pAllocator)2634 VKAPI_ATTR void VKAPI_CALL DestroyVideoSessionParametersKHR(
2635     VkDevice                                    device,
2636     VkVideoSessionParametersKHR                 videoSessionParameters,
2637     const VkAllocationCallbacks*                pAllocator) {
2638     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2639     if (NULL == disp) {
2640         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2641                    "vkDestroyVideoSessionParametersKHR: Invalid device "
2642                    "[VUID-vkDestroyVideoSessionParametersKHR-device-parameter]");
2643         abort(); /* Intentionally fail so user can correct issue. */
2644     }
2645     disp->DestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator);
2646 }
2647 
2648 #endif // VK_ENABLE_BETA_EXTENSIONS
2649 #ifdef VK_ENABLE_BETA_EXTENSIONS
CmdBeginVideoCodingKHR(VkCommandBuffer commandBuffer,const VkVideoBeginCodingInfoKHR * pBeginInfo)2650 VKAPI_ATTR void VKAPI_CALL CmdBeginVideoCodingKHR(
2651     VkCommandBuffer                             commandBuffer,
2652     const VkVideoBeginCodingInfoKHR*            pBeginInfo) {
2653     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
2654     if (NULL == disp) {
2655         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2656                    "vkCmdBeginVideoCodingKHR: Invalid commandBuffer "
2657                    "[VUID-vkCmdBeginVideoCodingKHR-commandBuffer-parameter]");
2658         abort(); /* Intentionally fail so user can correct issue. */
2659     }
2660     disp->CmdBeginVideoCodingKHR(commandBuffer, pBeginInfo);
2661 }
2662 
2663 #endif // VK_ENABLE_BETA_EXTENSIONS
2664 #ifdef VK_ENABLE_BETA_EXTENSIONS
CmdEndVideoCodingKHR(VkCommandBuffer commandBuffer,const VkVideoEndCodingInfoKHR * pEndCodingInfo)2665 VKAPI_ATTR void VKAPI_CALL CmdEndVideoCodingKHR(
2666     VkCommandBuffer                             commandBuffer,
2667     const VkVideoEndCodingInfoKHR*              pEndCodingInfo) {
2668     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
2669     if (NULL == disp) {
2670         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2671                    "vkCmdEndVideoCodingKHR: Invalid commandBuffer "
2672                    "[VUID-vkCmdEndVideoCodingKHR-commandBuffer-parameter]");
2673         abort(); /* Intentionally fail so user can correct issue. */
2674     }
2675     disp->CmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo);
2676 }
2677 
2678 #endif // VK_ENABLE_BETA_EXTENSIONS
2679 #ifdef VK_ENABLE_BETA_EXTENSIONS
CmdControlVideoCodingKHR(VkCommandBuffer commandBuffer,const VkVideoCodingControlInfoKHR * pCodingControlInfo)2680 VKAPI_ATTR void VKAPI_CALL CmdControlVideoCodingKHR(
2681     VkCommandBuffer                             commandBuffer,
2682     const VkVideoCodingControlInfoKHR*          pCodingControlInfo) {
2683     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
2684     if (NULL == disp) {
2685         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2686                    "vkCmdControlVideoCodingKHR: Invalid commandBuffer "
2687                    "[VUID-vkCmdControlVideoCodingKHR-commandBuffer-parameter]");
2688         abort(); /* Intentionally fail so user can correct issue. */
2689     }
2690     disp->CmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo);
2691 }
2692 
2693 #endif // VK_ENABLE_BETA_EXTENSIONS
2694 
2695 // ---- VK_KHR_video_decode_queue extension trampoline/terminators
2696 
2697 #ifdef VK_ENABLE_BETA_EXTENSIONS
CmdDecodeVideoKHR(VkCommandBuffer commandBuffer,const VkVideoDecodeInfoKHR * pDecodeInfo)2698 VKAPI_ATTR void VKAPI_CALL CmdDecodeVideoKHR(
2699     VkCommandBuffer                             commandBuffer,
2700     const VkVideoDecodeInfoKHR*                 pDecodeInfo) {
2701     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
2702     if (NULL == disp) {
2703         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2704                    "vkCmdDecodeVideoKHR: Invalid commandBuffer "
2705                    "[VUID-vkCmdDecodeVideoKHR-commandBuffer-parameter]");
2706         abort(); /* Intentionally fail so user can correct issue. */
2707     }
2708     disp->CmdDecodeVideoKHR(commandBuffer, pDecodeInfo);
2709 }
2710 
2711 #endif // VK_ENABLE_BETA_EXTENSIONS
2712 
2713 // ---- VK_KHR_dynamic_rendering extension trampoline/terminators
2714 
CmdBeginRenderingKHR(VkCommandBuffer commandBuffer,const VkRenderingInfo * pRenderingInfo)2715 VKAPI_ATTR void VKAPI_CALL CmdBeginRenderingKHR(
2716     VkCommandBuffer                             commandBuffer,
2717     const VkRenderingInfo*                      pRenderingInfo) {
2718     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
2719     if (NULL == disp) {
2720         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2721                    "vkCmdBeginRenderingKHR: Invalid commandBuffer "
2722                    "[VUID-vkCmdBeginRenderingKHR-commandBuffer-parameter]");
2723         abort(); /* Intentionally fail so user can correct issue. */
2724     }
2725     disp->CmdBeginRenderingKHR(commandBuffer, pRenderingInfo);
2726 }
2727 
CmdEndRenderingKHR(VkCommandBuffer commandBuffer)2728 VKAPI_ATTR void VKAPI_CALL CmdEndRenderingKHR(
2729     VkCommandBuffer                             commandBuffer) {
2730     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
2731     if (NULL == disp) {
2732         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2733                    "vkCmdEndRenderingKHR: Invalid commandBuffer "
2734                    "[VUID-vkCmdEndRenderingKHR-commandBuffer-parameter]");
2735         abort(); /* Intentionally fail so user can correct issue. */
2736     }
2737     disp->CmdEndRenderingKHR(commandBuffer);
2738 }
2739 
2740 
2741 // ---- VK_KHR_device_group extension trampoline/terminators
2742 
GetDeviceGroupPeerMemoryFeaturesKHR(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)2743 VKAPI_ATTR void VKAPI_CALL GetDeviceGroupPeerMemoryFeaturesKHR(
2744     VkDevice                                    device,
2745     uint32_t                                    heapIndex,
2746     uint32_t                                    localDeviceIndex,
2747     uint32_t                                    remoteDeviceIndex,
2748     VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures) {
2749     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2750     if (NULL == disp) {
2751         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2752                    "vkGetDeviceGroupPeerMemoryFeaturesKHR: Invalid device "
2753                    "[VUID-vkGetDeviceGroupPeerMemoryFeaturesKHR-device-parameter]");
2754         abort(); /* Intentionally fail so user can correct issue. */
2755     }
2756     disp->GetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
2757 }
2758 
CmdSetDeviceMaskKHR(VkCommandBuffer commandBuffer,uint32_t deviceMask)2759 VKAPI_ATTR void VKAPI_CALL CmdSetDeviceMaskKHR(
2760     VkCommandBuffer                             commandBuffer,
2761     uint32_t                                    deviceMask) {
2762     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
2763     if (NULL == disp) {
2764         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2765                    "vkCmdSetDeviceMaskKHR: Invalid commandBuffer "
2766                    "[VUID-vkCmdSetDeviceMaskKHR-commandBuffer-parameter]");
2767         abort(); /* Intentionally fail so user can correct issue. */
2768     }
2769     disp->CmdSetDeviceMaskKHR(commandBuffer, deviceMask);
2770 }
2771 
CmdDispatchBaseKHR(VkCommandBuffer commandBuffer,uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)2772 VKAPI_ATTR void VKAPI_CALL CmdDispatchBaseKHR(
2773     VkCommandBuffer                             commandBuffer,
2774     uint32_t                                    baseGroupX,
2775     uint32_t                                    baseGroupY,
2776     uint32_t                                    baseGroupZ,
2777     uint32_t                                    groupCountX,
2778     uint32_t                                    groupCountY,
2779     uint32_t                                    groupCountZ) {
2780     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
2781     if (NULL == disp) {
2782         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2783                    "vkCmdDispatchBaseKHR: Invalid commandBuffer "
2784                    "[VUID-vkCmdDispatchBaseKHR-commandBuffer-parameter]");
2785         abort(); /* Intentionally fail so user can correct issue. */
2786     }
2787     disp->CmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
2788 }
2789 
2790 
2791 // ---- VK_KHR_maintenance1 extension trampoline/terminators
2792 
TrimCommandPoolKHR(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)2793 VKAPI_ATTR void VKAPI_CALL TrimCommandPoolKHR(
2794     VkDevice                                    device,
2795     VkCommandPool                               commandPool,
2796     VkCommandPoolTrimFlags                      flags) {
2797     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2798     if (NULL == disp) {
2799         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2800                    "vkTrimCommandPoolKHR: Invalid device "
2801                    "[VUID-vkTrimCommandPoolKHR-device-parameter]");
2802         abort(); /* Intentionally fail so user can correct issue. */
2803     }
2804     disp->TrimCommandPoolKHR(device, commandPool, flags);
2805 }
2806 
2807 
2808 // ---- VK_KHR_external_memory_win32 extension trampoline/terminators
2809 
2810 #ifdef VK_USE_PLATFORM_WIN32_KHR
GetMemoryWin32HandleKHR(VkDevice device,const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)2811 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandleKHR(
2812     VkDevice                                    device,
2813     const VkMemoryGetWin32HandleInfoKHR*        pGetWin32HandleInfo,
2814     HANDLE*                                     pHandle) {
2815     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2816     if (NULL == disp) {
2817         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2818                    "vkGetMemoryWin32HandleKHR: Invalid device "
2819                    "[VUID-vkGetMemoryWin32HandleKHR-device-parameter]");
2820         abort(); /* Intentionally fail so user can correct issue. */
2821     }
2822     return disp->GetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2823 }
2824 
2825 #endif // VK_USE_PLATFORM_WIN32_KHR
2826 #ifdef VK_USE_PLATFORM_WIN32_KHR
GetMemoryWin32HandlePropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,HANDLE handle,VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties)2827 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandlePropertiesKHR(
2828     VkDevice                                    device,
2829     VkExternalMemoryHandleTypeFlagBits          handleType,
2830     HANDLE                                      handle,
2831     VkMemoryWin32HandlePropertiesKHR*           pMemoryWin32HandleProperties) {
2832     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2833     if (NULL == disp) {
2834         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2835                    "vkGetMemoryWin32HandlePropertiesKHR: Invalid device "
2836                    "[VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter]");
2837         abort(); /* Intentionally fail so user can correct issue. */
2838     }
2839     return disp->GetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties);
2840 }
2841 
2842 #endif // VK_USE_PLATFORM_WIN32_KHR
2843 
2844 // ---- VK_KHR_external_memory_fd extension trampoline/terminators
2845 
GetMemoryFdKHR(VkDevice device,const VkMemoryGetFdInfoKHR * pGetFdInfo,int * pFd)2846 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryFdKHR(
2847     VkDevice                                    device,
2848     const VkMemoryGetFdInfoKHR*                 pGetFdInfo,
2849     int*                                        pFd) {
2850     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2851     if (NULL == disp) {
2852         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2853                    "vkGetMemoryFdKHR: Invalid device "
2854                    "[VUID-vkGetMemoryFdKHR-device-parameter]");
2855         abort(); /* Intentionally fail so user can correct issue. */
2856     }
2857     return disp->GetMemoryFdKHR(device, pGetFdInfo, pFd);
2858 }
2859 
GetMemoryFdPropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,int fd,VkMemoryFdPropertiesKHR * pMemoryFdProperties)2860 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryFdPropertiesKHR(
2861     VkDevice                                    device,
2862     VkExternalMemoryHandleTypeFlagBits          handleType,
2863     int                                         fd,
2864     VkMemoryFdPropertiesKHR*                    pMemoryFdProperties) {
2865     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2866     if (NULL == disp) {
2867         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2868                    "vkGetMemoryFdPropertiesKHR: Invalid device "
2869                    "[VUID-vkGetMemoryFdPropertiesKHR-device-parameter]");
2870         abort(); /* Intentionally fail so user can correct issue. */
2871     }
2872     return disp->GetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties);
2873 }
2874 
2875 
2876 // ---- VK_KHR_external_semaphore_win32 extension trampoline/terminators
2877 
2878 #ifdef VK_USE_PLATFORM_WIN32_KHR
ImportSemaphoreWin32HandleKHR(VkDevice device,const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo)2879 VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreWin32HandleKHR(
2880     VkDevice                                    device,
2881     const VkImportSemaphoreWin32HandleInfoKHR*  pImportSemaphoreWin32HandleInfo) {
2882     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2883     if (NULL == disp) {
2884         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2885                    "vkImportSemaphoreWin32HandleKHR: Invalid device "
2886                    "[VUID-vkImportSemaphoreWin32HandleKHR-device-parameter]");
2887         abort(); /* Intentionally fail so user can correct issue. */
2888     }
2889     return disp->ImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo);
2890 }
2891 
2892 #endif // VK_USE_PLATFORM_WIN32_KHR
2893 #ifdef VK_USE_PLATFORM_WIN32_KHR
GetSemaphoreWin32HandleKHR(VkDevice device,const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)2894 VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreWin32HandleKHR(
2895     VkDevice                                    device,
2896     const VkSemaphoreGetWin32HandleInfoKHR*     pGetWin32HandleInfo,
2897     HANDLE*                                     pHandle) {
2898     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2899     if (NULL == disp) {
2900         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2901                    "vkGetSemaphoreWin32HandleKHR: Invalid device "
2902                    "[VUID-vkGetSemaphoreWin32HandleKHR-device-parameter]");
2903         abort(); /* Intentionally fail so user can correct issue. */
2904     }
2905     return disp->GetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
2906 }
2907 
2908 #endif // VK_USE_PLATFORM_WIN32_KHR
2909 
2910 // ---- VK_KHR_external_semaphore_fd extension trampoline/terminators
2911 
ImportSemaphoreFdKHR(VkDevice device,const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo)2912 VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreFdKHR(
2913     VkDevice                                    device,
2914     const VkImportSemaphoreFdInfoKHR*           pImportSemaphoreFdInfo) {
2915     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2916     if (NULL == disp) {
2917         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2918                    "vkImportSemaphoreFdKHR: Invalid device "
2919                    "[VUID-vkImportSemaphoreFdKHR-device-parameter]");
2920         abort(); /* Intentionally fail so user can correct issue. */
2921     }
2922     return disp->ImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo);
2923 }
2924 
GetSemaphoreFdKHR(VkDevice device,const VkSemaphoreGetFdInfoKHR * pGetFdInfo,int * pFd)2925 VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreFdKHR(
2926     VkDevice                                    device,
2927     const VkSemaphoreGetFdInfoKHR*              pGetFdInfo,
2928     int*                                        pFd) {
2929     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2930     if (NULL == disp) {
2931         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2932                    "vkGetSemaphoreFdKHR: Invalid device "
2933                    "[VUID-vkGetSemaphoreFdKHR-device-parameter]");
2934         abort(); /* Intentionally fail so user can correct issue. */
2935     }
2936     return disp->GetSemaphoreFdKHR(device, pGetFdInfo, pFd);
2937 }
2938 
2939 
2940 // ---- VK_KHR_push_descriptor extension trampoline/terminators
2941 
CmdPushDescriptorSetKHR(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t set,uint32_t descriptorWriteCount,const VkWriteDescriptorSet * pDescriptorWrites)2942 VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetKHR(
2943     VkCommandBuffer                             commandBuffer,
2944     VkPipelineBindPoint                         pipelineBindPoint,
2945     VkPipelineLayout                            layout,
2946     uint32_t                                    set,
2947     uint32_t                                    descriptorWriteCount,
2948     const VkWriteDescriptorSet*                 pDescriptorWrites) {
2949     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
2950     if (NULL == disp) {
2951         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2952                    "vkCmdPushDescriptorSetKHR: Invalid commandBuffer "
2953                    "[VUID-vkCmdPushDescriptorSetKHR-commandBuffer-parameter]");
2954         abort(); /* Intentionally fail so user can correct issue. */
2955     }
2956     disp->CmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites);
2957 }
2958 
CmdPushDescriptorSetWithTemplateKHR(VkCommandBuffer commandBuffer,VkDescriptorUpdateTemplate descriptorUpdateTemplate,VkPipelineLayout layout,uint32_t set,const void * pData)2959 VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetWithTemplateKHR(
2960     VkCommandBuffer                             commandBuffer,
2961     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
2962     VkPipelineLayout                            layout,
2963     uint32_t                                    set,
2964     const void*                                 pData) {
2965     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
2966     if (NULL == disp) {
2967         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2968                    "vkCmdPushDescriptorSetWithTemplateKHR: Invalid commandBuffer "
2969                    "[VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter]");
2970         abort(); /* Intentionally fail so user can correct issue. */
2971     }
2972     disp->CmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData);
2973 }
2974 
2975 
2976 // ---- VK_KHR_descriptor_update_template extension trampoline/terminators
2977 
CreateDescriptorUpdateTemplateKHR(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)2978 VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorUpdateTemplateKHR(
2979     VkDevice                                    device,
2980     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
2981     const VkAllocationCallbacks*                pAllocator,
2982     VkDescriptorUpdateTemplate*                 pDescriptorUpdateTemplate) {
2983     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2984     if (NULL == disp) {
2985         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
2986                    "vkCreateDescriptorUpdateTemplateKHR: Invalid device "
2987                    "[VUID-vkCreateDescriptorUpdateTemplateKHR-device-parameter]");
2988         abort(); /* Intentionally fail so user can correct issue. */
2989     }
2990     return disp->CreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
2991 }
2992 
DestroyDescriptorUpdateTemplateKHR(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)2993 VKAPI_ATTR void VKAPI_CALL DestroyDescriptorUpdateTemplateKHR(
2994     VkDevice                                    device,
2995     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
2996     const VkAllocationCallbacks*                pAllocator) {
2997     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
2998     if (NULL == disp) {
2999         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3000                    "vkDestroyDescriptorUpdateTemplateKHR: Invalid device "
3001                    "[VUID-vkDestroyDescriptorUpdateTemplateKHR-device-parameter]");
3002         abort(); /* Intentionally fail so user can correct issue. */
3003     }
3004     disp->DestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator);
3005 }
3006 
UpdateDescriptorSetWithTemplateKHR(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)3007 VKAPI_ATTR void VKAPI_CALL UpdateDescriptorSetWithTemplateKHR(
3008     VkDevice                                    device,
3009     VkDescriptorSet                             descriptorSet,
3010     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
3011     const void*                                 pData) {
3012     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3013     if (NULL == disp) {
3014         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3015                    "vkUpdateDescriptorSetWithTemplateKHR: Invalid device "
3016                    "[VUID-vkUpdateDescriptorSetWithTemplateKHR-device-parameter]");
3017         abort(); /* Intentionally fail so user can correct issue. */
3018     }
3019     disp->UpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData);
3020 }
3021 
3022 
3023 // ---- VK_KHR_create_renderpass2 extension trampoline/terminators
3024 
CreateRenderPass2KHR(VkDevice device,const VkRenderPassCreateInfo2 * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)3025 VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass2KHR(
3026     VkDevice                                    device,
3027     const VkRenderPassCreateInfo2*              pCreateInfo,
3028     const VkAllocationCallbacks*                pAllocator,
3029     VkRenderPass*                               pRenderPass) {
3030     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3031     if (NULL == disp) {
3032         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3033                    "vkCreateRenderPass2KHR: Invalid device "
3034                    "[VUID-vkCreateRenderPass2KHR-device-parameter]");
3035         abort(); /* Intentionally fail so user can correct issue. */
3036     }
3037     return disp->CreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
3038 }
3039 
CmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,const VkSubpassBeginInfo * pSubpassBeginInfo)3040 VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass2KHR(
3041     VkCommandBuffer                             commandBuffer,
3042     const VkRenderPassBeginInfo*                pRenderPassBegin,
3043     const VkSubpassBeginInfo*                   pSubpassBeginInfo) {
3044     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3045     if (NULL == disp) {
3046         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3047                    "vkCmdBeginRenderPass2KHR: Invalid commandBuffer "
3048                    "[VUID-vkCmdBeginRenderPass2KHR-commandBuffer-parameter]");
3049         abort(); /* Intentionally fail so user can correct issue. */
3050     }
3051     disp->CmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
3052 }
3053 
CmdNextSubpass2KHR(VkCommandBuffer commandBuffer,const VkSubpassBeginInfo * pSubpassBeginInfo,const VkSubpassEndInfo * pSubpassEndInfo)3054 VKAPI_ATTR void VKAPI_CALL CmdNextSubpass2KHR(
3055     VkCommandBuffer                             commandBuffer,
3056     const VkSubpassBeginInfo*                   pSubpassBeginInfo,
3057     const VkSubpassEndInfo*                     pSubpassEndInfo) {
3058     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3059     if (NULL == disp) {
3060         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3061                    "vkCmdNextSubpass2KHR: Invalid commandBuffer "
3062                    "[VUID-vkCmdNextSubpass2KHR-commandBuffer-parameter]");
3063         abort(); /* Intentionally fail so user can correct issue. */
3064     }
3065     disp->CmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
3066 }
3067 
CmdEndRenderPass2KHR(VkCommandBuffer commandBuffer,const VkSubpassEndInfo * pSubpassEndInfo)3068 VKAPI_ATTR void VKAPI_CALL CmdEndRenderPass2KHR(
3069     VkCommandBuffer                             commandBuffer,
3070     const VkSubpassEndInfo*                     pSubpassEndInfo) {
3071     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3072     if (NULL == disp) {
3073         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3074                    "vkCmdEndRenderPass2KHR: Invalid commandBuffer "
3075                    "[VUID-vkCmdEndRenderPass2KHR-commandBuffer-parameter]");
3076         abort(); /* Intentionally fail so user can correct issue. */
3077     }
3078     disp->CmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo);
3079 }
3080 
3081 
3082 // ---- VK_KHR_shared_presentable_image extension trampoline/terminators
3083 
GetSwapchainStatusKHR(VkDevice device,VkSwapchainKHR swapchain)3084 VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainStatusKHR(
3085     VkDevice                                    device,
3086     VkSwapchainKHR                              swapchain) {
3087     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3088     if (NULL == disp) {
3089         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3090                    "vkGetSwapchainStatusKHR: Invalid device "
3091                    "[VUID-vkGetSwapchainStatusKHR-device-parameter]");
3092         abort(); /* Intentionally fail so user can correct issue. */
3093     }
3094     return disp->GetSwapchainStatusKHR(device, swapchain);
3095 }
3096 
3097 
3098 // ---- VK_KHR_external_fence_win32 extension trampoline/terminators
3099 
3100 #ifdef VK_USE_PLATFORM_WIN32_KHR
ImportFenceWin32HandleKHR(VkDevice device,const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo)3101 VKAPI_ATTR VkResult VKAPI_CALL ImportFenceWin32HandleKHR(
3102     VkDevice                                    device,
3103     const VkImportFenceWin32HandleInfoKHR*      pImportFenceWin32HandleInfo) {
3104     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3105     if (NULL == disp) {
3106         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3107                    "vkImportFenceWin32HandleKHR: Invalid device "
3108                    "[VUID-vkImportFenceWin32HandleKHR-device-parameter]");
3109         abort(); /* Intentionally fail so user can correct issue. */
3110     }
3111     return disp->ImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo);
3112 }
3113 
3114 #endif // VK_USE_PLATFORM_WIN32_KHR
3115 #ifdef VK_USE_PLATFORM_WIN32_KHR
GetFenceWin32HandleKHR(VkDevice device,const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)3116 VKAPI_ATTR VkResult VKAPI_CALL GetFenceWin32HandleKHR(
3117     VkDevice                                    device,
3118     const VkFenceGetWin32HandleInfoKHR*         pGetWin32HandleInfo,
3119     HANDLE*                                     pHandle) {
3120     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3121     if (NULL == disp) {
3122         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3123                    "vkGetFenceWin32HandleKHR: Invalid device "
3124                    "[VUID-vkGetFenceWin32HandleKHR-device-parameter]");
3125         abort(); /* Intentionally fail so user can correct issue. */
3126     }
3127     return disp->GetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
3128 }
3129 
3130 #endif // VK_USE_PLATFORM_WIN32_KHR
3131 
3132 // ---- VK_KHR_external_fence_fd extension trampoline/terminators
3133 
ImportFenceFdKHR(VkDevice device,const VkImportFenceFdInfoKHR * pImportFenceFdInfo)3134 VKAPI_ATTR VkResult VKAPI_CALL ImportFenceFdKHR(
3135     VkDevice                                    device,
3136     const VkImportFenceFdInfoKHR*               pImportFenceFdInfo) {
3137     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3138     if (NULL == disp) {
3139         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3140                    "vkImportFenceFdKHR: Invalid device "
3141                    "[VUID-vkImportFenceFdKHR-device-parameter]");
3142         abort(); /* Intentionally fail so user can correct issue. */
3143     }
3144     return disp->ImportFenceFdKHR(device, pImportFenceFdInfo);
3145 }
3146 
GetFenceFdKHR(VkDevice device,const VkFenceGetFdInfoKHR * pGetFdInfo,int * pFd)3147 VKAPI_ATTR VkResult VKAPI_CALL GetFenceFdKHR(
3148     VkDevice                                    device,
3149     const VkFenceGetFdInfoKHR*                  pGetFdInfo,
3150     int*                                        pFd) {
3151     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3152     if (NULL == disp) {
3153         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3154                    "vkGetFenceFdKHR: Invalid device "
3155                    "[VUID-vkGetFenceFdKHR-device-parameter]");
3156         abort(); /* Intentionally fail so user can correct issue. */
3157     }
3158     return disp->GetFenceFdKHR(device, pGetFdInfo, pFd);
3159 }
3160 
3161 
3162 // ---- VK_KHR_performance_query extension trampoline/terminators
3163 
EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,uint32_t * pCounterCount,VkPerformanceCounterKHR * pCounters,VkPerformanceCounterDescriptionKHR * pCounterDescriptions)3164 VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
3165     VkPhysicalDevice                            physicalDevice,
3166     uint32_t                                    queueFamilyIndex,
3167     uint32_t*                                   pCounterCount,
3168     VkPerformanceCounterKHR*                    pCounters,
3169     VkPerformanceCounterDescriptionKHR*         pCounterDescriptions) {
3170     const VkLayerInstanceDispatchTable *disp;
3171     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
3172     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
3173         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3174                    "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR: Invalid physicalDevice "
3175                    "[VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-physicalDevice-parameter]");
3176         abort(); /* Intentionally fail so user can correct issue. */
3177     }
3178     disp = loader_get_instance_layer_dispatch(physicalDevice);
3179     return disp->EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(unwrapped_phys_dev, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions);
3180 }
3181 
terminator_EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,uint32_t * pCounterCount,VkPerformanceCounterKHR * pCounters,VkPerformanceCounterDescriptionKHR * pCounterDescriptions)3182 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
3183     VkPhysicalDevice                            physicalDevice,
3184     uint32_t                                    queueFamilyIndex,
3185     uint32_t*                                   pCounterCount,
3186     VkPerformanceCounterKHR*                    pCounters,
3187     VkPerformanceCounterDescriptionKHR*         pCounterDescriptions) {
3188     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
3189     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
3190     if (NULL == icd_term->dispatch.EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR) {
3191         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
3192                    "ICD associated with VkPhysicalDevice does not support EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
3193         abort(); /* Intentionally fail so user can correct issue. */
3194     }
3195     return icd_term->dispatch.EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(phys_dev_term->phys_dev, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions);
3196 }
3197 
GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(VkPhysicalDevice physicalDevice,const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo,uint32_t * pNumPasses)3198 VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
3199     VkPhysicalDevice                            physicalDevice,
3200     const VkQueryPoolPerformanceCreateInfoKHR*  pPerformanceQueryCreateInfo,
3201     uint32_t*                                   pNumPasses) {
3202     const VkLayerInstanceDispatchTable *disp;
3203     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
3204     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
3205         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3206                    "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR: Invalid physicalDevice "
3207                    "[VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-physicalDevice-parameter]");
3208         abort(); /* Intentionally fail so user can correct issue. */
3209     }
3210     disp = loader_get_instance_layer_dispatch(physicalDevice);
3211     disp->GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(unwrapped_phys_dev, pPerformanceQueryCreateInfo, pNumPasses);
3212 }
3213 
terminator_GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(VkPhysicalDevice physicalDevice,const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo,uint32_t * pNumPasses)3214 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
3215     VkPhysicalDevice                            physicalDevice,
3216     const VkQueryPoolPerformanceCreateInfoKHR*  pPerformanceQueryCreateInfo,
3217     uint32_t*                                   pNumPasses) {
3218     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
3219     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
3220     if (NULL == icd_term->dispatch.GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR) {
3221         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
3222                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
3223         abort(); /* Intentionally fail so user can correct issue. */
3224     }
3225     icd_term->dispatch.GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(phys_dev_term->phys_dev, pPerformanceQueryCreateInfo, pNumPasses);
3226 }
3227 
AcquireProfilingLockKHR(VkDevice device,const VkAcquireProfilingLockInfoKHR * pInfo)3228 VKAPI_ATTR VkResult VKAPI_CALL AcquireProfilingLockKHR(
3229     VkDevice                                    device,
3230     const VkAcquireProfilingLockInfoKHR*        pInfo) {
3231     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3232     if (NULL == disp) {
3233         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3234                    "vkAcquireProfilingLockKHR: Invalid device "
3235                    "[VUID-vkAcquireProfilingLockKHR-device-parameter]");
3236         abort(); /* Intentionally fail so user can correct issue. */
3237     }
3238     return disp->AcquireProfilingLockKHR(device, pInfo);
3239 }
3240 
ReleaseProfilingLockKHR(VkDevice device)3241 VKAPI_ATTR void VKAPI_CALL ReleaseProfilingLockKHR(
3242     VkDevice                                    device) {
3243     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3244     if (NULL == disp) {
3245         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3246                    "vkReleaseProfilingLockKHR: Invalid device "
3247                    "[VUID-vkReleaseProfilingLockKHR-device-parameter]");
3248         abort(); /* Intentionally fail so user can correct issue. */
3249     }
3250     disp->ReleaseProfilingLockKHR(device);
3251 }
3252 
3253 
3254 // ---- VK_KHR_get_memory_requirements2 extension trampoline/terminators
3255 
GetImageMemoryRequirements2KHR(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3256 VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements2KHR(
3257     VkDevice                                    device,
3258     const VkImageMemoryRequirementsInfo2*       pInfo,
3259     VkMemoryRequirements2*                      pMemoryRequirements) {
3260     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3261     if (NULL == disp) {
3262         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3263                    "vkGetImageMemoryRequirements2KHR: Invalid device "
3264                    "[VUID-vkGetImageMemoryRequirements2KHR-device-parameter]");
3265         abort(); /* Intentionally fail so user can correct issue. */
3266     }
3267     disp->GetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements);
3268 }
3269 
GetBufferMemoryRequirements2KHR(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3270 VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements2KHR(
3271     VkDevice                                    device,
3272     const VkBufferMemoryRequirementsInfo2*      pInfo,
3273     VkMemoryRequirements2*                      pMemoryRequirements) {
3274     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3275     if (NULL == disp) {
3276         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3277                    "vkGetBufferMemoryRequirements2KHR: Invalid device "
3278                    "[VUID-vkGetBufferMemoryRequirements2KHR-device-parameter]");
3279         abort(); /* Intentionally fail so user can correct issue. */
3280     }
3281     disp->GetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements);
3282 }
3283 
GetImageSparseMemoryRequirements2KHR(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)3284 VKAPI_ATTR void VKAPI_CALL GetImageSparseMemoryRequirements2KHR(
3285     VkDevice                                    device,
3286     const VkImageSparseMemoryRequirementsInfo2* pInfo,
3287     uint32_t*                                   pSparseMemoryRequirementCount,
3288     VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements) {
3289     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3290     if (NULL == disp) {
3291         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3292                    "vkGetImageSparseMemoryRequirements2KHR: Invalid device "
3293                    "[VUID-vkGetImageSparseMemoryRequirements2KHR-device-parameter]");
3294         abort(); /* Intentionally fail so user can correct issue. */
3295     }
3296     disp->GetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
3297 }
3298 
3299 
3300 // ---- VK_KHR_sampler_ycbcr_conversion extension trampoline/terminators
3301 
CreateSamplerYcbcrConversionKHR(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)3302 VKAPI_ATTR VkResult VKAPI_CALL CreateSamplerYcbcrConversionKHR(
3303     VkDevice                                    device,
3304     const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
3305     const VkAllocationCallbacks*                pAllocator,
3306     VkSamplerYcbcrConversion*                   pYcbcrConversion) {
3307     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3308     if (NULL == disp) {
3309         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3310                    "vkCreateSamplerYcbcrConversionKHR: Invalid device "
3311                    "[VUID-vkCreateSamplerYcbcrConversionKHR-device-parameter]");
3312         abort(); /* Intentionally fail so user can correct issue. */
3313     }
3314     return disp->CreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion);
3315 }
3316 
DestroySamplerYcbcrConversionKHR(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)3317 VKAPI_ATTR void VKAPI_CALL DestroySamplerYcbcrConversionKHR(
3318     VkDevice                                    device,
3319     VkSamplerYcbcrConversion                    ycbcrConversion,
3320     const VkAllocationCallbacks*                pAllocator) {
3321     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3322     if (NULL == disp) {
3323         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3324                    "vkDestroySamplerYcbcrConversionKHR: Invalid device "
3325                    "[VUID-vkDestroySamplerYcbcrConversionKHR-device-parameter]");
3326         abort(); /* Intentionally fail so user can correct issue. */
3327     }
3328     disp->DestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator);
3329 }
3330 
3331 
3332 // ---- VK_KHR_bind_memory2 extension trampoline/terminators
3333 
BindBufferMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)3334 VKAPI_ATTR VkResult VKAPI_CALL BindBufferMemory2KHR(
3335     VkDevice                                    device,
3336     uint32_t                                    bindInfoCount,
3337     const VkBindBufferMemoryInfo*               pBindInfos) {
3338     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3339     if (NULL == disp) {
3340         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3341                    "vkBindBufferMemory2KHR: Invalid device "
3342                    "[VUID-vkBindBufferMemory2KHR-device-parameter]");
3343         abort(); /* Intentionally fail so user can correct issue. */
3344     }
3345     return disp->BindBufferMemory2KHR(device, bindInfoCount, pBindInfos);
3346 }
3347 
BindImageMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)3348 VKAPI_ATTR VkResult VKAPI_CALL BindImageMemory2KHR(
3349     VkDevice                                    device,
3350     uint32_t                                    bindInfoCount,
3351     const VkBindImageMemoryInfo*                pBindInfos) {
3352     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3353     if (NULL == disp) {
3354         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3355                    "vkBindImageMemory2KHR: Invalid device "
3356                    "[VUID-vkBindImageMemory2KHR-device-parameter]");
3357         abort(); /* Intentionally fail so user can correct issue. */
3358     }
3359     return disp->BindImageMemory2KHR(device, bindInfoCount, pBindInfos);
3360 }
3361 
3362 
3363 // ---- VK_KHR_maintenance3 extension trampoline/terminators
3364 
GetDescriptorSetLayoutSupportKHR(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)3365 VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSupportKHR(
3366     VkDevice                                    device,
3367     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
3368     VkDescriptorSetLayoutSupport*               pSupport) {
3369     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3370     if (NULL == disp) {
3371         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3372                    "vkGetDescriptorSetLayoutSupportKHR: Invalid device "
3373                    "[VUID-vkGetDescriptorSetLayoutSupportKHR-device-parameter]");
3374         abort(); /* Intentionally fail so user can correct issue. */
3375     }
3376     disp->GetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport);
3377 }
3378 
3379 
3380 // ---- VK_KHR_draw_indirect_count extension trampoline/terminators
3381 
CmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)3382 VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCountKHR(
3383     VkCommandBuffer                             commandBuffer,
3384     VkBuffer                                    buffer,
3385     VkDeviceSize                                offset,
3386     VkBuffer                                    countBuffer,
3387     VkDeviceSize                                countBufferOffset,
3388     uint32_t                                    maxDrawCount,
3389     uint32_t                                    stride) {
3390     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3391     if (NULL == disp) {
3392         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3393                    "vkCmdDrawIndirectCountKHR: Invalid commandBuffer "
3394                    "[VUID-vkCmdDrawIndirectCountKHR-commandBuffer-parameter]");
3395         abort(); /* Intentionally fail so user can correct issue. */
3396     }
3397     disp->CmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3398 }
3399 
CmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)3400 VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCountKHR(
3401     VkCommandBuffer                             commandBuffer,
3402     VkBuffer                                    buffer,
3403     VkDeviceSize                                offset,
3404     VkBuffer                                    countBuffer,
3405     VkDeviceSize                                countBufferOffset,
3406     uint32_t                                    maxDrawCount,
3407     uint32_t                                    stride) {
3408     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3409     if (NULL == disp) {
3410         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3411                    "vkCmdDrawIndexedIndirectCountKHR: Invalid commandBuffer "
3412                    "[VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-parameter]");
3413         abort(); /* Intentionally fail so user can correct issue. */
3414     }
3415     disp->CmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
3416 }
3417 
3418 
3419 // ---- VK_KHR_timeline_semaphore extension trampoline/terminators
3420 
GetSemaphoreCounterValueKHR(VkDevice device,VkSemaphore semaphore,uint64_t * pValue)3421 VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreCounterValueKHR(
3422     VkDevice                                    device,
3423     VkSemaphore                                 semaphore,
3424     uint64_t*                                   pValue) {
3425     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3426     if (NULL == disp) {
3427         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3428                    "vkGetSemaphoreCounterValueKHR: Invalid device "
3429                    "[VUID-vkGetSemaphoreCounterValueKHR-device-parameter]");
3430         abort(); /* Intentionally fail so user can correct issue. */
3431     }
3432     return disp->GetSemaphoreCounterValueKHR(device, semaphore, pValue);
3433 }
3434 
WaitSemaphoresKHR(VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)3435 VKAPI_ATTR VkResult VKAPI_CALL WaitSemaphoresKHR(
3436     VkDevice                                    device,
3437     const VkSemaphoreWaitInfo*                  pWaitInfo,
3438     uint64_t                                    timeout) {
3439     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3440     if (NULL == disp) {
3441         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3442                    "vkWaitSemaphoresKHR: Invalid device "
3443                    "[VUID-vkWaitSemaphoresKHR-device-parameter]");
3444         abort(); /* Intentionally fail so user can correct issue. */
3445     }
3446     return disp->WaitSemaphoresKHR(device, pWaitInfo, timeout);
3447 }
3448 
SignalSemaphoreKHR(VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)3449 VKAPI_ATTR VkResult VKAPI_CALL SignalSemaphoreKHR(
3450     VkDevice                                    device,
3451     const VkSemaphoreSignalInfo*                pSignalInfo) {
3452     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3453     if (NULL == disp) {
3454         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3455                    "vkSignalSemaphoreKHR: Invalid device "
3456                    "[VUID-vkSignalSemaphoreKHR-device-parameter]");
3457         abort(); /* Intentionally fail so user can correct issue. */
3458     }
3459     return disp->SignalSemaphoreKHR(device, pSignalInfo);
3460 }
3461 
3462 
3463 // ---- VK_KHR_fragment_shading_rate extension trampoline/terminators
3464 
GetPhysicalDeviceFragmentShadingRatesKHR(VkPhysicalDevice physicalDevice,uint32_t * pFragmentShadingRateCount,VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates)3465 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceFragmentShadingRatesKHR(
3466     VkPhysicalDevice                            physicalDevice,
3467     uint32_t*                                   pFragmentShadingRateCount,
3468     VkPhysicalDeviceFragmentShadingRateKHR*     pFragmentShadingRates) {
3469     const VkLayerInstanceDispatchTable *disp;
3470     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
3471     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
3472         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3473                    "vkGetPhysicalDeviceFragmentShadingRatesKHR: Invalid physicalDevice "
3474                    "[VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-physicalDevice-parameter]");
3475         abort(); /* Intentionally fail so user can correct issue. */
3476     }
3477     disp = loader_get_instance_layer_dispatch(physicalDevice);
3478     return disp->GetPhysicalDeviceFragmentShadingRatesKHR(unwrapped_phys_dev, pFragmentShadingRateCount, pFragmentShadingRates);
3479 }
3480 
terminator_GetPhysicalDeviceFragmentShadingRatesKHR(VkPhysicalDevice physicalDevice,uint32_t * pFragmentShadingRateCount,VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates)3481 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceFragmentShadingRatesKHR(
3482     VkPhysicalDevice                            physicalDevice,
3483     uint32_t*                                   pFragmentShadingRateCount,
3484     VkPhysicalDeviceFragmentShadingRateKHR*     pFragmentShadingRates) {
3485     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
3486     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
3487     if (NULL == icd_term->dispatch.GetPhysicalDeviceFragmentShadingRatesKHR) {
3488         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
3489                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceFragmentShadingRatesKHR");
3490         abort(); /* Intentionally fail so user can correct issue. */
3491     }
3492     return icd_term->dispatch.GetPhysicalDeviceFragmentShadingRatesKHR(phys_dev_term->phys_dev, pFragmentShadingRateCount, pFragmentShadingRates);
3493 }
3494 
CmdSetFragmentShadingRateKHR(VkCommandBuffer commandBuffer,const VkExtent2D * pFragmentSize,const VkFragmentShadingRateCombinerOpKHR combinerOps[2])3495 VKAPI_ATTR void VKAPI_CALL CmdSetFragmentShadingRateKHR(
3496     VkCommandBuffer                             commandBuffer,
3497     const VkExtent2D*                           pFragmentSize,
3498     const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]) {
3499     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3500     if (NULL == disp) {
3501         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3502                    "vkCmdSetFragmentShadingRateKHR: Invalid commandBuffer "
3503                    "[VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-parameter]");
3504         abort(); /* Intentionally fail so user can correct issue. */
3505     }
3506     disp->CmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps);
3507 }
3508 
3509 
3510 // ---- VK_KHR_present_wait extension trampoline/terminators
3511 
WaitForPresentKHR(VkDevice device,VkSwapchainKHR swapchain,uint64_t presentId,uint64_t timeout)3512 VKAPI_ATTR VkResult VKAPI_CALL WaitForPresentKHR(
3513     VkDevice                                    device,
3514     VkSwapchainKHR                              swapchain,
3515     uint64_t                                    presentId,
3516     uint64_t                                    timeout) {
3517     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3518     if (NULL == disp) {
3519         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3520                    "vkWaitForPresentKHR: Invalid device "
3521                    "[VUID-vkWaitForPresentKHR-device-parameter]");
3522         abort(); /* Intentionally fail so user can correct issue. */
3523     }
3524     return disp->WaitForPresentKHR(device, swapchain, presentId, timeout);
3525 }
3526 
3527 
3528 // ---- VK_KHR_buffer_device_address extension trampoline/terminators
3529 
GetBufferDeviceAddressKHR(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)3530 VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressKHR(
3531     VkDevice                                    device,
3532     const VkBufferDeviceAddressInfo*            pInfo) {
3533     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3534     if (NULL == disp) {
3535         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3536                    "vkGetBufferDeviceAddressKHR: Invalid device "
3537                    "[VUID-vkGetBufferDeviceAddressKHR-device-parameter]");
3538         abort(); /* Intentionally fail so user can correct issue. */
3539     }
3540     return disp->GetBufferDeviceAddressKHR(device, pInfo);
3541 }
3542 
GetBufferOpaqueCaptureAddressKHR(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)3543 VKAPI_ATTR uint64_t VKAPI_CALL GetBufferOpaqueCaptureAddressKHR(
3544     VkDevice                                    device,
3545     const VkBufferDeviceAddressInfo*            pInfo) {
3546     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3547     if (NULL == disp) {
3548         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3549                    "vkGetBufferOpaqueCaptureAddressKHR: Invalid device "
3550                    "[VUID-vkGetBufferOpaqueCaptureAddressKHR-device-parameter]");
3551         abort(); /* Intentionally fail so user can correct issue. */
3552     }
3553     return disp->GetBufferOpaqueCaptureAddressKHR(device, pInfo);
3554 }
3555 
GetDeviceMemoryOpaqueCaptureAddressKHR(VkDevice device,const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo)3556 VKAPI_ATTR uint64_t VKAPI_CALL GetDeviceMemoryOpaqueCaptureAddressKHR(
3557     VkDevice                                    device,
3558     const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) {
3559     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3560     if (NULL == disp) {
3561         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3562                    "vkGetDeviceMemoryOpaqueCaptureAddressKHR: Invalid device "
3563                    "[VUID-vkGetDeviceMemoryOpaqueCaptureAddressKHR-device-parameter]");
3564         abort(); /* Intentionally fail so user can correct issue. */
3565     }
3566     return disp->GetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo);
3567 }
3568 
3569 
3570 // ---- VK_KHR_deferred_host_operations extension trampoline/terminators
3571 
CreateDeferredOperationKHR(VkDevice device,const VkAllocationCallbacks * pAllocator,VkDeferredOperationKHR * pDeferredOperation)3572 VKAPI_ATTR VkResult VKAPI_CALL CreateDeferredOperationKHR(
3573     VkDevice                                    device,
3574     const VkAllocationCallbacks*                pAllocator,
3575     VkDeferredOperationKHR*                     pDeferredOperation) {
3576     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3577     if (NULL == disp) {
3578         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3579                    "vkCreateDeferredOperationKHR: Invalid device "
3580                    "[VUID-vkCreateDeferredOperationKHR-device-parameter]");
3581         abort(); /* Intentionally fail so user can correct issue. */
3582     }
3583     return disp->CreateDeferredOperationKHR(device, pAllocator, pDeferredOperation);
3584 }
3585 
DestroyDeferredOperationKHR(VkDevice device,VkDeferredOperationKHR operation,const VkAllocationCallbacks * pAllocator)3586 VKAPI_ATTR void VKAPI_CALL DestroyDeferredOperationKHR(
3587     VkDevice                                    device,
3588     VkDeferredOperationKHR                      operation,
3589     const VkAllocationCallbacks*                pAllocator) {
3590     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3591     if (NULL == disp) {
3592         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3593                    "vkDestroyDeferredOperationKHR: Invalid device "
3594                    "[VUID-vkDestroyDeferredOperationKHR-device-parameter]");
3595         abort(); /* Intentionally fail so user can correct issue. */
3596     }
3597     disp->DestroyDeferredOperationKHR(device, operation, pAllocator);
3598 }
3599 
GetDeferredOperationMaxConcurrencyKHR(VkDevice device,VkDeferredOperationKHR operation)3600 VKAPI_ATTR uint32_t VKAPI_CALL GetDeferredOperationMaxConcurrencyKHR(
3601     VkDevice                                    device,
3602     VkDeferredOperationKHR                      operation) {
3603     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3604     if (NULL == disp) {
3605         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3606                    "vkGetDeferredOperationMaxConcurrencyKHR: Invalid device "
3607                    "[VUID-vkGetDeferredOperationMaxConcurrencyKHR-device-parameter]");
3608         abort(); /* Intentionally fail so user can correct issue. */
3609     }
3610     return disp->GetDeferredOperationMaxConcurrencyKHR(device, operation);
3611 }
3612 
GetDeferredOperationResultKHR(VkDevice device,VkDeferredOperationKHR operation)3613 VKAPI_ATTR VkResult VKAPI_CALL GetDeferredOperationResultKHR(
3614     VkDevice                                    device,
3615     VkDeferredOperationKHR                      operation) {
3616     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3617     if (NULL == disp) {
3618         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3619                    "vkGetDeferredOperationResultKHR: Invalid device "
3620                    "[VUID-vkGetDeferredOperationResultKHR-device-parameter]");
3621         abort(); /* Intentionally fail so user can correct issue. */
3622     }
3623     return disp->GetDeferredOperationResultKHR(device, operation);
3624 }
3625 
DeferredOperationJoinKHR(VkDevice device,VkDeferredOperationKHR operation)3626 VKAPI_ATTR VkResult VKAPI_CALL DeferredOperationJoinKHR(
3627     VkDevice                                    device,
3628     VkDeferredOperationKHR                      operation) {
3629     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3630     if (NULL == disp) {
3631         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3632                    "vkDeferredOperationJoinKHR: Invalid device "
3633                    "[VUID-vkDeferredOperationJoinKHR-device-parameter]");
3634         abort(); /* Intentionally fail so user can correct issue. */
3635     }
3636     return disp->DeferredOperationJoinKHR(device, operation);
3637 }
3638 
3639 
3640 // ---- VK_KHR_pipeline_executable_properties extension trampoline/terminators
3641 
GetPipelineExecutablePropertiesKHR(VkDevice device,const VkPipelineInfoKHR * pPipelineInfo,uint32_t * pExecutableCount,VkPipelineExecutablePropertiesKHR * pProperties)3642 VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutablePropertiesKHR(
3643     VkDevice                                    device,
3644     const VkPipelineInfoKHR*                    pPipelineInfo,
3645     uint32_t*                                   pExecutableCount,
3646     VkPipelineExecutablePropertiesKHR*          pProperties) {
3647     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3648     if (NULL == disp) {
3649         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3650                    "vkGetPipelineExecutablePropertiesKHR: Invalid device "
3651                    "[VUID-vkGetPipelineExecutablePropertiesKHR-device-parameter]");
3652         abort(); /* Intentionally fail so user can correct issue. */
3653     }
3654     return disp->GetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties);
3655 }
3656 
GetPipelineExecutableStatisticsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pStatisticCount,VkPipelineExecutableStatisticKHR * pStatistics)3657 VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutableStatisticsKHR(
3658     VkDevice                                    device,
3659     const VkPipelineExecutableInfoKHR*          pExecutableInfo,
3660     uint32_t*                                   pStatisticCount,
3661     VkPipelineExecutableStatisticKHR*           pStatistics) {
3662     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3663     if (NULL == disp) {
3664         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3665                    "vkGetPipelineExecutableStatisticsKHR: Invalid device "
3666                    "[VUID-vkGetPipelineExecutableStatisticsKHR-device-parameter]");
3667         abort(); /* Intentionally fail so user can correct issue. */
3668     }
3669     return disp->GetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics);
3670 }
3671 
GetPipelineExecutableInternalRepresentationsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pInternalRepresentationCount,VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations)3672 VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutableInternalRepresentationsKHR(
3673     VkDevice                                    device,
3674     const VkPipelineExecutableInfoKHR*          pExecutableInfo,
3675     uint32_t*                                   pInternalRepresentationCount,
3676     VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) {
3677     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3678     if (NULL == disp) {
3679         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3680                    "vkGetPipelineExecutableInternalRepresentationsKHR: Invalid device "
3681                    "[VUID-vkGetPipelineExecutableInternalRepresentationsKHR-device-parameter]");
3682         abort(); /* Intentionally fail so user can correct issue. */
3683     }
3684     return disp->GetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations);
3685 }
3686 
3687 
3688 // ---- VK_KHR_video_encode_queue extension trampoline/terminators
3689 
3690 #ifdef VK_ENABLE_BETA_EXTENSIONS
CmdEncodeVideoKHR(VkCommandBuffer commandBuffer,const VkVideoEncodeInfoKHR * pEncodeInfo)3691 VKAPI_ATTR void VKAPI_CALL CmdEncodeVideoKHR(
3692     VkCommandBuffer                             commandBuffer,
3693     const VkVideoEncodeInfoKHR*                 pEncodeInfo) {
3694     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3695     if (NULL == disp) {
3696         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3697                    "vkCmdEncodeVideoKHR: Invalid commandBuffer "
3698                    "[VUID-vkCmdEncodeVideoKHR-commandBuffer-parameter]");
3699         abort(); /* Intentionally fail so user can correct issue. */
3700     }
3701     disp->CmdEncodeVideoKHR(commandBuffer, pEncodeInfo);
3702 }
3703 
3704 #endif // VK_ENABLE_BETA_EXTENSIONS
3705 
3706 // ---- VK_KHR_synchronization2 extension trampoline/terminators
3707 
CmdSetEvent2KHR(VkCommandBuffer commandBuffer,VkEvent event,const VkDependencyInfo * pDependencyInfo)3708 VKAPI_ATTR void VKAPI_CALL CmdSetEvent2KHR(
3709     VkCommandBuffer                             commandBuffer,
3710     VkEvent                                     event,
3711     const VkDependencyInfo*                     pDependencyInfo) {
3712     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3713     if (NULL == disp) {
3714         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3715                    "vkCmdSetEvent2KHR: Invalid commandBuffer "
3716                    "[VUID-vkCmdSetEvent2KHR-commandBuffer-parameter]");
3717         abort(); /* Intentionally fail so user can correct issue. */
3718     }
3719     disp->CmdSetEvent2KHR(commandBuffer, event, pDependencyInfo);
3720 }
3721 
CmdResetEvent2KHR(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags2 stageMask)3722 VKAPI_ATTR void VKAPI_CALL CmdResetEvent2KHR(
3723     VkCommandBuffer                             commandBuffer,
3724     VkEvent                                     event,
3725     VkPipelineStageFlags2                       stageMask) {
3726     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3727     if (NULL == disp) {
3728         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3729                    "vkCmdResetEvent2KHR: Invalid commandBuffer "
3730                    "[VUID-vkCmdResetEvent2KHR-commandBuffer-parameter]");
3731         abort(); /* Intentionally fail so user can correct issue. */
3732     }
3733     disp->CmdResetEvent2KHR(commandBuffer, event, stageMask);
3734 }
3735 
CmdWaitEvents2KHR(VkCommandBuffer commandBuffer,uint32_t eventCount,const VkEvent * pEvents,const VkDependencyInfo * pDependencyInfos)3736 VKAPI_ATTR void VKAPI_CALL CmdWaitEvents2KHR(
3737     VkCommandBuffer                             commandBuffer,
3738     uint32_t                                    eventCount,
3739     const VkEvent*                              pEvents,
3740     const VkDependencyInfo*                     pDependencyInfos) {
3741     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3742     if (NULL == disp) {
3743         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3744                    "vkCmdWaitEvents2KHR: Invalid commandBuffer "
3745                    "[VUID-vkCmdWaitEvents2KHR-commandBuffer-parameter]");
3746         abort(); /* Intentionally fail so user can correct issue. */
3747     }
3748     disp->CmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos);
3749 }
3750 
CmdPipelineBarrier2KHR(VkCommandBuffer commandBuffer,const VkDependencyInfo * pDependencyInfo)3751 VKAPI_ATTR void VKAPI_CALL CmdPipelineBarrier2KHR(
3752     VkCommandBuffer                             commandBuffer,
3753     const VkDependencyInfo*                     pDependencyInfo) {
3754     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3755     if (NULL == disp) {
3756         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3757                    "vkCmdPipelineBarrier2KHR: Invalid commandBuffer "
3758                    "[VUID-vkCmdPipelineBarrier2KHR-commandBuffer-parameter]");
3759         abort(); /* Intentionally fail so user can correct issue. */
3760     }
3761     disp->CmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo);
3762 }
3763 
CmdWriteTimestamp2KHR(VkCommandBuffer commandBuffer,VkPipelineStageFlags2 stage,VkQueryPool queryPool,uint32_t query)3764 VKAPI_ATTR void VKAPI_CALL CmdWriteTimestamp2KHR(
3765     VkCommandBuffer                             commandBuffer,
3766     VkPipelineStageFlags2                       stage,
3767     VkQueryPool                                 queryPool,
3768     uint32_t                                    query) {
3769     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3770     if (NULL == disp) {
3771         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3772                    "vkCmdWriteTimestamp2KHR: Invalid commandBuffer "
3773                    "[VUID-vkCmdWriteTimestamp2KHR-commandBuffer-parameter]");
3774         abort(); /* Intentionally fail so user can correct issue. */
3775     }
3776     disp->CmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query);
3777 }
3778 
QueueSubmit2KHR(VkQueue queue,uint32_t submitCount,const VkSubmitInfo2 * pSubmits,VkFence fence)3779 VKAPI_ATTR VkResult VKAPI_CALL QueueSubmit2KHR(
3780     VkQueue                                     queue,
3781     uint32_t                                    submitCount,
3782     const VkSubmitInfo2*                        pSubmits,
3783     VkFence                                     fence) {
3784     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
3785     if (NULL == disp) {
3786         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3787                    "vkQueueSubmit2KHR: Invalid queue "
3788                    "[VUID-vkQueueSubmit2KHR-queue-parameter]");
3789         abort(); /* Intentionally fail so user can correct issue. */
3790     }
3791     return disp->QueueSubmit2KHR(queue, submitCount, pSubmits, fence);
3792 }
3793 
CmdWriteBufferMarker2AMD(VkCommandBuffer commandBuffer,VkPipelineStageFlags2 stage,VkBuffer dstBuffer,VkDeviceSize dstOffset,uint32_t marker)3794 VKAPI_ATTR void VKAPI_CALL CmdWriteBufferMarker2AMD(
3795     VkCommandBuffer                             commandBuffer,
3796     VkPipelineStageFlags2                       stage,
3797     VkBuffer                                    dstBuffer,
3798     VkDeviceSize                                dstOffset,
3799     uint32_t                                    marker) {
3800     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3801     if (NULL == disp) {
3802         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3803                    "vkCmdWriteBufferMarker2AMD: Invalid commandBuffer "
3804                    "[VUID-vkCmdWriteBufferMarker2AMD-commandBuffer-parameter]");
3805         abort(); /* Intentionally fail so user can correct issue. */
3806     }
3807     disp->CmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker);
3808 }
3809 
GetQueueCheckpointData2NV(VkQueue queue,uint32_t * pCheckpointDataCount,VkCheckpointData2NV * pCheckpointData)3810 VKAPI_ATTR void VKAPI_CALL GetQueueCheckpointData2NV(
3811     VkQueue                                     queue,
3812     uint32_t*                                   pCheckpointDataCount,
3813     VkCheckpointData2NV*                        pCheckpointData) {
3814     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
3815     if (NULL == disp) {
3816         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3817                    "vkGetQueueCheckpointData2NV: Invalid queue "
3818                    "[VUID-vkGetQueueCheckpointData2NV-queue-parameter]");
3819         abort(); /* Intentionally fail so user can correct issue. */
3820     }
3821     disp->GetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData);
3822 }
3823 
3824 
3825 // ---- VK_KHR_copy_commands2 extension trampoline/terminators
3826 
CmdCopyBuffer2KHR(VkCommandBuffer commandBuffer,const VkCopyBufferInfo2 * pCopyBufferInfo)3827 VKAPI_ATTR void VKAPI_CALL CmdCopyBuffer2KHR(
3828     VkCommandBuffer                             commandBuffer,
3829     const VkCopyBufferInfo2*                    pCopyBufferInfo) {
3830     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3831     if (NULL == disp) {
3832         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3833                    "vkCmdCopyBuffer2KHR: Invalid commandBuffer "
3834                    "[VUID-vkCmdCopyBuffer2KHR-commandBuffer-parameter]");
3835         abort(); /* Intentionally fail so user can correct issue. */
3836     }
3837     disp->CmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo);
3838 }
3839 
CmdCopyImage2KHR(VkCommandBuffer commandBuffer,const VkCopyImageInfo2 * pCopyImageInfo)3840 VKAPI_ATTR void VKAPI_CALL CmdCopyImage2KHR(
3841     VkCommandBuffer                             commandBuffer,
3842     const VkCopyImageInfo2*                     pCopyImageInfo) {
3843     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3844     if (NULL == disp) {
3845         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3846                    "vkCmdCopyImage2KHR: Invalid commandBuffer "
3847                    "[VUID-vkCmdCopyImage2KHR-commandBuffer-parameter]");
3848         abort(); /* Intentionally fail so user can correct issue. */
3849     }
3850     disp->CmdCopyImage2KHR(commandBuffer, pCopyImageInfo);
3851 }
3852 
CmdCopyBufferToImage2KHR(VkCommandBuffer commandBuffer,const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo)3853 VKAPI_ATTR void VKAPI_CALL CmdCopyBufferToImage2KHR(
3854     VkCommandBuffer                             commandBuffer,
3855     const VkCopyBufferToImageInfo2*             pCopyBufferToImageInfo) {
3856     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3857     if (NULL == disp) {
3858         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3859                    "vkCmdCopyBufferToImage2KHR: Invalid commandBuffer "
3860                    "[VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-parameter]");
3861         abort(); /* Intentionally fail so user can correct issue. */
3862     }
3863     disp->CmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo);
3864 }
3865 
CmdCopyImageToBuffer2KHR(VkCommandBuffer commandBuffer,const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo)3866 VKAPI_ATTR void VKAPI_CALL CmdCopyImageToBuffer2KHR(
3867     VkCommandBuffer                             commandBuffer,
3868     const VkCopyImageToBufferInfo2*             pCopyImageToBufferInfo) {
3869     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3870     if (NULL == disp) {
3871         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3872                    "vkCmdCopyImageToBuffer2KHR: Invalid commandBuffer "
3873                    "[VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-parameter]");
3874         abort(); /* Intentionally fail so user can correct issue. */
3875     }
3876     disp->CmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo);
3877 }
3878 
CmdBlitImage2KHR(VkCommandBuffer commandBuffer,const VkBlitImageInfo2 * pBlitImageInfo)3879 VKAPI_ATTR void VKAPI_CALL CmdBlitImage2KHR(
3880     VkCommandBuffer                             commandBuffer,
3881     const VkBlitImageInfo2*                     pBlitImageInfo) {
3882     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3883     if (NULL == disp) {
3884         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3885                    "vkCmdBlitImage2KHR: Invalid commandBuffer "
3886                    "[VUID-vkCmdBlitImage2KHR-commandBuffer-parameter]");
3887         abort(); /* Intentionally fail so user can correct issue. */
3888     }
3889     disp->CmdBlitImage2KHR(commandBuffer, pBlitImageInfo);
3890 }
3891 
CmdResolveImage2KHR(VkCommandBuffer commandBuffer,const VkResolveImageInfo2 * pResolveImageInfo)3892 VKAPI_ATTR void VKAPI_CALL CmdResolveImage2KHR(
3893     VkCommandBuffer                             commandBuffer,
3894     const VkResolveImageInfo2*                  pResolveImageInfo) {
3895     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3896     if (NULL == disp) {
3897         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3898                    "vkCmdResolveImage2KHR: Invalid commandBuffer "
3899                    "[VUID-vkCmdResolveImage2KHR-commandBuffer-parameter]");
3900         abort(); /* Intentionally fail so user can correct issue. */
3901     }
3902     disp->CmdResolveImage2KHR(commandBuffer, pResolveImageInfo);
3903 }
3904 
3905 
3906 // ---- VK_KHR_ray_tracing_maintenance1 extension trampoline/terminators
3907 
CmdTraceRaysIndirect2KHR(VkCommandBuffer commandBuffer,VkDeviceAddress indirectDeviceAddress)3908 VKAPI_ATTR void VKAPI_CALL CmdTraceRaysIndirect2KHR(
3909     VkCommandBuffer                             commandBuffer,
3910     VkDeviceAddress                             indirectDeviceAddress) {
3911     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3912     if (NULL == disp) {
3913         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3914                    "vkCmdTraceRaysIndirect2KHR: Invalid commandBuffer "
3915                    "[VUID-vkCmdTraceRaysIndirect2KHR-commandBuffer-parameter]");
3916         abort(); /* Intentionally fail so user can correct issue. */
3917     }
3918     disp->CmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress);
3919 }
3920 
3921 
3922 // ---- VK_KHR_maintenance4 extension trampoline/terminators
3923 
GetDeviceBufferMemoryRequirementsKHR(VkDevice device,const VkDeviceBufferMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3924 VKAPI_ATTR void VKAPI_CALL GetDeviceBufferMemoryRequirementsKHR(
3925     VkDevice                                    device,
3926     const VkDeviceBufferMemoryRequirements*     pInfo,
3927     VkMemoryRequirements2*                      pMemoryRequirements) {
3928     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3929     if (NULL == disp) {
3930         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3931                    "vkGetDeviceBufferMemoryRequirementsKHR: Invalid device "
3932                    "[VUID-vkGetDeviceBufferMemoryRequirementsKHR-device-parameter]");
3933         abort(); /* Intentionally fail so user can correct issue. */
3934     }
3935     disp->GetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements);
3936 }
3937 
GetDeviceImageMemoryRequirementsKHR(VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)3938 VKAPI_ATTR void VKAPI_CALL GetDeviceImageMemoryRequirementsKHR(
3939     VkDevice                                    device,
3940     const VkDeviceImageMemoryRequirements*      pInfo,
3941     VkMemoryRequirements2*                      pMemoryRequirements) {
3942     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3943     if (NULL == disp) {
3944         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3945                    "vkGetDeviceImageMemoryRequirementsKHR: Invalid device "
3946                    "[VUID-vkGetDeviceImageMemoryRequirementsKHR-device-parameter]");
3947         abort(); /* Intentionally fail so user can correct issue. */
3948     }
3949     disp->GetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements);
3950 }
3951 
GetDeviceImageSparseMemoryRequirementsKHR(VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)3952 VKAPI_ATTR void VKAPI_CALL GetDeviceImageSparseMemoryRequirementsKHR(
3953     VkDevice                                    device,
3954     const VkDeviceImageMemoryRequirements*      pInfo,
3955     uint32_t*                                   pSparseMemoryRequirementCount,
3956     VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements) {
3957     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3958     if (NULL == disp) {
3959         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3960                    "vkGetDeviceImageSparseMemoryRequirementsKHR: Invalid device "
3961                    "[VUID-vkGetDeviceImageSparseMemoryRequirementsKHR-device-parameter]");
3962         abort(); /* Intentionally fail so user can correct issue. */
3963     }
3964     disp->GetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
3965 }
3966 
3967 
3968 // ---- VK_EXT_debug_marker extension trampoline/terminators
3969 
DebugMarkerSetObjectTagEXT(VkDevice device,const VkDebugMarkerObjectTagInfoEXT * pTagInfo)3970 VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectTagEXT(
3971     VkDevice                                    device,
3972     const VkDebugMarkerObjectTagInfoEXT*        pTagInfo) {
3973     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3974     if (NULL == disp) {
3975         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3976                    "vkDebugMarkerSetObjectTagEXT: Invalid device "
3977                    "[VUID-vkDebugMarkerSetObjectTagEXT-device-parameter]");
3978         abort(); /* Intentionally fail so user can correct issue. */
3979     }
3980     VkDebugMarkerObjectTagInfoEXT local_tag_info;
3981     memcpy(&local_tag_info, pTagInfo, sizeof(VkDebugMarkerObjectTagInfoEXT));
3982     // If this is a physical device, we have to replace it with the proper one for the next call.
3983     if (pTagInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT) {
3984         struct loader_physical_device_tramp *phys_dev_tramp = (struct loader_physical_device_tramp *)(uintptr_t)pTagInfo->object;
3985         local_tag_info.object = (uint64_t)(uintptr_t)phys_dev_tramp->phys_dev;
3986     }
3987     return disp->DebugMarkerSetObjectTagEXT(device, &local_tag_info);
3988 }
3989 
terminator_DebugMarkerSetObjectTagEXT(VkDevice device,const VkDebugMarkerObjectTagInfoEXT * pTagInfo)3990 VKAPI_ATTR VkResult VKAPI_CALL terminator_DebugMarkerSetObjectTagEXT(
3991     VkDevice                                    device,
3992     const VkDebugMarkerObjectTagInfoEXT*        pTagInfo) {
3993     uint32_t icd_index = 0;
3994     struct loader_device *dev;
3995     struct loader_icd_term *icd_term = loader_get_icd_and_device(device, &dev, &icd_index);
3996     if (NULL != icd_term && NULL != icd_term->dispatch.DebugMarkerSetObjectTagEXT) {
3997         VkDebugMarkerObjectTagInfoEXT local_tag_info;
3998         memcpy(&local_tag_info, pTagInfo, sizeof(VkDebugMarkerObjectTagInfoEXT));
3999         // If this is a physical device, we have to replace it with the proper one for the next call.
4000         if (pTagInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT) {
4001             struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)(uintptr_t)pTagInfo->object;
4002             local_tag_info.object = (uint64_t)(uintptr_t)phys_dev_term->phys_dev;
4003         // If this is a KHR_surface, and the ICD has created its own, we have to replace it with the proper one for the next call.
4004         } else if (pTagInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT) {
4005             if (NULL != icd_term && NULL != icd_term->dispatch.CreateSwapchainKHR) {
4006                 VkIcdSurface *icd_surface = (VkIcdSurface *)(uintptr_t)pTagInfo->object;
4007                 if (NULL != icd_surface->real_icd_surfaces) {
4008                     local_tag_info.object = (uint64_t)icd_surface->real_icd_surfaces[icd_index];
4009                 }
4010             }
4011         }
4012         return icd_term->dispatch.DebugMarkerSetObjectTagEXT(device, &local_tag_info);
4013     } else {
4014         return VK_SUCCESS;
4015     }
4016 }
4017 
DebugMarkerSetObjectNameEXT(VkDevice device,const VkDebugMarkerObjectNameInfoEXT * pNameInfo)4018 VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectNameEXT(
4019     VkDevice                                    device,
4020     const VkDebugMarkerObjectNameInfoEXT*       pNameInfo) {
4021     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4022     if (NULL == disp) {
4023         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4024                    "vkDebugMarkerSetObjectNameEXT: Invalid device "
4025                    "[VUID-vkDebugMarkerSetObjectNameEXT-device-parameter]");
4026         abort(); /* Intentionally fail so user can correct issue. */
4027     }
4028     VkDebugMarkerObjectNameInfoEXT local_name_info;
4029     memcpy(&local_name_info, pNameInfo, sizeof(VkDebugMarkerObjectNameInfoEXT));
4030     // If this is a physical device, we have to replace it with the proper one for the next call.
4031     if (pNameInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT) {
4032         struct loader_physical_device_tramp *phys_dev_tramp = (struct loader_physical_device_tramp *)(uintptr_t)pNameInfo->object;
4033         local_name_info.object = (uint64_t)(uintptr_t)phys_dev_tramp->phys_dev;
4034     }
4035     return disp->DebugMarkerSetObjectNameEXT(device, &local_name_info);
4036 }
4037 
terminator_DebugMarkerSetObjectNameEXT(VkDevice device,const VkDebugMarkerObjectNameInfoEXT * pNameInfo)4038 VKAPI_ATTR VkResult VKAPI_CALL terminator_DebugMarkerSetObjectNameEXT(
4039     VkDevice                                    device,
4040     const VkDebugMarkerObjectNameInfoEXT*       pNameInfo) {
4041     uint32_t icd_index = 0;
4042     struct loader_device *dev;
4043     struct loader_icd_term *icd_term = loader_get_icd_and_device(device, &dev, &icd_index);
4044     if (NULL != icd_term && NULL != icd_term->dispatch.DebugMarkerSetObjectNameEXT) {
4045         VkDebugMarkerObjectNameInfoEXT local_name_info;
4046         memcpy(&local_name_info, pNameInfo, sizeof(VkDebugMarkerObjectNameInfoEXT));
4047         // If this is a physical device, we have to replace it with the proper one for the next call.
4048         if (pNameInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT) {
4049             struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)(uintptr_t)pNameInfo->object;
4050             local_name_info.object = (uint64_t)(uintptr_t)phys_dev_term->phys_dev;
4051         // If this is a KHR_surface, and the ICD has created its own, we have to replace it with the proper one for the next call.
4052         } else if (pNameInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT) {
4053             if (NULL != icd_term && NULL != icd_term->dispatch.CreateSwapchainKHR) {
4054                 VkIcdSurface *icd_surface = (VkIcdSurface *)(uintptr_t)pNameInfo->object;
4055                 if (NULL != icd_surface->real_icd_surfaces) {
4056                     local_name_info.object = (uint64_t)icd_surface->real_icd_surfaces[icd_index];
4057                 }
4058             }
4059         }
4060         return icd_term->dispatch.DebugMarkerSetObjectNameEXT(device, &local_name_info);
4061     } else {
4062         return VK_SUCCESS;
4063     }
4064 }
4065 
CmdDebugMarkerBeginEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)4066 VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerBeginEXT(
4067     VkCommandBuffer                             commandBuffer,
4068     const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo) {
4069     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4070     if (NULL == disp) {
4071         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4072                    "vkCmdDebugMarkerBeginEXT: Invalid commandBuffer "
4073                    "[VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-parameter]");
4074         abort(); /* Intentionally fail so user can correct issue. */
4075     }
4076     disp->CmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo);
4077 }
4078 
CmdDebugMarkerEndEXT(VkCommandBuffer commandBuffer)4079 VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerEndEXT(
4080     VkCommandBuffer                             commandBuffer) {
4081     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4082     if (NULL == disp) {
4083         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4084                    "vkCmdDebugMarkerEndEXT: Invalid commandBuffer "
4085                    "[VUID-vkCmdDebugMarkerEndEXT-commandBuffer-parameter]");
4086         abort(); /* Intentionally fail so user can correct issue. */
4087     }
4088     disp->CmdDebugMarkerEndEXT(commandBuffer);
4089 }
4090 
CmdDebugMarkerInsertEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)4091 VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerInsertEXT(
4092     VkCommandBuffer                             commandBuffer,
4093     const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo) {
4094     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4095     if (NULL == disp) {
4096         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4097                    "vkCmdDebugMarkerInsertEXT: Invalid commandBuffer "
4098                    "[VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-parameter]");
4099         abort(); /* Intentionally fail so user can correct issue. */
4100     }
4101     disp->CmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo);
4102 }
4103 
4104 
4105 // ---- VK_EXT_transform_feedback extension trampoline/terminators
4106 
CmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes)4107 VKAPI_ATTR void VKAPI_CALL CmdBindTransformFeedbackBuffersEXT(
4108     VkCommandBuffer                             commandBuffer,
4109     uint32_t                                    firstBinding,
4110     uint32_t                                    bindingCount,
4111     const VkBuffer*                             pBuffers,
4112     const VkDeviceSize*                         pOffsets,
4113     const VkDeviceSize*                         pSizes) {
4114     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4115     if (NULL == disp) {
4116         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4117                    "vkCmdBindTransformFeedbackBuffersEXT: Invalid commandBuffer "
4118                    "[VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-parameter]");
4119         abort(); /* Intentionally fail so user can correct issue. */
4120     }
4121     disp->CmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes);
4122 }
4123 
CmdBeginTransformFeedbackEXT(VkCommandBuffer commandBuffer,uint32_t firstCounterBuffer,uint32_t counterBufferCount,const VkBuffer * pCounterBuffers,const VkDeviceSize * pCounterBufferOffsets)4124 VKAPI_ATTR void VKAPI_CALL CmdBeginTransformFeedbackEXT(
4125     VkCommandBuffer                             commandBuffer,
4126     uint32_t                                    firstCounterBuffer,
4127     uint32_t                                    counterBufferCount,
4128     const VkBuffer*                             pCounterBuffers,
4129     const VkDeviceSize*                         pCounterBufferOffsets) {
4130     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4131     if (NULL == disp) {
4132         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4133                    "vkCmdBeginTransformFeedbackEXT: Invalid commandBuffer "
4134                    "[VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-parameter]");
4135         abort(); /* Intentionally fail so user can correct issue. */
4136     }
4137     disp->CmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets);
4138 }
4139 
CmdEndTransformFeedbackEXT(VkCommandBuffer commandBuffer,uint32_t firstCounterBuffer,uint32_t counterBufferCount,const VkBuffer * pCounterBuffers,const VkDeviceSize * pCounterBufferOffsets)4140 VKAPI_ATTR void VKAPI_CALL CmdEndTransformFeedbackEXT(
4141     VkCommandBuffer                             commandBuffer,
4142     uint32_t                                    firstCounterBuffer,
4143     uint32_t                                    counterBufferCount,
4144     const VkBuffer*                             pCounterBuffers,
4145     const VkDeviceSize*                         pCounterBufferOffsets) {
4146     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4147     if (NULL == disp) {
4148         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4149                    "vkCmdEndTransformFeedbackEXT: Invalid commandBuffer "
4150                    "[VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter]");
4151         abort(); /* Intentionally fail so user can correct issue. */
4152     }
4153     disp->CmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets);
4154 }
4155 
CmdBeginQueryIndexedEXT(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,VkQueryControlFlags flags,uint32_t index)4156 VKAPI_ATTR void VKAPI_CALL CmdBeginQueryIndexedEXT(
4157     VkCommandBuffer                             commandBuffer,
4158     VkQueryPool                                 queryPool,
4159     uint32_t                                    query,
4160     VkQueryControlFlags                         flags,
4161     uint32_t                                    index) {
4162     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4163     if (NULL == disp) {
4164         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4165                    "vkCmdBeginQueryIndexedEXT: Invalid commandBuffer "
4166                    "[VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter]");
4167         abort(); /* Intentionally fail so user can correct issue. */
4168     }
4169     disp->CmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index);
4170 }
4171 
CmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,uint32_t index)4172 VKAPI_ATTR void VKAPI_CALL CmdEndQueryIndexedEXT(
4173     VkCommandBuffer                             commandBuffer,
4174     VkQueryPool                                 queryPool,
4175     uint32_t                                    query,
4176     uint32_t                                    index) {
4177     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4178     if (NULL == disp) {
4179         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4180                    "vkCmdEndQueryIndexedEXT: Invalid commandBuffer "
4181                    "[VUID-vkCmdEndQueryIndexedEXT-commandBuffer-parameter]");
4182         abort(); /* Intentionally fail so user can correct issue. */
4183     }
4184     disp->CmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index);
4185 }
4186 
CmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer,uint32_t instanceCount,uint32_t firstInstance,VkBuffer counterBuffer,VkDeviceSize counterBufferOffset,uint32_t counterOffset,uint32_t vertexStride)4187 VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectByteCountEXT(
4188     VkCommandBuffer                             commandBuffer,
4189     uint32_t                                    instanceCount,
4190     uint32_t                                    firstInstance,
4191     VkBuffer                                    counterBuffer,
4192     VkDeviceSize                                counterBufferOffset,
4193     uint32_t                                    counterOffset,
4194     uint32_t                                    vertexStride) {
4195     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4196     if (NULL == disp) {
4197         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4198                    "vkCmdDrawIndirectByteCountEXT: Invalid commandBuffer "
4199                    "[VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter]");
4200         abort(); /* Intentionally fail so user can correct issue. */
4201     }
4202     disp->CmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride);
4203 }
4204 
4205 
4206 // ---- VK_NVX_binary_import extension trampoline/terminators
4207 
CreateCuModuleNVX(VkDevice device,const VkCuModuleCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCuModuleNVX * pModule)4208 VKAPI_ATTR VkResult VKAPI_CALL CreateCuModuleNVX(
4209     VkDevice                                    device,
4210     const VkCuModuleCreateInfoNVX*              pCreateInfo,
4211     const VkAllocationCallbacks*                pAllocator,
4212     VkCuModuleNVX*                              pModule) {
4213     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4214     if (NULL == disp) {
4215         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4216                    "vkCreateCuModuleNVX: Invalid device "
4217                    "[VUID-vkCreateCuModuleNVX-device-parameter]");
4218         abort(); /* Intentionally fail so user can correct issue. */
4219     }
4220     return disp->CreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule);
4221 }
4222 
CreateCuFunctionNVX(VkDevice device,const VkCuFunctionCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCuFunctionNVX * pFunction)4223 VKAPI_ATTR VkResult VKAPI_CALL CreateCuFunctionNVX(
4224     VkDevice                                    device,
4225     const VkCuFunctionCreateInfoNVX*            pCreateInfo,
4226     const VkAllocationCallbacks*                pAllocator,
4227     VkCuFunctionNVX*                            pFunction) {
4228     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4229     if (NULL == disp) {
4230         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4231                    "vkCreateCuFunctionNVX: Invalid device "
4232                    "[VUID-vkCreateCuFunctionNVX-device-parameter]");
4233         abort(); /* Intentionally fail so user can correct issue. */
4234     }
4235     return disp->CreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction);
4236 }
4237 
DestroyCuModuleNVX(VkDevice device,VkCuModuleNVX module,const VkAllocationCallbacks * pAllocator)4238 VKAPI_ATTR void VKAPI_CALL DestroyCuModuleNVX(
4239     VkDevice                                    device,
4240     VkCuModuleNVX                               module,
4241     const VkAllocationCallbacks*                pAllocator) {
4242     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4243     if (NULL == disp) {
4244         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4245                    "vkDestroyCuModuleNVX: Invalid device "
4246                    "[VUID-vkDestroyCuModuleNVX-device-parameter]");
4247         abort(); /* Intentionally fail so user can correct issue. */
4248     }
4249     disp->DestroyCuModuleNVX(device, module, pAllocator);
4250 }
4251 
DestroyCuFunctionNVX(VkDevice device,VkCuFunctionNVX function,const VkAllocationCallbacks * pAllocator)4252 VKAPI_ATTR void VKAPI_CALL DestroyCuFunctionNVX(
4253     VkDevice                                    device,
4254     VkCuFunctionNVX                             function,
4255     const VkAllocationCallbacks*                pAllocator) {
4256     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4257     if (NULL == disp) {
4258         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4259                    "vkDestroyCuFunctionNVX: Invalid device "
4260                    "[VUID-vkDestroyCuFunctionNVX-device-parameter]");
4261         abort(); /* Intentionally fail so user can correct issue. */
4262     }
4263     disp->DestroyCuFunctionNVX(device, function, pAllocator);
4264 }
4265 
CmdCuLaunchKernelNVX(VkCommandBuffer commandBuffer,const VkCuLaunchInfoNVX * pLaunchInfo)4266 VKAPI_ATTR void VKAPI_CALL CmdCuLaunchKernelNVX(
4267     VkCommandBuffer                             commandBuffer,
4268     const VkCuLaunchInfoNVX*                    pLaunchInfo) {
4269     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4270     if (NULL == disp) {
4271         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4272                    "vkCmdCuLaunchKernelNVX: Invalid commandBuffer "
4273                    "[VUID-vkCmdCuLaunchKernelNVX-commandBuffer-parameter]");
4274         abort(); /* Intentionally fail so user can correct issue. */
4275     }
4276     disp->CmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo);
4277 }
4278 
4279 
4280 // ---- VK_NVX_image_view_handle extension trampoline/terminators
4281 
GetImageViewHandleNVX(VkDevice device,const VkImageViewHandleInfoNVX * pInfo)4282 VKAPI_ATTR uint32_t VKAPI_CALL GetImageViewHandleNVX(
4283     VkDevice                                    device,
4284     const VkImageViewHandleInfoNVX*             pInfo) {
4285     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4286     if (NULL == disp) {
4287         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4288                    "vkGetImageViewHandleNVX: Invalid device "
4289                    "[VUID-vkGetImageViewHandleNVX-device-parameter]");
4290         abort(); /* Intentionally fail so user can correct issue. */
4291     }
4292     return disp->GetImageViewHandleNVX(device, pInfo);
4293 }
4294 
GetImageViewAddressNVX(VkDevice device,VkImageView imageView,VkImageViewAddressPropertiesNVX * pProperties)4295 VKAPI_ATTR VkResult VKAPI_CALL GetImageViewAddressNVX(
4296     VkDevice                                    device,
4297     VkImageView                                 imageView,
4298     VkImageViewAddressPropertiesNVX*            pProperties) {
4299     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4300     if (NULL == disp) {
4301         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4302                    "vkGetImageViewAddressNVX: Invalid device "
4303                    "[VUID-vkGetImageViewAddressNVX-device-parameter]");
4304         abort(); /* Intentionally fail so user can correct issue. */
4305     }
4306     return disp->GetImageViewAddressNVX(device, imageView, pProperties);
4307 }
4308 
4309 
4310 // ---- VK_AMD_draw_indirect_count extension trampoline/terminators
4311 
CmdDrawIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)4312 VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCountAMD(
4313     VkCommandBuffer                             commandBuffer,
4314     VkBuffer                                    buffer,
4315     VkDeviceSize                                offset,
4316     VkBuffer                                    countBuffer,
4317     VkDeviceSize                                countBufferOffset,
4318     uint32_t                                    maxDrawCount,
4319     uint32_t                                    stride) {
4320     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4321     if (NULL == disp) {
4322         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4323                    "vkCmdDrawIndirectCountAMD: Invalid commandBuffer "
4324                    "[VUID-vkCmdDrawIndirectCountAMD-commandBuffer-parameter]");
4325         abort(); /* Intentionally fail so user can correct issue. */
4326     }
4327     disp->CmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
4328 }
4329 
CmdDrawIndexedIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)4330 VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCountAMD(
4331     VkCommandBuffer                             commandBuffer,
4332     VkBuffer                                    buffer,
4333     VkDeviceSize                                offset,
4334     VkBuffer                                    countBuffer,
4335     VkDeviceSize                                countBufferOffset,
4336     uint32_t                                    maxDrawCount,
4337     uint32_t                                    stride) {
4338     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4339     if (NULL == disp) {
4340         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4341                    "vkCmdDrawIndexedIndirectCountAMD: Invalid commandBuffer "
4342                    "[VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-parameter]");
4343         abort(); /* Intentionally fail so user can correct issue. */
4344     }
4345     disp->CmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
4346 }
4347 
4348 
4349 // ---- VK_AMD_shader_info extension trampoline/terminators
4350 
GetShaderInfoAMD(VkDevice device,VkPipeline pipeline,VkShaderStageFlagBits shaderStage,VkShaderInfoTypeAMD infoType,size_t * pInfoSize,void * pInfo)4351 VKAPI_ATTR VkResult VKAPI_CALL GetShaderInfoAMD(
4352     VkDevice                                    device,
4353     VkPipeline                                  pipeline,
4354     VkShaderStageFlagBits                       shaderStage,
4355     VkShaderInfoTypeAMD                         infoType,
4356     size_t*                                     pInfoSize,
4357     void*                                       pInfo) {
4358     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4359     if (NULL == disp) {
4360         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4361                    "vkGetShaderInfoAMD: Invalid device "
4362                    "[VUID-vkGetShaderInfoAMD-device-parameter]");
4363         abort(); /* Intentionally fail so user can correct issue. */
4364     }
4365     return disp->GetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
4366 }
4367 
4368 
4369 // ---- VK_NV_external_memory_win32 extension trampoline/terminators
4370 
4371 #ifdef VK_USE_PLATFORM_WIN32_KHR
GetMemoryWin32HandleNV(VkDevice device,VkDeviceMemory memory,VkExternalMemoryHandleTypeFlagsNV handleType,HANDLE * pHandle)4372 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandleNV(
4373     VkDevice                                    device,
4374     VkDeviceMemory                              memory,
4375     VkExternalMemoryHandleTypeFlagsNV           handleType,
4376     HANDLE*                                     pHandle) {
4377     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4378     if (NULL == disp) {
4379         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4380                    "vkGetMemoryWin32HandleNV: Invalid device "
4381                    "[VUID-vkGetMemoryWin32HandleNV-device-parameter]");
4382         abort(); /* Intentionally fail so user can correct issue. */
4383     }
4384     return disp->GetMemoryWin32HandleNV(device, memory, handleType, pHandle);
4385 }
4386 
4387 #endif // VK_USE_PLATFORM_WIN32_KHR
4388 
4389 // ---- VK_EXT_conditional_rendering extension trampoline/terminators
4390 
CmdBeginConditionalRenderingEXT(VkCommandBuffer commandBuffer,const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin)4391 VKAPI_ATTR void VKAPI_CALL CmdBeginConditionalRenderingEXT(
4392     VkCommandBuffer                             commandBuffer,
4393     const VkConditionalRenderingBeginInfoEXT*   pConditionalRenderingBegin) {
4394     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4395     if (NULL == disp) {
4396         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4397                    "vkCmdBeginConditionalRenderingEXT: Invalid commandBuffer "
4398                    "[VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-parameter]");
4399         abort(); /* Intentionally fail so user can correct issue. */
4400     }
4401     disp->CmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin);
4402 }
4403 
CmdEndConditionalRenderingEXT(VkCommandBuffer commandBuffer)4404 VKAPI_ATTR void VKAPI_CALL CmdEndConditionalRenderingEXT(
4405     VkCommandBuffer                             commandBuffer) {
4406     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4407     if (NULL == disp) {
4408         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4409                    "vkCmdEndConditionalRenderingEXT: Invalid commandBuffer "
4410                    "[VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-parameter]");
4411         abort(); /* Intentionally fail so user can correct issue. */
4412     }
4413     disp->CmdEndConditionalRenderingEXT(commandBuffer);
4414 }
4415 
4416 
4417 // ---- VK_NV_clip_space_w_scaling extension trampoline/terminators
4418 
CmdSetViewportWScalingNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewportWScalingNV * pViewportWScalings)4419 VKAPI_ATTR void VKAPI_CALL CmdSetViewportWScalingNV(
4420     VkCommandBuffer                             commandBuffer,
4421     uint32_t                                    firstViewport,
4422     uint32_t                                    viewportCount,
4423     const VkViewportWScalingNV*                 pViewportWScalings) {
4424     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4425     if (NULL == disp) {
4426         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4427                    "vkCmdSetViewportWScalingNV: Invalid commandBuffer "
4428                    "[VUID-vkCmdSetViewportWScalingNV-commandBuffer-parameter]");
4429         abort(); /* Intentionally fail so user can correct issue. */
4430     }
4431     disp->CmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings);
4432 }
4433 
4434 
4435 // ---- VK_EXT_display_control extension trampoline/terminators
4436 
DisplayPowerControlEXT(VkDevice device,VkDisplayKHR display,const VkDisplayPowerInfoEXT * pDisplayPowerInfo)4437 VKAPI_ATTR VkResult VKAPI_CALL DisplayPowerControlEXT(
4438     VkDevice                                    device,
4439     VkDisplayKHR                                display,
4440     const VkDisplayPowerInfoEXT*                pDisplayPowerInfo) {
4441     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4442     if (NULL == disp) {
4443         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4444                    "vkDisplayPowerControlEXT: Invalid device "
4445                    "[VUID-vkDisplayPowerControlEXT-device-parameter]");
4446         abort(); /* Intentionally fail so user can correct issue. */
4447     }
4448     return disp->DisplayPowerControlEXT(device, display, pDisplayPowerInfo);
4449 }
4450 
RegisterDeviceEventEXT(VkDevice device,const VkDeviceEventInfoEXT * pDeviceEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)4451 VKAPI_ATTR VkResult VKAPI_CALL RegisterDeviceEventEXT(
4452     VkDevice                                    device,
4453     const VkDeviceEventInfoEXT*                 pDeviceEventInfo,
4454     const VkAllocationCallbacks*                pAllocator,
4455     VkFence*                                    pFence) {
4456     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4457     if (NULL == disp) {
4458         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4459                    "vkRegisterDeviceEventEXT: Invalid device "
4460                    "[VUID-vkRegisterDeviceEventEXT-device-parameter]");
4461         abort(); /* Intentionally fail so user can correct issue. */
4462     }
4463     return disp->RegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
4464 }
4465 
RegisterDisplayEventEXT(VkDevice device,VkDisplayKHR display,const VkDisplayEventInfoEXT * pDisplayEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)4466 VKAPI_ATTR VkResult VKAPI_CALL RegisterDisplayEventEXT(
4467     VkDevice                                    device,
4468     VkDisplayKHR                                display,
4469     const VkDisplayEventInfoEXT*                pDisplayEventInfo,
4470     const VkAllocationCallbacks*                pAllocator,
4471     VkFence*                                    pFence) {
4472     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4473     if (NULL == disp) {
4474         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4475                    "vkRegisterDisplayEventEXT: Invalid device "
4476                    "[VUID-vkRegisterDisplayEventEXT-device-parameter]");
4477         abort(); /* Intentionally fail so user can correct issue. */
4478     }
4479     return disp->RegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
4480 }
4481 
GetSwapchainCounterEXT(VkDevice device,VkSwapchainKHR swapchain,VkSurfaceCounterFlagBitsEXT counter,uint64_t * pCounterValue)4482 VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainCounterEXT(
4483     VkDevice                                    device,
4484     VkSwapchainKHR                              swapchain,
4485     VkSurfaceCounterFlagBitsEXT                 counter,
4486     uint64_t*                                   pCounterValue) {
4487     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4488     if (NULL == disp) {
4489         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4490                    "vkGetSwapchainCounterEXT: Invalid device "
4491                    "[VUID-vkGetSwapchainCounterEXT-device-parameter]");
4492         abort(); /* Intentionally fail so user can correct issue. */
4493     }
4494     return disp->GetSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
4495 }
4496 
4497 
4498 // ---- VK_GOOGLE_display_timing extension trampoline/terminators
4499 
GetRefreshCycleDurationGOOGLE(VkDevice device,VkSwapchainKHR swapchain,VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties)4500 VKAPI_ATTR VkResult VKAPI_CALL GetRefreshCycleDurationGOOGLE(
4501     VkDevice                                    device,
4502     VkSwapchainKHR                              swapchain,
4503     VkRefreshCycleDurationGOOGLE*               pDisplayTimingProperties) {
4504     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4505     if (NULL == disp) {
4506         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4507                    "vkGetRefreshCycleDurationGOOGLE: Invalid device "
4508                    "[VUID-vkGetRefreshCycleDurationGOOGLE-device-parameter]");
4509         abort(); /* Intentionally fail so user can correct issue. */
4510     }
4511     return disp->GetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
4512 }
4513 
GetPastPresentationTimingGOOGLE(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pPresentationTimingCount,VkPastPresentationTimingGOOGLE * pPresentationTimings)4514 VKAPI_ATTR VkResult VKAPI_CALL GetPastPresentationTimingGOOGLE(
4515     VkDevice                                    device,
4516     VkSwapchainKHR                              swapchain,
4517     uint32_t*                                   pPresentationTimingCount,
4518     VkPastPresentationTimingGOOGLE*             pPresentationTimings) {
4519     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4520     if (NULL == disp) {
4521         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4522                    "vkGetPastPresentationTimingGOOGLE: Invalid device "
4523                    "[VUID-vkGetPastPresentationTimingGOOGLE-device-parameter]");
4524         abort(); /* Intentionally fail so user can correct issue. */
4525     }
4526     return disp->GetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
4527 }
4528 
4529 
4530 // ---- VK_EXT_discard_rectangles extension trampoline/terminators
4531 
CmdSetDiscardRectangleEXT(VkCommandBuffer commandBuffer,uint32_t firstDiscardRectangle,uint32_t discardRectangleCount,const VkRect2D * pDiscardRectangles)4532 VKAPI_ATTR void VKAPI_CALL CmdSetDiscardRectangleEXT(
4533     VkCommandBuffer                             commandBuffer,
4534     uint32_t                                    firstDiscardRectangle,
4535     uint32_t                                    discardRectangleCount,
4536     const VkRect2D*                             pDiscardRectangles) {
4537     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4538     if (NULL == disp) {
4539         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4540                    "vkCmdSetDiscardRectangleEXT: Invalid commandBuffer "
4541                    "[VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-parameter]");
4542         abort(); /* Intentionally fail so user can correct issue. */
4543     }
4544     disp->CmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles);
4545 }
4546 
4547 
4548 // ---- VK_EXT_hdr_metadata extension trampoline/terminators
4549 
SetHdrMetadataEXT(VkDevice device,uint32_t swapchainCount,const VkSwapchainKHR * pSwapchains,const VkHdrMetadataEXT * pMetadata)4550 VKAPI_ATTR void VKAPI_CALL SetHdrMetadataEXT(
4551     VkDevice                                    device,
4552     uint32_t                                    swapchainCount,
4553     const VkSwapchainKHR*                       pSwapchains,
4554     const VkHdrMetadataEXT*                     pMetadata) {
4555     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4556     if (NULL == disp) {
4557         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4558                    "vkSetHdrMetadataEXT: Invalid device "
4559                    "[VUID-vkSetHdrMetadataEXT-device-parameter]");
4560         abort(); /* Intentionally fail so user can correct issue. */
4561     }
4562     disp->SetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata);
4563 }
4564 
4565 
4566 // ---- VK_EXT_debug_utils extension trampoline/terminators
4567 
SetDebugUtilsObjectNameEXT(VkDevice device,const VkDebugUtilsObjectNameInfoEXT * pNameInfo)4568 VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectNameEXT(
4569     VkDevice                                    device,
4570     const VkDebugUtilsObjectNameInfoEXT*        pNameInfo) {
4571     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4572     if (NULL == disp) {
4573         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4574                    "vkSetDebugUtilsObjectNameEXT: Invalid device "
4575                    "[VUID-vkSetDebugUtilsObjectNameEXT-device-parameter]");
4576         abort(); /* Intentionally fail so user can correct issue. */
4577     }
4578     VkDebugUtilsObjectNameInfoEXT local_name_info;
4579     memcpy(&local_name_info, pNameInfo, sizeof(VkDebugUtilsObjectNameInfoEXT));
4580     // If this is a physical device, we have to replace it with the proper one for the next call.
4581     if (pNameInfo->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {
4582         struct loader_physical_device_tramp *phys_dev_tramp = (struct loader_physical_device_tramp *)(uintptr_t)pNameInfo->objectHandle;
4583         local_name_info.objectHandle = (uint64_t)(uintptr_t)phys_dev_tramp->phys_dev;
4584     }
4585     if (disp->SetDebugUtilsObjectNameEXT != NULL) {
4586         return disp->SetDebugUtilsObjectNameEXT(device, &local_name_info);
4587     } else {
4588         return VK_SUCCESS;
4589     }
4590 }
4591 
terminator_SetDebugUtilsObjectNameEXT(VkDevice device,const VkDebugUtilsObjectNameInfoEXT * pNameInfo)4592 VKAPI_ATTR VkResult VKAPI_CALL terminator_SetDebugUtilsObjectNameEXT(
4593     VkDevice                                    device,
4594     const VkDebugUtilsObjectNameInfoEXT*        pNameInfo) {
4595     uint32_t icd_index = 0;
4596     struct loader_device *dev;
4597     struct loader_icd_term *icd_term = loader_get_icd_and_device(device, &dev, &icd_index);
4598     if (NULL != icd_term && NULL != icd_term->dispatch.SetDebugUtilsObjectNameEXT) {
4599         VkDebugUtilsObjectNameInfoEXT local_name_info;
4600         memcpy(&local_name_info, pNameInfo, sizeof(VkDebugUtilsObjectNameInfoEXT));
4601         // If this is a physical device, we have to replace it with the proper one for the next call.
4602         if (pNameInfo->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {
4603             struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)(uintptr_t)pNameInfo->objectHandle;
4604             local_name_info.objectHandle = (uint64_t)(uintptr_t)phys_dev_term->phys_dev;
4605         // If this is a KHR_surface, and the ICD has created its own, we have to replace it with the proper one for the next call.
4606         } else if (pNameInfo->objectType == VK_OBJECT_TYPE_SURFACE_KHR) {
4607             if (NULL != icd_term && NULL != icd_term->dispatch.CreateSwapchainKHR) {
4608                 VkIcdSurface *icd_surface = (VkIcdSurface *)(uintptr_t)pNameInfo->objectHandle;
4609                 if (NULL != icd_surface->real_icd_surfaces) {
4610                     local_name_info.objectHandle = (uint64_t)icd_surface->real_icd_surfaces[icd_index];
4611                 }
4612             }
4613         }
4614         return icd_term->dispatch.SetDebugUtilsObjectNameEXT(device, &local_name_info);
4615     } else {
4616         return VK_SUCCESS;
4617     }
4618 }
4619 
SetDebugUtilsObjectTagEXT(VkDevice device,const VkDebugUtilsObjectTagInfoEXT * pTagInfo)4620 VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectTagEXT(
4621     VkDevice                                    device,
4622     const VkDebugUtilsObjectTagInfoEXT*         pTagInfo) {
4623     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4624     if (NULL == disp) {
4625         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4626                    "vkSetDebugUtilsObjectTagEXT: Invalid device "
4627                    "[VUID-vkSetDebugUtilsObjectTagEXT-device-parameter]");
4628         abort(); /* Intentionally fail so user can correct issue. */
4629     }
4630     VkDebugUtilsObjectTagInfoEXT local_tag_info;
4631     memcpy(&local_tag_info, pTagInfo, sizeof(VkDebugUtilsObjectTagInfoEXT));
4632     // If this is a physical device, we have to replace it with the proper one for the next call.
4633     if (pTagInfo->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {
4634         struct loader_physical_device_tramp *phys_dev_tramp = (struct loader_physical_device_tramp *)(uintptr_t)pTagInfo->objectHandle;
4635         local_tag_info.objectHandle = (uint64_t)(uintptr_t)phys_dev_tramp->phys_dev;
4636     }
4637     if (disp->SetDebugUtilsObjectTagEXT != NULL) {
4638         return disp->SetDebugUtilsObjectTagEXT(device, &local_tag_info);
4639     } else {
4640         return VK_SUCCESS;
4641     }
4642 }
4643 
terminator_SetDebugUtilsObjectTagEXT(VkDevice device,const VkDebugUtilsObjectTagInfoEXT * pTagInfo)4644 VKAPI_ATTR VkResult VKAPI_CALL terminator_SetDebugUtilsObjectTagEXT(
4645     VkDevice                                    device,
4646     const VkDebugUtilsObjectTagInfoEXT*         pTagInfo) {
4647     uint32_t icd_index = 0;
4648     struct loader_device *dev;
4649     struct loader_icd_term *icd_term = loader_get_icd_and_device(device, &dev, &icd_index);
4650     if (NULL != icd_term && NULL != icd_term->dispatch.SetDebugUtilsObjectTagEXT) {
4651         VkDebugUtilsObjectTagInfoEXT local_tag_info;
4652         memcpy(&local_tag_info, pTagInfo, sizeof(VkDebugUtilsObjectTagInfoEXT));
4653         // If this is a physical device, we have to replace it with the proper one for the next call.
4654         if (pTagInfo->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {
4655             struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)(uintptr_t)pTagInfo->objectHandle;
4656             local_tag_info.objectHandle = (uint64_t)(uintptr_t)phys_dev_term->phys_dev;
4657         // If this is a KHR_surface, and the ICD has created its own, we have to replace it with the proper one for the next call.
4658         } else if (pTagInfo->objectType == VK_OBJECT_TYPE_SURFACE_KHR) {
4659             if (NULL != icd_term && NULL != icd_term->dispatch.CreateSwapchainKHR) {
4660                 VkIcdSurface *icd_surface = (VkIcdSurface *)(uintptr_t)pTagInfo->objectHandle;
4661                 if (NULL != icd_surface->real_icd_surfaces) {
4662                     local_tag_info.objectHandle = (uint64_t)icd_surface->real_icd_surfaces[icd_index];
4663                 }
4664             }
4665         }
4666         return icd_term->dispatch.SetDebugUtilsObjectTagEXT(device, &local_tag_info);
4667     } else {
4668         return VK_SUCCESS;
4669     }
4670 }
4671 
QueueBeginDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)4672 VKAPI_ATTR void VKAPI_CALL QueueBeginDebugUtilsLabelEXT(
4673     VkQueue                                     queue,
4674     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
4675     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
4676     if (NULL == disp) {
4677         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4678                    "vkQueueBeginDebugUtilsLabelEXT: Invalid queue "
4679                    "[VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter]");
4680         abort(); /* Intentionally fail so user can correct issue. */
4681     }
4682     if (disp->QueueBeginDebugUtilsLabelEXT != NULL) {
4683         disp->QueueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
4684     }
4685 }
4686 
terminator_QueueBeginDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)4687 VKAPI_ATTR void VKAPI_CALL terminator_QueueBeginDebugUtilsLabelEXT(
4688     VkQueue                                     queue,
4689     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
4690     uint32_t icd_index = 0;
4691     struct loader_device *dev;
4692     struct loader_icd_term *icd_term = loader_get_icd_and_device(queue, &dev, &icd_index);
4693     if (NULL != icd_term && NULL != icd_term->dispatch.QueueBeginDebugUtilsLabelEXT) {
4694         icd_term->dispatch.QueueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
4695     }
4696 }
4697 
QueueEndDebugUtilsLabelEXT(VkQueue queue)4698 VKAPI_ATTR void VKAPI_CALL QueueEndDebugUtilsLabelEXT(
4699     VkQueue                                     queue) {
4700     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
4701     if (NULL == disp) {
4702         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4703                    "vkQueueEndDebugUtilsLabelEXT: Invalid queue "
4704                    "[VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter]");
4705         abort(); /* Intentionally fail so user can correct issue. */
4706     }
4707     if (disp->QueueEndDebugUtilsLabelEXT != NULL) {
4708         disp->QueueEndDebugUtilsLabelEXT(queue);
4709     }
4710 }
4711 
terminator_QueueEndDebugUtilsLabelEXT(VkQueue queue)4712 VKAPI_ATTR void VKAPI_CALL terminator_QueueEndDebugUtilsLabelEXT(
4713     VkQueue                                     queue) {
4714     uint32_t icd_index = 0;
4715     struct loader_device *dev;
4716     struct loader_icd_term *icd_term = loader_get_icd_and_device(queue, &dev, &icd_index);
4717     if (NULL != icd_term && NULL != icd_term->dispatch.QueueEndDebugUtilsLabelEXT) {
4718         icd_term->dispatch.QueueEndDebugUtilsLabelEXT(queue);
4719     }
4720 }
4721 
QueueInsertDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)4722 VKAPI_ATTR void VKAPI_CALL QueueInsertDebugUtilsLabelEXT(
4723     VkQueue                                     queue,
4724     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
4725     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
4726     if (NULL == disp) {
4727         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4728                    "vkQueueInsertDebugUtilsLabelEXT: Invalid queue "
4729                    "[VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter]");
4730         abort(); /* Intentionally fail so user can correct issue. */
4731     }
4732     if (disp->QueueInsertDebugUtilsLabelEXT != NULL) {
4733         disp->QueueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
4734     }
4735 }
4736 
terminator_QueueInsertDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)4737 VKAPI_ATTR void VKAPI_CALL terminator_QueueInsertDebugUtilsLabelEXT(
4738     VkQueue                                     queue,
4739     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
4740     uint32_t icd_index = 0;
4741     struct loader_device *dev;
4742     struct loader_icd_term *icd_term = loader_get_icd_and_device(queue, &dev, &icd_index);
4743     if (NULL != icd_term && NULL != icd_term->dispatch.QueueInsertDebugUtilsLabelEXT) {
4744         icd_term->dispatch.QueueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
4745     }
4746 }
4747 
CmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)4748 VKAPI_ATTR void VKAPI_CALL CmdBeginDebugUtilsLabelEXT(
4749     VkCommandBuffer                             commandBuffer,
4750     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
4751     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4752     if (NULL == disp) {
4753         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4754                    "vkCmdBeginDebugUtilsLabelEXT: Invalid commandBuffer "
4755                    "[VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-parameter]");
4756         abort(); /* Intentionally fail so user can correct issue. */
4757     }
4758     if (disp->CmdBeginDebugUtilsLabelEXT != NULL) {
4759         disp->CmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
4760     }
4761 }
4762 
terminator_CmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)4763 VKAPI_ATTR void VKAPI_CALL terminator_CmdBeginDebugUtilsLabelEXT(
4764     VkCommandBuffer                             commandBuffer,
4765     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
4766     uint32_t icd_index = 0;
4767     struct loader_device *dev;
4768     struct loader_icd_term *icd_term = loader_get_icd_and_device(commandBuffer, &dev, &icd_index);
4769     if (NULL != icd_term && NULL != icd_term->dispatch.CmdBeginDebugUtilsLabelEXT) {
4770         icd_term->dispatch.CmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
4771     }
4772 }
4773 
CmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer)4774 VKAPI_ATTR void VKAPI_CALL CmdEndDebugUtilsLabelEXT(
4775     VkCommandBuffer                             commandBuffer) {
4776     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4777     if (NULL == disp) {
4778         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4779                    "vkCmdEndDebugUtilsLabelEXT: Invalid commandBuffer "
4780                    "[VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-parameter]");
4781         abort(); /* Intentionally fail so user can correct issue. */
4782     }
4783     if (disp->CmdEndDebugUtilsLabelEXT != NULL) {
4784         disp->CmdEndDebugUtilsLabelEXT(commandBuffer);
4785     }
4786 }
4787 
terminator_CmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer)4788 VKAPI_ATTR void VKAPI_CALL terminator_CmdEndDebugUtilsLabelEXT(
4789     VkCommandBuffer                             commandBuffer) {
4790     uint32_t icd_index = 0;
4791     struct loader_device *dev;
4792     struct loader_icd_term *icd_term = loader_get_icd_and_device(commandBuffer, &dev, &icd_index);
4793     if (NULL != icd_term && NULL != icd_term->dispatch.CmdEndDebugUtilsLabelEXT) {
4794         icd_term->dispatch.CmdEndDebugUtilsLabelEXT(commandBuffer);
4795     }
4796 }
4797 
CmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)4798 VKAPI_ATTR void VKAPI_CALL CmdInsertDebugUtilsLabelEXT(
4799     VkCommandBuffer                             commandBuffer,
4800     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
4801     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4802     if (NULL == disp) {
4803         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4804                    "vkCmdInsertDebugUtilsLabelEXT: Invalid commandBuffer "
4805                    "[VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-parameter]");
4806         abort(); /* Intentionally fail so user can correct issue. */
4807     }
4808     if (disp->CmdInsertDebugUtilsLabelEXT != NULL) {
4809         disp->CmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
4810     }
4811 }
4812 
terminator_CmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)4813 VKAPI_ATTR void VKAPI_CALL terminator_CmdInsertDebugUtilsLabelEXT(
4814     VkCommandBuffer                             commandBuffer,
4815     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
4816     uint32_t icd_index = 0;
4817     struct loader_device *dev;
4818     struct loader_icd_term *icd_term = loader_get_icd_and_device(commandBuffer, &dev, &icd_index);
4819     if (NULL != icd_term && NULL != icd_term->dispatch.CmdInsertDebugUtilsLabelEXT) {
4820         icd_term->dispatch.CmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
4821     }
4822 }
4823 
4824 
4825 // ---- VK_ANDROID_external_memory_android_hardware_buffer extension trampoline/terminators
4826 
4827 #ifdef VK_USE_PLATFORM_ANDROID_KHR
GetAndroidHardwareBufferPropertiesANDROID(VkDevice device,const struct AHardwareBuffer * buffer,VkAndroidHardwareBufferPropertiesANDROID * pProperties)4828 VKAPI_ATTR VkResult VKAPI_CALL GetAndroidHardwareBufferPropertiesANDROID(
4829     VkDevice                                    device,
4830     const struct AHardwareBuffer*               buffer,
4831     VkAndroidHardwareBufferPropertiesANDROID*   pProperties) {
4832     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4833     if (NULL == disp) {
4834         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4835                    "vkGetAndroidHardwareBufferPropertiesANDROID: Invalid device "
4836                    "[VUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter]");
4837         abort(); /* Intentionally fail so user can correct issue. */
4838     }
4839     return disp->GetAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties);
4840 }
4841 
4842 #endif // VK_USE_PLATFORM_ANDROID_KHR
4843 #ifdef VK_USE_PLATFORM_ANDROID_KHR
GetMemoryAndroidHardwareBufferANDROID(VkDevice device,const VkMemoryGetAndroidHardwareBufferInfoANDROID * pInfo,struct AHardwareBuffer ** pBuffer)4844 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryAndroidHardwareBufferANDROID(
4845     VkDevice                                    device,
4846     const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
4847     struct AHardwareBuffer**                    pBuffer) {
4848     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4849     if (NULL == disp) {
4850         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4851                    "vkGetMemoryAndroidHardwareBufferANDROID: Invalid device "
4852                    "[VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter]");
4853         abort(); /* Intentionally fail so user can correct issue. */
4854     }
4855     return disp->GetMemoryAndroidHardwareBufferANDROID(device, pInfo, pBuffer);
4856 }
4857 
4858 #endif // VK_USE_PLATFORM_ANDROID_KHR
4859 
4860 // ---- VK_EXT_sample_locations extension trampoline/terminators
4861 
CmdSetSampleLocationsEXT(VkCommandBuffer commandBuffer,const VkSampleLocationsInfoEXT * pSampleLocationsInfo)4862 VKAPI_ATTR void VKAPI_CALL CmdSetSampleLocationsEXT(
4863     VkCommandBuffer                             commandBuffer,
4864     const VkSampleLocationsInfoEXT*             pSampleLocationsInfo) {
4865     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4866     if (NULL == disp) {
4867         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4868                    "vkCmdSetSampleLocationsEXT: Invalid commandBuffer "
4869                    "[VUID-vkCmdSetSampleLocationsEXT-commandBuffer-parameter]");
4870         abort(); /* Intentionally fail so user can correct issue. */
4871     }
4872     disp->CmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo);
4873 }
4874 
GetPhysicalDeviceMultisamplePropertiesEXT(VkPhysicalDevice physicalDevice,VkSampleCountFlagBits samples,VkMultisamplePropertiesEXT * pMultisampleProperties)4875 VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceMultisamplePropertiesEXT(
4876     VkPhysicalDevice                            physicalDevice,
4877     VkSampleCountFlagBits                       samples,
4878     VkMultisamplePropertiesEXT*                 pMultisampleProperties) {
4879     const VkLayerInstanceDispatchTable *disp;
4880     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
4881     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
4882         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4883                    "vkGetPhysicalDeviceMultisamplePropertiesEXT: Invalid physicalDevice "
4884                    "[VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-physicalDevice-parameter]");
4885         abort(); /* Intentionally fail so user can correct issue. */
4886     }
4887     disp = loader_get_instance_layer_dispatch(physicalDevice);
4888     disp->GetPhysicalDeviceMultisamplePropertiesEXT(unwrapped_phys_dev, samples, pMultisampleProperties);
4889 }
4890 
terminator_GetPhysicalDeviceMultisamplePropertiesEXT(VkPhysicalDevice physicalDevice,VkSampleCountFlagBits samples,VkMultisamplePropertiesEXT * pMultisampleProperties)4891 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceMultisamplePropertiesEXT(
4892     VkPhysicalDevice                            physicalDevice,
4893     VkSampleCountFlagBits                       samples,
4894     VkMultisamplePropertiesEXT*                 pMultisampleProperties) {
4895     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
4896     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
4897     if (NULL == icd_term->dispatch.GetPhysicalDeviceMultisamplePropertiesEXT) {
4898         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
4899                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceMultisamplePropertiesEXT");
4900         abort(); /* Intentionally fail so user can correct issue. */
4901     }
4902     icd_term->dispatch.GetPhysicalDeviceMultisamplePropertiesEXT(phys_dev_term->phys_dev, samples, pMultisampleProperties);
4903 }
4904 
4905 
4906 // ---- VK_EXT_image_drm_format_modifier extension trampoline/terminators
4907 
GetImageDrmFormatModifierPropertiesEXT(VkDevice device,VkImage image,VkImageDrmFormatModifierPropertiesEXT * pProperties)4908 VKAPI_ATTR VkResult VKAPI_CALL GetImageDrmFormatModifierPropertiesEXT(
4909     VkDevice                                    device,
4910     VkImage                                     image,
4911     VkImageDrmFormatModifierPropertiesEXT*      pProperties) {
4912     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4913     if (NULL == disp) {
4914         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4915                    "vkGetImageDrmFormatModifierPropertiesEXT: Invalid device "
4916                    "[VUID-vkGetImageDrmFormatModifierPropertiesEXT-device-parameter]");
4917         abort(); /* Intentionally fail so user can correct issue. */
4918     }
4919     return disp->GetImageDrmFormatModifierPropertiesEXT(device, image, pProperties);
4920 }
4921 
4922 
4923 // ---- VK_EXT_validation_cache extension trampoline/terminators
4924 
CreateValidationCacheEXT(VkDevice device,const VkValidationCacheCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkValidationCacheEXT * pValidationCache)4925 VKAPI_ATTR VkResult VKAPI_CALL CreateValidationCacheEXT(
4926     VkDevice                                    device,
4927     const VkValidationCacheCreateInfoEXT*       pCreateInfo,
4928     const VkAllocationCallbacks*                pAllocator,
4929     VkValidationCacheEXT*                       pValidationCache) {
4930     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4931     if (NULL == disp) {
4932         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4933                    "vkCreateValidationCacheEXT: Invalid device "
4934                    "[VUID-vkCreateValidationCacheEXT-device-parameter]");
4935         abort(); /* Intentionally fail so user can correct issue. */
4936     }
4937     return disp->CreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
4938 }
4939 
DestroyValidationCacheEXT(VkDevice device,VkValidationCacheEXT validationCache,const VkAllocationCallbacks * pAllocator)4940 VKAPI_ATTR void VKAPI_CALL DestroyValidationCacheEXT(
4941     VkDevice                                    device,
4942     VkValidationCacheEXT                        validationCache,
4943     const VkAllocationCallbacks*                pAllocator) {
4944     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4945     if (NULL == disp) {
4946         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4947                    "vkDestroyValidationCacheEXT: Invalid device "
4948                    "[VUID-vkDestroyValidationCacheEXT-device-parameter]");
4949         abort(); /* Intentionally fail so user can correct issue. */
4950     }
4951     disp->DestroyValidationCacheEXT(device, validationCache, pAllocator);
4952 }
4953 
MergeValidationCachesEXT(VkDevice device,VkValidationCacheEXT dstCache,uint32_t srcCacheCount,const VkValidationCacheEXT * pSrcCaches)4954 VKAPI_ATTR VkResult VKAPI_CALL MergeValidationCachesEXT(
4955     VkDevice                                    device,
4956     VkValidationCacheEXT                        dstCache,
4957     uint32_t                                    srcCacheCount,
4958     const VkValidationCacheEXT*                 pSrcCaches) {
4959     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4960     if (NULL == disp) {
4961         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4962                    "vkMergeValidationCachesEXT: Invalid device "
4963                    "[VUID-vkMergeValidationCachesEXT-device-parameter]");
4964         abort(); /* Intentionally fail so user can correct issue. */
4965     }
4966     return disp->MergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches);
4967 }
4968 
GetValidationCacheDataEXT(VkDevice device,VkValidationCacheEXT validationCache,size_t * pDataSize,void * pData)4969 VKAPI_ATTR VkResult VKAPI_CALL GetValidationCacheDataEXT(
4970     VkDevice                                    device,
4971     VkValidationCacheEXT                        validationCache,
4972     size_t*                                     pDataSize,
4973     void*                                       pData) {
4974     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4975     if (NULL == disp) {
4976         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4977                    "vkGetValidationCacheDataEXT: Invalid device "
4978                    "[VUID-vkGetValidationCacheDataEXT-device-parameter]");
4979         abort(); /* Intentionally fail so user can correct issue. */
4980     }
4981     return disp->GetValidationCacheDataEXT(device, validationCache, pDataSize, pData);
4982 }
4983 
4984 
4985 // ---- VK_NV_shading_rate_image extension trampoline/terminators
4986 
CmdBindShadingRateImageNV(VkCommandBuffer commandBuffer,VkImageView imageView,VkImageLayout imageLayout)4987 VKAPI_ATTR void VKAPI_CALL CmdBindShadingRateImageNV(
4988     VkCommandBuffer                             commandBuffer,
4989     VkImageView                                 imageView,
4990     VkImageLayout                               imageLayout) {
4991     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4992     if (NULL == disp) {
4993         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4994                    "vkCmdBindShadingRateImageNV: Invalid commandBuffer "
4995                    "[VUID-vkCmdBindShadingRateImageNV-commandBuffer-parameter]");
4996         abort(); /* Intentionally fail so user can correct issue. */
4997     }
4998     disp->CmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout);
4999 }
5000 
CmdSetViewportShadingRatePaletteNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkShadingRatePaletteNV * pShadingRatePalettes)5001 VKAPI_ATTR void VKAPI_CALL CmdSetViewportShadingRatePaletteNV(
5002     VkCommandBuffer                             commandBuffer,
5003     uint32_t                                    firstViewport,
5004     uint32_t                                    viewportCount,
5005     const VkShadingRatePaletteNV*               pShadingRatePalettes) {
5006     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5007     if (NULL == disp) {
5008         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5009                    "vkCmdSetViewportShadingRatePaletteNV: Invalid commandBuffer "
5010                    "[VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-parameter]");
5011         abort(); /* Intentionally fail so user can correct issue. */
5012     }
5013     disp->CmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes);
5014 }
5015 
CmdSetCoarseSampleOrderNV(VkCommandBuffer commandBuffer,VkCoarseSampleOrderTypeNV sampleOrderType,uint32_t customSampleOrderCount,const VkCoarseSampleOrderCustomNV * pCustomSampleOrders)5016 VKAPI_ATTR void VKAPI_CALL CmdSetCoarseSampleOrderNV(
5017     VkCommandBuffer                             commandBuffer,
5018     VkCoarseSampleOrderTypeNV                   sampleOrderType,
5019     uint32_t                                    customSampleOrderCount,
5020     const VkCoarseSampleOrderCustomNV*          pCustomSampleOrders) {
5021     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5022     if (NULL == disp) {
5023         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5024                    "vkCmdSetCoarseSampleOrderNV: Invalid commandBuffer "
5025                    "[VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-parameter]");
5026         abort(); /* Intentionally fail so user can correct issue. */
5027     }
5028     disp->CmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders);
5029 }
5030 
5031 
5032 // ---- VK_NV_ray_tracing extension trampoline/terminators
5033 
CreateAccelerationStructureNV(VkDevice device,const VkAccelerationStructureCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkAccelerationStructureNV * pAccelerationStructure)5034 VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureNV(
5035     VkDevice                                    device,
5036     const VkAccelerationStructureCreateInfoNV*  pCreateInfo,
5037     const VkAllocationCallbacks*                pAllocator,
5038     VkAccelerationStructureNV*                  pAccelerationStructure) {
5039     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5040     if (NULL == disp) {
5041         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5042                    "vkCreateAccelerationStructureNV: Invalid device "
5043                    "[VUID-vkCreateAccelerationStructureNV-device-parameter]");
5044         abort(); /* Intentionally fail so user can correct issue. */
5045     }
5046     return disp->CreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure);
5047 }
5048 
DestroyAccelerationStructureNV(VkDevice device,VkAccelerationStructureNV accelerationStructure,const VkAllocationCallbacks * pAllocator)5049 VKAPI_ATTR void VKAPI_CALL DestroyAccelerationStructureNV(
5050     VkDevice                                    device,
5051     VkAccelerationStructureNV                   accelerationStructure,
5052     const VkAllocationCallbacks*                pAllocator) {
5053     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5054     if (NULL == disp) {
5055         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5056                    "vkDestroyAccelerationStructureNV: Invalid device "
5057                    "[VUID-vkDestroyAccelerationStructureNV-device-parameter]");
5058         abort(); /* Intentionally fail so user can correct issue. */
5059     }
5060     disp->DestroyAccelerationStructureNV(device, accelerationStructure, pAllocator);
5061 }
5062 
GetAccelerationStructureMemoryRequirementsNV(VkDevice device,const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo,VkMemoryRequirements2KHR * pMemoryRequirements)5063 VKAPI_ATTR void VKAPI_CALL GetAccelerationStructureMemoryRequirementsNV(
5064     VkDevice                                    device,
5065     const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
5066     VkMemoryRequirements2KHR*                   pMemoryRequirements) {
5067     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5068     if (NULL == disp) {
5069         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5070                    "vkGetAccelerationStructureMemoryRequirementsNV: Invalid device "
5071                    "[VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter]");
5072         abort(); /* Intentionally fail so user can correct issue. */
5073     }
5074     disp->GetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements);
5075 }
5076 
BindAccelerationStructureMemoryNV(VkDevice device,uint32_t bindInfoCount,const VkBindAccelerationStructureMemoryInfoNV * pBindInfos)5077 VKAPI_ATTR VkResult VKAPI_CALL BindAccelerationStructureMemoryNV(
5078     VkDevice                                    device,
5079     uint32_t                                    bindInfoCount,
5080     const VkBindAccelerationStructureMemoryInfoNV* pBindInfos) {
5081     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5082     if (NULL == disp) {
5083         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5084                    "vkBindAccelerationStructureMemoryNV: Invalid device "
5085                    "[VUID-vkBindAccelerationStructureMemoryNV-device-parameter]");
5086         abort(); /* Intentionally fail so user can correct issue. */
5087     }
5088     return disp->BindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos);
5089 }
5090 
CmdBuildAccelerationStructureNV(VkCommandBuffer commandBuffer,const VkAccelerationStructureInfoNV * pInfo,VkBuffer instanceData,VkDeviceSize instanceOffset,VkBool32 update,VkAccelerationStructureNV dst,VkAccelerationStructureNV src,VkBuffer scratch,VkDeviceSize scratchOffset)5091 VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructureNV(
5092     VkCommandBuffer                             commandBuffer,
5093     const VkAccelerationStructureInfoNV*        pInfo,
5094     VkBuffer                                    instanceData,
5095     VkDeviceSize                                instanceOffset,
5096     VkBool32                                    update,
5097     VkAccelerationStructureNV                   dst,
5098     VkAccelerationStructureNV                   src,
5099     VkBuffer                                    scratch,
5100     VkDeviceSize                                scratchOffset) {
5101     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5102     if (NULL == disp) {
5103         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5104                    "vkCmdBuildAccelerationStructureNV: Invalid commandBuffer "
5105                    "[VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter]");
5106         abort(); /* Intentionally fail so user can correct issue. */
5107     }
5108     disp->CmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset);
5109 }
5110 
CmdCopyAccelerationStructureNV(VkCommandBuffer commandBuffer,VkAccelerationStructureNV dst,VkAccelerationStructureNV src,VkCopyAccelerationStructureModeKHR mode)5111 VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureNV(
5112     VkCommandBuffer                             commandBuffer,
5113     VkAccelerationStructureNV                   dst,
5114     VkAccelerationStructureNV                   src,
5115     VkCopyAccelerationStructureModeKHR          mode) {
5116     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5117     if (NULL == disp) {
5118         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5119                    "vkCmdCopyAccelerationStructureNV: Invalid commandBuffer "
5120                    "[VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter]");
5121         abort(); /* Intentionally fail so user can correct issue. */
5122     }
5123     disp->CmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode);
5124 }
5125 
CmdTraceRaysNV(VkCommandBuffer commandBuffer,VkBuffer raygenShaderBindingTableBuffer,VkDeviceSize raygenShaderBindingOffset,VkBuffer missShaderBindingTableBuffer,VkDeviceSize missShaderBindingOffset,VkDeviceSize missShaderBindingStride,VkBuffer hitShaderBindingTableBuffer,VkDeviceSize hitShaderBindingOffset,VkDeviceSize hitShaderBindingStride,VkBuffer callableShaderBindingTableBuffer,VkDeviceSize callableShaderBindingOffset,VkDeviceSize callableShaderBindingStride,uint32_t width,uint32_t height,uint32_t depth)5126 VKAPI_ATTR void VKAPI_CALL CmdTraceRaysNV(
5127     VkCommandBuffer                             commandBuffer,
5128     VkBuffer                                    raygenShaderBindingTableBuffer,
5129     VkDeviceSize                                raygenShaderBindingOffset,
5130     VkBuffer                                    missShaderBindingTableBuffer,
5131     VkDeviceSize                                missShaderBindingOffset,
5132     VkDeviceSize                                missShaderBindingStride,
5133     VkBuffer                                    hitShaderBindingTableBuffer,
5134     VkDeviceSize                                hitShaderBindingOffset,
5135     VkDeviceSize                                hitShaderBindingStride,
5136     VkBuffer                                    callableShaderBindingTableBuffer,
5137     VkDeviceSize                                callableShaderBindingOffset,
5138     VkDeviceSize                                callableShaderBindingStride,
5139     uint32_t                                    width,
5140     uint32_t                                    height,
5141     uint32_t                                    depth) {
5142     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5143     if (NULL == disp) {
5144         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5145                    "vkCmdTraceRaysNV: Invalid commandBuffer "
5146                    "[VUID-vkCmdTraceRaysNV-commandBuffer-parameter]");
5147         abort(); /* Intentionally fail so user can correct issue. */
5148     }
5149     disp->CmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth);
5150 }
5151 
CreateRayTracingPipelinesNV(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkRayTracingPipelineCreateInfoNV * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)5152 VKAPI_ATTR VkResult VKAPI_CALL CreateRayTracingPipelinesNV(
5153     VkDevice                                    device,
5154     VkPipelineCache                             pipelineCache,
5155     uint32_t                                    createInfoCount,
5156     const VkRayTracingPipelineCreateInfoNV*     pCreateInfos,
5157     const VkAllocationCallbacks*                pAllocator,
5158     VkPipeline*                                 pPipelines) {
5159     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5160     if (NULL == disp) {
5161         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5162                    "vkCreateRayTracingPipelinesNV: Invalid device "
5163                    "[VUID-vkCreateRayTracingPipelinesNV-device-parameter]");
5164         abort(); /* Intentionally fail so user can correct issue. */
5165     }
5166     return disp->CreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
5167 }
5168 
GetRayTracingShaderGroupHandlesKHR(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)5169 VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingShaderGroupHandlesKHR(
5170     VkDevice                                    device,
5171     VkPipeline                                  pipeline,
5172     uint32_t                                    firstGroup,
5173     uint32_t                                    groupCount,
5174     size_t                                      dataSize,
5175     void*                                       pData) {
5176     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5177     if (NULL == disp) {
5178         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5179                    "vkGetRayTracingShaderGroupHandlesKHR: Invalid device "
5180                    "[VUID-vkGetRayTracingShaderGroupHandlesKHR-device-parameter]");
5181         abort(); /* Intentionally fail so user can correct issue. */
5182     }
5183     return disp->GetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData);
5184 }
5185 
GetRayTracingShaderGroupHandlesNV(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)5186 VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingShaderGroupHandlesNV(
5187     VkDevice                                    device,
5188     VkPipeline                                  pipeline,
5189     uint32_t                                    firstGroup,
5190     uint32_t                                    groupCount,
5191     size_t                                      dataSize,
5192     void*                                       pData) {
5193     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5194     if (NULL == disp) {
5195         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5196                    "vkGetRayTracingShaderGroupHandlesNV: Invalid device "
5197                    "[VUID-vkGetRayTracingShaderGroupHandlesNV-device-parameter]");
5198         abort(); /* Intentionally fail so user can correct issue. */
5199     }
5200     return disp->GetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData);
5201 }
5202 
GetAccelerationStructureHandleNV(VkDevice device,VkAccelerationStructureNV accelerationStructure,size_t dataSize,void * pData)5203 VKAPI_ATTR VkResult VKAPI_CALL GetAccelerationStructureHandleNV(
5204     VkDevice                                    device,
5205     VkAccelerationStructureNV                   accelerationStructure,
5206     size_t                                      dataSize,
5207     void*                                       pData) {
5208     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5209     if (NULL == disp) {
5210         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5211                    "vkGetAccelerationStructureHandleNV: Invalid device "
5212                    "[VUID-vkGetAccelerationStructureHandleNV-device-parameter]");
5213         abort(); /* Intentionally fail so user can correct issue. */
5214     }
5215     return disp->GetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData);
5216 }
5217 
CmdWriteAccelerationStructuresPropertiesNV(VkCommandBuffer commandBuffer,uint32_t accelerationStructureCount,const VkAccelerationStructureNV * pAccelerationStructures,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)5218 VKAPI_ATTR void VKAPI_CALL CmdWriteAccelerationStructuresPropertiesNV(
5219     VkCommandBuffer                             commandBuffer,
5220     uint32_t                                    accelerationStructureCount,
5221     const VkAccelerationStructureNV*            pAccelerationStructures,
5222     VkQueryType                                 queryType,
5223     VkQueryPool                                 queryPool,
5224     uint32_t                                    firstQuery) {
5225     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5226     if (NULL == disp) {
5227         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5228                    "vkCmdWriteAccelerationStructuresPropertiesNV: Invalid commandBuffer "
5229                    "[VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-parameter]");
5230         abort(); /* Intentionally fail so user can correct issue. */
5231     }
5232     disp->CmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery);
5233 }
5234 
CompileDeferredNV(VkDevice device,VkPipeline pipeline,uint32_t shader)5235 VKAPI_ATTR VkResult VKAPI_CALL CompileDeferredNV(
5236     VkDevice                                    device,
5237     VkPipeline                                  pipeline,
5238     uint32_t                                    shader) {
5239     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5240     if (NULL == disp) {
5241         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5242                    "vkCompileDeferredNV: Invalid device "
5243                    "[VUID-vkCompileDeferredNV-device-parameter]");
5244         abort(); /* Intentionally fail so user can correct issue. */
5245     }
5246     return disp->CompileDeferredNV(device, pipeline, shader);
5247 }
5248 
5249 
5250 // ---- VK_EXT_external_memory_host extension trampoline/terminators
5251 
GetMemoryHostPointerPropertiesEXT(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,const void * pHostPointer,VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties)5252 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryHostPointerPropertiesEXT(
5253     VkDevice                                    device,
5254     VkExternalMemoryHandleTypeFlagBits          handleType,
5255     const void*                                 pHostPointer,
5256     VkMemoryHostPointerPropertiesEXT*           pMemoryHostPointerProperties) {
5257     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5258     if (NULL == disp) {
5259         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5260                    "vkGetMemoryHostPointerPropertiesEXT: Invalid device "
5261                    "[VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter]");
5262         abort(); /* Intentionally fail so user can correct issue. */
5263     }
5264     return disp->GetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
5265 }
5266 
5267 
5268 // ---- VK_AMD_buffer_marker extension trampoline/terminators
5269 
CmdWriteBufferMarkerAMD(VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkBuffer dstBuffer,VkDeviceSize dstOffset,uint32_t marker)5270 VKAPI_ATTR void VKAPI_CALL CmdWriteBufferMarkerAMD(
5271     VkCommandBuffer                             commandBuffer,
5272     VkPipelineStageFlagBits                     pipelineStage,
5273     VkBuffer                                    dstBuffer,
5274     VkDeviceSize                                dstOffset,
5275     uint32_t                                    marker) {
5276     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5277     if (NULL == disp) {
5278         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5279                    "vkCmdWriteBufferMarkerAMD: Invalid commandBuffer "
5280                    "[VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-parameter]");
5281         abort(); /* Intentionally fail so user can correct issue. */
5282     }
5283     disp->CmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker);
5284 }
5285 
5286 
5287 // ---- VK_EXT_calibrated_timestamps extension trampoline/terminators
5288 
GetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice physicalDevice,uint32_t * pTimeDomainCount,VkTimeDomainEXT * pTimeDomains)5289 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCalibrateableTimeDomainsEXT(
5290     VkPhysicalDevice                            physicalDevice,
5291     uint32_t*                                   pTimeDomainCount,
5292     VkTimeDomainEXT*                            pTimeDomains) {
5293     const VkLayerInstanceDispatchTable *disp;
5294     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
5295     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
5296         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5297                    "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT: Invalid physicalDevice "
5298                    "[VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-physicalDevice-parameter]");
5299         abort(); /* Intentionally fail so user can correct issue. */
5300     }
5301     disp = loader_get_instance_layer_dispatch(physicalDevice);
5302     return disp->GetPhysicalDeviceCalibrateableTimeDomainsEXT(unwrapped_phys_dev, pTimeDomainCount, pTimeDomains);
5303 }
5304 
terminator_GetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice physicalDevice,uint32_t * pTimeDomainCount,VkTimeDomainEXT * pTimeDomains)5305 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceCalibrateableTimeDomainsEXT(
5306     VkPhysicalDevice                            physicalDevice,
5307     uint32_t*                                   pTimeDomainCount,
5308     VkTimeDomainEXT*                            pTimeDomains) {
5309     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
5310     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
5311     if (NULL == icd_term->dispatch.GetPhysicalDeviceCalibrateableTimeDomainsEXT) {
5312         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
5313                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceCalibrateableTimeDomainsEXT");
5314         abort(); /* Intentionally fail so user can correct issue. */
5315     }
5316     return icd_term->dispatch.GetPhysicalDeviceCalibrateableTimeDomainsEXT(phys_dev_term->phys_dev, pTimeDomainCount, pTimeDomains);
5317 }
5318 
GetCalibratedTimestampsEXT(VkDevice device,uint32_t timestampCount,const VkCalibratedTimestampInfoEXT * pTimestampInfos,uint64_t * pTimestamps,uint64_t * pMaxDeviation)5319 VKAPI_ATTR VkResult VKAPI_CALL GetCalibratedTimestampsEXT(
5320     VkDevice                                    device,
5321     uint32_t                                    timestampCount,
5322     const VkCalibratedTimestampInfoEXT*         pTimestampInfos,
5323     uint64_t*                                   pTimestamps,
5324     uint64_t*                                   pMaxDeviation) {
5325     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5326     if (NULL == disp) {
5327         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5328                    "vkGetCalibratedTimestampsEXT: Invalid device "
5329                    "[VUID-vkGetCalibratedTimestampsEXT-device-parameter]");
5330         abort(); /* Intentionally fail so user can correct issue. */
5331     }
5332     return disp->GetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation);
5333 }
5334 
5335 
5336 // ---- VK_NV_mesh_shader extension trampoline/terminators
5337 
CmdDrawMeshTasksNV(VkCommandBuffer commandBuffer,uint32_t taskCount,uint32_t firstTask)5338 VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksNV(
5339     VkCommandBuffer                             commandBuffer,
5340     uint32_t                                    taskCount,
5341     uint32_t                                    firstTask) {
5342     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5343     if (NULL == disp) {
5344         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5345                    "vkCmdDrawMeshTasksNV: Invalid commandBuffer "
5346                    "[VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter]");
5347         abort(); /* Intentionally fail so user can correct issue. */
5348     }
5349     disp->CmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask);
5350 }
5351 
CmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)5352 VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectNV(
5353     VkCommandBuffer                             commandBuffer,
5354     VkBuffer                                    buffer,
5355     VkDeviceSize                                offset,
5356     uint32_t                                    drawCount,
5357     uint32_t                                    stride) {
5358     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5359     if (NULL == disp) {
5360         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5361                    "vkCmdDrawMeshTasksIndirectNV: Invalid commandBuffer "
5362                    "[VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-parameter]");
5363         abort(); /* Intentionally fail so user can correct issue. */
5364     }
5365     disp->CmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride);
5366 }
5367 
CmdDrawMeshTasksIndirectCountNV(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)5368 VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectCountNV(
5369     VkCommandBuffer                             commandBuffer,
5370     VkBuffer                                    buffer,
5371     VkDeviceSize                                offset,
5372     VkBuffer                                    countBuffer,
5373     VkDeviceSize                                countBufferOffset,
5374     uint32_t                                    maxDrawCount,
5375     uint32_t                                    stride) {
5376     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5377     if (NULL == disp) {
5378         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5379                    "vkCmdDrawMeshTasksIndirectCountNV: Invalid commandBuffer "
5380                    "[VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter]");
5381         abort(); /* Intentionally fail so user can correct issue. */
5382     }
5383     disp->CmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
5384 }
5385 
5386 
5387 // ---- VK_NV_scissor_exclusive extension trampoline/terminators
5388 
CmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer,uint32_t firstExclusiveScissor,uint32_t exclusiveScissorCount,const VkRect2D * pExclusiveScissors)5389 VKAPI_ATTR void VKAPI_CALL CmdSetExclusiveScissorNV(
5390     VkCommandBuffer                             commandBuffer,
5391     uint32_t                                    firstExclusiveScissor,
5392     uint32_t                                    exclusiveScissorCount,
5393     const VkRect2D*                             pExclusiveScissors) {
5394     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5395     if (NULL == disp) {
5396         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5397                    "vkCmdSetExclusiveScissorNV: Invalid commandBuffer "
5398                    "[VUID-vkCmdSetExclusiveScissorNV-commandBuffer-parameter]");
5399         abort(); /* Intentionally fail so user can correct issue. */
5400     }
5401     disp->CmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors);
5402 }
5403 
5404 
5405 // ---- VK_NV_device_diagnostic_checkpoints extension trampoline/terminators
5406 
CmdSetCheckpointNV(VkCommandBuffer commandBuffer,const void * pCheckpointMarker)5407 VKAPI_ATTR void VKAPI_CALL CmdSetCheckpointNV(
5408     VkCommandBuffer                             commandBuffer,
5409     const void*                                 pCheckpointMarker) {
5410     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5411     if (NULL == disp) {
5412         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5413                    "vkCmdSetCheckpointNV: Invalid commandBuffer "
5414                    "[VUID-vkCmdSetCheckpointNV-commandBuffer-parameter]");
5415         abort(); /* Intentionally fail so user can correct issue. */
5416     }
5417     disp->CmdSetCheckpointNV(commandBuffer, pCheckpointMarker);
5418 }
5419 
GetQueueCheckpointDataNV(VkQueue queue,uint32_t * pCheckpointDataCount,VkCheckpointDataNV * pCheckpointData)5420 VKAPI_ATTR void VKAPI_CALL GetQueueCheckpointDataNV(
5421     VkQueue                                     queue,
5422     uint32_t*                                   pCheckpointDataCount,
5423     VkCheckpointDataNV*                         pCheckpointData) {
5424     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
5425     if (NULL == disp) {
5426         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5427                    "vkGetQueueCheckpointDataNV: Invalid queue "
5428                    "[VUID-vkGetQueueCheckpointDataNV-queue-parameter]");
5429         abort(); /* Intentionally fail so user can correct issue. */
5430     }
5431     disp->GetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData);
5432 }
5433 
5434 
5435 // ---- VK_INTEL_performance_query extension trampoline/terminators
5436 
InitializePerformanceApiINTEL(VkDevice device,const VkInitializePerformanceApiInfoINTEL * pInitializeInfo)5437 VKAPI_ATTR VkResult VKAPI_CALL InitializePerformanceApiINTEL(
5438     VkDevice                                    device,
5439     const VkInitializePerformanceApiInfoINTEL*  pInitializeInfo) {
5440     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5441     if (NULL == disp) {
5442         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5443                    "vkInitializePerformanceApiINTEL: Invalid device "
5444                    "[VUID-vkInitializePerformanceApiINTEL-device-parameter]");
5445         abort(); /* Intentionally fail so user can correct issue. */
5446     }
5447     return disp->InitializePerformanceApiINTEL(device, pInitializeInfo);
5448 }
5449 
UninitializePerformanceApiINTEL(VkDevice device)5450 VKAPI_ATTR void VKAPI_CALL UninitializePerformanceApiINTEL(
5451     VkDevice                                    device) {
5452     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5453     if (NULL == disp) {
5454         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5455                    "vkUninitializePerformanceApiINTEL: Invalid device "
5456                    "[VUID-vkUninitializePerformanceApiINTEL-device-parameter]");
5457         abort(); /* Intentionally fail so user can correct issue. */
5458     }
5459     disp->UninitializePerformanceApiINTEL(device);
5460 }
5461 
CmdSetPerformanceMarkerINTEL(VkCommandBuffer commandBuffer,const VkPerformanceMarkerInfoINTEL * pMarkerInfo)5462 VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceMarkerINTEL(
5463     VkCommandBuffer                             commandBuffer,
5464     const VkPerformanceMarkerInfoINTEL*         pMarkerInfo) {
5465     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5466     if (NULL == disp) {
5467         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5468                    "vkCmdSetPerformanceMarkerINTEL: Invalid commandBuffer "
5469                    "[VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-parameter]");
5470         abort(); /* Intentionally fail so user can correct issue. */
5471     }
5472     return disp->CmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo);
5473 }
5474 
CmdSetPerformanceStreamMarkerINTEL(VkCommandBuffer commandBuffer,const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo)5475 VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceStreamMarkerINTEL(
5476     VkCommandBuffer                             commandBuffer,
5477     const VkPerformanceStreamMarkerInfoINTEL*   pMarkerInfo) {
5478     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5479     if (NULL == disp) {
5480         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5481                    "vkCmdSetPerformanceStreamMarkerINTEL: Invalid commandBuffer "
5482                    "[VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-parameter]");
5483         abort(); /* Intentionally fail so user can correct issue. */
5484     }
5485     return disp->CmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo);
5486 }
5487 
CmdSetPerformanceOverrideINTEL(VkCommandBuffer commandBuffer,const VkPerformanceOverrideInfoINTEL * pOverrideInfo)5488 VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceOverrideINTEL(
5489     VkCommandBuffer                             commandBuffer,
5490     const VkPerformanceOverrideInfoINTEL*       pOverrideInfo) {
5491     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5492     if (NULL == disp) {
5493         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5494                    "vkCmdSetPerformanceOverrideINTEL: Invalid commandBuffer "
5495                    "[VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-parameter]");
5496         abort(); /* Intentionally fail so user can correct issue. */
5497     }
5498     return disp->CmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo);
5499 }
5500 
AcquirePerformanceConfigurationINTEL(VkDevice device,const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo,VkPerformanceConfigurationINTEL * pConfiguration)5501 VKAPI_ATTR VkResult VKAPI_CALL AcquirePerformanceConfigurationINTEL(
5502     VkDevice                                    device,
5503     const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
5504     VkPerformanceConfigurationINTEL*            pConfiguration) {
5505     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5506     if (NULL == disp) {
5507         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5508                    "vkAcquirePerformanceConfigurationINTEL: Invalid device "
5509                    "[VUID-vkAcquirePerformanceConfigurationINTEL-device-parameter]");
5510         abort(); /* Intentionally fail so user can correct issue. */
5511     }
5512     return disp->AcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration);
5513 }
5514 
ReleasePerformanceConfigurationINTEL(VkDevice device,VkPerformanceConfigurationINTEL configuration)5515 VKAPI_ATTR VkResult VKAPI_CALL ReleasePerformanceConfigurationINTEL(
5516     VkDevice                                    device,
5517     VkPerformanceConfigurationINTEL             configuration) {
5518     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5519     if (NULL == disp) {
5520         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5521                    "vkReleasePerformanceConfigurationINTEL: Invalid device "
5522                    "[VUID-vkReleasePerformanceConfigurationINTEL-device-parameter]");
5523         abort(); /* Intentionally fail so user can correct issue. */
5524     }
5525     return disp->ReleasePerformanceConfigurationINTEL(device, configuration);
5526 }
5527 
QueueSetPerformanceConfigurationINTEL(VkQueue queue,VkPerformanceConfigurationINTEL configuration)5528 VKAPI_ATTR VkResult VKAPI_CALL QueueSetPerformanceConfigurationINTEL(
5529     VkQueue                                     queue,
5530     VkPerformanceConfigurationINTEL             configuration) {
5531     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
5532     if (NULL == disp) {
5533         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5534                    "vkQueueSetPerformanceConfigurationINTEL: Invalid queue "
5535                    "[VUID-vkQueueSetPerformanceConfigurationINTEL-queue-parameter]");
5536         abort(); /* Intentionally fail so user can correct issue. */
5537     }
5538     return disp->QueueSetPerformanceConfigurationINTEL(queue, configuration);
5539 }
5540 
GetPerformanceParameterINTEL(VkDevice device,VkPerformanceParameterTypeINTEL parameter,VkPerformanceValueINTEL * pValue)5541 VKAPI_ATTR VkResult VKAPI_CALL GetPerformanceParameterINTEL(
5542     VkDevice                                    device,
5543     VkPerformanceParameterTypeINTEL             parameter,
5544     VkPerformanceValueINTEL*                    pValue) {
5545     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5546     if (NULL == disp) {
5547         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5548                    "vkGetPerformanceParameterINTEL: Invalid device "
5549                    "[VUID-vkGetPerformanceParameterINTEL-device-parameter]");
5550         abort(); /* Intentionally fail so user can correct issue. */
5551     }
5552     return disp->GetPerformanceParameterINTEL(device, parameter, pValue);
5553 }
5554 
5555 
5556 // ---- VK_AMD_display_native_hdr extension trampoline/terminators
5557 
SetLocalDimmingAMD(VkDevice device,VkSwapchainKHR swapChain,VkBool32 localDimmingEnable)5558 VKAPI_ATTR void VKAPI_CALL SetLocalDimmingAMD(
5559     VkDevice                                    device,
5560     VkSwapchainKHR                              swapChain,
5561     VkBool32                                    localDimmingEnable) {
5562     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5563     if (NULL == disp) {
5564         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5565                    "vkSetLocalDimmingAMD: Invalid device "
5566                    "[VUID-vkSetLocalDimmingAMD-device-parameter]");
5567         abort(); /* Intentionally fail so user can correct issue. */
5568     }
5569     disp->SetLocalDimmingAMD(device, swapChain, localDimmingEnable);
5570 }
5571 
5572 
5573 // ---- VK_EXT_buffer_device_address extension trampoline/terminators
5574 
GetBufferDeviceAddressEXT(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)5575 VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressEXT(
5576     VkDevice                                    device,
5577     const VkBufferDeviceAddressInfo*            pInfo) {
5578     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5579     if (NULL == disp) {
5580         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5581                    "vkGetBufferDeviceAddressEXT: Invalid device "
5582                    "[VUID-vkGetBufferDeviceAddressEXT-device-parameter]");
5583         abort(); /* Intentionally fail so user can correct issue. */
5584     }
5585     return disp->GetBufferDeviceAddressEXT(device, pInfo);
5586 }
5587 
5588 
5589 // ---- VK_NV_cooperative_matrix extension trampoline/terminators
5590 
GetPhysicalDeviceCooperativeMatrixPropertiesNV(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkCooperativeMatrixPropertiesNV * pProperties)5591 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixPropertiesNV(
5592     VkPhysicalDevice                            physicalDevice,
5593     uint32_t*                                   pPropertyCount,
5594     VkCooperativeMatrixPropertiesNV*            pProperties) {
5595     const VkLayerInstanceDispatchTable *disp;
5596     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
5597     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
5598         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5599                    "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV: Invalid physicalDevice "
5600                    "[VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-physicalDevice-parameter]");
5601         abort(); /* Intentionally fail so user can correct issue. */
5602     }
5603     disp = loader_get_instance_layer_dispatch(physicalDevice);
5604     return disp->GetPhysicalDeviceCooperativeMatrixPropertiesNV(unwrapped_phys_dev, pPropertyCount, pProperties);
5605 }
5606 
terminator_GetPhysicalDeviceCooperativeMatrixPropertiesNV(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkCooperativeMatrixPropertiesNV * pProperties)5607 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceCooperativeMatrixPropertiesNV(
5608     VkPhysicalDevice                            physicalDevice,
5609     uint32_t*                                   pPropertyCount,
5610     VkCooperativeMatrixPropertiesNV*            pProperties) {
5611     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
5612     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
5613     if (NULL == icd_term->dispatch.GetPhysicalDeviceCooperativeMatrixPropertiesNV) {
5614         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
5615                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceCooperativeMatrixPropertiesNV");
5616         abort(); /* Intentionally fail so user can correct issue. */
5617     }
5618     return icd_term->dispatch.GetPhysicalDeviceCooperativeMatrixPropertiesNV(phys_dev_term->phys_dev, pPropertyCount, pProperties);
5619 }
5620 
5621 
5622 // ---- VK_NV_coverage_reduction_mode extension trampoline/terminators
5623 
GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(VkPhysicalDevice physicalDevice,uint32_t * pCombinationCount,VkFramebufferMixedSamplesCombinationNV * pCombinations)5624 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
5625     VkPhysicalDevice                            physicalDevice,
5626     uint32_t*                                   pCombinationCount,
5627     VkFramebufferMixedSamplesCombinationNV*     pCombinations) {
5628     const VkLayerInstanceDispatchTable *disp;
5629     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
5630     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
5631         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5632                    "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV: Invalid physicalDevice "
5633                    "[VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-physicalDevice-parameter]");
5634         abort(); /* Intentionally fail so user can correct issue. */
5635     }
5636     disp = loader_get_instance_layer_dispatch(physicalDevice);
5637     return disp->GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(unwrapped_phys_dev, pCombinationCount, pCombinations);
5638 }
5639 
terminator_GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(VkPhysicalDevice physicalDevice,uint32_t * pCombinationCount,VkFramebufferMixedSamplesCombinationNV * pCombinations)5640 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
5641     VkPhysicalDevice                            physicalDevice,
5642     uint32_t*                                   pCombinationCount,
5643     VkFramebufferMixedSamplesCombinationNV*     pCombinations) {
5644     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
5645     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
5646     if (NULL == icd_term->dispatch.GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV) {
5647         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
5648                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
5649         abort(); /* Intentionally fail so user can correct issue. */
5650     }
5651     return icd_term->dispatch.GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(phys_dev_term->phys_dev, pCombinationCount, pCombinations);
5652 }
5653 
5654 
5655 // ---- VK_EXT_full_screen_exclusive extension trampoline/terminators
5656 
5657 #ifdef VK_USE_PLATFORM_WIN32_KHR
AcquireFullScreenExclusiveModeEXT(VkDevice device,VkSwapchainKHR swapchain)5658 VKAPI_ATTR VkResult VKAPI_CALL AcquireFullScreenExclusiveModeEXT(
5659     VkDevice                                    device,
5660     VkSwapchainKHR                              swapchain) {
5661     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5662     if (NULL == disp) {
5663         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5664                    "vkAcquireFullScreenExclusiveModeEXT: Invalid device "
5665                    "[VUID-vkAcquireFullScreenExclusiveModeEXT-device-parameter]");
5666         abort(); /* Intentionally fail so user can correct issue. */
5667     }
5668     return disp->AcquireFullScreenExclusiveModeEXT(device, swapchain);
5669 }
5670 
5671 #endif // VK_USE_PLATFORM_WIN32_KHR
5672 #ifdef VK_USE_PLATFORM_WIN32_KHR
ReleaseFullScreenExclusiveModeEXT(VkDevice device,VkSwapchainKHR swapchain)5673 VKAPI_ATTR VkResult VKAPI_CALL ReleaseFullScreenExclusiveModeEXT(
5674     VkDevice                                    device,
5675     VkSwapchainKHR                              swapchain) {
5676     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5677     if (NULL == disp) {
5678         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5679                    "vkReleaseFullScreenExclusiveModeEXT: Invalid device "
5680                    "[VUID-vkReleaseFullScreenExclusiveModeEXT-device-parameter]");
5681         abort(); /* Intentionally fail so user can correct issue. */
5682     }
5683     return disp->ReleaseFullScreenExclusiveModeEXT(device, swapchain);
5684 }
5685 
5686 #endif // VK_USE_PLATFORM_WIN32_KHR
5687 
5688 // ---- VK_EXT_line_rasterization extension trampoline/terminators
5689 
CmdSetLineStippleEXT(VkCommandBuffer commandBuffer,uint32_t lineStippleFactor,uint16_t lineStipplePattern)5690 VKAPI_ATTR void VKAPI_CALL CmdSetLineStippleEXT(
5691     VkCommandBuffer                             commandBuffer,
5692     uint32_t                                    lineStippleFactor,
5693     uint16_t                                    lineStipplePattern) {
5694     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5695     if (NULL == disp) {
5696         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5697                    "vkCmdSetLineStippleEXT: Invalid commandBuffer "
5698                    "[VUID-vkCmdSetLineStippleEXT-commandBuffer-parameter]");
5699         abort(); /* Intentionally fail so user can correct issue. */
5700     }
5701     disp->CmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern);
5702 }
5703 
5704 
5705 // ---- VK_EXT_host_query_reset extension trampoline/terminators
5706 
ResetQueryPoolEXT(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)5707 VKAPI_ATTR void VKAPI_CALL ResetQueryPoolEXT(
5708     VkDevice                                    device,
5709     VkQueryPool                                 queryPool,
5710     uint32_t                                    firstQuery,
5711     uint32_t                                    queryCount) {
5712     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5713     if (NULL == disp) {
5714         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5715                    "vkResetQueryPoolEXT: Invalid device "
5716                    "[VUID-vkResetQueryPoolEXT-device-parameter]");
5717         abort(); /* Intentionally fail so user can correct issue. */
5718     }
5719     disp->ResetQueryPoolEXT(device, queryPool, firstQuery, queryCount);
5720 }
5721 
5722 
5723 // ---- VK_EXT_extended_dynamic_state extension trampoline/terminators
5724 
CmdSetCullModeEXT(VkCommandBuffer commandBuffer,VkCullModeFlags cullMode)5725 VKAPI_ATTR void VKAPI_CALL CmdSetCullModeEXT(
5726     VkCommandBuffer                             commandBuffer,
5727     VkCullModeFlags                             cullMode) {
5728     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5729     if (NULL == disp) {
5730         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5731                    "vkCmdSetCullModeEXT: Invalid commandBuffer "
5732                    "[VUID-vkCmdSetCullModeEXT-commandBuffer-parameter]");
5733         abort(); /* Intentionally fail so user can correct issue. */
5734     }
5735     disp->CmdSetCullModeEXT(commandBuffer, cullMode);
5736 }
5737 
CmdSetFrontFaceEXT(VkCommandBuffer commandBuffer,VkFrontFace frontFace)5738 VKAPI_ATTR void VKAPI_CALL CmdSetFrontFaceEXT(
5739     VkCommandBuffer                             commandBuffer,
5740     VkFrontFace                                 frontFace) {
5741     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5742     if (NULL == disp) {
5743         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5744                    "vkCmdSetFrontFaceEXT: Invalid commandBuffer "
5745                    "[VUID-vkCmdSetFrontFaceEXT-commandBuffer-parameter]");
5746         abort(); /* Intentionally fail so user can correct issue. */
5747     }
5748     disp->CmdSetFrontFaceEXT(commandBuffer, frontFace);
5749 }
5750 
CmdSetPrimitiveTopologyEXT(VkCommandBuffer commandBuffer,VkPrimitiveTopology primitiveTopology)5751 VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveTopologyEXT(
5752     VkCommandBuffer                             commandBuffer,
5753     VkPrimitiveTopology                         primitiveTopology) {
5754     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5755     if (NULL == disp) {
5756         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5757                    "vkCmdSetPrimitiveTopologyEXT: Invalid commandBuffer "
5758                    "[VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-parameter]");
5759         abort(); /* Intentionally fail so user can correct issue. */
5760     }
5761     disp->CmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology);
5762 }
5763 
CmdSetViewportWithCountEXT(VkCommandBuffer commandBuffer,uint32_t viewportCount,const VkViewport * pViewports)5764 VKAPI_ATTR void VKAPI_CALL CmdSetViewportWithCountEXT(
5765     VkCommandBuffer                             commandBuffer,
5766     uint32_t                                    viewportCount,
5767     const VkViewport*                           pViewports) {
5768     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5769     if (NULL == disp) {
5770         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5771                    "vkCmdSetViewportWithCountEXT: Invalid commandBuffer "
5772                    "[VUID-vkCmdSetViewportWithCountEXT-commandBuffer-parameter]");
5773         abort(); /* Intentionally fail so user can correct issue. */
5774     }
5775     disp->CmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports);
5776 }
5777 
CmdSetScissorWithCountEXT(VkCommandBuffer commandBuffer,uint32_t scissorCount,const VkRect2D * pScissors)5778 VKAPI_ATTR void VKAPI_CALL CmdSetScissorWithCountEXT(
5779     VkCommandBuffer                             commandBuffer,
5780     uint32_t                                    scissorCount,
5781     const VkRect2D*                             pScissors) {
5782     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5783     if (NULL == disp) {
5784         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5785                    "vkCmdSetScissorWithCountEXT: Invalid commandBuffer "
5786                    "[VUID-vkCmdSetScissorWithCountEXT-commandBuffer-parameter]");
5787         abort(); /* Intentionally fail so user can correct issue. */
5788     }
5789     disp->CmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors);
5790 }
5791 
CmdBindVertexBuffers2EXT(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes,const VkDeviceSize * pStrides)5792 VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers2EXT(
5793     VkCommandBuffer                             commandBuffer,
5794     uint32_t                                    firstBinding,
5795     uint32_t                                    bindingCount,
5796     const VkBuffer*                             pBuffers,
5797     const VkDeviceSize*                         pOffsets,
5798     const VkDeviceSize*                         pSizes,
5799     const VkDeviceSize*                         pStrides) {
5800     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5801     if (NULL == disp) {
5802         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5803                    "vkCmdBindVertexBuffers2EXT: Invalid commandBuffer "
5804                    "[VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-parameter]");
5805         abort(); /* Intentionally fail so user can correct issue. */
5806     }
5807     disp->CmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides);
5808 }
5809 
CmdSetDepthTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthTestEnable)5810 VKAPI_ATTR void VKAPI_CALL CmdSetDepthTestEnableEXT(
5811     VkCommandBuffer                             commandBuffer,
5812     VkBool32                                    depthTestEnable) {
5813     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5814     if (NULL == disp) {
5815         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5816                    "vkCmdSetDepthTestEnableEXT: Invalid commandBuffer "
5817                    "[VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-parameter]");
5818         abort(); /* Intentionally fail so user can correct issue. */
5819     }
5820     disp->CmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable);
5821 }
5822 
CmdSetDepthWriteEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthWriteEnable)5823 VKAPI_ATTR void VKAPI_CALL CmdSetDepthWriteEnableEXT(
5824     VkCommandBuffer                             commandBuffer,
5825     VkBool32                                    depthWriteEnable) {
5826     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5827     if (NULL == disp) {
5828         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5829                    "vkCmdSetDepthWriteEnableEXT: Invalid commandBuffer "
5830                    "[VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-parameter]");
5831         abort(); /* Intentionally fail so user can correct issue. */
5832     }
5833     disp->CmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable);
5834 }
5835 
CmdSetDepthCompareOpEXT(VkCommandBuffer commandBuffer,VkCompareOp depthCompareOp)5836 VKAPI_ATTR void VKAPI_CALL CmdSetDepthCompareOpEXT(
5837     VkCommandBuffer                             commandBuffer,
5838     VkCompareOp                                 depthCompareOp) {
5839     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5840     if (NULL == disp) {
5841         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5842                    "vkCmdSetDepthCompareOpEXT: Invalid commandBuffer "
5843                    "[VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-parameter]");
5844         abort(); /* Intentionally fail so user can correct issue. */
5845     }
5846     disp->CmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp);
5847 }
5848 
CmdSetDepthBoundsTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthBoundsTestEnable)5849 VKAPI_ATTR void VKAPI_CALL CmdSetDepthBoundsTestEnableEXT(
5850     VkCommandBuffer                             commandBuffer,
5851     VkBool32                                    depthBoundsTestEnable) {
5852     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5853     if (NULL == disp) {
5854         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5855                    "vkCmdSetDepthBoundsTestEnableEXT: Invalid commandBuffer "
5856                    "[VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-parameter]");
5857         abort(); /* Intentionally fail so user can correct issue. */
5858     }
5859     disp->CmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable);
5860 }
5861 
CmdSetStencilTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 stencilTestEnable)5862 VKAPI_ATTR void VKAPI_CALL CmdSetStencilTestEnableEXT(
5863     VkCommandBuffer                             commandBuffer,
5864     VkBool32                                    stencilTestEnable) {
5865     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5866     if (NULL == disp) {
5867         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5868                    "vkCmdSetStencilTestEnableEXT: Invalid commandBuffer "
5869                    "[VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-parameter]");
5870         abort(); /* Intentionally fail so user can correct issue. */
5871     }
5872     disp->CmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable);
5873 }
5874 
CmdSetStencilOpEXT(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,VkStencilOp failOp,VkStencilOp passOp,VkStencilOp depthFailOp,VkCompareOp compareOp)5875 VKAPI_ATTR void VKAPI_CALL CmdSetStencilOpEXT(
5876     VkCommandBuffer                             commandBuffer,
5877     VkStencilFaceFlags                          faceMask,
5878     VkStencilOp                                 failOp,
5879     VkStencilOp                                 passOp,
5880     VkStencilOp                                 depthFailOp,
5881     VkCompareOp                                 compareOp) {
5882     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5883     if (NULL == disp) {
5884         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5885                    "vkCmdSetStencilOpEXT: Invalid commandBuffer "
5886                    "[VUID-vkCmdSetStencilOpEXT-commandBuffer-parameter]");
5887         abort(); /* Intentionally fail so user can correct issue. */
5888     }
5889     disp->CmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp);
5890 }
5891 
5892 
5893 // ---- VK_NV_device_generated_commands extension trampoline/terminators
5894 
GetGeneratedCommandsMemoryRequirementsNV(VkDevice device,const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo,VkMemoryRequirements2 * pMemoryRequirements)5895 VKAPI_ATTR void VKAPI_CALL GetGeneratedCommandsMemoryRequirementsNV(
5896     VkDevice                                    device,
5897     const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
5898     VkMemoryRequirements2*                      pMemoryRequirements) {
5899     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5900     if (NULL == disp) {
5901         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5902                    "vkGetGeneratedCommandsMemoryRequirementsNV: Invalid device "
5903                    "[VUID-vkGetGeneratedCommandsMemoryRequirementsNV-device-parameter]");
5904         abort(); /* Intentionally fail so user can correct issue. */
5905     }
5906     disp->GetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements);
5907 }
5908 
CmdPreprocessGeneratedCommandsNV(VkCommandBuffer commandBuffer,const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo)5909 VKAPI_ATTR void VKAPI_CALL CmdPreprocessGeneratedCommandsNV(
5910     VkCommandBuffer                             commandBuffer,
5911     const VkGeneratedCommandsInfoNV*            pGeneratedCommandsInfo) {
5912     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5913     if (NULL == disp) {
5914         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5915                    "vkCmdPreprocessGeneratedCommandsNV: Invalid commandBuffer "
5916                    "[VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-parameter]");
5917         abort(); /* Intentionally fail so user can correct issue. */
5918     }
5919     disp->CmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo);
5920 }
5921 
CmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffer,VkBool32 isPreprocessed,const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo)5922 VKAPI_ATTR void VKAPI_CALL CmdExecuteGeneratedCommandsNV(
5923     VkCommandBuffer                             commandBuffer,
5924     VkBool32                                    isPreprocessed,
5925     const VkGeneratedCommandsInfoNV*            pGeneratedCommandsInfo) {
5926     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5927     if (NULL == disp) {
5928         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5929                    "vkCmdExecuteGeneratedCommandsNV: Invalid commandBuffer "
5930                    "[VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-parameter]");
5931         abort(); /* Intentionally fail so user can correct issue. */
5932     }
5933     disp->CmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo);
5934 }
5935 
CmdBindPipelineShaderGroupNV(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipeline pipeline,uint32_t groupIndex)5936 VKAPI_ATTR void VKAPI_CALL CmdBindPipelineShaderGroupNV(
5937     VkCommandBuffer                             commandBuffer,
5938     VkPipelineBindPoint                         pipelineBindPoint,
5939     VkPipeline                                  pipeline,
5940     uint32_t                                    groupIndex) {
5941     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5942     if (NULL == disp) {
5943         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5944                    "vkCmdBindPipelineShaderGroupNV: Invalid commandBuffer "
5945                    "[VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-parameter]");
5946         abort(); /* Intentionally fail so user can correct issue. */
5947     }
5948     disp->CmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex);
5949 }
5950 
CreateIndirectCommandsLayoutNV(VkDevice device,const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkIndirectCommandsLayoutNV * pIndirectCommandsLayout)5951 VKAPI_ATTR VkResult VKAPI_CALL CreateIndirectCommandsLayoutNV(
5952     VkDevice                                    device,
5953     const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
5954     const VkAllocationCallbacks*                pAllocator,
5955     VkIndirectCommandsLayoutNV*                 pIndirectCommandsLayout) {
5956     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5957     if (NULL == disp) {
5958         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5959                    "vkCreateIndirectCommandsLayoutNV: Invalid device "
5960                    "[VUID-vkCreateIndirectCommandsLayoutNV-device-parameter]");
5961         abort(); /* Intentionally fail so user can correct issue. */
5962     }
5963     return disp->CreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
5964 }
5965 
DestroyIndirectCommandsLayoutNV(VkDevice device,VkIndirectCommandsLayoutNV indirectCommandsLayout,const VkAllocationCallbacks * pAllocator)5966 VKAPI_ATTR void VKAPI_CALL DestroyIndirectCommandsLayoutNV(
5967     VkDevice                                    device,
5968     VkIndirectCommandsLayoutNV                  indirectCommandsLayout,
5969     const VkAllocationCallbacks*                pAllocator) {
5970     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5971     if (NULL == disp) {
5972         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5973                    "vkDestroyIndirectCommandsLayoutNV: Invalid device "
5974                    "[VUID-vkDestroyIndirectCommandsLayoutNV-device-parameter]");
5975         abort(); /* Intentionally fail so user can correct issue. */
5976     }
5977     disp->DestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator);
5978 }
5979 
5980 
5981 // ---- VK_EXT_acquire_drm_display extension trampoline/terminators
5982 
AcquireDrmDisplayEXT(VkPhysicalDevice physicalDevice,int32_t drmFd,VkDisplayKHR display)5983 VKAPI_ATTR VkResult VKAPI_CALL AcquireDrmDisplayEXT(
5984     VkPhysicalDevice                            physicalDevice,
5985     int32_t                                     drmFd,
5986     VkDisplayKHR                                display) {
5987     const VkLayerInstanceDispatchTable *disp;
5988     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
5989     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
5990         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5991                    "vkAcquireDrmDisplayEXT: Invalid physicalDevice "
5992                    "[VUID-vkAcquireDrmDisplayEXT-physicalDevice-parameter]");
5993         abort(); /* Intentionally fail so user can correct issue. */
5994     }
5995     disp = loader_get_instance_layer_dispatch(physicalDevice);
5996     return disp->AcquireDrmDisplayEXT(unwrapped_phys_dev, drmFd, display);
5997 }
5998 
terminator_AcquireDrmDisplayEXT(VkPhysicalDevice physicalDevice,int32_t drmFd,VkDisplayKHR display)5999 VKAPI_ATTR VkResult VKAPI_CALL terminator_AcquireDrmDisplayEXT(
6000     VkPhysicalDevice                            physicalDevice,
6001     int32_t                                     drmFd,
6002     VkDisplayKHR                                display) {
6003     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
6004     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
6005     if (NULL == icd_term->dispatch.AcquireDrmDisplayEXT) {
6006         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
6007                    "ICD associated with VkPhysicalDevice does not support AcquireDrmDisplayEXT");
6008         return VK_ERROR_INITIALIZATION_FAILED;
6009     }
6010     return icd_term->dispatch.AcquireDrmDisplayEXT(phys_dev_term->phys_dev, drmFd, display);
6011 }
6012 
GetDrmDisplayEXT(VkPhysicalDevice physicalDevice,int32_t drmFd,uint32_t connectorId,VkDisplayKHR * display)6013 VKAPI_ATTR VkResult VKAPI_CALL GetDrmDisplayEXT(
6014     VkPhysicalDevice                            physicalDevice,
6015     int32_t                                     drmFd,
6016     uint32_t                                    connectorId,
6017     VkDisplayKHR*                               display) {
6018     const VkLayerInstanceDispatchTable *disp;
6019     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
6020     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
6021         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6022                    "vkGetDrmDisplayEXT: Invalid physicalDevice "
6023                    "[VUID-vkGetDrmDisplayEXT-physicalDevice-parameter]");
6024         abort(); /* Intentionally fail so user can correct issue. */
6025     }
6026     disp = loader_get_instance_layer_dispatch(physicalDevice);
6027     return disp->GetDrmDisplayEXT(unwrapped_phys_dev, drmFd, connectorId, display);
6028 }
6029 
terminator_GetDrmDisplayEXT(VkPhysicalDevice physicalDevice,int32_t drmFd,uint32_t connectorId,VkDisplayKHR * display)6030 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDrmDisplayEXT(
6031     VkPhysicalDevice                            physicalDevice,
6032     int32_t                                     drmFd,
6033     uint32_t                                    connectorId,
6034     VkDisplayKHR*                               display) {
6035     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
6036     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
6037     if (NULL == icd_term->dispatch.GetDrmDisplayEXT) {
6038         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
6039                    "ICD associated with VkPhysicalDevice does not support GetDrmDisplayEXT");
6040         return VK_ERROR_INITIALIZATION_FAILED;
6041     }
6042     return icd_term->dispatch.GetDrmDisplayEXT(phys_dev_term->phys_dev, drmFd, connectorId, display);
6043 }
6044 
6045 
6046 // ---- VK_EXT_private_data extension trampoline/terminators
6047 
CreatePrivateDataSlotEXT(VkDevice device,const VkPrivateDataSlotCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPrivateDataSlot * pPrivateDataSlot)6048 VKAPI_ATTR VkResult VKAPI_CALL CreatePrivateDataSlotEXT(
6049     VkDevice                                    device,
6050     const VkPrivateDataSlotCreateInfo*          pCreateInfo,
6051     const VkAllocationCallbacks*                pAllocator,
6052     VkPrivateDataSlot*                          pPrivateDataSlot) {
6053     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6054     if (NULL == disp) {
6055         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6056                    "vkCreatePrivateDataSlotEXT: Invalid device "
6057                    "[VUID-vkCreatePrivateDataSlotEXT-device-parameter]");
6058         abort(); /* Intentionally fail so user can correct issue. */
6059     }
6060     return disp->CreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot);
6061 }
6062 
DestroyPrivateDataSlotEXT(VkDevice device,VkPrivateDataSlot privateDataSlot,const VkAllocationCallbacks * pAllocator)6063 VKAPI_ATTR void VKAPI_CALL DestroyPrivateDataSlotEXT(
6064     VkDevice                                    device,
6065     VkPrivateDataSlot                           privateDataSlot,
6066     const VkAllocationCallbacks*                pAllocator) {
6067     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6068     if (NULL == disp) {
6069         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6070                    "vkDestroyPrivateDataSlotEXT: Invalid device "
6071                    "[VUID-vkDestroyPrivateDataSlotEXT-device-parameter]");
6072         abort(); /* Intentionally fail so user can correct issue. */
6073     }
6074     disp->DestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator);
6075 }
6076 
SetPrivateDataEXT(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t data)6077 VKAPI_ATTR VkResult VKAPI_CALL SetPrivateDataEXT(
6078     VkDevice                                    device,
6079     VkObjectType                                objectType,
6080     uint64_t                                    objectHandle,
6081     VkPrivateDataSlot                           privateDataSlot,
6082     uint64_t                                    data) {
6083     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6084     if (NULL == disp) {
6085         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6086                    "vkSetPrivateDataEXT: Invalid device "
6087                    "[VUID-vkSetPrivateDataEXT-device-parameter]");
6088         abort(); /* Intentionally fail so user can correct issue. */
6089     }
6090     return disp->SetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data);
6091 }
6092 
GetPrivateDataEXT(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t * pData)6093 VKAPI_ATTR void VKAPI_CALL GetPrivateDataEXT(
6094     VkDevice                                    device,
6095     VkObjectType                                objectType,
6096     uint64_t                                    objectHandle,
6097     VkPrivateDataSlot                           privateDataSlot,
6098     uint64_t*                                   pData) {
6099     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6100     if (NULL == disp) {
6101         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6102                    "vkGetPrivateDataEXT: Invalid device "
6103                    "[VUID-vkGetPrivateDataEXT-device-parameter]");
6104         abort(); /* Intentionally fail so user can correct issue. */
6105     }
6106     disp->GetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData);
6107 }
6108 
6109 
6110 // ---- VK_EXT_metal_objects extension trampoline/terminators
6111 
6112 #ifdef VK_USE_PLATFORM_METAL_EXT
ExportMetalObjectsEXT(VkDevice device,VkExportMetalObjectsInfoEXT * pMetalObjectsInfo)6113 VKAPI_ATTR void VKAPI_CALL ExportMetalObjectsEXT(
6114     VkDevice                                    device,
6115     VkExportMetalObjectsInfoEXT*                pMetalObjectsInfo) {
6116     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6117     if (NULL == disp) {
6118         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6119                    "vkExportMetalObjectsEXT: Invalid device "
6120                    "[VUID-vkExportMetalObjectsEXT-device-parameter]");
6121         abort(); /* Intentionally fail so user can correct issue. */
6122     }
6123     disp->ExportMetalObjectsEXT(device, pMetalObjectsInfo);
6124 }
6125 
6126 #endif // VK_USE_PLATFORM_METAL_EXT
6127 
6128 // ---- VK_NV_fragment_shading_rate_enums extension trampoline/terminators
6129 
CmdSetFragmentShadingRateEnumNV(VkCommandBuffer commandBuffer,VkFragmentShadingRateNV shadingRate,const VkFragmentShadingRateCombinerOpKHR combinerOps[2])6130 VKAPI_ATTR void VKAPI_CALL CmdSetFragmentShadingRateEnumNV(
6131     VkCommandBuffer                             commandBuffer,
6132     VkFragmentShadingRateNV                     shadingRate,
6133     const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]) {
6134     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6135     if (NULL == disp) {
6136         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6137                    "vkCmdSetFragmentShadingRateEnumNV: Invalid commandBuffer "
6138                    "[VUID-vkCmdSetFragmentShadingRateEnumNV-commandBuffer-parameter]");
6139         abort(); /* Intentionally fail so user can correct issue. */
6140     }
6141     disp->CmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps);
6142 }
6143 
6144 
6145 // ---- VK_EXT_image_compression_control extension trampoline/terminators
6146 
GetImageSubresourceLayout2EXT(VkDevice device,VkImage image,const VkImageSubresource2EXT * pSubresource,VkSubresourceLayout2EXT * pLayout)6147 VKAPI_ATTR void VKAPI_CALL GetImageSubresourceLayout2EXT(
6148     VkDevice                                    device,
6149     VkImage                                     image,
6150     const VkImageSubresource2EXT*               pSubresource,
6151     VkSubresourceLayout2EXT*                    pLayout) {
6152     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6153     if (NULL == disp) {
6154         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6155                    "vkGetImageSubresourceLayout2EXT: Invalid device "
6156                    "[VUID-vkGetImageSubresourceLayout2EXT-device-parameter]");
6157         abort(); /* Intentionally fail so user can correct issue. */
6158     }
6159     disp->GetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout);
6160 }
6161 
6162 
6163 // ---- VK_EXT_device_fault extension trampoline/terminators
6164 
GetDeviceFaultInfoEXT(VkDevice device,VkDeviceFaultCountsEXT * pFaultCounts,VkDeviceFaultInfoEXT * pFaultInfo)6165 VKAPI_ATTR VkResult VKAPI_CALL GetDeviceFaultInfoEXT(
6166     VkDevice                                    device,
6167     VkDeviceFaultCountsEXT*                     pFaultCounts,
6168     VkDeviceFaultInfoEXT*                       pFaultInfo) {
6169     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6170     if (NULL == disp) {
6171         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6172                    "vkGetDeviceFaultInfoEXT: Invalid device "
6173                    "[VUID-vkGetDeviceFaultInfoEXT-device-parameter]");
6174         abort(); /* Intentionally fail so user can correct issue. */
6175     }
6176     return disp->GetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo);
6177 }
6178 
6179 
6180 // ---- VK_NV_acquire_winrt_display extension trampoline/terminators
6181 
6182 #ifdef VK_USE_PLATFORM_WIN32_KHR
AcquireWinrtDisplayNV(VkPhysicalDevice physicalDevice,VkDisplayKHR display)6183 VKAPI_ATTR VkResult VKAPI_CALL AcquireWinrtDisplayNV(
6184     VkPhysicalDevice                            physicalDevice,
6185     VkDisplayKHR                                display) {
6186     const VkLayerInstanceDispatchTable *disp;
6187     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
6188     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
6189         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6190                    "vkAcquireWinrtDisplayNV: Invalid physicalDevice "
6191                    "[VUID-vkAcquireWinrtDisplayNV-physicalDevice-parameter]");
6192         abort(); /* Intentionally fail so user can correct issue. */
6193     }
6194     disp = loader_get_instance_layer_dispatch(physicalDevice);
6195     return disp->AcquireWinrtDisplayNV(unwrapped_phys_dev, display);
6196 }
6197 
terminator_AcquireWinrtDisplayNV(VkPhysicalDevice physicalDevice,VkDisplayKHR display)6198 VKAPI_ATTR VkResult VKAPI_CALL terminator_AcquireWinrtDisplayNV(
6199     VkPhysicalDevice                            physicalDevice,
6200     VkDisplayKHR                                display) {
6201     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
6202     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
6203     if (NULL == icd_term->dispatch.AcquireWinrtDisplayNV) {
6204         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
6205                    "ICD associated with VkPhysicalDevice does not support AcquireWinrtDisplayNV");
6206         abort(); /* Intentionally fail so user can correct issue. */
6207     }
6208     return icd_term->dispatch.AcquireWinrtDisplayNV(phys_dev_term->phys_dev, display);
6209 }
6210 
6211 #endif // VK_USE_PLATFORM_WIN32_KHR
6212 #ifdef VK_USE_PLATFORM_WIN32_KHR
GetWinrtDisplayNV(VkPhysicalDevice physicalDevice,uint32_t deviceRelativeId,VkDisplayKHR * pDisplay)6213 VKAPI_ATTR VkResult VKAPI_CALL GetWinrtDisplayNV(
6214     VkPhysicalDevice                            physicalDevice,
6215     uint32_t                                    deviceRelativeId,
6216     VkDisplayKHR*                               pDisplay) {
6217     const VkLayerInstanceDispatchTable *disp;
6218     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
6219     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
6220         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6221                    "vkGetWinrtDisplayNV: Invalid physicalDevice "
6222                    "[VUID-vkGetWinrtDisplayNV-physicalDevice-parameter]");
6223         abort(); /* Intentionally fail so user can correct issue. */
6224     }
6225     disp = loader_get_instance_layer_dispatch(physicalDevice);
6226     return disp->GetWinrtDisplayNV(unwrapped_phys_dev, deviceRelativeId, pDisplay);
6227 }
6228 
terminator_GetWinrtDisplayNV(VkPhysicalDevice physicalDevice,uint32_t deviceRelativeId,VkDisplayKHR * pDisplay)6229 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetWinrtDisplayNV(
6230     VkPhysicalDevice                            physicalDevice,
6231     uint32_t                                    deviceRelativeId,
6232     VkDisplayKHR*                               pDisplay) {
6233     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
6234     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
6235     if (NULL == icd_term->dispatch.GetWinrtDisplayNV) {
6236         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
6237                    "ICD associated with VkPhysicalDevice does not support GetWinrtDisplayNV");
6238         abort(); /* Intentionally fail so user can correct issue. */
6239     }
6240     return icd_term->dispatch.GetWinrtDisplayNV(phys_dev_term->phys_dev, deviceRelativeId, pDisplay);
6241 }
6242 
6243 #endif // VK_USE_PLATFORM_WIN32_KHR
6244 
6245 // ---- VK_EXT_vertex_input_dynamic_state extension trampoline/terminators
6246 
CmdSetVertexInputEXT(VkCommandBuffer commandBuffer,uint32_t vertexBindingDescriptionCount,const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions,uint32_t vertexAttributeDescriptionCount,const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions)6247 VKAPI_ATTR void VKAPI_CALL CmdSetVertexInputEXT(
6248     VkCommandBuffer                             commandBuffer,
6249     uint32_t                                    vertexBindingDescriptionCount,
6250     const VkVertexInputBindingDescription2EXT*  pVertexBindingDescriptions,
6251     uint32_t                                    vertexAttributeDescriptionCount,
6252     const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions) {
6253     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6254     if (NULL == disp) {
6255         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6256                    "vkCmdSetVertexInputEXT: Invalid commandBuffer "
6257                    "[VUID-vkCmdSetVertexInputEXT-commandBuffer-parameter]");
6258         abort(); /* Intentionally fail so user can correct issue. */
6259     }
6260     disp->CmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions);
6261 }
6262 
6263 
6264 // ---- VK_FUCHSIA_external_memory extension trampoline/terminators
6265 
6266 #ifdef VK_USE_PLATFORM_FUCHSIA
GetMemoryZirconHandleFUCHSIA(VkDevice device,const VkMemoryGetZirconHandleInfoFUCHSIA * pGetZirconHandleInfo,zx_handle_t * pZirconHandle)6267 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryZirconHandleFUCHSIA(
6268     VkDevice                                    device,
6269     const VkMemoryGetZirconHandleInfoFUCHSIA*   pGetZirconHandleInfo,
6270     zx_handle_t*                                pZirconHandle) {
6271     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6272     if (NULL == disp) {
6273         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6274                    "vkGetMemoryZirconHandleFUCHSIA: Invalid device "
6275                    "[VUID-vkGetMemoryZirconHandleFUCHSIA-device-parameter]");
6276         abort(); /* Intentionally fail so user can correct issue. */
6277     }
6278     return disp->GetMemoryZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle);
6279 }
6280 
6281 #endif // VK_USE_PLATFORM_FUCHSIA
6282 #ifdef VK_USE_PLATFORM_FUCHSIA
GetMemoryZirconHandlePropertiesFUCHSIA(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,zx_handle_t zirconHandle,VkMemoryZirconHandlePropertiesFUCHSIA * pMemoryZirconHandleProperties)6283 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryZirconHandlePropertiesFUCHSIA(
6284     VkDevice                                    device,
6285     VkExternalMemoryHandleTypeFlagBits          handleType,
6286     zx_handle_t                                 zirconHandle,
6287     VkMemoryZirconHandlePropertiesFUCHSIA*      pMemoryZirconHandleProperties) {
6288     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6289     if (NULL == disp) {
6290         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6291                    "vkGetMemoryZirconHandlePropertiesFUCHSIA: Invalid device "
6292                    "[VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-device-parameter]");
6293         abort(); /* Intentionally fail so user can correct issue. */
6294     }
6295     return disp->GetMemoryZirconHandlePropertiesFUCHSIA(device, handleType, zirconHandle, pMemoryZirconHandleProperties);
6296 }
6297 
6298 #endif // VK_USE_PLATFORM_FUCHSIA
6299 
6300 // ---- VK_FUCHSIA_external_semaphore extension trampoline/terminators
6301 
6302 #ifdef VK_USE_PLATFORM_FUCHSIA
ImportSemaphoreZirconHandleFUCHSIA(VkDevice device,const VkImportSemaphoreZirconHandleInfoFUCHSIA * pImportSemaphoreZirconHandleInfo)6303 VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreZirconHandleFUCHSIA(
6304     VkDevice                                    device,
6305     const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo) {
6306     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6307     if (NULL == disp) {
6308         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6309                    "vkImportSemaphoreZirconHandleFUCHSIA: Invalid device "
6310                    "[VUID-vkImportSemaphoreZirconHandleFUCHSIA-device-parameter]");
6311         abort(); /* Intentionally fail so user can correct issue. */
6312     }
6313     return disp->ImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo);
6314 }
6315 
6316 #endif // VK_USE_PLATFORM_FUCHSIA
6317 #ifdef VK_USE_PLATFORM_FUCHSIA
GetSemaphoreZirconHandleFUCHSIA(VkDevice device,const VkSemaphoreGetZirconHandleInfoFUCHSIA * pGetZirconHandleInfo,zx_handle_t * pZirconHandle)6318 VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreZirconHandleFUCHSIA(
6319     VkDevice                                    device,
6320     const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
6321     zx_handle_t*                                pZirconHandle) {
6322     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6323     if (NULL == disp) {
6324         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6325                    "vkGetSemaphoreZirconHandleFUCHSIA: Invalid device "
6326                    "[VUID-vkGetSemaphoreZirconHandleFUCHSIA-device-parameter]");
6327         abort(); /* Intentionally fail so user can correct issue. */
6328     }
6329     return disp->GetSemaphoreZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle);
6330 }
6331 
6332 #endif // VK_USE_PLATFORM_FUCHSIA
6333 
6334 // ---- VK_FUCHSIA_buffer_collection extension trampoline/terminators
6335 
6336 #ifdef VK_USE_PLATFORM_FUCHSIA
CreateBufferCollectionFUCHSIA(VkDevice device,const VkBufferCollectionCreateInfoFUCHSIA * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBufferCollectionFUCHSIA * pCollection)6337 VKAPI_ATTR VkResult VKAPI_CALL CreateBufferCollectionFUCHSIA(
6338     VkDevice                                    device,
6339     const VkBufferCollectionCreateInfoFUCHSIA*  pCreateInfo,
6340     const VkAllocationCallbacks*                pAllocator,
6341     VkBufferCollectionFUCHSIA*                  pCollection) {
6342     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6343     if (NULL == disp) {
6344         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6345                    "vkCreateBufferCollectionFUCHSIA: Invalid device "
6346                    "[VUID-vkCreateBufferCollectionFUCHSIA-device-parameter]");
6347         abort(); /* Intentionally fail so user can correct issue. */
6348     }
6349     return disp->CreateBufferCollectionFUCHSIA(device, pCreateInfo, pAllocator, pCollection);
6350 }
6351 
6352 #endif // VK_USE_PLATFORM_FUCHSIA
6353 #ifdef VK_USE_PLATFORM_FUCHSIA
SetBufferCollectionImageConstraintsFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,const VkImageConstraintsInfoFUCHSIA * pImageConstraintsInfo)6354 VKAPI_ATTR VkResult VKAPI_CALL SetBufferCollectionImageConstraintsFUCHSIA(
6355     VkDevice                                    device,
6356     VkBufferCollectionFUCHSIA                   collection,
6357     const VkImageConstraintsInfoFUCHSIA*        pImageConstraintsInfo) {
6358     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6359     if (NULL == disp) {
6360         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6361                    "vkSetBufferCollectionImageConstraintsFUCHSIA: Invalid device "
6362                    "[VUID-vkSetBufferCollectionImageConstraintsFUCHSIA-device-parameter]");
6363         abort(); /* Intentionally fail so user can correct issue. */
6364     }
6365     return disp->SetBufferCollectionImageConstraintsFUCHSIA(device, collection, pImageConstraintsInfo);
6366 }
6367 
6368 #endif // VK_USE_PLATFORM_FUCHSIA
6369 #ifdef VK_USE_PLATFORM_FUCHSIA
SetBufferCollectionBufferConstraintsFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,const VkBufferConstraintsInfoFUCHSIA * pBufferConstraintsInfo)6370 VKAPI_ATTR VkResult VKAPI_CALL SetBufferCollectionBufferConstraintsFUCHSIA(
6371     VkDevice                                    device,
6372     VkBufferCollectionFUCHSIA                   collection,
6373     const VkBufferConstraintsInfoFUCHSIA*       pBufferConstraintsInfo) {
6374     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6375     if (NULL == disp) {
6376         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6377                    "vkSetBufferCollectionBufferConstraintsFUCHSIA: Invalid device "
6378                    "[VUID-vkSetBufferCollectionBufferConstraintsFUCHSIA-device-parameter]");
6379         abort(); /* Intentionally fail so user can correct issue. */
6380     }
6381     return disp->SetBufferCollectionBufferConstraintsFUCHSIA(device, collection, pBufferConstraintsInfo);
6382 }
6383 
6384 #endif // VK_USE_PLATFORM_FUCHSIA
6385 #ifdef VK_USE_PLATFORM_FUCHSIA
DestroyBufferCollectionFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,const VkAllocationCallbacks * pAllocator)6386 VKAPI_ATTR void VKAPI_CALL DestroyBufferCollectionFUCHSIA(
6387     VkDevice                                    device,
6388     VkBufferCollectionFUCHSIA                   collection,
6389     const VkAllocationCallbacks*                pAllocator) {
6390     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6391     if (NULL == disp) {
6392         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6393                    "vkDestroyBufferCollectionFUCHSIA: Invalid device "
6394                    "[VUID-vkDestroyBufferCollectionFUCHSIA-device-parameter]");
6395         abort(); /* Intentionally fail so user can correct issue. */
6396     }
6397     disp->DestroyBufferCollectionFUCHSIA(device, collection, pAllocator);
6398 }
6399 
6400 #endif // VK_USE_PLATFORM_FUCHSIA
6401 #ifdef VK_USE_PLATFORM_FUCHSIA
GetBufferCollectionPropertiesFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,VkBufferCollectionPropertiesFUCHSIA * pProperties)6402 VKAPI_ATTR VkResult VKAPI_CALL GetBufferCollectionPropertiesFUCHSIA(
6403     VkDevice                                    device,
6404     VkBufferCollectionFUCHSIA                   collection,
6405     VkBufferCollectionPropertiesFUCHSIA*        pProperties) {
6406     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6407     if (NULL == disp) {
6408         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6409                    "vkGetBufferCollectionPropertiesFUCHSIA: Invalid device "
6410                    "[VUID-vkGetBufferCollectionPropertiesFUCHSIA-device-parameter]");
6411         abort(); /* Intentionally fail so user can correct issue. */
6412     }
6413     return disp->GetBufferCollectionPropertiesFUCHSIA(device, collection, pProperties);
6414 }
6415 
6416 #endif // VK_USE_PLATFORM_FUCHSIA
6417 
6418 // ---- VK_HUAWEI_subpass_shading extension trampoline/terminators
6419 
GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(VkDevice device,VkRenderPass renderpass,VkExtent2D * pMaxWorkgroupSize)6420 VKAPI_ATTR VkResult VKAPI_CALL GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
6421     VkDevice                                    device,
6422     VkRenderPass                                renderpass,
6423     VkExtent2D*                                 pMaxWorkgroupSize) {
6424     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6425     if (NULL == disp) {
6426         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6427                    "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI: Invalid device "
6428                    "[VUID-vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI-device-parameter]");
6429         abort(); /* Intentionally fail so user can correct issue. */
6430     }
6431     return disp->GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize);
6432 }
6433 
CmdSubpassShadingHUAWEI(VkCommandBuffer commandBuffer)6434 VKAPI_ATTR void VKAPI_CALL CmdSubpassShadingHUAWEI(
6435     VkCommandBuffer                             commandBuffer) {
6436     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6437     if (NULL == disp) {
6438         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6439                    "vkCmdSubpassShadingHUAWEI: Invalid commandBuffer "
6440                    "[VUID-vkCmdSubpassShadingHUAWEI-commandBuffer-parameter]");
6441         abort(); /* Intentionally fail so user can correct issue. */
6442     }
6443     disp->CmdSubpassShadingHUAWEI(commandBuffer);
6444 }
6445 
6446 
6447 // ---- VK_HUAWEI_invocation_mask extension trampoline/terminators
6448 
CmdBindInvocationMaskHUAWEI(VkCommandBuffer commandBuffer,VkImageView imageView,VkImageLayout imageLayout)6449 VKAPI_ATTR void VKAPI_CALL CmdBindInvocationMaskHUAWEI(
6450     VkCommandBuffer                             commandBuffer,
6451     VkImageView                                 imageView,
6452     VkImageLayout                               imageLayout) {
6453     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6454     if (NULL == disp) {
6455         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6456                    "vkCmdBindInvocationMaskHUAWEI: Invalid commandBuffer "
6457                    "[VUID-vkCmdBindInvocationMaskHUAWEI-commandBuffer-parameter]");
6458         abort(); /* Intentionally fail so user can correct issue. */
6459     }
6460     disp->CmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout);
6461 }
6462 
6463 
6464 // ---- VK_NV_external_memory_rdma extension trampoline/terminators
6465 
GetMemoryRemoteAddressNV(VkDevice device,const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo,VkRemoteAddressNV * pAddress)6466 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryRemoteAddressNV(
6467     VkDevice                                    device,
6468     const VkMemoryGetRemoteAddressInfoNV*       pMemoryGetRemoteAddressInfo,
6469     VkRemoteAddressNV*                          pAddress) {
6470     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6471     if (NULL == disp) {
6472         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6473                    "vkGetMemoryRemoteAddressNV: Invalid device "
6474                    "[VUID-vkGetMemoryRemoteAddressNV-device-parameter]");
6475         abort(); /* Intentionally fail so user can correct issue. */
6476     }
6477     return disp->GetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress);
6478 }
6479 
6480 
6481 // ---- VK_EXT_pipeline_properties extension trampoline/terminators
6482 
GetPipelinePropertiesEXT(VkDevice device,const VkPipelineInfoEXT * pPipelineInfo,VkBaseOutStructure * pPipelineProperties)6483 VKAPI_ATTR VkResult VKAPI_CALL GetPipelinePropertiesEXT(
6484     VkDevice                                    device,
6485     const VkPipelineInfoEXT*                    pPipelineInfo,
6486     VkBaseOutStructure*                         pPipelineProperties) {
6487     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6488     if (NULL == disp) {
6489         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6490                    "vkGetPipelinePropertiesEXT: Invalid device "
6491                    "[VUID-vkGetPipelinePropertiesEXT-device-parameter]");
6492         abort(); /* Intentionally fail so user can correct issue. */
6493     }
6494     return disp->GetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties);
6495 }
6496 
6497 
6498 // ---- VK_EXT_extended_dynamic_state2 extension trampoline/terminators
6499 
CmdSetPatchControlPointsEXT(VkCommandBuffer commandBuffer,uint32_t patchControlPoints)6500 VKAPI_ATTR void VKAPI_CALL CmdSetPatchControlPointsEXT(
6501     VkCommandBuffer                             commandBuffer,
6502     uint32_t                                    patchControlPoints) {
6503     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6504     if (NULL == disp) {
6505         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6506                    "vkCmdSetPatchControlPointsEXT: Invalid commandBuffer "
6507                    "[VUID-vkCmdSetPatchControlPointsEXT-commandBuffer-parameter]");
6508         abort(); /* Intentionally fail so user can correct issue. */
6509     }
6510     disp->CmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints);
6511 }
6512 
CmdSetRasterizerDiscardEnableEXT(VkCommandBuffer commandBuffer,VkBool32 rasterizerDiscardEnable)6513 VKAPI_ATTR void VKAPI_CALL CmdSetRasterizerDiscardEnableEXT(
6514     VkCommandBuffer                             commandBuffer,
6515     VkBool32                                    rasterizerDiscardEnable) {
6516     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6517     if (NULL == disp) {
6518         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6519                    "vkCmdSetRasterizerDiscardEnableEXT: Invalid commandBuffer "
6520                    "[VUID-vkCmdSetRasterizerDiscardEnableEXT-commandBuffer-parameter]");
6521         abort(); /* Intentionally fail so user can correct issue. */
6522     }
6523     disp->CmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable);
6524 }
6525 
CmdSetDepthBiasEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthBiasEnable)6526 VKAPI_ATTR void VKAPI_CALL CmdSetDepthBiasEnableEXT(
6527     VkCommandBuffer                             commandBuffer,
6528     VkBool32                                    depthBiasEnable) {
6529     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6530     if (NULL == disp) {
6531         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6532                    "vkCmdSetDepthBiasEnableEXT: Invalid commandBuffer "
6533                    "[VUID-vkCmdSetDepthBiasEnableEXT-commandBuffer-parameter]");
6534         abort(); /* Intentionally fail so user can correct issue. */
6535     }
6536     disp->CmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable);
6537 }
6538 
CmdSetLogicOpEXT(VkCommandBuffer commandBuffer,VkLogicOp logicOp)6539 VKAPI_ATTR void VKAPI_CALL CmdSetLogicOpEXT(
6540     VkCommandBuffer                             commandBuffer,
6541     VkLogicOp                                   logicOp) {
6542     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6543     if (NULL == disp) {
6544         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6545                    "vkCmdSetLogicOpEXT: Invalid commandBuffer "
6546                    "[VUID-vkCmdSetLogicOpEXT-commandBuffer-parameter]");
6547         abort(); /* Intentionally fail so user can correct issue. */
6548     }
6549     disp->CmdSetLogicOpEXT(commandBuffer, logicOp);
6550 }
6551 
CmdSetPrimitiveRestartEnableEXT(VkCommandBuffer commandBuffer,VkBool32 primitiveRestartEnable)6552 VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveRestartEnableEXT(
6553     VkCommandBuffer                             commandBuffer,
6554     VkBool32                                    primitiveRestartEnable) {
6555     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6556     if (NULL == disp) {
6557         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6558                    "vkCmdSetPrimitiveRestartEnableEXT: Invalid commandBuffer "
6559                    "[VUID-vkCmdSetPrimitiveRestartEnableEXT-commandBuffer-parameter]");
6560         abort(); /* Intentionally fail so user can correct issue. */
6561     }
6562     disp->CmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable);
6563 }
6564 
6565 
6566 // ---- VK_EXT_color_write_enable extension trampoline/terminators
6567 
CmdSetColorWriteEnableEXT(VkCommandBuffer commandBuffer,uint32_t attachmentCount,const VkBool32 * pColorWriteEnables)6568 VKAPI_ATTR void                                    VKAPI_CALL CmdSetColorWriteEnableEXT(
6569     VkCommandBuffer                             commandBuffer,
6570     uint32_t                                    attachmentCount,
6571     const VkBool32*                             pColorWriteEnables) {
6572     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6573     if (NULL == disp) {
6574         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6575                    "vkCmdSetColorWriteEnableEXT: Invalid commandBuffer "
6576                    "[VUID-vkCmdSetColorWriteEnableEXT-commandBuffer-parameter]");
6577         abort(); /* Intentionally fail so user can correct issue. */
6578     }
6579     disp->CmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables);
6580 }
6581 
6582 
6583 // ---- VK_EXT_multi_draw extension trampoline/terminators
6584 
CmdDrawMultiEXT(VkCommandBuffer commandBuffer,uint32_t drawCount,const VkMultiDrawInfoEXT * pVertexInfo,uint32_t instanceCount,uint32_t firstInstance,uint32_t stride)6585 VKAPI_ATTR void VKAPI_CALL CmdDrawMultiEXT(
6586     VkCommandBuffer                             commandBuffer,
6587     uint32_t                                    drawCount,
6588     const VkMultiDrawInfoEXT*                   pVertexInfo,
6589     uint32_t                                    instanceCount,
6590     uint32_t                                    firstInstance,
6591     uint32_t                                    stride) {
6592     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6593     if (NULL == disp) {
6594         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6595                    "vkCmdDrawMultiEXT: Invalid commandBuffer "
6596                    "[VUID-vkCmdDrawMultiEXT-commandBuffer-parameter]");
6597         abort(); /* Intentionally fail so user can correct issue. */
6598     }
6599     disp->CmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride);
6600 }
6601 
CmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer,uint32_t drawCount,const VkMultiDrawIndexedInfoEXT * pIndexInfo,uint32_t instanceCount,uint32_t firstInstance,uint32_t stride,const int32_t * pVertexOffset)6602 VKAPI_ATTR void VKAPI_CALL CmdDrawMultiIndexedEXT(
6603     VkCommandBuffer                             commandBuffer,
6604     uint32_t                                    drawCount,
6605     const VkMultiDrawIndexedInfoEXT*            pIndexInfo,
6606     uint32_t                                    instanceCount,
6607     uint32_t                                    firstInstance,
6608     uint32_t                                    stride,
6609     const int32_t*                              pVertexOffset) {
6610     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6611     if (NULL == disp) {
6612         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6613                    "vkCmdDrawMultiIndexedEXT: Invalid commandBuffer "
6614                    "[VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-parameter]");
6615         abort(); /* Intentionally fail so user can correct issue. */
6616     }
6617     disp->CmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset);
6618 }
6619 
6620 
6621 // ---- VK_EXT_opacity_micromap extension trampoline/terminators
6622 
CreateMicromapEXT(VkDevice device,const VkMicromapCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkMicromapEXT * pMicromap)6623 VKAPI_ATTR VkResult VKAPI_CALL CreateMicromapEXT(
6624     VkDevice                                    device,
6625     const VkMicromapCreateInfoEXT*              pCreateInfo,
6626     const VkAllocationCallbacks*                pAllocator,
6627     VkMicromapEXT*                              pMicromap) {
6628     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6629     if (NULL == disp) {
6630         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6631                    "vkCreateMicromapEXT: Invalid device "
6632                    "[VUID-vkCreateMicromapEXT-device-parameter]");
6633         abort(); /* Intentionally fail so user can correct issue. */
6634     }
6635     return disp->CreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap);
6636 }
6637 
DestroyMicromapEXT(VkDevice device,VkMicromapEXT micromap,const VkAllocationCallbacks * pAllocator)6638 VKAPI_ATTR void VKAPI_CALL DestroyMicromapEXT(
6639     VkDevice                                    device,
6640     VkMicromapEXT                               micromap,
6641     const VkAllocationCallbacks*                pAllocator) {
6642     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6643     if (NULL == disp) {
6644         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6645                    "vkDestroyMicromapEXT: Invalid device "
6646                    "[VUID-vkDestroyMicromapEXT-device-parameter]");
6647         abort(); /* Intentionally fail so user can correct issue. */
6648     }
6649     disp->DestroyMicromapEXT(device, micromap, pAllocator);
6650 }
6651 
CmdBuildMicromapsEXT(VkCommandBuffer commandBuffer,uint32_t infoCount,const VkMicromapBuildInfoEXT * pInfos)6652 VKAPI_ATTR void VKAPI_CALL CmdBuildMicromapsEXT(
6653     VkCommandBuffer                             commandBuffer,
6654     uint32_t                                    infoCount,
6655     const VkMicromapBuildInfoEXT*               pInfos) {
6656     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6657     if (NULL == disp) {
6658         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6659                    "vkCmdBuildMicromapsEXT: Invalid commandBuffer "
6660                    "[VUID-vkCmdBuildMicromapsEXT-commandBuffer-parameter]");
6661         abort(); /* Intentionally fail so user can correct issue. */
6662     }
6663     disp->CmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos);
6664 }
6665 
BuildMicromapsEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,uint32_t infoCount,const VkMicromapBuildInfoEXT * pInfos)6666 VKAPI_ATTR VkResult VKAPI_CALL BuildMicromapsEXT(
6667     VkDevice                                    device,
6668     VkDeferredOperationKHR                      deferredOperation,
6669     uint32_t                                    infoCount,
6670     const VkMicromapBuildInfoEXT*               pInfos) {
6671     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6672     if (NULL == disp) {
6673         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6674                    "vkBuildMicromapsEXT: Invalid device "
6675                    "[VUID-vkBuildMicromapsEXT-device-parameter]");
6676         abort(); /* Intentionally fail so user can correct issue. */
6677     }
6678     return disp->BuildMicromapsEXT(device, deferredOperation, infoCount, pInfos);
6679 }
6680 
CopyMicromapEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMicromapInfoEXT * pInfo)6681 VKAPI_ATTR VkResult VKAPI_CALL CopyMicromapEXT(
6682     VkDevice                                    device,
6683     VkDeferredOperationKHR                      deferredOperation,
6684     const VkCopyMicromapInfoEXT*                pInfo) {
6685     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6686     if (NULL == disp) {
6687         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6688                    "vkCopyMicromapEXT: Invalid device "
6689                    "[VUID-vkCopyMicromapEXT-device-parameter]");
6690         abort(); /* Intentionally fail so user can correct issue. */
6691     }
6692     return disp->CopyMicromapEXT(device, deferredOperation, pInfo);
6693 }
6694 
CopyMicromapToMemoryEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMicromapToMemoryInfoEXT * pInfo)6695 VKAPI_ATTR VkResult VKAPI_CALL CopyMicromapToMemoryEXT(
6696     VkDevice                                    device,
6697     VkDeferredOperationKHR                      deferredOperation,
6698     const VkCopyMicromapToMemoryInfoEXT*        pInfo) {
6699     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6700     if (NULL == disp) {
6701         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6702                    "vkCopyMicromapToMemoryEXT: Invalid device "
6703                    "[VUID-vkCopyMicromapToMemoryEXT-device-parameter]");
6704         abort(); /* Intentionally fail so user can correct issue. */
6705     }
6706     return disp->CopyMicromapToMemoryEXT(device, deferredOperation, pInfo);
6707 }
6708 
CopyMemoryToMicromapEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMemoryToMicromapInfoEXT * pInfo)6709 VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToMicromapEXT(
6710     VkDevice                                    device,
6711     VkDeferredOperationKHR                      deferredOperation,
6712     const VkCopyMemoryToMicromapInfoEXT*        pInfo) {
6713     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6714     if (NULL == disp) {
6715         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6716                    "vkCopyMemoryToMicromapEXT: Invalid device "
6717                    "[VUID-vkCopyMemoryToMicromapEXT-device-parameter]");
6718         abort(); /* Intentionally fail so user can correct issue. */
6719     }
6720     return disp->CopyMemoryToMicromapEXT(device, deferredOperation, pInfo);
6721 }
6722 
WriteMicromapsPropertiesEXT(VkDevice device,uint32_t micromapCount,const VkMicromapEXT * pMicromaps,VkQueryType queryType,size_t dataSize,void * pData,size_t stride)6723 VKAPI_ATTR VkResult VKAPI_CALL WriteMicromapsPropertiesEXT(
6724     VkDevice                                    device,
6725     uint32_t                                    micromapCount,
6726     const VkMicromapEXT*                        pMicromaps,
6727     VkQueryType                                 queryType,
6728     size_t                                      dataSize,
6729     void*                                       pData,
6730     size_t                                      stride) {
6731     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6732     if (NULL == disp) {
6733         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6734                    "vkWriteMicromapsPropertiesEXT: Invalid device "
6735                    "[VUID-vkWriteMicromapsPropertiesEXT-device-parameter]");
6736         abort(); /* Intentionally fail so user can correct issue. */
6737     }
6738     return disp->WriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride);
6739 }
6740 
CmdCopyMicromapEXT(VkCommandBuffer commandBuffer,const VkCopyMicromapInfoEXT * pInfo)6741 VKAPI_ATTR void VKAPI_CALL CmdCopyMicromapEXT(
6742     VkCommandBuffer                             commandBuffer,
6743     const VkCopyMicromapInfoEXT*                pInfo) {
6744     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6745     if (NULL == disp) {
6746         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6747                    "vkCmdCopyMicromapEXT: Invalid commandBuffer "
6748                    "[VUID-vkCmdCopyMicromapEXT-commandBuffer-parameter]");
6749         abort(); /* Intentionally fail so user can correct issue. */
6750     }
6751     disp->CmdCopyMicromapEXT(commandBuffer, pInfo);
6752 }
6753 
CmdCopyMicromapToMemoryEXT(VkCommandBuffer commandBuffer,const VkCopyMicromapToMemoryInfoEXT * pInfo)6754 VKAPI_ATTR void VKAPI_CALL CmdCopyMicromapToMemoryEXT(
6755     VkCommandBuffer                             commandBuffer,
6756     const VkCopyMicromapToMemoryInfoEXT*        pInfo) {
6757     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6758     if (NULL == disp) {
6759         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6760                    "vkCmdCopyMicromapToMemoryEXT: Invalid commandBuffer "
6761                    "[VUID-vkCmdCopyMicromapToMemoryEXT-commandBuffer-parameter]");
6762         abort(); /* Intentionally fail so user can correct issue. */
6763     }
6764     disp->CmdCopyMicromapToMemoryEXT(commandBuffer, pInfo);
6765 }
6766 
CmdCopyMemoryToMicromapEXT(VkCommandBuffer commandBuffer,const VkCopyMemoryToMicromapInfoEXT * pInfo)6767 VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryToMicromapEXT(
6768     VkCommandBuffer                             commandBuffer,
6769     const VkCopyMemoryToMicromapInfoEXT*        pInfo) {
6770     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6771     if (NULL == disp) {
6772         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6773                    "vkCmdCopyMemoryToMicromapEXT: Invalid commandBuffer "
6774                    "[VUID-vkCmdCopyMemoryToMicromapEXT-commandBuffer-parameter]");
6775         abort(); /* Intentionally fail so user can correct issue. */
6776     }
6777     disp->CmdCopyMemoryToMicromapEXT(commandBuffer, pInfo);
6778 }
6779 
CmdWriteMicromapsPropertiesEXT(VkCommandBuffer commandBuffer,uint32_t micromapCount,const VkMicromapEXT * pMicromaps,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)6780 VKAPI_ATTR void VKAPI_CALL CmdWriteMicromapsPropertiesEXT(
6781     VkCommandBuffer                             commandBuffer,
6782     uint32_t                                    micromapCount,
6783     const VkMicromapEXT*                        pMicromaps,
6784     VkQueryType                                 queryType,
6785     VkQueryPool                                 queryPool,
6786     uint32_t                                    firstQuery) {
6787     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6788     if (NULL == disp) {
6789         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6790                    "vkCmdWriteMicromapsPropertiesEXT: Invalid commandBuffer "
6791                    "[VUID-vkCmdWriteMicromapsPropertiesEXT-commandBuffer-parameter]");
6792         abort(); /* Intentionally fail so user can correct issue. */
6793     }
6794     disp->CmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery);
6795 }
6796 
GetDeviceMicromapCompatibilityEXT(VkDevice device,const VkMicromapVersionInfoEXT * pVersionInfo,VkAccelerationStructureCompatibilityKHR * pCompatibility)6797 VKAPI_ATTR void VKAPI_CALL GetDeviceMicromapCompatibilityEXT(
6798     VkDevice                                    device,
6799     const VkMicromapVersionInfoEXT*             pVersionInfo,
6800     VkAccelerationStructureCompatibilityKHR*    pCompatibility) {
6801     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6802     if (NULL == disp) {
6803         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6804                    "vkGetDeviceMicromapCompatibilityEXT: Invalid device "
6805                    "[VUID-vkGetDeviceMicromapCompatibilityEXT-device-parameter]");
6806         abort(); /* Intentionally fail so user can correct issue. */
6807     }
6808     disp->GetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility);
6809 }
6810 
GetMicromapBuildSizesEXT(VkDevice device,VkAccelerationStructureBuildTypeKHR buildType,const VkMicromapBuildInfoEXT * pBuildInfo,VkMicromapBuildSizesInfoEXT * pSizeInfo)6811 VKAPI_ATTR void VKAPI_CALL GetMicromapBuildSizesEXT(
6812     VkDevice                                    device,
6813     VkAccelerationStructureBuildTypeKHR         buildType,
6814     const VkMicromapBuildInfoEXT*               pBuildInfo,
6815     VkMicromapBuildSizesInfoEXT*                pSizeInfo) {
6816     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6817     if (NULL == disp) {
6818         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6819                    "vkGetMicromapBuildSizesEXT: Invalid device "
6820                    "[VUID-vkGetMicromapBuildSizesEXT-device-parameter]");
6821         abort(); /* Intentionally fail so user can correct issue. */
6822     }
6823     disp->GetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo);
6824 }
6825 
6826 
6827 // ---- VK_EXT_pageable_device_local_memory extension trampoline/terminators
6828 
SetDeviceMemoryPriorityEXT(VkDevice device,VkDeviceMemory memory,float priority)6829 VKAPI_ATTR void VKAPI_CALL SetDeviceMemoryPriorityEXT(
6830     VkDevice                                    device,
6831     VkDeviceMemory                              memory,
6832     float                                       priority) {
6833     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6834     if (NULL == disp) {
6835         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6836                    "vkSetDeviceMemoryPriorityEXT: Invalid device "
6837                    "[VUID-vkSetDeviceMemoryPriorityEXT-device-parameter]");
6838         abort(); /* Intentionally fail so user can correct issue. */
6839     }
6840     disp->SetDeviceMemoryPriorityEXT(device, memory, priority);
6841 }
6842 
6843 
6844 // ---- VK_VALVE_descriptor_set_host_mapping extension trampoline/terminators
6845 
GetDescriptorSetLayoutHostMappingInfoVALVE(VkDevice device,const VkDescriptorSetBindingReferenceVALVE * pBindingReference,VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping)6846 VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutHostMappingInfoVALVE(
6847     VkDevice                                    device,
6848     const VkDescriptorSetBindingReferenceVALVE* pBindingReference,
6849     VkDescriptorSetLayoutHostMappingInfoVALVE*  pHostMapping) {
6850     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6851     if (NULL == disp) {
6852         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6853                    "vkGetDescriptorSetLayoutHostMappingInfoVALVE: Invalid device "
6854                    "[VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-device-parameter]");
6855         abort(); /* Intentionally fail so user can correct issue. */
6856     }
6857     disp->GetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping);
6858 }
6859 
GetDescriptorSetHostMappingVALVE(VkDevice device,VkDescriptorSet descriptorSet,void ** ppData)6860 VKAPI_ATTR void VKAPI_CALL GetDescriptorSetHostMappingVALVE(
6861     VkDevice                                    device,
6862     VkDescriptorSet                             descriptorSet,
6863     void**                                      ppData) {
6864     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6865     if (NULL == disp) {
6866         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6867                    "vkGetDescriptorSetHostMappingVALVE: Invalid device "
6868                    "[VUID-vkGetDescriptorSetHostMappingVALVE-device-parameter]");
6869         abort(); /* Intentionally fail so user can correct issue. */
6870     }
6871     disp->GetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData);
6872 }
6873 
6874 
6875 // ---- VK_EXT_extended_dynamic_state3 extension trampoline/terminators
6876 
CmdSetTessellationDomainOriginEXT(VkCommandBuffer commandBuffer,VkTessellationDomainOrigin domainOrigin)6877 VKAPI_ATTR void VKAPI_CALL CmdSetTessellationDomainOriginEXT(
6878     VkCommandBuffer                             commandBuffer,
6879     VkTessellationDomainOrigin                  domainOrigin) {
6880     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6881     if (NULL == disp) {
6882         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6883                    "vkCmdSetTessellationDomainOriginEXT: Invalid commandBuffer "
6884                    "[VUID-vkCmdSetTessellationDomainOriginEXT-commandBuffer-parameter]");
6885         abort(); /* Intentionally fail so user can correct issue. */
6886     }
6887     disp->CmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin);
6888 }
6889 
CmdSetDepthClampEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthClampEnable)6890 VKAPI_ATTR void VKAPI_CALL CmdSetDepthClampEnableEXT(
6891     VkCommandBuffer                             commandBuffer,
6892     VkBool32                                    depthClampEnable) {
6893     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6894     if (NULL == disp) {
6895         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6896                    "vkCmdSetDepthClampEnableEXT: Invalid commandBuffer "
6897                    "[VUID-vkCmdSetDepthClampEnableEXT-commandBuffer-parameter]");
6898         abort(); /* Intentionally fail so user can correct issue. */
6899     }
6900     disp->CmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable);
6901 }
6902 
CmdSetPolygonModeEXT(VkCommandBuffer commandBuffer,VkPolygonMode polygonMode)6903 VKAPI_ATTR void VKAPI_CALL CmdSetPolygonModeEXT(
6904     VkCommandBuffer                             commandBuffer,
6905     VkPolygonMode                               polygonMode) {
6906     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6907     if (NULL == disp) {
6908         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6909                    "vkCmdSetPolygonModeEXT: Invalid commandBuffer "
6910                    "[VUID-vkCmdSetPolygonModeEXT-commandBuffer-parameter]");
6911         abort(); /* Intentionally fail so user can correct issue. */
6912     }
6913     disp->CmdSetPolygonModeEXT(commandBuffer, polygonMode);
6914 }
6915 
CmdSetRasterizationSamplesEXT(VkCommandBuffer commandBuffer,VkSampleCountFlagBits rasterizationSamples)6916 VKAPI_ATTR void VKAPI_CALL CmdSetRasterizationSamplesEXT(
6917     VkCommandBuffer                             commandBuffer,
6918     VkSampleCountFlagBits                       rasterizationSamples) {
6919     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6920     if (NULL == disp) {
6921         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6922                    "vkCmdSetRasterizationSamplesEXT: Invalid commandBuffer "
6923                    "[VUID-vkCmdSetRasterizationSamplesEXT-commandBuffer-parameter]");
6924         abort(); /* Intentionally fail so user can correct issue. */
6925     }
6926     disp->CmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples);
6927 }
6928 
CmdSetSampleMaskEXT(VkCommandBuffer commandBuffer,VkSampleCountFlagBits samples,const VkSampleMask * pSampleMask)6929 VKAPI_ATTR void VKAPI_CALL CmdSetSampleMaskEXT(
6930     VkCommandBuffer                             commandBuffer,
6931     VkSampleCountFlagBits                       samples,
6932     const VkSampleMask*                         pSampleMask) {
6933     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6934     if (NULL == disp) {
6935         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6936                    "vkCmdSetSampleMaskEXT: Invalid commandBuffer "
6937                    "[VUID-vkCmdSetSampleMaskEXT-commandBuffer-parameter]");
6938         abort(); /* Intentionally fail so user can correct issue. */
6939     }
6940     disp->CmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask);
6941 }
6942 
CmdSetAlphaToCoverageEnableEXT(VkCommandBuffer commandBuffer,VkBool32 alphaToCoverageEnable)6943 VKAPI_ATTR void VKAPI_CALL CmdSetAlphaToCoverageEnableEXT(
6944     VkCommandBuffer                             commandBuffer,
6945     VkBool32                                    alphaToCoverageEnable) {
6946     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6947     if (NULL == disp) {
6948         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6949                    "vkCmdSetAlphaToCoverageEnableEXT: Invalid commandBuffer "
6950                    "[VUID-vkCmdSetAlphaToCoverageEnableEXT-commandBuffer-parameter]");
6951         abort(); /* Intentionally fail so user can correct issue. */
6952     }
6953     disp->CmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable);
6954 }
6955 
CmdSetAlphaToOneEnableEXT(VkCommandBuffer commandBuffer,VkBool32 alphaToOneEnable)6956 VKAPI_ATTR void VKAPI_CALL CmdSetAlphaToOneEnableEXT(
6957     VkCommandBuffer                             commandBuffer,
6958     VkBool32                                    alphaToOneEnable) {
6959     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6960     if (NULL == disp) {
6961         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6962                    "vkCmdSetAlphaToOneEnableEXT: Invalid commandBuffer "
6963                    "[VUID-vkCmdSetAlphaToOneEnableEXT-commandBuffer-parameter]");
6964         abort(); /* Intentionally fail so user can correct issue. */
6965     }
6966     disp->CmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable);
6967 }
6968 
CmdSetLogicOpEnableEXT(VkCommandBuffer commandBuffer,VkBool32 logicOpEnable)6969 VKAPI_ATTR void VKAPI_CALL CmdSetLogicOpEnableEXT(
6970     VkCommandBuffer                             commandBuffer,
6971     VkBool32                                    logicOpEnable) {
6972     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6973     if (NULL == disp) {
6974         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6975                    "vkCmdSetLogicOpEnableEXT: Invalid commandBuffer "
6976                    "[VUID-vkCmdSetLogicOpEnableEXT-commandBuffer-parameter]");
6977         abort(); /* Intentionally fail so user can correct issue. */
6978     }
6979     disp->CmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable);
6980 }
6981 
CmdSetColorBlendEnableEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkBool32 * pColorBlendEnables)6982 VKAPI_ATTR void VKAPI_CALL CmdSetColorBlendEnableEXT(
6983     VkCommandBuffer                             commandBuffer,
6984     uint32_t                                    firstAttachment,
6985     uint32_t                                    attachmentCount,
6986     const VkBool32*                             pColorBlendEnables) {
6987     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6988     if (NULL == disp) {
6989         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6990                    "vkCmdSetColorBlendEnableEXT: Invalid commandBuffer "
6991                    "[VUID-vkCmdSetColorBlendEnableEXT-commandBuffer-parameter]");
6992         abort(); /* Intentionally fail so user can correct issue. */
6993     }
6994     disp->CmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables);
6995 }
6996 
CmdSetColorBlendEquationEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkColorBlendEquationEXT * pColorBlendEquations)6997 VKAPI_ATTR void VKAPI_CALL CmdSetColorBlendEquationEXT(
6998     VkCommandBuffer                             commandBuffer,
6999     uint32_t                                    firstAttachment,
7000     uint32_t                                    attachmentCount,
7001     const VkColorBlendEquationEXT*              pColorBlendEquations) {
7002     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7003     if (NULL == disp) {
7004         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7005                    "vkCmdSetColorBlendEquationEXT: Invalid commandBuffer "
7006                    "[VUID-vkCmdSetColorBlendEquationEXT-commandBuffer-parameter]");
7007         abort(); /* Intentionally fail so user can correct issue. */
7008     }
7009     disp->CmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations);
7010 }
7011 
CmdSetColorWriteMaskEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkColorComponentFlags * pColorWriteMasks)7012 VKAPI_ATTR void VKAPI_CALL CmdSetColorWriteMaskEXT(
7013     VkCommandBuffer                             commandBuffer,
7014     uint32_t                                    firstAttachment,
7015     uint32_t                                    attachmentCount,
7016     const VkColorComponentFlags*                pColorWriteMasks) {
7017     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7018     if (NULL == disp) {
7019         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7020                    "vkCmdSetColorWriteMaskEXT: Invalid commandBuffer "
7021                    "[VUID-vkCmdSetColorWriteMaskEXT-commandBuffer-parameter]");
7022         abort(); /* Intentionally fail so user can correct issue. */
7023     }
7024     disp->CmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks);
7025 }
7026 
CmdSetRasterizationStreamEXT(VkCommandBuffer commandBuffer,uint32_t rasterizationStream)7027 VKAPI_ATTR void VKAPI_CALL CmdSetRasterizationStreamEXT(
7028     VkCommandBuffer                             commandBuffer,
7029     uint32_t                                    rasterizationStream) {
7030     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7031     if (NULL == disp) {
7032         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7033                    "vkCmdSetRasterizationStreamEXT: Invalid commandBuffer "
7034                    "[VUID-vkCmdSetRasterizationStreamEXT-commandBuffer-parameter]");
7035         abort(); /* Intentionally fail so user can correct issue. */
7036     }
7037     disp->CmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream);
7038 }
7039 
CmdSetConservativeRasterizationModeEXT(VkCommandBuffer commandBuffer,VkConservativeRasterizationModeEXT conservativeRasterizationMode)7040 VKAPI_ATTR void VKAPI_CALL CmdSetConservativeRasterizationModeEXT(
7041     VkCommandBuffer                             commandBuffer,
7042     VkConservativeRasterizationModeEXT          conservativeRasterizationMode) {
7043     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7044     if (NULL == disp) {
7045         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7046                    "vkCmdSetConservativeRasterizationModeEXT: Invalid commandBuffer "
7047                    "[VUID-vkCmdSetConservativeRasterizationModeEXT-commandBuffer-parameter]");
7048         abort(); /* Intentionally fail so user can correct issue. */
7049     }
7050     disp->CmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode);
7051 }
7052 
CmdSetExtraPrimitiveOverestimationSizeEXT(VkCommandBuffer commandBuffer,float extraPrimitiveOverestimationSize)7053 VKAPI_ATTR void VKAPI_CALL CmdSetExtraPrimitiveOverestimationSizeEXT(
7054     VkCommandBuffer                             commandBuffer,
7055     float                                       extraPrimitiveOverestimationSize) {
7056     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7057     if (NULL == disp) {
7058         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7059                    "vkCmdSetExtraPrimitiveOverestimationSizeEXT: Invalid commandBuffer "
7060                    "[VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-commandBuffer-parameter]");
7061         abort(); /* Intentionally fail so user can correct issue. */
7062     }
7063     disp->CmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize);
7064 }
7065 
CmdSetDepthClipEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthClipEnable)7066 VKAPI_ATTR void VKAPI_CALL CmdSetDepthClipEnableEXT(
7067     VkCommandBuffer                             commandBuffer,
7068     VkBool32                                    depthClipEnable) {
7069     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7070     if (NULL == disp) {
7071         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7072                    "vkCmdSetDepthClipEnableEXT: Invalid commandBuffer "
7073                    "[VUID-vkCmdSetDepthClipEnableEXT-commandBuffer-parameter]");
7074         abort(); /* Intentionally fail so user can correct issue. */
7075     }
7076     disp->CmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable);
7077 }
7078 
CmdSetSampleLocationsEnableEXT(VkCommandBuffer commandBuffer,VkBool32 sampleLocationsEnable)7079 VKAPI_ATTR void VKAPI_CALL CmdSetSampleLocationsEnableEXT(
7080     VkCommandBuffer                             commandBuffer,
7081     VkBool32                                    sampleLocationsEnable) {
7082     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7083     if (NULL == disp) {
7084         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7085                    "vkCmdSetSampleLocationsEnableEXT: Invalid commandBuffer "
7086                    "[VUID-vkCmdSetSampleLocationsEnableEXT-commandBuffer-parameter]");
7087         abort(); /* Intentionally fail so user can correct issue. */
7088     }
7089     disp->CmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable);
7090 }
7091 
CmdSetColorBlendAdvancedEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkColorBlendAdvancedEXT * pColorBlendAdvanced)7092 VKAPI_ATTR void VKAPI_CALL CmdSetColorBlendAdvancedEXT(
7093     VkCommandBuffer                             commandBuffer,
7094     uint32_t                                    firstAttachment,
7095     uint32_t                                    attachmentCount,
7096     const VkColorBlendAdvancedEXT*              pColorBlendAdvanced) {
7097     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7098     if (NULL == disp) {
7099         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7100                    "vkCmdSetColorBlendAdvancedEXT: Invalid commandBuffer "
7101                    "[VUID-vkCmdSetColorBlendAdvancedEXT-commandBuffer-parameter]");
7102         abort(); /* Intentionally fail so user can correct issue. */
7103     }
7104     disp->CmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced);
7105 }
7106 
CmdSetProvokingVertexModeEXT(VkCommandBuffer commandBuffer,VkProvokingVertexModeEXT provokingVertexMode)7107 VKAPI_ATTR void VKAPI_CALL CmdSetProvokingVertexModeEXT(
7108     VkCommandBuffer                             commandBuffer,
7109     VkProvokingVertexModeEXT                    provokingVertexMode) {
7110     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7111     if (NULL == disp) {
7112         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7113                    "vkCmdSetProvokingVertexModeEXT: Invalid commandBuffer "
7114                    "[VUID-vkCmdSetProvokingVertexModeEXT-commandBuffer-parameter]");
7115         abort(); /* Intentionally fail so user can correct issue. */
7116     }
7117     disp->CmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode);
7118 }
7119 
CmdSetLineRasterizationModeEXT(VkCommandBuffer commandBuffer,VkLineRasterizationModeEXT lineRasterizationMode)7120 VKAPI_ATTR void VKAPI_CALL CmdSetLineRasterizationModeEXT(
7121     VkCommandBuffer                             commandBuffer,
7122     VkLineRasterizationModeEXT                  lineRasterizationMode) {
7123     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7124     if (NULL == disp) {
7125         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7126                    "vkCmdSetLineRasterizationModeEXT: Invalid commandBuffer "
7127                    "[VUID-vkCmdSetLineRasterizationModeEXT-commandBuffer-parameter]");
7128         abort(); /* Intentionally fail so user can correct issue. */
7129     }
7130     disp->CmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode);
7131 }
7132 
CmdSetLineStippleEnableEXT(VkCommandBuffer commandBuffer,VkBool32 stippledLineEnable)7133 VKAPI_ATTR void VKAPI_CALL CmdSetLineStippleEnableEXT(
7134     VkCommandBuffer                             commandBuffer,
7135     VkBool32                                    stippledLineEnable) {
7136     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7137     if (NULL == disp) {
7138         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7139                    "vkCmdSetLineStippleEnableEXT: Invalid commandBuffer "
7140                    "[VUID-vkCmdSetLineStippleEnableEXT-commandBuffer-parameter]");
7141         abort(); /* Intentionally fail so user can correct issue. */
7142     }
7143     disp->CmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable);
7144 }
7145 
CmdSetDepthClipNegativeOneToOneEXT(VkCommandBuffer commandBuffer,VkBool32 negativeOneToOne)7146 VKAPI_ATTR void VKAPI_CALL CmdSetDepthClipNegativeOneToOneEXT(
7147     VkCommandBuffer                             commandBuffer,
7148     VkBool32                                    negativeOneToOne) {
7149     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7150     if (NULL == disp) {
7151         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7152                    "vkCmdSetDepthClipNegativeOneToOneEXT: Invalid commandBuffer "
7153                    "[VUID-vkCmdSetDepthClipNegativeOneToOneEXT-commandBuffer-parameter]");
7154         abort(); /* Intentionally fail so user can correct issue. */
7155     }
7156     disp->CmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne);
7157 }
7158 
CmdSetViewportWScalingEnableNV(VkCommandBuffer commandBuffer,VkBool32 viewportWScalingEnable)7159 VKAPI_ATTR void VKAPI_CALL CmdSetViewportWScalingEnableNV(
7160     VkCommandBuffer                             commandBuffer,
7161     VkBool32                                    viewportWScalingEnable) {
7162     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7163     if (NULL == disp) {
7164         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7165                    "vkCmdSetViewportWScalingEnableNV: Invalid commandBuffer "
7166                    "[VUID-vkCmdSetViewportWScalingEnableNV-commandBuffer-parameter]");
7167         abort(); /* Intentionally fail so user can correct issue. */
7168     }
7169     disp->CmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable);
7170 }
7171 
CmdSetViewportSwizzleNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewportSwizzleNV * pViewportSwizzles)7172 VKAPI_ATTR void VKAPI_CALL CmdSetViewportSwizzleNV(
7173     VkCommandBuffer                             commandBuffer,
7174     uint32_t                                    firstViewport,
7175     uint32_t                                    viewportCount,
7176     const VkViewportSwizzleNV*                  pViewportSwizzles) {
7177     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7178     if (NULL == disp) {
7179         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7180                    "vkCmdSetViewportSwizzleNV: Invalid commandBuffer "
7181                    "[VUID-vkCmdSetViewportSwizzleNV-commandBuffer-parameter]");
7182         abort(); /* Intentionally fail so user can correct issue. */
7183     }
7184     disp->CmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles);
7185 }
7186 
CmdSetCoverageToColorEnableNV(VkCommandBuffer commandBuffer,VkBool32 coverageToColorEnable)7187 VKAPI_ATTR void VKAPI_CALL CmdSetCoverageToColorEnableNV(
7188     VkCommandBuffer                             commandBuffer,
7189     VkBool32                                    coverageToColorEnable) {
7190     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7191     if (NULL == disp) {
7192         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7193                    "vkCmdSetCoverageToColorEnableNV: Invalid commandBuffer "
7194                    "[VUID-vkCmdSetCoverageToColorEnableNV-commandBuffer-parameter]");
7195         abort(); /* Intentionally fail so user can correct issue. */
7196     }
7197     disp->CmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable);
7198 }
7199 
CmdSetCoverageToColorLocationNV(VkCommandBuffer commandBuffer,uint32_t coverageToColorLocation)7200 VKAPI_ATTR void VKAPI_CALL CmdSetCoverageToColorLocationNV(
7201     VkCommandBuffer                             commandBuffer,
7202     uint32_t                                    coverageToColorLocation) {
7203     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7204     if (NULL == disp) {
7205         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7206                    "vkCmdSetCoverageToColorLocationNV: Invalid commandBuffer "
7207                    "[VUID-vkCmdSetCoverageToColorLocationNV-commandBuffer-parameter]");
7208         abort(); /* Intentionally fail so user can correct issue. */
7209     }
7210     disp->CmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation);
7211 }
7212 
CmdSetCoverageModulationModeNV(VkCommandBuffer commandBuffer,VkCoverageModulationModeNV coverageModulationMode)7213 VKAPI_ATTR void VKAPI_CALL CmdSetCoverageModulationModeNV(
7214     VkCommandBuffer                             commandBuffer,
7215     VkCoverageModulationModeNV                  coverageModulationMode) {
7216     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7217     if (NULL == disp) {
7218         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7219                    "vkCmdSetCoverageModulationModeNV: Invalid commandBuffer "
7220                    "[VUID-vkCmdSetCoverageModulationModeNV-commandBuffer-parameter]");
7221         abort(); /* Intentionally fail so user can correct issue. */
7222     }
7223     disp->CmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode);
7224 }
7225 
CmdSetCoverageModulationTableEnableNV(VkCommandBuffer commandBuffer,VkBool32 coverageModulationTableEnable)7226 VKAPI_ATTR void VKAPI_CALL CmdSetCoverageModulationTableEnableNV(
7227     VkCommandBuffer                             commandBuffer,
7228     VkBool32                                    coverageModulationTableEnable) {
7229     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7230     if (NULL == disp) {
7231         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7232                    "vkCmdSetCoverageModulationTableEnableNV: Invalid commandBuffer "
7233                    "[VUID-vkCmdSetCoverageModulationTableEnableNV-commandBuffer-parameter]");
7234         abort(); /* Intentionally fail so user can correct issue. */
7235     }
7236     disp->CmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable);
7237 }
7238 
CmdSetCoverageModulationTableNV(VkCommandBuffer commandBuffer,uint32_t coverageModulationTableCount,const float * pCoverageModulationTable)7239 VKAPI_ATTR void VKAPI_CALL CmdSetCoverageModulationTableNV(
7240     VkCommandBuffer                             commandBuffer,
7241     uint32_t                                    coverageModulationTableCount,
7242     const float*                                pCoverageModulationTable) {
7243     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7244     if (NULL == disp) {
7245         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7246                    "vkCmdSetCoverageModulationTableNV: Invalid commandBuffer "
7247                    "[VUID-vkCmdSetCoverageModulationTableNV-commandBuffer-parameter]");
7248         abort(); /* Intentionally fail so user can correct issue. */
7249     }
7250     disp->CmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable);
7251 }
7252 
CmdSetShadingRateImageEnableNV(VkCommandBuffer commandBuffer,VkBool32 shadingRateImageEnable)7253 VKAPI_ATTR void VKAPI_CALL CmdSetShadingRateImageEnableNV(
7254     VkCommandBuffer                             commandBuffer,
7255     VkBool32                                    shadingRateImageEnable) {
7256     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7257     if (NULL == disp) {
7258         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7259                    "vkCmdSetShadingRateImageEnableNV: Invalid commandBuffer "
7260                    "[VUID-vkCmdSetShadingRateImageEnableNV-commandBuffer-parameter]");
7261         abort(); /* Intentionally fail so user can correct issue. */
7262     }
7263     disp->CmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable);
7264 }
7265 
CmdSetRepresentativeFragmentTestEnableNV(VkCommandBuffer commandBuffer,VkBool32 representativeFragmentTestEnable)7266 VKAPI_ATTR void VKAPI_CALL CmdSetRepresentativeFragmentTestEnableNV(
7267     VkCommandBuffer                             commandBuffer,
7268     VkBool32                                    representativeFragmentTestEnable) {
7269     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7270     if (NULL == disp) {
7271         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7272                    "vkCmdSetRepresentativeFragmentTestEnableNV: Invalid commandBuffer "
7273                    "[VUID-vkCmdSetRepresentativeFragmentTestEnableNV-commandBuffer-parameter]");
7274         abort(); /* Intentionally fail so user can correct issue. */
7275     }
7276     disp->CmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable);
7277 }
7278 
CmdSetCoverageReductionModeNV(VkCommandBuffer commandBuffer,VkCoverageReductionModeNV coverageReductionMode)7279 VKAPI_ATTR void VKAPI_CALL CmdSetCoverageReductionModeNV(
7280     VkCommandBuffer                             commandBuffer,
7281     VkCoverageReductionModeNV                   coverageReductionMode) {
7282     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7283     if (NULL == disp) {
7284         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7285                    "vkCmdSetCoverageReductionModeNV: Invalid commandBuffer "
7286                    "[VUID-vkCmdSetCoverageReductionModeNV-commandBuffer-parameter]");
7287         abort(); /* Intentionally fail so user can correct issue. */
7288     }
7289     disp->CmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode);
7290 }
7291 
7292 
7293 // ---- VK_EXT_shader_module_identifier extension trampoline/terminators
7294 
GetShaderModuleIdentifierEXT(VkDevice device,VkShaderModule shaderModule,VkShaderModuleIdentifierEXT * pIdentifier)7295 VKAPI_ATTR void VKAPI_CALL GetShaderModuleIdentifierEXT(
7296     VkDevice                                    device,
7297     VkShaderModule                              shaderModule,
7298     VkShaderModuleIdentifierEXT*                pIdentifier) {
7299     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7300     if (NULL == disp) {
7301         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7302                    "vkGetShaderModuleIdentifierEXT: Invalid device "
7303                    "[VUID-vkGetShaderModuleIdentifierEXT-device-parameter]");
7304         abort(); /* Intentionally fail so user can correct issue. */
7305     }
7306     disp->GetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier);
7307 }
7308 
GetShaderModuleCreateInfoIdentifierEXT(VkDevice device,const VkShaderModuleCreateInfo * pCreateInfo,VkShaderModuleIdentifierEXT * pIdentifier)7309 VKAPI_ATTR void VKAPI_CALL GetShaderModuleCreateInfoIdentifierEXT(
7310     VkDevice                                    device,
7311     const VkShaderModuleCreateInfo*             pCreateInfo,
7312     VkShaderModuleIdentifierEXT*                pIdentifier) {
7313     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7314     if (NULL == disp) {
7315         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7316                    "vkGetShaderModuleCreateInfoIdentifierEXT: Invalid device "
7317                    "[VUID-vkGetShaderModuleCreateInfoIdentifierEXT-device-parameter]");
7318         abort(); /* Intentionally fail so user can correct issue. */
7319     }
7320     disp->GetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier);
7321 }
7322 
7323 
7324 // ---- VK_NV_optical_flow extension trampoline/terminators
7325 
GetPhysicalDeviceOpticalFlowImageFormatsNV(VkPhysicalDevice physicalDevice,const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo,uint32_t * pFormatCount,VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties)7326 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceOpticalFlowImageFormatsNV(
7327     VkPhysicalDevice                            physicalDevice,
7328     const VkOpticalFlowImageFormatInfoNV*       pOpticalFlowImageFormatInfo,
7329     uint32_t*                                   pFormatCount,
7330     VkOpticalFlowImageFormatPropertiesNV*       pImageFormatProperties) {
7331     const VkLayerInstanceDispatchTable *disp;
7332     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
7333     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
7334         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7335                    "vkGetPhysicalDeviceOpticalFlowImageFormatsNV: Invalid physicalDevice "
7336                    "[VUID-vkGetPhysicalDeviceOpticalFlowImageFormatsNV-physicalDevice-parameter]");
7337         abort(); /* Intentionally fail so user can correct issue. */
7338     }
7339     disp = loader_get_instance_layer_dispatch(physicalDevice);
7340     return disp->GetPhysicalDeviceOpticalFlowImageFormatsNV(unwrapped_phys_dev, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties);
7341 }
7342 
terminator_GetPhysicalDeviceOpticalFlowImageFormatsNV(VkPhysicalDevice physicalDevice,const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo,uint32_t * pFormatCount,VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties)7343 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceOpticalFlowImageFormatsNV(
7344     VkPhysicalDevice                            physicalDevice,
7345     const VkOpticalFlowImageFormatInfoNV*       pOpticalFlowImageFormatInfo,
7346     uint32_t*                                   pFormatCount,
7347     VkOpticalFlowImageFormatPropertiesNV*       pImageFormatProperties) {
7348     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
7349     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
7350     if (NULL == icd_term->dispatch.GetPhysicalDeviceOpticalFlowImageFormatsNV) {
7351         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
7352                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceOpticalFlowImageFormatsNV");
7353         abort(); /* Intentionally fail so user can correct issue. */
7354     }
7355     return icd_term->dispatch.GetPhysicalDeviceOpticalFlowImageFormatsNV(phys_dev_term->phys_dev, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties);
7356 }
7357 
CreateOpticalFlowSessionNV(VkDevice device,const VkOpticalFlowSessionCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkOpticalFlowSessionNV * pSession)7358 VKAPI_ATTR VkResult VKAPI_CALL CreateOpticalFlowSessionNV(
7359     VkDevice                                    device,
7360     const VkOpticalFlowSessionCreateInfoNV*     pCreateInfo,
7361     const VkAllocationCallbacks*                pAllocator,
7362     VkOpticalFlowSessionNV*                     pSession) {
7363     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7364     if (NULL == disp) {
7365         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7366                    "vkCreateOpticalFlowSessionNV: Invalid device "
7367                    "[VUID-vkCreateOpticalFlowSessionNV-device-parameter]");
7368         abort(); /* Intentionally fail so user can correct issue. */
7369     }
7370     return disp->CreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession);
7371 }
7372 
DestroyOpticalFlowSessionNV(VkDevice device,VkOpticalFlowSessionNV session,const VkAllocationCallbacks * pAllocator)7373 VKAPI_ATTR void VKAPI_CALL DestroyOpticalFlowSessionNV(
7374     VkDevice                                    device,
7375     VkOpticalFlowSessionNV                      session,
7376     const VkAllocationCallbacks*                pAllocator) {
7377     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7378     if (NULL == disp) {
7379         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7380                    "vkDestroyOpticalFlowSessionNV: Invalid device "
7381                    "[VUID-vkDestroyOpticalFlowSessionNV-device-parameter]");
7382         abort(); /* Intentionally fail so user can correct issue. */
7383     }
7384     disp->DestroyOpticalFlowSessionNV(device, session, pAllocator);
7385 }
7386 
BindOpticalFlowSessionImageNV(VkDevice device,VkOpticalFlowSessionNV session,VkOpticalFlowSessionBindingPointNV bindingPoint,VkImageView view,VkImageLayout layout)7387 VKAPI_ATTR VkResult VKAPI_CALL BindOpticalFlowSessionImageNV(
7388     VkDevice                                    device,
7389     VkOpticalFlowSessionNV                      session,
7390     VkOpticalFlowSessionBindingPointNV          bindingPoint,
7391     VkImageView                                 view,
7392     VkImageLayout                               layout) {
7393     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7394     if (NULL == disp) {
7395         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7396                    "vkBindOpticalFlowSessionImageNV: Invalid device "
7397                    "[VUID-vkBindOpticalFlowSessionImageNV-device-parameter]");
7398         abort(); /* Intentionally fail so user can correct issue. */
7399     }
7400     return disp->BindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout);
7401 }
7402 
CmdOpticalFlowExecuteNV(VkCommandBuffer commandBuffer,VkOpticalFlowSessionNV session,const VkOpticalFlowExecuteInfoNV * pExecuteInfo)7403 VKAPI_ATTR void VKAPI_CALL CmdOpticalFlowExecuteNV(
7404     VkCommandBuffer                             commandBuffer,
7405     VkOpticalFlowSessionNV                      session,
7406     const VkOpticalFlowExecuteInfoNV*           pExecuteInfo) {
7407     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7408     if (NULL == disp) {
7409         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7410                    "vkCmdOpticalFlowExecuteNV: Invalid commandBuffer "
7411                    "[VUID-vkCmdOpticalFlowExecuteNV-commandBuffer-parameter]");
7412         abort(); /* Intentionally fail so user can correct issue. */
7413     }
7414     disp->CmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo);
7415 }
7416 
7417 
7418 // ---- VK_QCOM_tile_properties extension trampoline/terminators
7419 
GetFramebufferTilePropertiesQCOM(VkDevice device,VkFramebuffer framebuffer,uint32_t * pPropertiesCount,VkTilePropertiesQCOM * pProperties)7420 VKAPI_ATTR VkResult VKAPI_CALL GetFramebufferTilePropertiesQCOM(
7421     VkDevice                                    device,
7422     VkFramebuffer                               framebuffer,
7423     uint32_t*                                   pPropertiesCount,
7424     VkTilePropertiesQCOM*                       pProperties) {
7425     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7426     if (NULL == disp) {
7427         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7428                    "vkGetFramebufferTilePropertiesQCOM: Invalid device "
7429                    "[VUID-vkGetFramebufferTilePropertiesQCOM-device-parameter]");
7430         abort(); /* Intentionally fail so user can correct issue. */
7431     }
7432     return disp->GetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties);
7433 }
7434 
GetDynamicRenderingTilePropertiesQCOM(VkDevice device,const VkRenderingInfo * pRenderingInfo,VkTilePropertiesQCOM * pProperties)7435 VKAPI_ATTR VkResult VKAPI_CALL GetDynamicRenderingTilePropertiesQCOM(
7436     VkDevice                                    device,
7437     const VkRenderingInfo*                      pRenderingInfo,
7438     VkTilePropertiesQCOM*                       pProperties) {
7439     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7440     if (NULL == disp) {
7441         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7442                    "vkGetDynamicRenderingTilePropertiesQCOM: Invalid device "
7443                    "[VUID-vkGetDynamicRenderingTilePropertiesQCOM-device-parameter]");
7444         abort(); /* Intentionally fail so user can correct issue. */
7445     }
7446     return disp->GetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties);
7447 }
7448 
7449 
7450 // ---- VK_OHOS_native_buffer extension trampoline/terminators
7451 
7452 #ifdef VK_USE_PLATFORM_OHOS
SetNativeFenceFdOpenHarmony(VkDevice device,int32_t nativeFenceFd,VkSemaphore semaphore,VkFence fence)7453 VKAPI_ATTR VkResult VKAPI_CALL SetNativeFenceFdOpenHarmony(
7454     VkDevice                                    device,
7455     int32_t                                     nativeFenceFd,
7456     VkSemaphore                                 semaphore,
7457     VkFence                                     fence) {
7458     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7459     if (NULL == disp) {
7460         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7461                    "vkSetNativeFenceFdOpenHarmony: Invalid device "
7462                    "[VUID-vkSetNativeFenceFdOpenHarmony-device-parameter]");
7463         abort(); /* Intentionally fail so user can correct issue. */
7464     }
7465     return disp->SetNativeFenceFdOpenHarmony(device, nativeFenceFd, semaphore, fence);
7466 }
7467 
7468 #endif // VK_USE_PLATFORM_OHOS
7469 #ifdef VK_USE_PLATFORM_OHOS
GetNativeFenceFdOpenHarmony(VkQueue queue,uint32_t waitSemaphoreCount,const VkSemaphore * pWaitSemaphores,VkImage image,int32_t * pNativeFenceFd)7470 VKAPI_ATTR VkResult VKAPI_CALL GetNativeFenceFdOpenHarmony(
7471     VkQueue                                     queue,
7472     uint32_t                                    waitSemaphoreCount,
7473     const VkSemaphore*                          pWaitSemaphores,
7474     VkImage                                     image,
7475     int32_t*                                    pNativeFenceFd) {
7476     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
7477     if (NULL == disp) {
7478         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7479                    "vkGetNativeFenceFdOpenHarmony: Invalid queue "
7480                    "[VUID-vkGetNativeFenceFdOpenHarmony-queue-parameter]");
7481         abort(); /* Intentionally fail so user can correct issue. */
7482     }
7483     return disp->GetNativeFenceFdOpenHarmony(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd);
7484 }
7485 
7486 #endif // VK_USE_PLATFORM_OHOS
7487 #ifdef VK_USE_PLATFORM_OHOS
GetSwapchainGrallocUsageOHOS(VkDevice device,VkFormat format,VkImageUsageFlags imageUsage,uint64_t * grallocUsage)7488 VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainGrallocUsageOHOS(
7489     VkDevice                                    device,
7490     VkFormat                                    format,
7491     VkImageUsageFlags                           imageUsage,
7492     uint64_t*                                   grallocUsage) {
7493     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7494     if (NULL == disp) {
7495         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7496                    "vkGetSwapchainGrallocUsageOHOS: Invalid device "
7497                    "[VUID-vkGetSwapchainGrallocUsageOHOS-device-parameter]");
7498         abort(); /* Intentionally fail so user can correct issue. */
7499     }
7500     return disp->GetSwapchainGrallocUsageOHOS(device, format, imageUsage, grallocUsage);
7501 }
7502 
7503 #endif // VK_USE_PLATFORM_OHOS
7504 #ifdef VK_USE_PLATFORM_OHOS
AcquireImageOHOS(VkDevice device,VkImage image,int32_t nativeFenceFd,VkSemaphore semaphore,VkFence fence)7505 VKAPI_ATTR VkResult VKAPI_CALL AcquireImageOHOS(
7506     VkDevice                                    device,
7507     VkImage                                     image,
7508     int32_t                                     nativeFenceFd,
7509     VkSemaphore                                 semaphore,
7510     VkFence                                     fence) {
7511     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7512     if (NULL == disp) {
7513         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7514                    "vkAcquireImageOHOS: Invalid device "
7515                    "[VUID-vkAcquireImageOHOS-device-parameter]");
7516         abort(); /* Intentionally fail so user can correct issue. */
7517     }
7518     return disp->AcquireImageOHOS(device, image, nativeFenceFd, semaphore, fence);
7519 }
7520 
7521 #endif // VK_USE_PLATFORM_OHOS
7522 #ifdef VK_USE_PLATFORM_OHOS
QueueSignalReleaseImageOHOS(VkQueue queue,uint32_t waitSemaphoreCount,const VkSemaphore * pWaitSemaphores,VkImage image,int32_t * pNativeFenceFd)7523 VKAPI_ATTR VkResult VKAPI_CALL QueueSignalReleaseImageOHOS(
7524     VkQueue                                     queue,
7525     uint32_t                                    waitSemaphoreCount,
7526     const VkSemaphore*                          pWaitSemaphores,
7527     VkImage                                     image,
7528     int32_t*                                    pNativeFenceFd) {
7529     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
7530     if (NULL == disp) {
7531         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7532                    "vkQueueSignalReleaseImageOHOS: Invalid queue "
7533                    "[VUID-vkQueueSignalReleaseImageOHOS-queue-parameter]");
7534         abort(); /* Intentionally fail so user can correct issue. */
7535     }
7536     return disp->QueueSignalReleaseImageOHOS(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd);
7537 }
7538 
7539 #endif // VK_USE_PLATFORM_OHOS
7540 
7541 // ---- VK_OHOS_external_memory extension trampoline/terminators
7542 
7543 #ifdef VK_USE_PLATFORM_OHOS
vkGetNativeBufferPropertiesOHOS(VkDevice device,const struct OH_NativeBuffer * buffer,VkNativeBufferPropertiesOHOS * pProperties)7544 VKAPI_ATTR VkResult VKAPI_CALL vkGetNativeBufferPropertiesOHOS(
7545     VkDevice                                    device,
7546     const struct OH_NativeBuffer*               buffer,
7547     VkNativeBufferPropertiesOHOS*               pProperties) {
7548     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7549     if (NULL == disp) {
7550         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7551                    "vkGetNativeBufferPropertiesOHOS: Invalid device "
7552                    "[VUID-vkGetNativeBufferPropertiesOHOS-device-parameter]");
7553         abort(); /* Intentionally fail so user can correct issue. */
7554     }
7555     return disp->GetNativeBufferPropertiesOHOS(device, buffer, pProperties);
7556 }
7557 
7558 #endif // VK_USE_PLATFORM_OHOS
7559 #ifdef VK_USE_PLATFORM_OHOS
vkGetMemoryNativeBufferOHOS(VkDevice device,const VkMemoryGetNativeBufferInfoOHOS * pInfo,struct OH_NativeBuffer ** pBuffer)7560 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryNativeBufferOHOS(
7561     VkDevice                                    device,
7562     const VkMemoryGetNativeBufferInfoOHOS*      pInfo,
7563     struct OH_NativeBuffer**                    pBuffer) {
7564     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7565     if (NULL == disp) {
7566         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7567                    "vkGetMemoryNativeBufferOHOS: Invalid device "
7568                    "[VUID-vkGetMemoryNativeBufferOHOS-device-parameter]");
7569         abort(); /* Intentionally fail so user can correct issue. */
7570     }
7571     return disp->GetMemoryNativeBufferOHOS(device, pInfo, pBuffer);
7572 }
7573 
7574 #endif // VK_USE_PLATFORM_OHOS
7575 
7576 // ---- VK_KHR_acceleration_structure extension trampoline/terminators
7577 
CreateAccelerationStructureKHR(VkDevice device,const VkAccelerationStructureCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkAccelerationStructureKHR * pAccelerationStructure)7578 VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureKHR(
7579     VkDevice                                    device,
7580     const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
7581     const VkAllocationCallbacks*                pAllocator,
7582     VkAccelerationStructureKHR*                 pAccelerationStructure) {
7583     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7584     if (NULL == disp) {
7585         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7586                    "vkCreateAccelerationStructureKHR: Invalid device "
7587                    "[VUID-vkCreateAccelerationStructureKHR-device-parameter]");
7588         abort(); /* Intentionally fail so user can correct issue. */
7589     }
7590     return disp->CreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure);
7591 }
7592 
DestroyAccelerationStructureKHR(VkDevice device,VkAccelerationStructureKHR accelerationStructure,const VkAllocationCallbacks * pAllocator)7593 VKAPI_ATTR void VKAPI_CALL DestroyAccelerationStructureKHR(
7594     VkDevice                                    device,
7595     VkAccelerationStructureKHR                  accelerationStructure,
7596     const VkAllocationCallbacks*                pAllocator) {
7597     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7598     if (NULL == disp) {
7599         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7600                    "vkDestroyAccelerationStructureKHR: Invalid device "
7601                    "[VUID-vkDestroyAccelerationStructureKHR-device-parameter]");
7602         abort(); /* Intentionally fail so user can correct issue. */
7603     }
7604     disp->DestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator);
7605 }
7606 
CmdBuildAccelerationStructuresKHR(VkCommandBuffer commandBuffer,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos)7607 VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructuresKHR(
7608     VkCommandBuffer                             commandBuffer,
7609     uint32_t                                    infoCount,
7610     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7611     const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) {
7612     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7613     if (NULL == disp) {
7614         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7615                    "vkCmdBuildAccelerationStructuresKHR: Invalid commandBuffer "
7616                    "[VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-parameter]");
7617         abort(); /* Intentionally fail so user can correct issue. */
7618     }
7619     disp->CmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos);
7620 }
7621 
CmdBuildAccelerationStructuresIndirectKHR(VkCommandBuffer commandBuffer,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkDeviceAddress * pIndirectDeviceAddresses,const uint32_t * pIndirectStrides,const uint32_t * const * ppMaxPrimitiveCounts)7622 VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructuresIndirectKHR(
7623     VkCommandBuffer                             commandBuffer,
7624     uint32_t                                    infoCount,
7625     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7626     const VkDeviceAddress*                      pIndirectDeviceAddresses,
7627     const uint32_t*                             pIndirectStrides,
7628     const uint32_t* const*                      ppMaxPrimitiveCounts) {
7629     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7630     if (NULL == disp) {
7631         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7632                    "vkCmdBuildAccelerationStructuresIndirectKHR: Invalid commandBuffer "
7633                    "[VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-parameter]");
7634         abort(); /* Intentionally fail so user can correct issue. */
7635     }
7636     disp->CmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts);
7637 }
7638 
BuildAccelerationStructuresKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos)7639 VKAPI_ATTR VkResult VKAPI_CALL BuildAccelerationStructuresKHR(
7640     VkDevice                                    device,
7641     VkDeferredOperationKHR                      deferredOperation,
7642     uint32_t                                    infoCount,
7643     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
7644     const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) {
7645     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7646     if (NULL == disp) {
7647         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7648                    "vkBuildAccelerationStructuresKHR: Invalid device "
7649                    "[VUID-vkBuildAccelerationStructuresKHR-device-parameter]");
7650         abort(); /* Intentionally fail so user can correct issue. */
7651     }
7652     return disp->BuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos);
7653 }
7654 
CopyAccelerationStructureKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyAccelerationStructureInfoKHR * pInfo)7655 VKAPI_ATTR VkResult VKAPI_CALL CopyAccelerationStructureKHR(
7656     VkDevice                                    device,
7657     VkDeferredOperationKHR                      deferredOperation,
7658     const VkCopyAccelerationStructureInfoKHR*   pInfo) {
7659     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7660     if (NULL == disp) {
7661         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7662                    "vkCopyAccelerationStructureKHR: Invalid device "
7663                    "[VUID-vkCopyAccelerationStructureKHR-device-parameter]");
7664         abort(); /* Intentionally fail so user can correct issue. */
7665     }
7666     return disp->CopyAccelerationStructureKHR(device, deferredOperation, pInfo);
7667 }
7668 
CopyAccelerationStructureToMemoryKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo)7669 VKAPI_ATTR VkResult VKAPI_CALL CopyAccelerationStructureToMemoryKHR(
7670     VkDevice                                    device,
7671     VkDeferredOperationKHR                      deferredOperation,
7672     const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) {
7673     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7674     if (NULL == disp) {
7675         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7676                    "vkCopyAccelerationStructureToMemoryKHR: Invalid device "
7677                    "[VUID-vkCopyAccelerationStructureToMemoryKHR-device-parameter]");
7678         abort(); /* Intentionally fail so user can correct issue. */
7679     }
7680     return disp->CopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo);
7681 }
7682 
CopyMemoryToAccelerationStructureKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo)7683 VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToAccelerationStructureKHR(
7684     VkDevice                                    device,
7685     VkDeferredOperationKHR                      deferredOperation,
7686     const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) {
7687     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7688     if (NULL == disp) {
7689         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7690                    "vkCopyMemoryToAccelerationStructureKHR: Invalid device "
7691                    "[VUID-vkCopyMemoryToAccelerationStructureKHR-device-parameter]");
7692         abort(); /* Intentionally fail so user can correct issue. */
7693     }
7694     return disp->CopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo);
7695 }
7696 
WriteAccelerationStructuresPropertiesKHR(VkDevice device,uint32_t accelerationStructureCount,const VkAccelerationStructureKHR * pAccelerationStructures,VkQueryType queryType,size_t dataSize,void * pData,size_t stride)7697 VKAPI_ATTR VkResult VKAPI_CALL WriteAccelerationStructuresPropertiesKHR(
7698     VkDevice                                    device,
7699     uint32_t                                    accelerationStructureCount,
7700     const VkAccelerationStructureKHR*           pAccelerationStructures,
7701     VkQueryType                                 queryType,
7702     size_t                                      dataSize,
7703     void*                                       pData,
7704     size_t                                      stride) {
7705     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7706     if (NULL == disp) {
7707         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7708                    "vkWriteAccelerationStructuresPropertiesKHR: Invalid device "
7709                    "[VUID-vkWriteAccelerationStructuresPropertiesKHR-device-parameter]");
7710         abort(); /* Intentionally fail so user can correct issue. */
7711     }
7712     return disp->WriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride);
7713 }
7714 
CmdCopyAccelerationStructureKHR(VkCommandBuffer commandBuffer,const VkCopyAccelerationStructureInfoKHR * pInfo)7715 VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureKHR(
7716     VkCommandBuffer                             commandBuffer,
7717     const VkCopyAccelerationStructureInfoKHR*   pInfo) {
7718     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7719     if (NULL == disp) {
7720         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7721                    "vkCmdCopyAccelerationStructureKHR: Invalid commandBuffer "
7722                    "[VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-parameter]");
7723         abort(); /* Intentionally fail so user can correct issue. */
7724     }
7725     disp->CmdCopyAccelerationStructureKHR(commandBuffer, pInfo);
7726 }
7727 
CmdCopyAccelerationStructureToMemoryKHR(VkCommandBuffer commandBuffer,const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo)7728 VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureToMemoryKHR(
7729     VkCommandBuffer                             commandBuffer,
7730     const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) {
7731     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7732     if (NULL == disp) {
7733         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7734                    "vkCmdCopyAccelerationStructureToMemoryKHR: Invalid commandBuffer "
7735                    "[VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-parameter]");
7736         abort(); /* Intentionally fail so user can correct issue. */
7737     }
7738     disp->CmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo);
7739 }
7740 
CmdCopyMemoryToAccelerationStructureKHR(VkCommandBuffer commandBuffer,const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo)7741 VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryToAccelerationStructureKHR(
7742     VkCommandBuffer                             commandBuffer,
7743     const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) {
7744     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7745     if (NULL == disp) {
7746         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7747                    "vkCmdCopyMemoryToAccelerationStructureKHR: Invalid commandBuffer "
7748                    "[VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-parameter]");
7749         abort(); /* Intentionally fail so user can correct issue. */
7750     }
7751     disp->CmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo);
7752 }
7753 
GetAccelerationStructureDeviceAddressKHR(VkDevice device,const VkAccelerationStructureDeviceAddressInfoKHR * pInfo)7754 VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetAccelerationStructureDeviceAddressKHR(
7755     VkDevice                                    device,
7756     const VkAccelerationStructureDeviceAddressInfoKHR* pInfo) {
7757     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7758     if (NULL == disp) {
7759         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7760                    "vkGetAccelerationStructureDeviceAddressKHR: Invalid device "
7761                    "[VUID-vkGetAccelerationStructureDeviceAddressKHR-device-parameter]");
7762         abort(); /* Intentionally fail so user can correct issue. */
7763     }
7764     return disp->GetAccelerationStructureDeviceAddressKHR(device, pInfo);
7765 }
7766 
CmdWriteAccelerationStructuresPropertiesKHR(VkCommandBuffer commandBuffer,uint32_t accelerationStructureCount,const VkAccelerationStructureKHR * pAccelerationStructures,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)7767 VKAPI_ATTR void VKAPI_CALL CmdWriteAccelerationStructuresPropertiesKHR(
7768     VkCommandBuffer                             commandBuffer,
7769     uint32_t                                    accelerationStructureCount,
7770     const VkAccelerationStructureKHR*           pAccelerationStructures,
7771     VkQueryType                                 queryType,
7772     VkQueryPool                                 queryPool,
7773     uint32_t                                    firstQuery) {
7774     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7775     if (NULL == disp) {
7776         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7777                    "vkCmdWriteAccelerationStructuresPropertiesKHR: Invalid commandBuffer "
7778                    "[VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-parameter]");
7779         abort(); /* Intentionally fail so user can correct issue. */
7780     }
7781     disp->CmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery);
7782 }
7783 
GetDeviceAccelerationStructureCompatibilityKHR(VkDevice device,const VkAccelerationStructureVersionInfoKHR * pVersionInfo,VkAccelerationStructureCompatibilityKHR * pCompatibility)7784 VKAPI_ATTR void VKAPI_CALL GetDeviceAccelerationStructureCompatibilityKHR(
7785     VkDevice                                    device,
7786     const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
7787     VkAccelerationStructureCompatibilityKHR*    pCompatibility) {
7788     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7789     if (NULL == disp) {
7790         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7791                    "vkGetDeviceAccelerationStructureCompatibilityKHR: Invalid device "
7792                    "[VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-device-parameter]");
7793         abort(); /* Intentionally fail so user can correct issue. */
7794     }
7795     disp->GetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility);
7796 }
7797 
GetAccelerationStructureBuildSizesKHR(VkDevice device,VkAccelerationStructureBuildTypeKHR buildType,const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo,const uint32_t * pMaxPrimitiveCounts,VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo)7798 VKAPI_ATTR void VKAPI_CALL GetAccelerationStructureBuildSizesKHR(
7799     VkDevice                                    device,
7800     VkAccelerationStructureBuildTypeKHR         buildType,
7801     const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
7802     const uint32_t*                             pMaxPrimitiveCounts,
7803     VkAccelerationStructureBuildSizesInfoKHR*   pSizeInfo) {
7804     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7805     if (NULL == disp) {
7806         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7807                    "vkGetAccelerationStructureBuildSizesKHR: Invalid device "
7808                    "[VUID-vkGetAccelerationStructureBuildSizesKHR-device-parameter]");
7809         abort(); /* Intentionally fail so user can correct issue. */
7810     }
7811     disp->GetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo);
7812 }
7813 
7814 
7815 // ---- VK_KHR_ray_tracing_pipeline extension trampoline/terminators
7816 
CmdTraceRaysKHR(VkCommandBuffer commandBuffer,const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable,uint32_t width,uint32_t height,uint32_t depth)7817 VKAPI_ATTR void VKAPI_CALL CmdTraceRaysKHR(
7818     VkCommandBuffer                             commandBuffer,
7819     const VkStridedDeviceAddressRegionKHR*      pRaygenShaderBindingTable,
7820     const VkStridedDeviceAddressRegionKHR*      pMissShaderBindingTable,
7821     const VkStridedDeviceAddressRegionKHR*      pHitShaderBindingTable,
7822     const VkStridedDeviceAddressRegionKHR*      pCallableShaderBindingTable,
7823     uint32_t                                    width,
7824     uint32_t                                    height,
7825     uint32_t                                    depth) {
7826     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7827     if (NULL == disp) {
7828         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7829                    "vkCmdTraceRaysKHR: Invalid commandBuffer "
7830                    "[VUID-vkCmdTraceRaysKHR-commandBuffer-parameter]");
7831         abort(); /* Intentionally fail so user can correct issue. */
7832     }
7833     disp->CmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth);
7834 }
7835 
CreateRayTracingPipelinesKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkRayTracingPipelineCreateInfoKHR * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)7836 VKAPI_ATTR VkResult VKAPI_CALL CreateRayTracingPipelinesKHR(
7837     VkDevice                                    device,
7838     VkDeferredOperationKHR                      deferredOperation,
7839     VkPipelineCache                             pipelineCache,
7840     uint32_t                                    createInfoCount,
7841     const VkRayTracingPipelineCreateInfoKHR*    pCreateInfos,
7842     const VkAllocationCallbacks*                pAllocator,
7843     VkPipeline*                                 pPipelines) {
7844     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7845     if (NULL == disp) {
7846         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7847                    "vkCreateRayTracingPipelinesKHR: Invalid device "
7848                    "[VUID-vkCreateRayTracingPipelinesKHR-device-parameter]");
7849         abort(); /* Intentionally fail so user can correct issue. */
7850     }
7851     return disp->CreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
7852 }
7853 
GetRayTracingCaptureReplayShaderGroupHandlesKHR(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)7854 VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingCaptureReplayShaderGroupHandlesKHR(
7855     VkDevice                                    device,
7856     VkPipeline                                  pipeline,
7857     uint32_t                                    firstGroup,
7858     uint32_t                                    groupCount,
7859     size_t                                      dataSize,
7860     void*                                       pData) {
7861     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7862     if (NULL == disp) {
7863         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7864                    "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR: Invalid device "
7865                    "[VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-device-parameter]");
7866         abort(); /* Intentionally fail so user can correct issue. */
7867     }
7868     return disp->GetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData);
7869 }
7870 
CmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer,const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable,VkDeviceAddress indirectDeviceAddress)7871 VKAPI_ATTR void VKAPI_CALL CmdTraceRaysIndirectKHR(
7872     VkCommandBuffer                             commandBuffer,
7873     const VkStridedDeviceAddressRegionKHR*      pRaygenShaderBindingTable,
7874     const VkStridedDeviceAddressRegionKHR*      pMissShaderBindingTable,
7875     const VkStridedDeviceAddressRegionKHR*      pHitShaderBindingTable,
7876     const VkStridedDeviceAddressRegionKHR*      pCallableShaderBindingTable,
7877     VkDeviceAddress                             indirectDeviceAddress) {
7878     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7879     if (NULL == disp) {
7880         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7881                    "vkCmdTraceRaysIndirectKHR: Invalid commandBuffer "
7882                    "[VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-parameter]");
7883         abort(); /* Intentionally fail so user can correct issue. */
7884     }
7885     disp->CmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress);
7886 }
7887 
GetRayTracingShaderGroupStackSizeKHR(VkDevice device,VkPipeline pipeline,uint32_t group,VkShaderGroupShaderKHR groupShader)7888 VKAPI_ATTR VkDeviceSize VKAPI_CALL GetRayTracingShaderGroupStackSizeKHR(
7889     VkDevice                                    device,
7890     VkPipeline                                  pipeline,
7891     uint32_t                                    group,
7892     VkShaderGroupShaderKHR                      groupShader) {
7893     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7894     if (NULL == disp) {
7895         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7896                    "vkGetRayTracingShaderGroupStackSizeKHR: Invalid device "
7897                    "[VUID-vkGetRayTracingShaderGroupStackSizeKHR-device-parameter]");
7898         abort(); /* Intentionally fail so user can correct issue. */
7899     }
7900     return disp->GetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader);
7901 }
7902 
CmdSetRayTracingPipelineStackSizeKHR(VkCommandBuffer commandBuffer,uint32_t pipelineStackSize)7903 VKAPI_ATTR void VKAPI_CALL CmdSetRayTracingPipelineStackSizeKHR(
7904     VkCommandBuffer                             commandBuffer,
7905     uint32_t                                    pipelineStackSize) {
7906     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7907     if (NULL == disp) {
7908         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7909                    "vkCmdSetRayTracingPipelineStackSizeKHR: Invalid commandBuffer "
7910                    "[VUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-parameter]");
7911         abort(); /* Intentionally fail so user can correct issue. */
7912     }
7913     disp->CmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize);
7914 }
7915 
7916 
7917 // ---- VK_EXT_mesh_shader extension trampoline/terminators
7918 
CmdDrawMeshTasksEXT(VkCommandBuffer commandBuffer,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)7919 VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksEXT(
7920     VkCommandBuffer                             commandBuffer,
7921     uint32_t                                    groupCountX,
7922     uint32_t                                    groupCountY,
7923     uint32_t                                    groupCountZ) {
7924     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7925     if (NULL == disp) {
7926         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7927                    "vkCmdDrawMeshTasksEXT: Invalid commandBuffer "
7928                    "[VUID-vkCmdDrawMeshTasksEXT-commandBuffer-parameter]");
7929         abort(); /* Intentionally fail so user can correct issue. */
7930     }
7931     disp->CmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ);
7932 }
7933 
CmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)7934 VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectEXT(
7935     VkCommandBuffer                             commandBuffer,
7936     VkBuffer                                    buffer,
7937     VkDeviceSize                                offset,
7938     uint32_t                                    drawCount,
7939     uint32_t                                    stride) {
7940     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7941     if (NULL == disp) {
7942         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7943                    "vkCmdDrawMeshTasksIndirectEXT: Invalid commandBuffer "
7944                    "[VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-parameter]");
7945         abort(); /* Intentionally fail so user can correct issue. */
7946     }
7947     disp->CmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride);
7948 }
7949 
CmdDrawMeshTasksIndirectCountEXT(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)7950 VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectCountEXT(
7951     VkCommandBuffer                             commandBuffer,
7952     VkBuffer                                    buffer,
7953     VkDeviceSize                                offset,
7954     VkBuffer                                    countBuffer,
7955     VkDeviceSize                                countBufferOffset,
7956     uint32_t                                    maxDrawCount,
7957     uint32_t                                    stride) {
7958     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7959     if (NULL == disp) {
7960         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7961                    "vkCmdDrawMeshTasksIndirectCountEXT: Invalid commandBuffer "
7962                    "[VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-parameter]");
7963         abort(); /* Intentionally fail so user can correct issue. */
7964     }
7965     disp->CmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
7966 }
7967 
7968 // GPA helpers for extensions
extension_instance_gpa(struct loader_instance * ptr_instance,const char * name,void ** addr)7969 bool extension_instance_gpa(struct loader_instance *ptr_instance, const char *name, void **addr) {
7970     *addr = NULL;
7971 
7972 
7973     // ---- VK_KHR_video_queue extension commands
7974 #ifdef VK_ENABLE_BETA_EXTENSIONS
7975     if (!strcmp("vkGetPhysicalDeviceVideoCapabilitiesKHR", name)) {
7976         *addr = (void *)GetPhysicalDeviceVideoCapabilitiesKHR;
7977         return true;
7978     }
7979 #endif // VK_ENABLE_BETA_EXTENSIONS
7980 #ifdef VK_ENABLE_BETA_EXTENSIONS
7981     if (!strcmp("vkGetPhysicalDeviceVideoFormatPropertiesKHR", name)) {
7982         *addr = (void *)GetPhysicalDeviceVideoFormatPropertiesKHR;
7983         return true;
7984     }
7985 #endif // VK_ENABLE_BETA_EXTENSIONS
7986 #ifdef VK_ENABLE_BETA_EXTENSIONS
7987     if (!strcmp("vkCreateVideoSessionKHR", name)) {
7988         *addr = (void *)CreateVideoSessionKHR;
7989         return true;
7990     }
7991 #endif // VK_ENABLE_BETA_EXTENSIONS
7992 #ifdef VK_ENABLE_BETA_EXTENSIONS
7993     if (!strcmp("vkDestroyVideoSessionKHR", name)) {
7994         *addr = (void *)DestroyVideoSessionKHR;
7995         return true;
7996     }
7997 #endif // VK_ENABLE_BETA_EXTENSIONS
7998 #ifdef VK_ENABLE_BETA_EXTENSIONS
7999     if (!strcmp("vkGetVideoSessionMemoryRequirementsKHR", name)) {
8000         *addr = (void *)GetVideoSessionMemoryRequirementsKHR;
8001         return true;
8002     }
8003 #endif // VK_ENABLE_BETA_EXTENSIONS
8004 #ifdef VK_ENABLE_BETA_EXTENSIONS
8005     if (!strcmp("vkBindVideoSessionMemoryKHR", name)) {
8006         *addr = (void *)BindVideoSessionMemoryKHR;
8007         return true;
8008     }
8009 #endif // VK_ENABLE_BETA_EXTENSIONS
8010 #ifdef VK_ENABLE_BETA_EXTENSIONS
8011     if (!strcmp("vkCreateVideoSessionParametersKHR", name)) {
8012         *addr = (void *)CreateVideoSessionParametersKHR;
8013         return true;
8014     }
8015 #endif // VK_ENABLE_BETA_EXTENSIONS
8016 #ifdef VK_ENABLE_BETA_EXTENSIONS
8017     if (!strcmp("vkUpdateVideoSessionParametersKHR", name)) {
8018         *addr = (void *)UpdateVideoSessionParametersKHR;
8019         return true;
8020     }
8021 #endif // VK_ENABLE_BETA_EXTENSIONS
8022 #ifdef VK_ENABLE_BETA_EXTENSIONS
8023     if (!strcmp("vkDestroyVideoSessionParametersKHR", name)) {
8024         *addr = (void *)DestroyVideoSessionParametersKHR;
8025         return true;
8026     }
8027 #endif // VK_ENABLE_BETA_EXTENSIONS
8028 #ifdef VK_ENABLE_BETA_EXTENSIONS
8029     if (!strcmp("vkCmdBeginVideoCodingKHR", name)) {
8030         *addr = (void *)CmdBeginVideoCodingKHR;
8031         return true;
8032     }
8033 #endif // VK_ENABLE_BETA_EXTENSIONS
8034 #ifdef VK_ENABLE_BETA_EXTENSIONS
8035     if (!strcmp("vkCmdEndVideoCodingKHR", name)) {
8036         *addr = (void *)CmdEndVideoCodingKHR;
8037         return true;
8038     }
8039 #endif // VK_ENABLE_BETA_EXTENSIONS
8040 #ifdef VK_ENABLE_BETA_EXTENSIONS
8041     if (!strcmp("vkCmdControlVideoCodingKHR", name)) {
8042         *addr = (void *)CmdControlVideoCodingKHR;
8043         return true;
8044     }
8045 #endif // VK_ENABLE_BETA_EXTENSIONS
8046 
8047     // ---- VK_KHR_video_decode_queue extension commands
8048 #ifdef VK_ENABLE_BETA_EXTENSIONS
8049     if (!strcmp("vkCmdDecodeVideoKHR", name)) {
8050         *addr = (void *)CmdDecodeVideoKHR;
8051         return true;
8052     }
8053 #endif // VK_ENABLE_BETA_EXTENSIONS
8054 
8055     // ---- VK_KHR_dynamic_rendering extension commands
8056     if (!strcmp("vkCmdBeginRenderingKHR", name)) {
8057         *addr = (void *)CmdBeginRenderingKHR;
8058         return true;
8059     }
8060     if (!strcmp("vkCmdEndRenderingKHR", name)) {
8061         *addr = (void *)CmdEndRenderingKHR;
8062         return true;
8063     }
8064 
8065     // ---- VK_KHR_get_physical_device_properties2 extension commands
8066     if (!strcmp("vkGetPhysicalDeviceFeatures2KHR", name)) {
8067         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
8068                      ? (void *)vkGetPhysicalDeviceFeatures2
8069                      : NULL;
8070         return true;
8071     }
8072     if (!strcmp("vkGetPhysicalDeviceProperties2KHR", name)) {
8073         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
8074                      ? (void *)vkGetPhysicalDeviceProperties2
8075                      : NULL;
8076         return true;
8077     }
8078     if (!strcmp("vkGetPhysicalDeviceFormatProperties2KHR", name)) {
8079         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
8080                      ? (void *)vkGetPhysicalDeviceFormatProperties2
8081                      : NULL;
8082         return true;
8083     }
8084     if (!strcmp("vkGetPhysicalDeviceImageFormatProperties2KHR", name)) {
8085         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
8086                      ? (void *)vkGetPhysicalDeviceImageFormatProperties2
8087                      : NULL;
8088         return true;
8089     }
8090     if (!strcmp("vkGetPhysicalDeviceQueueFamilyProperties2KHR", name)) {
8091         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
8092                      ? (void *)vkGetPhysicalDeviceQueueFamilyProperties2
8093                      : NULL;
8094         return true;
8095     }
8096     if (!strcmp("vkGetPhysicalDeviceMemoryProperties2KHR", name)) {
8097         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
8098                      ? (void *)vkGetPhysicalDeviceMemoryProperties2
8099                      : NULL;
8100         return true;
8101     }
8102     if (!strcmp("vkGetPhysicalDeviceSparseImageFormatProperties2KHR", name)) {
8103         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
8104                      ? (void *)vkGetPhysicalDeviceSparseImageFormatProperties2
8105                      : NULL;
8106         return true;
8107     }
8108 
8109     // ---- VK_KHR_device_group extension commands
8110     if (!strcmp("vkGetDeviceGroupPeerMemoryFeaturesKHR", name)) {
8111         *addr = (void *)GetDeviceGroupPeerMemoryFeaturesKHR;
8112         return true;
8113     }
8114     if (!strcmp("vkCmdSetDeviceMaskKHR", name)) {
8115         *addr = (void *)CmdSetDeviceMaskKHR;
8116         return true;
8117     }
8118     if (!strcmp("vkCmdDispatchBaseKHR", name)) {
8119         *addr = (void *)CmdDispatchBaseKHR;
8120         return true;
8121     }
8122 
8123     // ---- VK_KHR_maintenance1 extension commands
8124     if (!strcmp("vkTrimCommandPoolKHR", name)) {
8125         *addr = (void *)TrimCommandPoolKHR;
8126         return true;
8127     }
8128 
8129     // ---- VK_KHR_device_group_creation extension commands
8130     if (!strcmp("vkEnumeratePhysicalDeviceGroupsKHR", name)) {
8131         *addr = (ptr_instance->enabled_known_extensions.khr_device_group_creation == 1)
8132                      ? (void *)vkEnumeratePhysicalDeviceGroups
8133                      : NULL;
8134         return true;
8135     }
8136 
8137     // ---- VK_KHR_external_memory_capabilities extension commands
8138     if (!strcmp("vkGetPhysicalDeviceExternalBufferPropertiesKHR", name)) {
8139         *addr = (ptr_instance->enabled_known_extensions.khr_external_memory_capabilities == 1)
8140                      ? (void *)vkGetPhysicalDeviceExternalBufferProperties
8141                      : NULL;
8142         return true;
8143     }
8144 
8145     // ---- VK_KHR_external_memory_win32 extension commands
8146 #ifdef VK_USE_PLATFORM_WIN32_KHR
8147     if (!strcmp("vkGetMemoryWin32HandleKHR", name)) {
8148         *addr = (void *)GetMemoryWin32HandleKHR;
8149         return true;
8150     }
8151 #endif // VK_USE_PLATFORM_WIN32_KHR
8152 #ifdef VK_USE_PLATFORM_WIN32_KHR
8153     if (!strcmp("vkGetMemoryWin32HandlePropertiesKHR", name)) {
8154         *addr = (void *)GetMemoryWin32HandlePropertiesKHR;
8155         return true;
8156     }
8157 #endif // VK_USE_PLATFORM_WIN32_KHR
8158 
8159     // ---- VK_KHR_external_memory_fd extension commands
8160     if (!strcmp("vkGetMemoryFdKHR", name)) {
8161         *addr = (void *)GetMemoryFdKHR;
8162         return true;
8163     }
8164     if (!strcmp("vkGetMemoryFdPropertiesKHR", name)) {
8165         *addr = (void *)GetMemoryFdPropertiesKHR;
8166         return true;
8167     }
8168 
8169     // ---- VK_KHR_external_semaphore_capabilities extension commands
8170     if (!strcmp("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR", name)) {
8171         *addr = (ptr_instance->enabled_known_extensions.khr_external_semaphore_capabilities == 1)
8172                      ? (void *)vkGetPhysicalDeviceExternalSemaphoreProperties
8173                      : NULL;
8174         return true;
8175     }
8176 
8177     // ---- VK_KHR_external_semaphore_win32 extension commands
8178 #ifdef VK_USE_PLATFORM_WIN32_KHR
8179     if (!strcmp("vkImportSemaphoreWin32HandleKHR", name)) {
8180         *addr = (void *)ImportSemaphoreWin32HandleKHR;
8181         return true;
8182     }
8183 #endif // VK_USE_PLATFORM_WIN32_KHR
8184 #ifdef VK_USE_PLATFORM_WIN32_KHR
8185     if (!strcmp("vkGetSemaphoreWin32HandleKHR", name)) {
8186         *addr = (void *)GetSemaphoreWin32HandleKHR;
8187         return true;
8188     }
8189 #endif // VK_USE_PLATFORM_WIN32_KHR
8190 
8191     // ---- VK_KHR_external_semaphore_fd extension commands
8192     if (!strcmp("vkImportSemaphoreFdKHR", name)) {
8193         *addr = (void *)ImportSemaphoreFdKHR;
8194         return true;
8195     }
8196     if (!strcmp("vkGetSemaphoreFdKHR", name)) {
8197         *addr = (void *)GetSemaphoreFdKHR;
8198         return true;
8199     }
8200 
8201     // ---- VK_KHR_push_descriptor extension commands
8202     if (!strcmp("vkCmdPushDescriptorSetKHR", name)) {
8203         *addr = (void *)CmdPushDescriptorSetKHR;
8204         return true;
8205     }
8206     if (!strcmp("vkCmdPushDescriptorSetWithTemplateKHR", name)) {
8207         *addr = (void *)CmdPushDescriptorSetWithTemplateKHR;
8208         return true;
8209     }
8210 
8211     // ---- VK_KHR_descriptor_update_template extension commands
8212     if (!strcmp("vkCreateDescriptorUpdateTemplateKHR", name)) {
8213         *addr = (void *)CreateDescriptorUpdateTemplateKHR;
8214         return true;
8215     }
8216     if (!strcmp("vkDestroyDescriptorUpdateTemplateKHR", name)) {
8217         *addr = (void *)DestroyDescriptorUpdateTemplateKHR;
8218         return true;
8219     }
8220     if (!strcmp("vkUpdateDescriptorSetWithTemplateKHR", name)) {
8221         *addr = (void *)UpdateDescriptorSetWithTemplateKHR;
8222         return true;
8223     }
8224 
8225     // ---- VK_KHR_create_renderpass2 extension commands
8226     if (!strcmp("vkCreateRenderPass2KHR", name)) {
8227         *addr = (void *)CreateRenderPass2KHR;
8228         return true;
8229     }
8230     if (!strcmp("vkCmdBeginRenderPass2KHR", name)) {
8231         *addr = (void *)CmdBeginRenderPass2KHR;
8232         return true;
8233     }
8234     if (!strcmp("vkCmdNextSubpass2KHR", name)) {
8235         *addr = (void *)CmdNextSubpass2KHR;
8236         return true;
8237     }
8238     if (!strcmp("vkCmdEndRenderPass2KHR", name)) {
8239         *addr = (void *)CmdEndRenderPass2KHR;
8240         return true;
8241     }
8242 
8243     // ---- VK_KHR_shared_presentable_image extension commands
8244     if (!strcmp("vkGetSwapchainStatusKHR", name)) {
8245         *addr = (void *)GetSwapchainStatusKHR;
8246         return true;
8247     }
8248 
8249     // ---- VK_KHR_external_fence_capabilities extension commands
8250     if (!strcmp("vkGetPhysicalDeviceExternalFencePropertiesKHR", name)) {
8251         *addr = (ptr_instance->enabled_known_extensions.khr_external_fence_capabilities == 1)
8252                      ? (void *)vkGetPhysicalDeviceExternalFenceProperties
8253                      : NULL;
8254         return true;
8255     }
8256 
8257     // ---- VK_KHR_external_fence_win32 extension commands
8258 #ifdef VK_USE_PLATFORM_WIN32_KHR
8259     if (!strcmp("vkImportFenceWin32HandleKHR", name)) {
8260         *addr = (void *)ImportFenceWin32HandleKHR;
8261         return true;
8262     }
8263 #endif // VK_USE_PLATFORM_WIN32_KHR
8264 #ifdef VK_USE_PLATFORM_WIN32_KHR
8265     if (!strcmp("vkGetFenceWin32HandleKHR", name)) {
8266         *addr = (void *)GetFenceWin32HandleKHR;
8267         return true;
8268     }
8269 #endif // VK_USE_PLATFORM_WIN32_KHR
8270 
8271     // ---- VK_KHR_external_fence_fd extension commands
8272     if (!strcmp("vkImportFenceFdKHR", name)) {
8273         *addr = (void *)ImportFenceFdKHR;
8274         return true;
8275     }
8276     if (!strcmp("vkGetFenceFdKHR", name)) {
8277         *addr = (void *)GetFenceFdKHR;
8278         return true;
8279     }
8280 
8281     // ---- VK_KHR_performance_query extension commands
8282     if (!strcmp("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR", name)) {
8283         *addr = (void *)EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
8284         return true;
8285     }
8286     if (!strcmp("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR", name)) {
8287         *addr = (void *)GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
8288         return true;
8289     }
8290     if (!strcmp("vkAcquireProfilingLockKHR", name)) {
8291         *addr = (void *)AcquireProfilingLockKHR;
8292         return true;
8293     }
8294     if (!strcmp("vkReleaseProfilingLockKHR", name)) {
8295         *addr = (void *)ReleaseProfilingLockKHR;
8296         return true;
8297     }
8298 
8299     // ---- VK_KHR_get_memory_requirements2 extension commands
8300     if (!strcmp("vkGetImageMemoryRequirements2KHR", name)) {
8301         *addr = (void *)GetImageMemoryRequirements2KHR;
8302         return true;
8303     }
8304     if (!strcmp("vkGetBufferMemoryRequirements2KHR", name)) {
8305         *addr = (void *)GetBufferMemoryRequirements2KHR;
8306         return true;
8307     }
8308     if (!strcmp("vkGetImageSparseMemoryRequirements2KHR", name)) {
8309         *addr = (void *)GetImageSparseMemoryRequirements2KHR;
8310         return true;
8311     }
8312 
8313     // ---- VK_KHR_sampler_ycbcr_conversion extension commands
8314     if (!strcmp("vkCreateSamplerYcbcrConversionKHR", name)) {
8315         *addr = (void *)CreateSamplerYcbcrConversionKHR;
8316         return true;
8317     }
8318     if (!strcmp("vkDestroySamplerYcbcrConversionKHR", name)) {
8319         *addr = (void *)DestroySamplerYcbcrConversionKHR;
8320         return true;
8321     }
8322 
8323     // ---- VK_KHR_bind_memory2 extension commands
8324     if (!strcmp("vkBindBufferMemory2KHR", name)) {
8325         *addr = (void *)BindBufferMemory2KHR;
8326         return true;
8327     }
8328     if (!strcmp("vkBindImageMemory2KHR", name)) {
8329         *addr = (void *)BindImageMemory2KHR;
8330         return true;
8331     }
8332 
8333     // ---- VK_KHR_maintenance3 extension commands
8334     if (!strcmp("vkGetDescriptorSetLayoutSupportKHR", name)) {
8335         *addr = (void *)GetDescriptorSetLayoutSupportKHR;
8336         return true;
8337     }
8338 
8339     // ---- VK_KHR_draw_indirect_count extension commands
8340     if (!strcmp("vkCmdDrawIndirectCountKHR", name)) {
8341         *addr = (void *)CmdDrawIndirectCountKHR;
8342         return true;
8343     }
8344     if (!strcmp("vkCmdDrawIndexedIndirectCountKHR", name)) {
8345         *addr = (void *)CmdDrawIndexedIndirectCountKHR;
8346         return true;
8347     }
8348 
8349     // ---- VK_KHR_timeline_semaphore extension commands
8350     if (!strcmp("vkGetSemaphoreCounterValueKHR", name)) {
8351         *addr = (void *)GetSemaphoreCounterValueKHR;
8352         return true;
8353     }
8354     if (!strcmp("vkWaitSemaphoresKHR", name)) {
8355         *addr = (void *)WaitSemaphoresKHR;
8356         return true;
8357     }
8358     if (!strcmp("vkSignalSemaphoreKHR", name)) {
8359         *addr = (void *)SignalSemaphoreKHR;
8360         return true;
8361     }
8362 
8363     // ---- VK_KHR_fragment_shading_rate extension commands
8364     if (!strcmp("vkGetPhysicalDeviceFragmentShadingRatesKHR", name)) {
8365         *addr = (void *)GetPhysicalDeviceFragmentShadingRatesKHR;
8366         return true;
8367     }
8368     if (!strcmp("vkCmdSetFragmentShadingRateKHR", name)) {
8369         *addr = (void *)CmdSetFragmentShadingRateKHR;
8370         return true;
8371     }
8372 
8373     // ---- VK_KHR_present_wait extension commands
8374     if (!strcmp("vkWaitForPresentKHR", name)) {
8375         *addr = (void *)WaitForPresentKHR;
8376         return true;
8377     }
8378 
8379     // ---- VK_KHR_buffer_device_address extension commands
8380     if (!strcmp("vkGetBufferDeviceAddressKHR", name)) {
8381         *addr = (void *)GetBufferDeviceAddressKHR;
8382         return true;
8383     }
8384     if (!strcmp("vkGetBufferOpaqueCaptureAddressKHR", name)) {
8385         *addr = (void *)GetBufferOpaqueCaptureAddressKHR;
8386         return true;
8387     }
8388     if (!strcmp("vkGetDeviceMemoryOpaqueCaptureAddressKHR", name)) {
8389         *addr = (void *)GetDeviceMemoryOpaqueCaptureAddressKHR;
8390         return true;
8391     }
8392 
8393     // ---- VK_KHR_deferred_host_operations extension commands
8394     if (!strcmp("vkCreateDeferredOperationKHR", name)) {
8395         *addr = (void *)CreateDeferredOperationKHR;
8396         return true;
8397     }
8398     if (!strcmp("vkDestroyDeferredOperationKHR", name)) {
8399         *addr = (void *)DestroyDeferredOperationKHR;
8400         return true;
8401     }
8402     if (!strcmp("vkGetDeferredOperationMaxConcurrencyKHR", name)) {
8403         *addr = (void *)GetDeferredOperationMaxConcurrencyKHR;
8404         return true;
8405     }
8406     if (!strcmp("vkGetDeferredOperationResultKHR", name)) {
8407         *addr = (void *)GetDeferredOperationResultKHR;
8408         return true;
8409     }
8410     if (!strcmp("vkDeferredOperationJoinKHR", name)) {
8411         *addr = (void *)DeferredOperationJoinKHR;
8412         return true;
8413     }
8414 
8415     // ---- VK_KHR_pipeline_executable_properties extension commands
8416     if (!strcmp("vkGetPipelineExecutablePropertiesKHR", name)) {
8417         *addr = (void *)GetPipelineExecutablePropertiesKHR;
8418         return true;
8419     }
8420     if (!strcmp("vkGetPipelineExecutableStatisticsKHR", name)) {
8421         *addr = (void *)GetPipelineExecutableStatisticsKHR;
8422         return true;
8423     }
8424     if (!strcmp("vkGetPipelineExecutableInternalRepresentationsKHR", name)) {
8425         *addr = (void *)GetPipelineExecutableInternalRepresentationsKHR;
8426         return true;
8427     }
8428 
8429     // ---- VK_KHR_video_encode_queue extension commands
8430 #ifdef VK_ENABLE_BETA_EXTENSIONS
8431     if (!strcmp("vkCmdEncodeVideoKHR", name)) {
8432         *addr = (void *)CmdEncodeVideoKHR;
8433         return true;
8434     }
8435 #endif // VK_ENABLE_BETA_EXTENSIONS
8436 
8437     // ---- VK_KHR_synchronization2 extension commands
8438     if (!strcmp("vkCmdSetEvent2KHR", name)) {
8439         *addr = (void *)CmdSetEvent2KHR;
8440         return true;
8441     }
8442     if (!strcmp("vkCmdResetEvent2KHR", name)) {
8443         *addr = (void *)CmdResetEvent2KHR;
8444         return true;
8445     }
8446     if (!strcmp("vkCmdWaitEvents2KHR", name)) {
8447         *addr = (void *)CmdWaitEvents2KHR;
8448         return true;
8449     }
8450     if (!strcmp("vkCmdPipelineBarrier2KHR", name)) {
8451         *addr = (void *)CmdPipelineBarrier2KHR;
8452         return true;
8453     }
8454     if (!strcmp("vkCmdWriteTimestamp2KHR", name)) {
8455         *addr = (void *)CmdWriteTimestamp2KHR;
8456         return true;
8457     }
8458     if (!strcmp("vkQueueSubmit2KHR", name)) {
8459         *addr = (void *)QueueSubmit2KHR;
8460         return true;
8461     }
8462     if (!strcmp("vkCmdWriteBufferMarker2AMD", name)) {
8463         *addr = (void *)CmdWriteBufferMarker2AMD;
8464         return true;
8465     }
8466     if (!strcmp("vkGetQueueCheckpointData2NV", name)) {
8467         *addr = (void *)GetQueueCheckpointData2NV;
8468         return true;
8469     }
8470 
8471     // ---- VK_KHR_copy_commands2 extension commands
8472     if (!strcmp("vkCmdCopyBuffer2KHR", name)) {
8473         *addr = (void *)CmdCopyBuffer2KHR;
8474         return true;
8475     }
8476     if (!strcmp("vkCmdCopyImage2KHR", name)) {
8477         *addr = (void *)CmdCopyImage2KHR;
8478         return true;
8479     }
8480     if (!strcmp("vkCmdCopyBufferToImage2KHR", name)) {
8481         *addr = (void *)CmdCopyBufferToImage2KHR;
8482         return true;
8483     }
8484     if (!strcmp("vkCmdCopyImageToBuffer2KHR", name)) {
8485         *addr = (void *)CmdCopyImageToBuffer2KHR;
8486         return true;
8487     }
8488     if (!strcmp("vkCmdBlitImage2KHR", name)) {
8489         *addr = (void *)CmdBlitImage2KHR;
8490         return true;
8491     }
8492     if (!strcmp("vkCmdResolveImage2KHR", name)) {
8493         *addr = (void *)CmdResolveImage2KHR;
8494         return true;
8495     }
8496 
8497     // ---- VK_KHR_ray_tracing_maintenance1 extension commands
8498     if (!strcmp("vkCmdTraceRaysIndirect2KHR", name)) {
8499         *addr = (void *)CmdTraceRaysIndirect2KHR;
8500         return true;
8501     }
8502 
8503     // ---- VK_KHR_maintenance4 extension commands
8504     if (!strcmp("vkGetDeviceBufferMemoryRequirementsKHR", name)) {
8505         *addr = (void *)GetDeviceBufferMemoryRequirementsKHR;
8506         return true;
8507     }
8508     if (!strcmp("vkGetDeviceImageMemoryRequirementsKHR", name)) {
8509         *addr = (void *)GetDeviceImageMemoryRequirementsKHR;
8510         return true;
8511     }
8512     if (!strcmp("vkGetDeviceImageSparseMemoryRequirementsKHR", name)) {
8513         *addr = (void *)GetDeviceImageSparseMemoryRequirementsKHR;
8514         return true;
8515     }
8516 
8517     // ---- VK_EXT_debug_marker extension commands
8518     if (!strcmp("vkDebugMarkerSetObjectTagEXT", name)) {
8519         *addr = (void *)DebugMarkerSetObjectTagEXT;
8520         return true;
8521     }
8522     if (!strcmp("vkDebugMarkerSetObjectNameEXT", name)) {
8523         *addr = (void *)DebugMarkerSetObjectNameEXT;
8524         return true;
8525     }
8526     if (!strcmp("vkCmdDebugMarkerBeginEXT", name)) {
8527         *addr = (void *)CmdDebugMarkerBeginEXT;
8528         return true;
8529     }
8530     if (!strcmp("vkCmdDebugMarkerEndEXT", name)) {
8531         *addr = (void *)CmdDebugMarkerEndEXT;
8532         return true;
8533     }
8534     if (!strcmp("vkCmdDebugMarkerInsertEXT", name)) {
8535         *addr = (void *)CmdDebugMarkerInsertEXT;
8536         return true;
8537     }
8538 
8539     // ---- VK_EXT_transform_feedback extension commands
8540     if (!strcmp("vkCmdBindTransformFeedbackBuffersEXT", name)) {
8541         *addr = (void *)CmdBindTransformFeedbackBuffersEXT;
8542         return true;
8543     }
8544     if (!strcmp("vkCmdBeginTransformFeedbackEXT", name)) {
8545         *addr = (void *)CmdBeginTransformFeedbackEXT;
8546         return true;
8547     }
8548     if (!strcmp("vkCmdEndTransformFeedbackEXT", name)) {
8549         *addr = (void *)CmdEndTransformFeedbackEXT;
8550         return true;
8551     }
8552     if (!strcmp("vkCmdBeginQueryIndexedEXT", name)) {
8553         *addr = (void *)CmdBeginQueryIndexedEXT;
8554         return true;
8555     }
8556     if (!strcmp("vkCmdEndQueryIndexedEXT", name)) {
8557         *addr = (void *)CmdEndQueryIndexedEXT;
8558         return true;
8559     }
8560     if (!strcmp("vkCmdDrawIndirectByteCountEXT", name)) {
8561         *addr = (void *)CmdDrawIndirectByteCountEXT;
8562         return true;
8563     }
8564 
8565     // ---- VK_NVX_binary_import extension commands
8566     if (!strcmp("vkCreateCuModuleNVX", name)) {
8567         *addr = (void *)CreateCuModuleNVX;
8568         return true;
8569     }
8570     if (!strcmp("vkCreateCuFunctionNVX", name)) {
8571         *addr = (void *)CreateCuFunctionNVX;
8572         return true;
8573     }
8574     if (!strcmp("vkDestroyCuModuleNVX", name)) {
8575         *addr = (void *)DestroyCuModuleNVX;
8576         return true;
8577     }
8578     if (!strcmp("vkDestroyCuFunctionNVX", name)) {
8579         *addr = (void *)DestroyCuFunctionNVX;
8580         return true;
8581     }
8582     if (!strcmp("vkCmdCuLaunchKernelNVX", name)) {
8583         *addr = (void *)CmdCuLaunchKernelNVX;
8584         return true;
8585     }
8586 
8587     // ---- VK_NVX_image_view_handle extension commands
8588     if (!strcmp("vkGetImageViewHandleNVX", name)) {
8589         *addr = (void *)GetImageViewHandleNVX;
8590         return true;
8591     }
8592     if (!strcmp("vkGetImageViewAddressNVX", name)) {
8593         *addr = (void *)GetImageViewAddressNVX;
8594         return true;
8595     }
8596 
8597     // ---- VK_AMD_draw_indirect_count extension commands
8598     if (!strcmp("vkCmdDrawIndirectCountAMD", name)) {
8599         *addr = (void *)CmdDrawIndirectCountAMD;
8600         return true;
8601     }
8602     if (!strcmp("vkCmdDrawIndexedIndirectCountAMD", name)) {
8603         *addr = (void *)CmdDrawIndexedIndirectCountAMD;
8604         return true;
8605     }
8606 
8607     // ---- VK_AMD_shader_info extension commands
8608     if (!strcmp("vkGetShaderInfoAMD", name)) {
8609         *addr = (void *)GetShaderInfoAMD;
8610         return true;
8611     }
8612 
8613     // ---- VK_NV_external_memory_capabilities extension commands
8614     if (!strcmp("vkGetPhysicalDeviceExternalImageFormatPropertiesNV", name)) {
8615         *addr = (ptr_instance->enabled_known_extensions.nv_external_memory_capabilities == 1)
8616                      ? (void *)GetPhysicalDeviceExternalImageFormatPropertiesNV
8617                      : NULL;
8618         return true;
8619     }
8620 
8621     // ---- VK_NV_external_memory_win32 extension commands
8622 #ifdef VK_USE_PLATFORM_WIN32_KHR
8623     if (!strcmp("vkGetMemoryWin32HandleNV", name)) {
8624         *addr = (void *)GetMemoryWin32HandleNV;
8625         return true;
8626     }
8627 #endif // VK_USE_PLATFORM_WIN32_KHR
8628 
8629     // ---- VK_EXT_conditional_rendering extension commands
8630     if (!strcmp("vkCmdBeginConditionalRenderingEXT", name)) {
8631         *addr = (void *)CmdBeginConditionalRenderingEXT;
8632         return true;
8633     }
8634     if (!strcmp("vkCmdEndConditionalRenderingEXT", name)) {
8635         *addr = (void *)CmdEndConditionalRenderingEXT;
8636         return true;
8637     }
8638 
8639     // ---- VK_NV_clip_space_w_scaling extension commands
8640     if (!strcmp("vkCmdSetViewportWScalingNV", name)) {
8641         *addr = (void *)CmdSetViewportWScalingNV;
8642         return true;
8643     }
8644 
8645     // ---- VK_EXT_direct_mode_display extension commands
8646     if (!strcmp("vkReleaseDisplayEXT", name)) {
8647         *addr = (ptr_instance->enabled_known_extensions.ext_direct_mode_display == 1)
8648                      ? (void *)ReleaseDisplayEXT
8649                      : NULL;
8650         return true;
8651     }
8652 
8653     // ---- VK_EXT_acquire_xlib_display extension commands
8654 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
8655     if (!strcmp("vkAcquireXlibDisplayEXT", name)) {
8656         *addr = (ptr_instance->enabled_known_extensions.ext_acquire_xlib_display == 1)
8657                      ? (void *)AcquireXlibDisplayEXT
8658                      : NULL;
8659         return true;
8660     }
8661 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
8662 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
8663     if (!strcmp("vkGetRandROutputDisplayEXT", name)) {
8664         *addr = (ptr_instance->enabled_known_extensions.ext_acquire_xlib_display == 1)
8665                      ? (void *)GetRandROutputDisplayEXT
8666                      : NULL;
8667         return true;
8668     }
8669 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
8670 
8671     // ---- VK_EXT_display_surface_counter extension commands
8672     if (!strcmp("vkGetPhysicalDeviceSurfaceCapabilities2EXT", name)) {
8673         *addr = (ptr_instance->enabled_known_extensions.ext_display_surface_counter == 1)
8674                      ? (void *)GetPhysicalDeviceSurfaceCapabilities2EXT
8675                      : NULL;
8676         return true;
8677     }
8678 
8679     // ---- VK_EXT_display_control extension commands
8680     if (!strcmp("vkDisplayPowerControlEXT", name)) {
8681         *addr = (void *)DisplayPowerControlEXT;
8682         return true;
8683     }
8684     if (!strcmp("vkRegisterDeviceEventEXT", name)) {
8685         *addr = (void *)RegisterDeviceEventEXT;
8686         return true;
8687     }
8688     if (!strcmp("vkRegisterDisplayEventEXT", name)) {
8689         *addr = (void *)RegisterDisplayEventEXT;
8690         return true;
8691     }
8692     if (!strcmp("vkGetSwapchainCounterEXT", name)) {
8693         *addr = (void *)GetSwapchainCounterEXT;
8694         return true;
8695     }
8696 
8697     // ---- VK_GOOGLE_display_timing extension commands
8698     if (!strcmp("vkGetRefreshCycleDurationGOOGLE", name)) {
8699         *addr = (void *)GetRefreshCycleDurationGOOGLE;
8700         return true;
8701     }
8702     if (!strcmp("vkGetPastPresentationTimingGOOGLE", name)) {
8703         *addr = (void *)GetPastPresentationTimingGOOGLE;
8704         return true;
8705     }
8706 
8707     // ---- VK_EXT_discard_rectangles extension commands
8708     if (!strcmp("vkCmdSetDiscardRectangleEXT", name)) {
8709         *addr = (void *)CmdSetDiscardRectangleEXT;
8710         return true;
8711     }
8712 
8713     // ---- VK_EXT_hdr_metadata extension commands
8714     if (!strcmp("vkSetHdrMetadataEXT", name)) {
8715         *addr = (void *)SetHdrMetadataEXT;
8716         return true;
8717     }
8718 
8719     // ---- VK_EXT_debug_utils extension commands
8720     if (!strcmp("vkSetDebugUtilsObjectNameEXT", name)) {
8721         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
8722                      ? (void *)SetDebugUtilsObjectNameEXT
8723                      : NULL;
8724         return true;
8725     }
8726     if (!strcmp("vkSetDebugUtilsObjectTagEXT", name)) {
8727         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
8728                      ? (void *)SetDebugUtilsObjectTagEXT
8729                      : NULL;
8730         return true;
8731     }
8732     if (!strcmp("vkQueueBeginDebugUtilsLabelEXT", name)) {
8733         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
8734                      ? (void *)QueueBeginDebugUtilsLabelEXT
8735                      : NULL;
8736         return true;
8737     }
8738     if (!strcmp("vkQueueEndDebugUtilsLabelEXT", name)) {
8739         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
8740                      ? (void *)QueueEndDebugUtilsLabelEXT
8741                      : NULL;
8742         return true;
8743     }
8744     if (!strcmp("vkQueueInsertDebugUtilsLabelEXT", name)) {
8745         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
8746                      ? (void *)QueueInsertDebugUtilsLabelEXT
8747                      : NULL;
8748         return true;
8749     }
8750     if (!strcmp("vkCmdBeginDebugUtilsLabelEXT", name)) {
8751         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
8752                      ? (void *)CmdBeginDebugUtilsLabelEXT
8753                      : NULL;
8754         return true;
8755     }
8756     if (!strcmp("vkCmdEndDebugUtilsLabelEXT", name)) {
8757         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
8758                      ? (void *)CmdEndDebugUtilsLabelEXT
8759                      : NULL;
8760         return true;
8761     }
8762     if (!strcmp("vkCmdInsertDebugUtilsLabelEXT", name)) {
8763         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
8764                      ? (void *)CmdInsertDebugUtilsLabelEXT
8765                      : NULL;
8766         return true;
8767     }
8768 
8769     // ---- VK_ANDROID_external_memory_android_hardware_buffer extension commands
8770 #ifdef VK_USE_PLATFORM_ANDROID_KHR
8771     if (!strcmp("vkGetAndroidHardwareBufferPropertiesANDROID", name)) {
8772         *addr = (void *)GetAndroidHardwareBufferPropertiesANDROID;
8773         return true;
8774     }
8775 #endif // VK_USE_PLATFORM_ANDROID_KHR
8776 #ifdef VK_USE_PLATFORM_ANDROID_KHR
8777     if (!strcmp("vkGetMemoryAndroidHardwareBufferANDROID", name)) {
8778         *addr = (void *)GetMemoryAndroidHardwareBufferANDROID;
8779         return true;
8780     }
8781 #endif // VK_USE_PLATFORM_ANDROID_KHR
8782 
8783     // ---- VK_EXT_sample_locations extension commands
8784     if (!strcmp("vkCmdSetSampleLocationsEXT", name)) {
8785         *addr = (void *)CmdSetSampleLocationsEXT;
8786         return true;
8787     }
8788     if (!strcmp("vkGetPhysicalDeviceMultisamplePropertiesEXT", name)) {
8789         *addr = (void *)GetPhysicalDeviceMultisamplePropertiesEXT;
8790         return true;
8791     }
8792 
8793     // ---- VK_EXT_image_drm_format_modifier extension commands
8794     if (!strcmp("vkGetImageDrmFormatModifierPropertiesEXT", name)) {
8795         *addr = (void *)GetImageDrmFormatModifierPropertiesEXT;
8796         return true;
8797     }
8798 
8799     // ---- VK_EXT_validation_cache extension commands
8800     if (!strcmp("vkCreateValidationCacheEXT", name)) {
8801         *addr = (void *)CreateValidationCacheEXT;
8802         return true;
8803     }
8804     if (!strcmp("vkDestroyValidationCacheEXT", name)) {
8805         *addr = (void *)DestroyValidationCacheEXT;
8806         return true;
8807     }
8808     if (!strcmp("vkMergeValidationCachesEXT", name)) {
8809         *addr = (void *)MergeValidationCachesEXT;
8810         return true;
8811     }
8812     if (!strcmp("vkGetValidationCacheDataEXT", name)) {
8813         *addr = (void *)GetValidationCacheDataEXT;
8814         return true;
8815     }
8816 
8817     // ---- VK_NV_shading_rate_image extension commands
8818     if (!strcmp("vkCmdBindShadingRateImageNV", name)) {
8819         *addr = (void *)CmdBindShadingRateImageNV;
8820         return true;
8821     }
8822     if (!strcmp("vkCmdSetViewportShadingRatePaletteNV", name)) {
8823         *addr = (void *)CmdSetViewportShadingRatePaletteNV;
8824         return true;
8825     }
8826     if (!strcmp("vkCmdSetCoarseSampleOrderNV", name)) {
8827         *addr = (void *)CmdSetCoarseSampleOrderNV;
8828         return true;
8829     }
8830 
8831     // ---- VK_NV_ray_tracing extension commands
8832     if (!strcmp("vkCreateAccelerationStructureNV", name)) {
8833         *addr = (void *)CreateAccelerationStructureNV;
8834         return true;
8835     }
8836     if (!strcmp("vkDestroyAccelerationStructureNV", name)) {
8837         *addr = (void *)DestroyAccelerationStructureNV;
8838         return true;
8839     }
8840     if (!strcmp("vkGetAccelerationStructureMemoryRequirementsNV", name)) {
8841         *addr = (void *)GetAccelerationStructureMemoryRequirementsNV;
8842         return true;
8843     }
8844     if (!strcmp("vkBindAccelerationStructureMemoryNV", name)) {
8845         *addr = (void *)BindAccelerationStructureMemoryNV;
8846         return true;
8847     }
8848     if (!strcmp("vkCmdBuildAccelerationStructureNV", name)) {
8849         *addr = (void *)CmdBuildAccelerationStructureNV;
8850         return true;
8851     }
8852     if (!strcmp("vkCmdCopyAccelerationStructureNV", name)) {
8853         *addr = (void *)CmdCopyAccelerationStructureNV;
8854         return true;
8855     }
8856     if (!strcmp("vkCmdTraceRaysNV", name)) {
8857         *addr = (void *)CmdTraceRaysNV;
8858         return true;
8859     }
8860     if (!strcmp("vkCreateRayTracingPipelinesNV", name)) {
8861         *addr = (void *)CreateRayTracingPipelinesNV;
8862         return true;
8863     }
8864     if (!strcmp("vkGetRayTracingShaderGroupHandlesKHR", name)) {
8865         *addr = (void *)GetRayTracingShaderGroupHandlesKHR;
8866         return true;
8867     }
8868     if (!strcmp("vkGetRayTracingShaderGroupHandlesNV", name)) {
8869         *addr = (void *)GetRayTracingShaderGroupHandlesNV;
8870         return true;
8871     }
8872     if (!strcmp("vkGetAccelerationStructureHandleNV", name)) {
8873         *addr = (void *)GetAccelerationStructureHandleNV;
8874         return true;
8875     }
8876     if (!strcmp("vkCmdWriteAccelerationStructuresPropertiesNV", name)) {
8877         *addr = (void *)CmdWriteAccelerationStructuresPropertiesNV;
8878         return true;
8879     }
8880     if (!strcmp("vkCompileDeferredNV", name)) {
8881         *addr = (void *)CompileDeferredNV;
8882         return true;
8883     }
8884 
8885     // ---- VK_EXT_external_memory_host extension commands
8886     if (!strcmp("vkGetMemoryHostPointerPropertiesEXT", name)) {
8887         *addr = (void *)GetMemoryHostPointerPropertiesEXT;
8888         return true;
8889     }
8890 
8891     // ---- VK_AMD_buffer_marker extension commands
8892     if (!strcmp("vkCmdWriteBufferMarkerAMD", name)) {
8893         *addr = (void *)CmdWriteBufferMarkerAMD;
8894         return true;
8895     }
8896 
8897     // ---- VK_EXT_calibrated_timestamps extension commands
8898     if (!strcmp("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT", name)) {
8899         *addr = (void *)GetPhysicalDeviceCalibrateableTimeDomainsEXT;
8900         return true;
8901     }
8902     if (!strcmp("vkGetCalibratedTimestampsEXT", name)) {
8903         *addr = (void *)GetCalibratedTimestampsEXT;
8904         return true;
8905     }
8906 
8907     // ---- VK_NV_mesh_shader extension commands
8908     if (!strcmp("vkCmdDrawMeshTasksNV", name)) {
8909         *addr = (void *)CmdDrawMeshTasksNV;
8910         return true;
8911     }
8912     if (!strcmp("vkCmdDrawMeshTasksIndirectNV", name)) {
8913         *addr = (void *)CmdDrawMeshTasksIndirectNV;
8914         return true;
8915     }
8916     if (!strcmp("vkCmdDrawMeshTasksIndirectCountNV", name)) {
8917         *addr = (void *)CmdDrawMeshTasksIndirectCountNV;
8918         return true;
8919     }
8920 
8921     // ---- VK_NV_scissor_exclusive extension commands
8922     if (!strcmp("vkCmdSetExclusiveScissorNV", name)) {
8923         *addr = (void *)CmdSetExclusiveScissorNV;
8924         return true;
8925     }
8926 
8927     // ---- VK_NV_device_diagnostic_checkpoints extension commands
8928     if (!strcmp("vkCmdSetCheckpointNV", name)) {
8929         *addr = (void *)CmdSetCheckpointNV;
8930         return true;
8931     }
8932     if (!strcmp("vkGetQueueCheckpointDataNV", name)) {
8933         *addr = (void *)GetQueueCheckpointDataNV;
8934         return true;
8935     }
8936 
8937     // ---- VK_INTEL_performance_query extension commands
8938     if (!strcmp("vkInitializePerformanceApiINTEL", name)) {
8939         *addr = (void *)InitializePerformanceApiINTEL;
8940         return true;
8941     }
8942     if (!strcmp("vkUninitializePerformanceApiINTEL", name)) {
8943         *addr = (void *)UninitializePerformanceApiINTEL;
8944         return true;
8945     }
8946     if (!strcmp("vkCmdSetPerformanceMarkerINTEL", name)) {
8947         *addr = (void *)CmdSetPerformanceMarkerINTEL;
8948         return true;
8949     }
8950     if (!strcmp("vkCmdSetPerformanceStreamMarkerINTEL", name)) {
8951         *addr = (void *)CmdSetPerformanceStreamMarkerINTEL;
8952         return true;
8953     }
8954     if (!strcmp("vkCmdSetPerformanceOverrideINTEL", name)) {
8955         *addr = (void *)CmdSetPerformanceOverrideINTEL;
8956         return true;
8957     }
8958     if (!strcmp("vkAcquirePerformanceConfigurationINTEL", name)) {
8959         *addr = (void *)AcquirePerformanceConfigurationINTEL;
8960         return true;
8961     }
8962     if (!strcmp("vkReleasePerformanceConfigurationINTEL", name)) {
8963         *addr = (void *)ReleasePerformanceConfigurationINTEL;
8964         return true;
8965     }
8966     if (!strcmp("vkQueueSetPerformanceConfigurationINTEL", name)) {
8967         *addr = (void *)QueueSetPerformanceConfigurationINTEL;
8968         return true;
8969     }
8970     if (!strcmp("vkGetPerformanceParameterINTEL", name)) {
8971         *addr = (void *)GetPerformanceParameterINTEL;
8972         return true;
8973     }
8974 
8975     // ---- VK_AMD_display_native_hdr extension commands
8976     if (!strcmp("vkSetLocalDimmingAMD", name)) {
8977         *addr = (void *)SetLocalDimmingAMD;
8978         return true;
8979     }
8980 
8981     // ---- VK_EXT_buffer_device_address extension commands
8982     if (!strcmp("vkGetBufferDeviceAddressEXT", name)) {
8983         *addr = (void *)GetBufferDeviceAddressEXT;
8984         return true;
8985     }
8986 
8987     // ---- VK_EXT_tooling_info extension commands
8988     if (!strcmp("vkGetPhysicalDeviceToolPropertiesEXT", name)) {
8989         *addr = (void *)GetPhysicalDeviceToolPropertiesEXT;
8990         return true;
8991     }
8992 
8993     // ---- VK_NV_cooperative_matrix extension commands
8994     if (!strcmp("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV", name)) {
8995         *addr = (void *)GetPhysicalDeviceCooperativeMatrixPropertiesNV;
8996         return true;
8997     }
8998 
8999     // ---- VK_NV_coverage_reduction_mode extension commands
9000     if (!strcmp("vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", name)) {
9001         *addr = (void *)GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
9002         return true;
9003     }
9004 
9005     // ---- VK_EXT_full_screen_exclusive extension commands
9006 #ifdef VK_USE_PLATFORM_WIN32_KHR
9007     if (!strcmp("vkGetPhysicalDeviceSurfacePresentModes2EXT", name)) {
9008         *addr = (void *)GetPhysicalDeviceSurfacePresentModes2EXT;
9009         return true;
9010     }
9011 #endif // VK_USE_PLATFORM_WIN32_KHR
9012 #ifdef VK_USE_PLATFORM_WIN32_KHR
9013     if (!strcmp("vkAcquireFullScreenExclusiveModeEXT", name)) {
9014         *addr = (void *)AcquireFullScreenExclusiveModeEXT;
9015         return true;
9016     }
9017 #endif // VK_USE_PLATFORM_WIN32_KHR
9018 #ifdef VK_USE_PLATFORM_WIN32_KHR
9019     if (!strcmp("vkReleaseFullScreenExclusiveModeEXT", name)) {
9020         *addr = (void *)ReleaseFullScreenExclusiveModeEXT;
9021         return true;
9022     }
9023 #endif // VK_USE_PLATFORM_WIN32_KHR
9024 #ifdef VK_USE_PLATFORM_WIN32_KHR
9025     if (!strcmp("vkGetDeviceGroupSurfacePresentModes2EXT", name)) {
9026         *addr = (void *)GetDeviceGroupSurfacePresentModes2EXT;
9027         return true;
9028     }
9029 #endif // VK_USE_PLATFORM_WIN32_KHR
9030 
9031     // ---- VK_EXT_line_rasterization extension commands
9032     if (!strcmp("vkCmdSetLineStippleEXT", name)) {
9033         *addr = (void *)CmdSetLineStippleEXT;
9034         return true;
9035     }
9036 
9037     // ---- VK_EXT_host_query_reset extension commands
9038     if (!strcmp("vkResetQueryPoolEXT", name)) {
9039         *addr = (void *)ResetQueryPoolEXT;
9040         return true;
9041     }
9042 
9043     // ---- VK_EXT_extended_dynamic_state extension commands
9044     if (!strcmp("vkCmdSetCullModeEXT", name)) {
9045         *addr = (void *)CmdSetCullModeEXT;
9046         return true;
9047     }
9048     if (!strcmp("vkCmdSetFrontFaceEXT", name)) {
9049         *addr = (void *)CmdSetFrontFaceEXT;
9050         return true;
9051     }
9052     if (!strcmp("vkCmdSetPrimitiveTopologyEXT", name)) {
9053         *addr = (void *)CmdSetPrimitiveTopologyEXT;
9054         return true;
9055     }
9056     if (!strcmp("vkCmdSetViewportWithCountEXT", name)) {
9057         *addr = (void *)CmdSetViewportWithCountEXT;
9058         return true;
9059     }
9060     if (!strcmp("vkCmdSetScissorWithCountEXT", name)) {
9061         *addr = (void *)CmdSetScissorWithCountEXT;
9062         return true;
9063     }
9064     if (!strcmp("vkCmdBindVertexBuffers2EXT", name)) {
9065         *addr = (void *)CmdBindVertexBuffers2EXT;
9066         return true;
9067     }
9068     if (!strcmp("vkCmdSetDepthTestEnableEXT", name)) {
9069         *addr = (void *)CmdSetDepthTestEnableEXT;
9070         return true;
9071     }
9072     if (!strcmp("vkCmdSetDepthWriteEnableEXT", name)) {
9073         *addr = (void *)CmdSetDepthWriteEnableEXT;
9074         return true;
9075     }
9076     if (!strcmp("vkCmdSetDepthCompareOpEXT", name)) {
9077         *addr = (void *)CmdSetDepthCompareOpEXT;
9078         return true;
9079     }
9080     if (!strcmp("vkCmdSetDepthBoundsTestEnableEXT", name)) {
9081         *addr = (void *)CmdSetDepthBoundsTestEnableEXT;
9082         return true;
9083     }
9084     if (!strcmp("vkCmdSetStencilTestEnableEXT", name)) {
9085         *addr = (void *)CmdSetStencilTestEnableEXT;
9086         return true;
9087     }
9088     if (!strcmp("vkCmdSetStencilOpEXT", name)) {
9089         *addr = (void *)CmdSetStencilOpEXT;
9090         return true;
9091     }
9092 
9093     // ---- VK_NV_device_generated_commands extension commands
9094     if (!strcmp("vkGetGeneratedCommandsMemoryRequirementsNV", name)) {
9095         *addr = (void *)GetGeneratedCommandsMemoryRequirementsNV;
9096         return true;
9097     }
9098     if (!strcmp("vkCmdPreprocessGeneratedCommandsNV", name)) {
9099         *addr = (void *)CmdPreprocessGeneratedCommandsNV;
9100         return true;
9101     }
9102     if (!strcmp("vkCmdExecuteGeneratedCommandsNV", name)) {
9103         *addr = (void *)CmdExecuteGeneratedCommandsNV;
9104         return true;
9105     }
9106     if (!strcmp("vkCmdBindPipelineShaderGroupNV", name)) {
9107         *addr = (void *)CmdBindPipelineShaderGroupNV;
9108         return true;
9109     }
9110     if (!strcmp("vkCreateIndirectCommandsLayoutNV", name)) {
9111         *addr = (void *)CreateIndirectCommandsLayoutNV;
9112         return true;
9113     }
9114     if (!strcmp("vkDestroyIndirectCommandsLayoutNV", name)) {
9115         *addr = (void *)DestroyIndirectCommandsLayoutNV;
9116         return true;
9117     }
9118 
9119     // ---- VK_EXT_acquire_drm_display extension commands
9120     if (!strcmp("vkAcquireDrmDisplayEXT", name)) {
9121         *addr = (ptr_instance->enabled_known_extensions.ext_acquire_drm_display == 1)
9122                      ? (void *)AcquireDrmDisplayEXT
9123                      : NULL;
9124         return true;
9125     }
9126     if (!strcmp("vkGetDrmDisplayEXT", name)) {
9127         *addr = (ptr_instance->enabled_known_extensions.ext_acquire_drm_display == 1)
9128                      ? (void *)GetDrmDisplayEXT
9129                      : NULL;
9130         return true;
9131     }
9132 
9133     // ---- VK_EXT_private_data extension commands
9134     if (!strcmp("vkCreatePrivateDataSlotEXT", name)) {
9135         *addr = (void *)CreatePrivateDataSlotEXT;
9136         return true;
9137     }
9138     if (!strcmp("vkDestroyPrivateDataSlotEXT", name)) {
9139         *addr = (void *)DestroyPrivateDataSlotEXT;
9140         return true;
9141     }
9142     if (!strcmp("vkSetPrivateDataEXT", name)) {
9143         *addr = (void *)SetPrivateDataEXT;
9144         return true;
9145     }
9146     if (!strcmp("vkGetPrivateDataEXT", name)) {
9147         *addr = (void *)GetPrivateDataEXT;
9148         return true;
9149     }
9150 
9151     // ---- VK_EXT_metal_objects extension commands
9152 #ifdef VK_USE_PLATFORM_METAL_EXT
9153     if (!strcmp("vkExportMetalObjectsEXT", name)) {
9154         *addr = (void *)ExportMetalObjectsEXT;
9155         return true;
9156     }
9157 #endif // VK_USE_PLATFORM_METAL_EXT
9158 
9159     // ---- VK_NV_fragment_shading_rate_enums extension commands
9160     if (!strcmp("vkCmdSetFragmentShadingRateEnumNV", name)) {
9161         *addr = (void *)CmdSetFragmentShadingRateEnumNV;
9162         return true;
9163     }
9164 
9165     // ---- VK_EXT_image_compression_control extension commands
9166     if (!strcmp("vkGetImageSubresourceLayout2EXT", name)) {
9167         *addr = (void *)GetImageSubresourceLayout2EXT;
9168         return true;
9169     }
9170 
9171     // ---- VK_EXT_device_fault extension commands
9172     if (!strcmp("vkGetDeviceFaultInfoEXT", name)) {
9173         *addr = (void *)GetDeviceFaultInfoEXT;
9174         return true;
9175     }
9176 
9177     // ---- VK_NV_acquire_winrt_display extension commands
9178 #ifdef VK_USE_PLATFORM_WIN32_KHR
9179     if (!strcmp("vkAcquireWinrtDisplayNV", name)) {
9180         *addr = (void *)AcquireWinrtDisplayNV;
9181         return true;
9182     }
9183 #endif // VK_USE_PLATFORM_WIN32_KHR
9184 #ifdef VK_USE_PLATFORM_WIN32_KHR
9185     if (!strcmp("vkGetWinrtDisplayNV", name)) {
9186         *addr = (void *)GetWinrtDisplayNV;
9187         return true;
9188     }
9189 #endif // VK_USE_PLATFORM_WIN32_KHR
9190 
9191     // ---- VK_EXT_vertex_input_dynamic_state extension commands
9192     if (!strcmp("vkCmdSetVertexInputEXT", name)) {
9193         *addr = (void *)CmdSetVertexInputEXT;
9194         return true;
9195     }
9196 
9197     // ---- VK_FUCHSIA_external_memory extension commands
9198 #ifdef VK_USE_PLATFORM_FUCHSIA
9199     if (!strcmp("vkGetMemoryZirconHandleFUCHSIA", name)) {
9200         *addr = (void *)GetMemoryZirconHandleFUCHSIA;
9201         return true;
9202     }
9203 #endif // VK_USE_PLATFORM_FUCHSIA
9204 #ifdef VK_USE_PLATFORM_FUCHSIA
9205     if (!strcmp("vkGetMemoryZirconHandlePropertiesFUCHSIA", name)) {
9206         *addr = (void *)GetMemoryZirconHandlePropertiesFUCHSIA;
9207         return true;
9208     }
9209 #endif // VK_USE_PLATFORM_FUCHSIA
9210 
9211     // ---- VK_FUCHSIA_external_semaphore extension commands
9212 #ifdef VK_USE_PLATFORM_FUCHSIA
9213     if (!strcmp("vkImportSemaphoreZirconHandleFUCHSIA", name)) {
9214         *addr = (void *)ImportSemaphoreZirconHandleFUCHSIA;
9215         return true;
9216     }
9217 #endif // VK_USE_PLATFORM_FUCHSIA
9218 #ifdef VK_USE_PLATFORM_FUCHSIA
9219     if (!strcmp("vkGetSemaphoreZirconHandleFUCHSIA", name)) {
9220         *addr = (void *)GetSemaphoreZirconHandleFUCHSIA;
9221         return true;
9222     }
9223 #endif // VK_USE_PLATFORM_FUCHSIA
9224 
9225     // ---- VK_FUCHSIA_buffer_collection extension commands
9226 #ifdef VK_USE_PLATFORM_FUCHSIA
9227     if (!strcmp("vkCreateBufferCollectionFUCHSIA", name)) {
9228         *addr = (void *)CreateBufferCollectionFUCHSIA;
9229         return true;
9230     }
9231 #endif // VK_USE_PLATFORM_FUCHSIA
9232 #ifdef VK_USE_PLATFORM_FUCHSIA
9233     if (!strcmp("vkSetBufferCollectionImageConstraintsFUCHSIA", name)) {
9234         *addr = (void *)SetBufferCollectionImageConstraintsFUCHSIA;
9235         return true;
9236     }
9237 #endif // VK_USE_PLATFORM_FUCHSIA
9238 #ifdef VK_USE_PLATFORM_FUCHSIA
9239     if (!strcmp("vkSetBufferCollectionBufferConstraintsFUCHSIA", name)) {
9240         *addr = (void *)SetBufferCollectionBufferConstraintsFUCHSIA;
9241         return true;
9242     }
9243 #endif // VK_USE_PLATFORM_FUCHSIA
9244 #ifdef VK_USE_PLATFORM_FUCHSIA
9245     if (!strcmp("vkDestroyBufferCollectionFUCHSIA", name)) {
9246         *addr = (void *)DestroyBufferCollectionFUCHSIA;
9247         return true;
9248     }
9249 #endif // VK_USE_PLATFORM_FUCHSIA
9250 #ifdef VK_USE_PLATFORM_FUCHSIA
9251     if (!strcmp("vkGetBufferCollectionPropertiesFUCHSIA", name)) {
9252         *addr = (void *)GetBufferCollectionPropertiesFUCHSIA;
9253         return true;
9254     }
9255 #endif // VK_USE_PLATFORM_FUCHSIA
9256 
9257     // ---- VK_HUAWEI_subpass_shading extension commands
9258     if (!strcmp("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI", name)) {
9259         *addr = (void *)GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
9260         return true;
9261     }
9262     if (!strcmp("vkCmdSubpassShadingHUAWEI", name)) {
9263         *addr = (void *)CmdSubpassShadingHUAWEI;
9264         return true;
9265     }
9266 
9267     // ---- VK_HUAWEI_invocation_mask extension commands
9268     if (!strcmp("vkCmdBindInvocationMaskHUAWEI", name)) {
9269         *addr = (void *)CmdBindInvocationMaskHUAWEI;
9270         return true;
9271     }
9272 
9273     // ---- VK_NV_external_memory_rdma extension commands
9274     if (!strcmp("vkGetMemoryRemoteAddressNV", name)) {
9275         *addr = (void *)GetMemoryRemoteAddressNV;
9276         return true;
9277     }
9278 
9279     // ---- VK_EXT_pipeline_properties extension commands
9280     if (!strcmp("vkGetPipelinePropertiesEXT", name)) {
9281         *addr = (void *)GetPipelinePropertiesEXT;
9282         return true;
9283     }
9284 
9285     // ---- VK_EXT_extended_dynamic_state2 extension commands
9286     if (!strcmp("vkCmdSetPatchControlPointsEXT", name)) {
9287         *addr = (void *)CmdSetPatchControlPointsEXT;
9288         return true;
9289     }
9290     if (!strcmp("vkCmdSetRasterizerDiscardEnableEXT", name)) {
9291         *addr = (void *)CmdSetRasterizerDiscardEnableEXT;
9292         return true;
9293     }
9294     if (!strcmp("vkCmdSetDepthBiasEnableEXT", name)) {
9295         *addr = (void *)CmdSetDepthBiasEnableEXT;
9296         return true;
9297     }
9298     if (!strcmp("vkCmdSetLogicOpEXT", name)) {
9299         *addr = (void *)CmdSetLogicOpEXT;
9300         return true;
9301     }
9302     if (!strcmp("vkCmdSetPrimitiveRestartEnableEXT", name)) {
9303         *addr = (void *)CmdSetPrimitiveRestartEnableEXT;
9304         return true;
9305     }
9306 
9307     // ---- VK_EXT_color_write_enable extension commands
9308     if (!strcmp("vkCmdSetColorWriteEnableEXT", name)) {
9309         *addr = (void *)CmdSetColorWriteEnableEXT;
9310         return true;
9311     }
9312 
9313     // ---- VK_EXT_multi_draw extension commands
9314     if (!strcmp("vkCmdDrawMultiEXT", name)) {
9315         *addr = (void *)CmdDrawMultiEXT;
9316         return true;
9317     }
9318     if (!strcmp("vkCmdDrawMultiIndexedEXT", name)) {
9319         *addr = (void *)CmdDrawMultiIndexedEXT;
9320         return true;
9321     }
9322 
9323     // ---- VK_EXT_opacity_micromap extension commands
9324     if (!strcmp("vkCreateMicromapEXT", name)) {
9325         *addr = (void *)CreateMicromapEXT;
9326         return true;
9327     }
9328     if (!strcmp("vkDestroyMicromapEXT", name)) {
9329         *addr = (void *)DestroyMicromapEXT;
9330         return true;
9331     }
9332     if (!strcmp("vkCmdBuildMicromapsEXT", name)) {
9333         *addr = (void *)CmdBuildMicromapsEXT;
9334         return true;
9335     }
9336     if (!strcmp("vkBuildMicromapsEXT", name)) {
9337         *addr = (void *)BuildMicromapsEXT;
9338         return true;
9339     }
9340     if (!strcmp("vkCopyMicromapEXT", name)) {
9341         *addr = (void *)CopyMicromapEXT;
9342         return true;
9343     }
9344     if (!strcmp("vkCopyMicromapToMemoryEXT", name)) {
9345         *addr = (void *)CopyMicromapToMemoryEXT;
9346         return true;
9347     }
9348     if (!strcmp("vkCopyMemoryToMicromapEXT", name)) {
9349         *addr = (void *)CopyMemoryToMicromapEXT;
9350         return true;
9351     }
9352     if (!strcmp("vkWriteMicromapsPropertiesEXT", name)) {
9353         *addr = (void *)WriteMicromapsPropertiesEXT;
9354         return true;
9355     }
9356     if (!strcmp("vkCmdCopyMicromapEXT", name)) {
9357         *addr = (void *)CmdCopyMicromapEXT;
9358         return true;
9359     }
9360     if (!strcmp("vkCmdCopyMicromapToMemoryEXT", name)) {
9361         *addr = (void *)CmdCopyMicromapToMemoryEXT;
9362         return true;
9363     }
9364     if (!strcmp("vkCmdCopyMemoryToMicromapEXT", name)) {
9365         *addr = (void *)CmdCopyMemoryToMicromapEXT;
9366         return true;
9367     }
9368     if (!strcmp("vkCmdWriteMicromapsPropertiesEXT", name)) {
9369         *addr = (void *)CmdWriteMicromapsPropertiesEXT;
9370         return true;
9371     }
9372     if (!strcmp("vkGetDeviceMicromapCompatibilityEXT", name)) {
9373         *addr = (void *)GetDeviceMicromapCompatibilityEXT;
9374         return true;
9375     }
9376     if (!strcmp("vkGetMicromapBuildSizesEXT", name)) {
9377         *addr = (void *)GetMicromapBuildSizesEXT;
9378         return true;
9379     }
9380 
9381     // ---- VK_EXT_pageable_device_local_memory extension commands
9382     if (!strcmp("vkSetDeviceMemoryPriorityEXT", name)) {
9383         *addr = (void *)SetDeviceMemoryPriorityEXT;
9384         return true;
9385     }
9386 
9387     // ---- VK_VALVE_descriptor_set_host_mapping extension commands
9388     if (!strcmp("vkGetDescriptorSetLayoutHostMappingInfoVALVE", name)) {
9389         *addr = (void *)GetDescriptorSetLayoutHostMappingInfoVALVE;
9390         return true;
9391     }
9392     if (!strcmp("vkGetDescriptorSetHostMappingVALVE", name)) {
9393         *addr = (void *)GetDescriptorSetHostMappingVALVE;
9394         return true;
9395     }
9396 
9397     // ---- VK_EXT_extended_dynamic_state3 extension commands
9398     if (!strcmp("vkCmdSetTessellationDomainOriginEXT", name)) {
9399         *addr = (void *)CmdSetTessellationDomainOriginEXT;
9400         return true;
9401     }
9402     if (!strcmp("vkCmdSetDepthClampEnableEXT", name)) {
9403         *addr = (void *)CmdSetDepthClampEnableEXT;
9404         return true;
9405     }
9406     if (!strcmp("vkCmdSetPolygonModeEXT", name)) {
9407         *addr = (void *)CmdSetPolygonModeEXT;
9408         return true;
9409     }
9410     if (!strcmp("vkCmdSetRasterizationSamplesEXT", name)) {
9411         *addr = (void *)CmdSetRasterizationSamplesEXT;
9412         return true;
9413     }
9414     if (!strcmp("vkCmdSetSampleMaskEXT", name)) {
9415         *addr = (void *)CmdSetSampleMaskEXT;
9416         return true;
9417     }
9418     if (!strcmp("vkCmdSetAlphaToCoverageEnableEXT", name)) {
9419         *addr = (void *)CmdSetAlphaToCoverageEnableEXT;
9420         return true;
9421     }
9422     if (!strcmp("vkCmdSetAlphaToOneEnableEXT", name)) {
9423         *addr = (void *)CmdSetAlphaToOneEnableEXT;
9424         return true;
9425     }
9426     if (!strcmp("vkCmdSetLogicOpEnableEXT", name)) {
9427         *addr = (void *)CmdSetLogicOpEnableEXT;
9428         return true;
9429     }
9430     if (!strcmp("vkCmdSetColorBlendEnableEXT", name)) {
9431         *addr = (void *)CmdSetColorBlendEnableEXT;
9432         return true;
9433     }
9434     if (!strcmp("vkCmdSetColorBlendEquationEXT", name)) {
9435         *addr = (void *)CmdSetColorBlendEquationEXT;
9436         return true;
9437     }
9438     if (!strcmp("vkCmdSetColorWriteMaskEXT", name)) {
9439         *addr = (void *)CmdSetColorWriteMaskEXT;
9440         return true;
9441     }
9442     if (!strcmp("vkCmdSetRasterizationStreamEXT", name)) {
9443         *addr = (void *)CmdSetRasterizationStreamEXT;
9444         return true;
9445     }
9446     if (!strcmp("vkCmdSetConservativeRasterizationModeEXT", name)) {
9447         *addr = (void *)CmdSetConservativeRasterizationModeEXT;
9448         return true;
9449     }
9450     if (!strcmp("vkCmdSetExtraPrimitiveOverestimationSizeEXT", name)) {
9451         *addr = (void *)CmdSetExtraPrimitiveOverestimationSizeEXT;
9452         return true;
9453     }
9454     if (!strcmp("vkCmdSetDepthClipEnableEXT", name)) {
9455         *addr = (void *)CmdSetDepthClipEnableEXT;
9456         return true;
9457     }
9458     if (!strcmp("vkCmdSetSampleLocationsEnableEXT", name)) {
9459         *addr = (void *)CmdSetSampleLocationsEnableEXT;
9460         return true;
9461     }
9462     if (!strcmp("vkCmdSetColorBlendAdvancedEXT", name)) {
9463         *addr = (void *)CmdSetColorBlendAdvancedEXT;
9464         return true;
9465     }
9466     if (!strcmp("vkCmdSetProvokingVertexModeEXT", name)) {
9467         *addr = (void *)CmdSetProvokingVertexModeEXT;
9468         return true;
9469     }
9470     if (!strcmp("vkCmdSetLineRasterizationModeEXT", name)) {
9471         *addr = (void *)CmdSetLineRasterizationModeEXT;
9472         return true;
9473     }
9474     if (!strcmp("vkCmdSetLineStippleEnableEXT", name)) {
9475         *addr = (void *)CmdSetLineStippleEnableEXT;
9476         return true;
9477     }
9478     if (!strcmp("vkCmdSetDepthClipNegativeOneToOneEXT", name)) {
9479         *addr = (void *)CmdSetDepthClipNegativeOneToOneEXT;
9480         return true;
9481     }
9482     if (!strcmp("vkCmdSetViewportWScalingEnableNV", name)) {
9483         *addr = (void *)CmdSetViewportWScalingEnableNV;
9484         return true;
9485     }
9486     if (!strcmp("vkCmdSetViewportSwizzleNV", name)) {
9487         *addr = (void *)CmdSetViewportSwizzleNV;
9488         return true;
9489     }
9490     if (!strcmp("vkCmdSetCoverageToColorEnableNV", name)) {
9491         *addr = (void *)CmdSetCoverageToColorEnableNV;
9492         return true;
9493     }
9494     if (!strcmp("vkCmdSetCoverageToColorLocationNV", name)) {
9495         *addr = (void *)CmdSetCoverageToColorLocationNV;
9496         return true;
9497     }
9498     if (!strcmp("vkCmdSetCoverageModulationModeNV", name)) {
9499         *addr = (void *)CmdSetCoverageModulationModeNV;
9500         return true;
9501     }
9502     if (!strcmp("vkCmdSetCoverageModulationTableEnableNV", name)) {
9503         *addr = (void *)CmdSetCoverageModulationTableEnableNV;
9504         return true;
9505     }
9506     if (!strcmp("vkCmdSetCoverageModulationTableNV", name)) {
9507         *addr = (void *)CmdSetCoverageModulationTableNV;
9508         return true;
9509     }
9510     if (!strcmp("vkCmdSetShadingRateImageEnableNV", name)) {
9511         *addr = (void *)CmdSetShadingRateImageEnableNV;
9512         return true;
9513     }
9514     if (!strcmp("vkCmdSetRepresentativeFragmentTestEnableNV", name)) {
9515         *addr = (void *)CmdSetRepresentativeFragmentTestEnableNV;
9516         return true;
9517     }
9518     if (!strcmp("vkCmdSetCoverageReductionModeNV", name)) {
9519         *addr = (void *)CmdSetCoverageReductionModeNV;
9520         return true;
9521     }
9522 
9523     // ---- VK_EXT_shader_module_identifier extension commands
9524     if (!strcmp("vkGetShaderModuleIdentifierEXT", name)) {
9525         *addr = (void *)GetShaderModuleIdentifierEXT;
9526         return true;
9527     }
9528     if (!strcmp("vkGetShaderModuleCreateInfoIdentifierEXT", name)) {
9529         *addr = (void *)GetShaderModuleCreateInfoIdentifierEXT;
9530         return true;
9531     }
9532 
9533     // ---- VK_NV_optical_flow extension commands
9534     if (!strcmp("vkGetPhysicalDeviceOpticalFlowImageFormatsNV", name)) {
9535         *addr = (void *)GetPhysicalDeviceOpticalFlowImageFormatsNV;
9536         return true;
9537     }
9538     if (!strcmp("vkCreateOpticalFlowSessionNV", name)) {
9539         *addr = (void *)CreateOpticalFlowSessionNV;
9540         return true;
9541     }
9542     if (!strcmp("vkDestroyOpticalFlowSessionNV", name)) {
9543         *addr = (void *)DestroyOpticalFlowSessionNV;
9544         return true;
9545     }
9546     if (!strcmp("vkBindOpticalFlowSessionImageNV", name)) {
9547         *addr = (void *)BindOpticalFlowSessionImageNV;
9548         return true;
9549     }
9550     if (!strcmp("vkCmdOpticalFlowExecuteNV", name)) {
9551         *addr = (void *)CmdOpticalFlowExecuteNV;
9552         return true;
9553     }
9554 
9555     // ---- VK_QCOM_tile_properties extension commands
9556     if (!strcmp("vkGetFramebufferTilePropertiesQCOM", name)) {
9557         *addr = (void *)GetFramebufferTilePropertiesQCOM;
9558         return true;
9559     }
9560     if (!strcmp("vkGetDynamicRenderingTilePropertiesQCOM", name)) {
9561         *addr = (void *)GetDynamicRenderingTilePropertiesQCOM;
9562         return true;
9563     }
9564 
9565     // ---- VK_OHOS_native_buffer extension commands
9566 #ifdef VK_USE_PLATFORM_OHOS
9567     if (!strcmp("vkSetNativeFenceFdOpenHarmony", name)) {
9568         *addr = (void *)SetNativeFenceFdOpenHarmony;
9569         return true;
9570     }
9571 #endif // VK_USE_PLATFORM_OHOS
9572 #ifdef VK_USE_PLATFORM_OHOS
9573     if (!strcmp("vkGetNativeFenceFdOpenHarmony", name)) {
9574         *addr = (void *)GetNativeFenceFdOpenHarmony;
9575         return true;
9576     }
9577 #endif // VK_USE_PLATFORM_OHOS
9578 #ifdef VK_USE_PLATFORM_OHOS
9579     if (!strcmp("vkGetSwapchainGrallocUsageOHOS", name)) {
9580         *addr = (void *)GetSwapchainGrallocUsageOHOS;
9581         return true;
9582     }
9583 #endif // VK_USE_PLATFORM_OHOS
9584 #ifdef VK_USE_PLATFORM_OHOS
9585     if (!strcmp("vkAcquireImageOHOS", name)) {
9586         *addr = (void *)AcquireImageOHOS;
9587         return true;
9588     }
9589 #endif // VK_USE_PLATFORM_OHOS
9590 #ifdef VK_USE_PLATFORM_OHOS
9591     if (!strcmp("vkQueueSignalReleaseImageOHOS", name)) {
9592         *addr = (void *)QueueSignalReleaseImageOHOS;
9593         return true;
9594     }
9595 #endif // VK_USE_PLATFORM_OHOS
9596 
9597     // ---- VK_OHOS_external_memory extension commands
9598 #ifdef VK_USE_PLATFORM_OHOS
9599     if (!strcmp("vkGetNativeBufferPropertiesOHOS", name)) {
9600         *addr = (void *)vkGetNativeBufferPropertiesOHOS;
9601         return true;
9602     }
9603 #endif // VK_USE_PLATFORM_OHOS
9604 #ifdef VK_USE_PLATFORM_OHOS
9605     if (!strcmp("vkGetMemoryNativeBufferOHOS", name)) {
9606         *addr = (void *)vkGetMemoryNativeBufferOHOS;
9607         return true;
9608     }
9609 #endif // VK_USE_PLATFORM_OHOS
9610 
9611     // ---- VK_KHR_acceleration_structure extension commands
9612     if (!strcmp("vkCreateAccelerationStructureKHR", name)) {
9613         *addr = (void *)CreateAccelerationStructureKHR;
9614         return true;
9615     }
9616     if (!strcmp("vkDestroyAccelerationStructureKHR", name)) {
9617         *addr = (void *)DestroyAccelerationStructureKHR;
9618         return true;
9619     }
9620     if (!strcmp("vkCmdBuildAccelerationStructuresKHR", name)) {
9621         *addr = (void *)CmdBuildAccelerationStructuresKHR;
9622         return true;
9623     }
9624     if (!strcmp("vkCmdBuildAccelerationStructuresIndirectKHR", name)) {
9625         *addr = (void *)CmdBuildAccelerationStructuresIndirectKHR;
9626         return true;
9627     }
9628     if (!strcmp("vkBuildAccelerationStructuresKHR", name)) {
9629         *addr = (void *)BuildAccelerationStructuresKHR;
9630         return true;
9631     }
9632     if (!strcmp("vkCopyAccelerationStructureKHR", name)) {
9633         *addr = (void *)CopyAccelerationStructureKHR;
9634         return true;
9635     }
9636     if (!strcmp("vkCopyAccelerationStructureToMemoryKHR", name)) {
9637         *addr = (void *)CopyAccelerationStructureToMemoryKHR;
9638         return true;
9639     }
9640     if (!strcmp("vkCopyMemoryToAccelerationStructureKHR", name)) {
9641         *addr = (void *)CopyMemoryToAccelerationStructureKHR;
9642         return true;
9643     }
9644     if (!strcmp("vkWriteAccelerationStructuresPropertiesKHR", name)) {
9645         *addr = (void *)WriteAccelerationStructuresPropertiesKHR;
9646         return true;
9647     }
9648     if (!strcmp("vkCmdCopyAccelerationStructureKHR", name)) {
9649         *addr = (void *)CmdCopyAccelerationStructureKHR;
9650         return true;
9651     }
9652     if (!strcmp("vkCmdCopyAccelerationStructureToMemoryKHR", name)) {
9653         *addr = (void *)CmdCopyAccelerationStructureToMemoryKHR;
9654         return true;
9655     }
9656     if (!strcmp("vkCmdCopyMemoryToAccelerationStructureKHR", name)) {
9657         *addr = (void *)CmdCopyMemoryToAccelerationStructureKHR;
9658         return true;
9659     }
9660     if (!strcmp("vkGetAccelerationStructureDeviceAddressKHR", name)) {
9661         *addr = (void *)GetAccelerationStructureDeviceAddressKHR;
9662         return true;
9663     }
9664     if (!strcmp("vkCmdWriteAccelerationStructuresPropertiesKHR", name)) {
9665         *addr = (void *)CmdWriteAccelerationStructuresPropertiesKHR;
9666         return true;
9667     }
9668     if (!strcmp("vkGetDeviceAccelerationStructureCompatibilityKHR", name)) {
9669         *addr = (void *)GetDeviceAccelerationStructureCompatibilityKHR;
9670         return true;
9671     }
9672     if (!strcmp("vkGetAccelerationStructureBuildSizesKHR", name)) {
9673         *addr = (void *)GetAccelerationStructureBuildSizesKHR;
9674         return true;
9675     }
9676 
9677     // ---- VK_KHR_ray_tracing_pipeline extension commands
9678     if (!strcmp("vkCmdTraceRaysKHR", name)) {
9679         *addr = (void *)CmdTraceRaysKHR;
9680         return true;
9681     }
9682     if (!strcmp("vkCreateRayTracingPipelinesKHR", name)) {
9683         *addr = (void *)CreateRayTracingPipelinesKHR;
9684         return true;
9685     }
9686     if (!strcmp("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR", name)) {
9687         *addr = (void *)GetRayTracingCaptureReplayShaderGroupHandlesKHR;
9688         return true;
9689     }
9690     if (!strcmp("vkCmdTraceRaysIndirectKHR", name)) {
9691         *addr = (void *)CmdTraceRaysIndirectKHR;
9692         return true;
9693     }
9694     if (!strcmp("vkGetRayTracingShaderGroupStackSizeKHR", name)) {
9695         *addr = (void *)GetRayTracingShaderGroupStackSizeKHR;
9696         return true;
9697     }
9698     if (!strcmp("vkCmdSetRayTracingPipelineStackSizeKHR", name)) {
9699         *addr = (void *)CmdSetRayTracingPipelineStackSizeKHR;
9700         return true;
9701     }
9702 
9703     // ---- VK_EXT_mesh_shader extension commands
9704     if (!strcmp("vkCmdDrawMeshTasksEXT", name)) {
9705         *addr = (void *)CmdDrawMeshTasksEXT;
9706         return true;
9707     }
9708     if (!strcmp("vkCmdDrawMeshTasksIndirectEXT", name)) {
9709         *addr = (void *)CmdDrawMeshTasksIndirectEXT;
9710         return true;
9711     }
9712     if (!strcmp("vkCmdDrawMeshTasksIndirectCountEXT", name)) {
9713         *addr = (void *)CmdDrawMeshTasksIndirectCountEXT;
9714         return true;
9715     }
9716     return false;
9717 }
9718 
9719 // A function that can be used to query enabled extensions during a vkCreateInstance call
extensions_create_instance(struct loader_instance * ptr_instance,const VkInstanceCreateInfo * pCreateInfo)9720 void extensions_create_instance(struct loader_instance *ptr_instance, const VkInstanceCreateInfo *pCreateInfo) {
9721     for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) {
9722 
9723     // ---- VK_KHR_get_physical_device_properties2 extension commands
9724         if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME)) {
9725             ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 = 1;
9726 
9727     // ---- VK_KHR_device_group_creation extension commands
9728         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME)) {
9729             ptr_instance->enabled_known_extensions.khr_device_group_creation = 1;
9730 
9731     // ---- VK_KHR_external_memory_capabilities extension commands
9732         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME)) {
9733             ptr_instance->enabled_known_extensions.khr_external_memory_capabilities = 1;
9734 
9735     // ---- VK_KHR_external_semaphore_capabilities extension commands
9736         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME)) {
9737             ptr_instance->enabled_known_extensions.khr_external_semaphore_capabilities = 1;
9738 
9739     // ---- VK_KHR_external_fence_capabilities extension commands
9740         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME)) {
9741             ptr_instance->enabled_known_extensions.khr_external_fence_capabilities = 1;
9742 
9743     // ---- VK_NV_external_memory_capabilities extension commands
9744         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME)) {
9745             ptr_instance->enabled_known_extensions.nv_external_memory_capabilities = 1;
9746 
9747     // ---- VK_EXT_direct_mode_display extension commands
9748         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME)) {
9749             ptr_instance->enabled_known_extensions.ext_direct_mode_display = 1;
9750 
9751     // ---- VK_EXT_acquire_xlib_display extension commands
9752 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
9753         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME)) {
9754             ptr_instance->enabled_known_extensions.ext_acquire_xlib_display = 1;
9755 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
9756 
9757     // ---- VK_EXT_display_surface_counter extension commands
9758         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME)) {
9759             ptr_instance->enabled_known_extensions.ext_display_surface_counter = 1;
9760 
9761     // ---- VK_EXT_debug_utils extension commands
9762         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_DEBUG_UTILS_EXTENSION_NAME)) {
9763             ptr_instance->enabled_known_extensions.ext_debug_utils = 1;
9764 
9765     // ---- VK_EXT_acquire_drm_display extension commands
9766         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME)) {
9767             ptr_instance->enabled_known_extensions.ext_acquire_drm_display = 1;
9768         }
9769     }
9770 }
9771 
9772 // Some device commands still need a terminator because the loader needs to unwrap something about them.
9773 // In many cases, the item needing unwrapping is a VkPhysicalDevice or VkSurfaceKHR object.  But there may be other items
9774 // in the future.
get_extension_device_proc_terminator(struct loader_device * dev,const char * pName)9775 PFN_vkVoidFunction get_extension_device_proc_terminator(struct loader_device *dev, const char *pName) {
9776     PFN_vkVoidFunction addr = NULL;
9777 
9778     // ---- VK_KHR_swapchain extension commands
9779     if (dev->extensions.khr_swapchain_enabled) {
9780         if(!strcmp(pName, "vkCreateSwapchainKHR")) {
9781             addr = (PFN_vkVoidFunction)terminator_CreateSwapchainKHR;
9782         } else if(!strcmp(pName, "vkGetDeviceGroupSurfacePresentModesKHR")) {
9783             addr = (PFN_vkVoidFunction)terminator_GetDeviceGroupSurfacePresentModesKHR;
9784         }
9785     }
9786 
9787     // ---- VK_KHR_display_swapchain extension commands
9788     if (dev->extensions.khr_display_swapchain_enabled) {
9789         if(!strcmp(pName, "vkCreateSharedSwapchainsKHR")) {
9790             addr = (PFN_vkVoidFunction)terminator_CreateSharedSwapchainsKHR;
9791         }
9792     }
9793 
9794     // ---- VK_EXT_debug_marker extension commands
9795     if (dev->extensions.ext_debug_marker_enabled) {
9796         if(!strcmp(pName, "vkDebugMarkerSetObjectTagEXT")) {
9797             addr = (PFN_vkVoidFunction)terminator_DebugMarkerSetObjectTagEXT;
9798         } else if(!strcmp(pName, "vkDebugMarkerSetObjectNameEXT")) {
9799             addr = (PFN_vkVoidFunction)terminator_DebugMarkerSetObjectNameEXT;
9800         }
9801     }
9802 
9803     // ---- VK_EXT_debug_utils extension commands
9804     if (dev->extensions.ext_debug_utils_enabled) {
9805         if(!strcmp(pName, "vkSetDebugUtilsObjectNameEXT")) {
9806             addr = (PFN_vkVoidFunction)terminator_SetDebugUtilsObjectNameEXT;
9807         } else if(!strcmp(pName, "vkSetDebugUtilsObjectTagEXT")) {
9808             addr = (PFN_vkVoidFunction)terminator_SetDebugUtilsObjectTagEXT;
9809         } else if(!strcmp(pName, "vkQueueBeginDebugUtilsLabelEXT")) {
9810             addr = (PFN_vkVoidFunction)terminator_QueueBeginDebugUtilsLabelEXT;
9811         } else if(!strcmp(pName, "vkQueueEndDebugUtilsLabelEXT")) {
9812             addr = (PFN_vkVoidFunction)terminator_QueueEndDebugUtilsLabelEXT;
9813         } else if(!strcmp(pName, "vkQueueInsertDebugUtilsLabelEXT")) {
9814             addr = (PFN_vkVoidFunction)terminator_QueueInsertDebugUtilsLabelEXT;
9815         } else if(!strcmp(pName, "vkCmdBeginDebugUtilsLabelEXT")) {
9816             addr = (PFN_vkVoidFunction)terminator_CmdBeginDebugUtilsLabelEXT;
9817         } else if(!strcmp(pName, "vkCmdEndDebugUtilsLabelEXT")) {
9818             addr = (PFN_vkVoidFunction)terminator_CmdEndDebugUtilsLabelEXT;
9819         } else if(!strcmp(pName, "vkCmdInsertDebugUtilsLabelEXT")) {
9820             addr = (PFN_vkVoidFunction)terminator_CmdInsertDebugUtilsLabelEXT;
9821         }
9822     }
9823 #ifdef VK_USE_PLATFORM_WIN32_KHR
9824 
9825     // ---- VK_EXT_full_screen_exclusive extension commands
9826     if (dev->extensions.ext_full_screen_exclusive_enabled && dev->extensions.khr_device_group_enabled) {
9827         if(!strcmp(pName, "vkGetDeviceGroupSurfacePresentModes2EXT")) {
9828             addr = (PFN_vkVoidFunction)terminator_GetDeviceGroupSurfacePresentModes2EXT;
9829         }
9830     }
9831 #endif // None
9832     return addr;
9833 }
9834 
9835 // This table contains the loader's instance dispatch table, which contains
9836 // default functions if no instance layers are activated.  This contains
9837 // pointers to "terminator functions".
9838 const VkLayerInstanceDispatchTable instance_disp = {
9839 
9840     // ---- Core 1_0 commands
9841     .DestroyInstance = terminator_DestroyInstance,
9842     .EnumeratePhysicalDevices = terminator_EnumeratePhysicalDevices,
9843     .GetPhysicalDeviceFeatures = terminator_GetPhysicalDeviceFeatures,
9844     .GetPhysicalDeviceFormatProperties = terminator_GetPhysicalDeviceFormatProperties,
9845     .GetPhysicalDeviceImageFormatProperties = terminator_GetPhysicalDeviceImageFormatProperties,
9846     .GetPhysicalDeviceProperties = terminator_GetPhysicalDeviceProperties,
9847     .GetPhysicalDeviceQueueFamilyProperties = terminator_GetPhysicalDeviceQueueFamilyProperties,
9848     .GetPhysicalDeviceMemoryProperties = terminator_GetPhysicalDeviceMemoryProperties,
9849     .GetInstanceProcAddr = vkGetInstanceProcAddr,
9850     .EnumerateDeviceExtensionProperties = terminator_EnumerateDeviceExtensionProperties,
9851     .EnumerateDeviceLayerProperties = terminator_EnumerateDeviceLayerProperties,
9852     .GetPhysicalDeviceSparseImageFormatProperties = terminator_GetPhysicalDeviceSparseImageFormatProperties,
9853 
9854     // ---- Core 1_1 commands
9855     .EnumeratePhysicalDeviceGroups = terminator_EnumeratePhysicalDeviceGroups,
9856     .GetPhysicalDeviceFeatures2 = terminator_GetPhysicalDeviceFeatures2,
9857     .GetPhysicalDeviceProperties2 = terminator_GetPhysicalDeviceProperties2,
9858     .GetPhysicalDeviceFormatProperties2 = terminator_GetPhysicalDeviceFormatProperties2,
9859     .GetPhysicalDeviceImageFormatProperties2 = terminator_GetPhysicalDeviceImageFormatProperties2,
9860     .GetPhysicalDeviceQueueFamilyProperties2 = terminator_GetPhysicalDeviceQueueFamilyProperties2,
9861     .GetPhysicalDeviceMemoryProperties2 = terminator_GetPhysicalDeviceMemoryProperties2,
9862     .GetPhysicalDeviceSparseImageFormatProperties2 = terminator_GetPhysicalDeviceSparseImageFormatProperties2,
9863     .GetPhysicalDeviceExternalBufferProperties = terminator_GetPhysicalDeviceExternalBufferProperties,
9864     .GetPhysicalDeviceExternalFenceProperties = terminator_GetPhysicalDeviceExternalFenceProperties,
9865     .GetPhysicalDeviceExternalSemaphoreProperties = terminator_GetPhysicalDeviceExternalSemaphoreProperties,
9866 
9867     // ---- Core 1_3 commands
9868     .GetPhysicalDeviceToolProperties = terminator_GetPhysicalDeviceToolProperties,
9869 
9870     // ---- VK_KHR_surface extension commands
9871     .DestroySurfaceKHR = terminator_DestroySurfaceKHR,
9872     .GetPhysicalDeviceSurfaceSupportKHR = terminator_GetPhysicalDeviceSurfaceSupportKHR,
9873     .GetPhysicalDeviceSurfaceCapabilitiesKHR = terminator_GetPhysicalDeviceSurfaceCapabilitiesKHR,
9874     .GetPhysicalDeviceSurfaceFormatsKHR = terminator_GetPhysicalDeviceSurfaceFormatsKHR,
9875     .GetPhysicalDeviceSurfacePresentModesKHR = terminator_GetPhysicalDeviceSurfacePresentModesKHR,
9876 
9877     // ---- VK_KHR_swapchain extension commands
9878     .GetPhysicalDevicePresentRectanglesKHR = terminator_GetPhysicalDevicePresentRectanglesKHR,
9879 
9880     // ---- VK_KHR_display extension commands
9881     .GetPhysicalDeviceDisplayPropertiesKHR = terminator_GetPhysicalDeviceDisplayPropertiesKHR,
9882     .GetPhysicalDeviceDisplayPlanePropertiesKHR = terminator_GetPhysicalDeviceDisplayPlanePropertiesKHR,
9883     .GetDisplayPlaneSupportedDisplaysKHR = terminator_GetDisplayPlaneSupportedDisplaysKHR,
9884     .GetDisplayModePropertiesKHR = terminator_GetDisplayModePropertiesKHR,
9885     .CreateDisplayModeKHR = terminator_CreateDisplayModeKHR,
9886     .GetDisplayPlaneCapabilitiesKHR = terminator_GetDisplayPlaneCapabilitiesKHR,
9887     .CreateDisplayPlaneSurfaceKHR = terminator_CreateDisplayPlaneSurfaceKHR,
9888 
9889     // ---- VK_KHR_xlib_surface extension commands
9890 #ifdef VK_USE_PLATFORM_XLIB_KHR
9891     .CreateXlibSurfaceKHR = terminator_CreateXlibSurfaceKHR,
9892 #endif // VK_USE_PLATFORM_XLIB_KHR
9893 #ifdef VK_USE_PLATFORM_XLIB_KHR
9894     .GetPhysicalDeviceXlibPresentationSupportKHR = terminator_GetPhysicalDeviceXlibPresentationSupportKHR,
9895 #endif // VK_USE_PLATFORM_XLIB_KHR
9896 
9897     // ---- VK_KHR_xcb_surface extension commands
9898 #ifdef VK_USE_PLATFORM_XCB_KHR
9899     .CreateXcbSurfaceKHR = terminator_CreateXcbSurfaceKHR,
9900 #endif // VK_USE_PLATFORM_XCB_KHR
9901 #ifdef VK_USE_PLATFORM_XCB_KHR
9902     .GetPhysicalDeviceXcbPresentationSupportKHR = terminator_GetPhysicalDeviceXcbPresentationSupportKHR,
9903 #endif // VK_USE_PLATFORM_XCB_KHR
9904 
9905     // ---- VK_KHR_wayland_surface extension commands
9906 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
9907     .CreateWaylandSurfaceKHR = terminator_CreateWaylandSurfaceKHR,
9908 #endif // VK_USE_PLATFORM_WAYLAND_KHR
9909 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
9910     .GetPhysicalDeviceWaylandPresentationSupportKHR = terminator_GetPhysicalDeviceWaylandPresentationSupportKHR,
9911 #endif // VK_USE_PLATFORM_WAYLAND_KHR
9912 
9913     // ---- VK_KHR_android_surface extension commands
9914 #ifdef VK_USE_PLATFORM_ANDROID_KHR
9915     .CreateAndroidSurfaceKHR = terminator_CreateAndroidSurfaceKHR,
9916 #endif // VK_USE_PLATFORM_ANDROID_KHR
9917 
9918     // ---- VK_KHR_win32_surface extension commands
9919 #ifdef VK_USE_PLATFORM_WIN32_KHR
9920     .CreateWin32SurfaceKHR = terminator_CreateWin32SurfaceKHR,
9921 #endif // VK_USE_PLATFORM_WIN32_KHR
9922 #ifdef VK_USE_PLATFORM_WIN32_KHR
9923     .GetPhysicalDeviceWin32PresentationSupportKHR = terminator_GetPhysicalDeviceWin32PresentationSupportKHR,
9924 #endif // VK_USE_PLATFORM_WIN32_KHR
9925 
9926     // ---- VK_KHR_video_queue extension commands
9927 #ifdef VK_ENABLE_BETA_EXTENSIONS
9928     .GetPhysicalDeviceVideoCapabilitiesKHR = terminator_GetPhysicalDeviceVideoCapabilitiesKHR,
9929 #endif // VK_ENABLE_BETA_EXTENSIONS
9930 #ifdef VK_ENABLE_BETA_EXTENSIONS
9931     .GetPhysicalDeviceVideoFormatPropertiesKHR = terminator_GetPhysicalDeviceVideoFormatPropertiesKHR,
9932 #endif // VK_ENABLE_BETA_EXTENSIONS
9933 
9934     // ---- VK_KHR_get_physical_device_properties2 extension commands
9935     .GetPhysicalDeviceFeatures2KHR = terminator_GetPhysicalDeviceFeatures2,
9936     .GetPhysicalDeviceProperties2KHR = terminator_GetPhysicalDeviceProperties2,
9937     .GetPhysicalDeviceFormatProperties2KHR = terminator_GetPhysicalDeviceFormatProperties2,
9938     .GetPhysicalDeviceImageFormatProperties2KHR = terminator_GetPhysicalDeviceImageFormatProperties2,
9939     .GetPhysicalDeviceQueueFamilyProperties2KHR = terminator_GetPhysicalDeviceQueueFamilyProperties2,
9940     .GetPhysicalDeviceMemoryProperties2KHR = terminator_GetPhysicalDeviceMemoryProperties2,
9941     .GetPhysicalDeviceSparseImageFormatProperties2KHR = terminator_GetPhysicalDeviceSparseImageFormatProperties2,
9942 
9943     // ---- VK_KHR_device_group_creation extension commands
9944     .EnumeratePhysicalDeviceGroupsKHR = terminator_EnumeratePhysicalDeviceGroups,
9945 
9946     // ---- VK_KHR_external_memory_capabilities extension commands
9947     .GetPhysicalDeviceExternalBufferPropertiesKHR = terminator_GetPhysicalDeviceExternalBufferProperties,
9948 
9949     // ---- VK_KHR_external_semaphore_capabilities extension commands
9950     .GetPhysicalDeviceExternalSemaphorePropertiesKHR = terminator_GetPhysicalDeviceExternalSemaphoreProperties,
9951 
9952     // ---- VK_KHR_external_fence_capabilities extension commands
9953     .GetPhysicalDeviceExternalFencePropertiesKHR = terminator_GetPhysicalDeviceExternalFenceProperties,
9954 
9955     // ---- VK_KHR_performance_query extension commands
9956     .EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = terminator_EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR,
9957     .GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = terminator_GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR,
9958 
9959     // ---- VK_KHR_get_surface_capabilities2 extension commands
9960     .GetPhysicalDeviceSurfaceCapabilities2KHR = terminator_GetPhysicalDeviceSurfaceCapabilities2KHR,
9961     .GetPhysicalDeviceSurfaceFormats2KHR = terminator_GetPhysicalDeviceSurfaceFormats2KHR,
9962 
9963     // ---- VK_KHR_get_display_properties2 extension commands
9964     .GetPhysicalDeviceDisplayProperties2KHR = terminator_GetPhysicalDeviceDisplayProperties2KHR,
9965     .GetPhysicalDeviceDisplayPlaneProperties2KHR = terminator_GetPhysicalDeviceDisplayPlaneProperties2KHR,
9966     .GetDisplayModeProperties2KHR = terminator_GetDisplayModeProperties2KHR,
9967     .GetDisplayPlaneCapabilities2KHR = terminator_GetDisplayPlaneCapabilities2KHR,
9968 
9969     // ---- VK_KHR_fragment_shading_rate extension commands
9970     .GetPhysicalDeviceFragmentShadingRatesKHR = terminator_GetPhysicalDeviceFragmentShadingRatesKHR,
9971 
9972     // ---- VK_EXT_debug_report extension commands
9973     .CreateDebugReportCallbackEXT = terminator_CreateDebugReportCallbackEXT,
9974     .DestroyDebugReportCallbackEXT = terminator_DestroyDebugReportCallbackEXT,
9975     .DebugReportMessageEXT = terminator_DebugReportMessageEXT,
9976 
9977     // ---- VK_GGP_stream_descriptor_surface extension commands
9978 #ifdef VK_USE_PLATFORM_GGP
9979     .CreateStreamDescriptorSurfaceGGP = terminator_CreateStreamDescriptorSurfaceGGP,
9980 #endif // VK_USE_PLATFORM_GGP
9981 
9982     // ---- VK_NV_external_memory_capabilities extension commands
9983     .GetPhysicalDeviceExternalImageFormatPropertiesNV = terminator_GetPhysicalDeviceExternalImageFormatPropertiesNV,
9984 
9985     // ---- VK_NN_vi_surface extension commands
9986 #ifdef VK_USE_PLATFORM_VI_NN
9987     .CreateViSurfaceNN = terminator_CreateViSurfaceNN,
9988 #endif // VK_USE_PLATFORM_VI_NN
9989 
9990     // ---- VK_EXT_direct_mode_display extension commands
9991     .ReleaseDisplayEXT = terminator_ReleaseDisplayEXT,
9992 
9993     // ---- VK_EXT_acquire_xlib_display extension commands
9994 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
9995     .AcquireXlibDisplayEXT = terminator_AcquireXlibDisplayEXT,
9996 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
9997 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
9998     .GetRandROutputDisplayEXT = terminator_GetRandROutputDisplayEXT,
9999 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
10000 
10001     // ---- VK_EXT_display_surface_counter extension commands
10002     .GetPhysicalDeviceSurfaceCapabilities2EXT = terminator_GetPhysicalDeviceSurfaceCapabilities2EXT,
10003 
10004     // ---- VK_MVK_ios_surface extension commands
10005 #ifdef VK_USE_PLATFORM_IOS_MVK
10006     .CreateIOSSurfaceMVK = terminator_CreateIOSSurfaceMVK,
10007 #endif // VK_USE_PLATFORM_IOS_MVK
10008 
10009     // ---- VK_MVK_macos_surface extension commands
10010 #ifdef VK_USE_PLATFORM_MACOS_MVK
10011     .CreateMacOSSurfaceMVK = terminator_CreateMacOSSurfaceMVK,
10012 #endif // VK_USE_PLATFORM_MACOS_MVK
10013 
10014     // ---- VK_EXT_debug_utils extension commands
10015     .CreateDebugUtilsMessengerEXT = terminator_CreateDebugUtilsMessengerEXT,
10016     .DestroyDebugUtilsMessengerEXT = terminator_DestroyDebugUtilsMessengerEXT,
10017     .SubmitDebugUtilsMessageEXT = terminator_SubmitDebugUtilsMessageEXT,
10018 
10019     // ---- VK_EXT_sample_locations extension commands
10020     .GetPhysicalDeviceMultisamplePropertiesEXT = terminator_GetPhysicalDeviceMultisamplePropertiesEXT,
10021 
10022     // ---- VK_EXT_calibrated_timestamps extension commands
10023     .GetPhysicalDeviceCalibrateableTimeDomainsEXT = terminator_GetPhysicalDeviceCalibrateableTimeDomainsEXT,
10024 
10025     // ---- VK_FUCHSIA_imagepipe_surface extension commands
10026 #ifdef VK_USE_PLATFORM_FUCHSIA
10027     .CreateImagePipeSurfaceFUCHSIA = terminator_CreateImagePipeSurfaceFUCHSIA,
10028 #endif // VK_USE_PLATFORM_FUCHSIA
10029 
10030     // ---- VK_EXT_metal_surface extension commands
10031 #ifdef VK_USE_PLATFORM_METAL_EXT
10032     .CreateMetalSurfaceEXT = terminator_CreateMetalSurfaceEXT,
10033 #endif // VK_USE_PLATFORM_METAL_EXT
10034 
10035     // ---- VK_EXT_tooling_info extension commands
10036     .GetPhysicalDeviceToolPropertiesEXT = terminator_GetPhysicalDeviceToolPropertiesEXT,
10037 
10038     // ---- VK_NV_cooperative_matrix extension commands
10039     .GetPhysicalDeviceCooperativeMatrixPropertiesNV = terminator_GetPhysicalDeviceCooperativeMatrixPropertiesNV,
10040 
10041     // ---- VK_NV_coverage_reduction_mode extension commands
10042     .GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = terminator_GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV,
10043 
10044     // ---- VK_EXT_full_screen_exclusive extension commands
10045 #ifdef VK_USE_PLATFORM_WIN32_KHR
10046     .GetPhysicalDeviceSurfacePresentModes2EXT = terminator_GetPhysicalDeviceSurfacePresentModes2EXT,
10047 #endif // VK_USE_PLATFORM_WIN32_KHR
10048 
10049     // ---- VK_EXT_headless_surface extension commands
10050     .CreateHeadlessSurfaceEXT = terminator_CreateHeadlessSurfaceEXT,
10051 
10052     // ---- VK_EXT_acquire_drm_display extension commands
10053     .AcquireDrmDisplayEXT = terminator_AcquireDrmDisplayEXT,
10054     .GetDrmDisplayEXT = terminator_GetDrmDisplayEXT,
10055 
10056     // ---- VK_NV_acquire_winrt_display extension commands
10057 #ifdef VK_USE_PLATFORM_WIN32_KHR
10058     .AcquireWinrtDisplayNV = terminator_AcquireWinrtDisplayNV,
10059 #endif // VK_USE_PLATFORM_WIN32_KHR
10060 #ifdef VK_USE_PLATFORM_WIN32_KHR
10061     .GetWinrtDisplayNV = terminator_GetWinrtDisplayNV,
10062 #endif // VK_USE_PLATFORM_WIN32_KHR
10063 
10064     // ---- VK_EXT_directfb_surface extension commands
10065 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT
10066     .CreateDirectFBSurfaceEXT = terminator_CreateDirectFBSurfaceEXT,
10067 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
10068 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT
10069     .GetPhysicalDeviceDirectFBPresentationSupportEXT = terminator_GetPhysicalDeviceDirectFBPresentationSupportEXT,
10070 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
10071 
10072     // ---- VK_QNX_screen_surface extension commands
10073 #ifdef VK_USE_PLATFORM_SCREEN_QNX
10074     .CreateScreenSurfaceQNX = terminator_CreateScreenSurfaceQNX,
10075 #endif // VK_USE_PLATFORM_SCREEN_QNX
10076 #ifdef VK_USE_PLATFORM_SCREEN_QNX
10077     .GetPhysicalDeviceScreenPresentationSupportQNX = terminator_GetPhysicalDeviceScreenPresentationSupportQNX,
10078 #endif // VK_USE_PLATFORM_SCREEN_QNX
10079 
10080     // ---- VK_NV_optical_flow extension commands
10081     .GetPhysicalDeviceOpticalFlowImageFormatsNV = terminator_GetPhysicalDeviceOpticalFlowImageFormatsNV,
10082 
10083     // ---- VK_OHOS_surface extension commands
10084 #ifdef VK_USE_PLATFORM_OHOS
10085     .CreateSurfaceOHOS = terminator_CreateSurfaceOHOS,
10086 #endif // VK_USE_PLATFORM_OHOS
10087 };
10088 
10089 // A null-terminated list of all of the instance extensions supported by the loader.
10090 // If an instance extension name is not in this list, but it is exported by one or more of the
10091 // ICDs detected by the loader, then the extension name not in the list will be filtered out
10092 // before passing the list of extensions to the application.
10093 const char *const LOADER_INSTANCE_EXTENSIONS[] = {
10094                                                   VK_KHR_SURFACE_EXTENSION_NAME,
10095                                                   VK_KHR_DISPLAY_EXTENSION_NAME,
10096 #ifdef VK_USE_PLATFORM_XLIB_KHR
10097                                                   VK_KHR_XLIB_SURFACE_EXTENSION_NAME,
10098 #endif // VK_USE_PLATFORM_XLIB_KHR
10099 #ifdef VK_USE_PLATFORM_XCB_KHR
10100                                                   VK_KHR_XCB_SURFACE_EXTENSION_NAME,
10101 #endif // VK_USE_PLATFORM_XCB_KHR
10102 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
10103                                                   VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME,
10104 #endif // VK_USE_PLATFORM_WAYLAND_KHR
10105 #ifdef VK_USE_PLATFORM_WIN32_KHR
10106                                                   VK_KHR_WIN32_SURFACE_EXTENSION_NAME,
10107 #endif // VK_USE_PLATFORM_WIN32_KHR
10108                                                   VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME,
10109                                                   VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME,
10110                                                   VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
10111                                                   VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME,
10112                                                   VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME,
10113                                                   VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME,
10114                                                   VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME,
10115                                                   VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME,
10116                                                   VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,
10117                                                   VK_EXT_DEBUG_REPORT_EXTENSION_NAME,
10118 #ifdef VK_USE_PLATFORM_GGP
10119                                                   VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME,
10120 #endif // VK_USE_PLATFORM_GGP
10121                                                   VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
10122                                                   VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME,
10123 #ifdef VK_USE_PLATFORM_VI_NN
10124                                                   VK_NN_VI_SURFACE_EXTENSION_NAME,
10125 #endif // VK_USE_PLATFORM_VI_NN
10126                                                   VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME,
10127 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
10128                                                   VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME,
10129 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
10130                                                   VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME,
10131                                                   VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME,
10132 #ifdef VK_USE_PLATFORM_IOS_MVK
10133                                                   VK_MVK_IOS_SURFACE_EXTENSION_NAME,
10134 #endif // VK_USE_PLATFORM_IOS_MVK
10135 #ifdef VK_USE_PLATFORM_MACOS_MVK
10136                                                   VK_MVK_MACOS_SURFACE_EXTENSION_NAME,
10137 #endif // VK_USE_PLATFORM_MACOS_MVK
10138                                                   VK_EXT_DEBUG_UTILS_EXTENSION_NAME,
10139 #ifdef VK_USE_PLATFORM_FUCHSIA
10140                                                   VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME,
10141 #endif // VK_USE_PLATFORM_FUCHSIA
10142 #ifdef VK_USE_PLATFORM_METAL_EXT
10143                                                   VK_EXT_METAL_SURFACE_EXTENSION_NAME,
10144 #endif // VK_USE_PLATFORM_METAL_EXT
10145                                                   VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME,
10146                                                   VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME,
10147                                                   VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME,
10148 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT
10149                                                   VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME,
10150 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
10151 #ifdef VK_USE_PLATFORM_SCREEN_QNX
10152                                                   VK_QNX_SCREEN_SURFACE_EXTENSION_NAME,
10153 #endif // VK_USE_PLATFORM_SCREEN_QNX
10154                                                   VK_GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME,
10155 #ifdef VK_USE_PLATFORM_OHOS
10156                                                   VK_OHOS_SURFACE_EXTENSION_NAME,
10157 #endif // VK_USE_PLATFORM_OHOS
10158                                                   NULL };
10159 
10160