• 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  * Copyright (c) 2021-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
9  * Copyright (c) 2023-2023 RasterGrid Kft.
10  *
11  * Licensed under the Apache License, Version 2.0 (the "License");
12  * you may not use this file except in compliance with the License.
13  * You may obtain a copy of the License at
14  *
15  *     http://www.apache.org/licenses/LICENSE-2.0
16  *
17  * Unless required by applicable law or agreed to in writing, software
18  * distributed under the License is distributed on an "AS IS" BASIS,
19  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20  * See the License for the specific language governing permissions and
21  * limitations under the License.
22  *
23  * Author: Mark Lobodzinski <mark@lunarg.com>
24  * Author: Mark Young <marky@lunarg.com>
25  */
26 
27 // clang-format off
28 #include <stdio.h>
29 #include <stdlib.h>
30 #include <string.h>
31 #include "vk_loader_platform.h"
32 #include "loader.h"
33 #include "vk_loader_extensions.h"
34 #include <vulkan/vk_icd.h>
35 #include "wsi.h"
36 #include "debug_utils.h"
37 #include "extension_manual.h"
38 
39 // Device extension error function
vkDevExtError(VkDevice dev)40 VKAPI_ATTR VkResult VKAPI_CALL vkDevExtError(VkDevice dev) {
41     struct loader_device *found_dev;
42     // The device going in is a trampoline device
43     struct loader_icd_term *icd_term = loader_get_icd_and_device(dev, &found_dev, NULL);
44 
45     if (icd_term)
46         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
47                    "Bad destination in loader trampoline dispatch,"
48                    "Are layers and extensions that you are calling enabled?");
49     return VK_ERROR_EXTENSION_NOT_PRESENT;
50 }
51 
loader_icd_init_entries(struct loader_instance * inst,struct loader_icd_term * icd_term)52 VKAPI_ATTR bool VKAPI_CALL loader_icd_init_entries(struct loader_instance* inst, struct loader_icd_term *icd_term) {
53     const PFN_vkGetInstanceProcAddr fp_gipa = icd_term->scanned_icd->GetInstanceProcAddr;
54 
55 #define LOOKUP_GIPA(func) icd_term->dispatch.func = (PFN_vk##func)fp_gipa(icd_term->instance, "vk" #func);
56 
57 #define LOOKUP_REQUIRED_GIPA(func)                                                      \
58     do {                                                                                \
59         LOOKUP_GIPA(func);                                                              \
60         if (!icd_term->dispatch.func) {                                                 \
61             loader_log(inst, VULKAN_LOADER_WARN_BIT, 0, "Unable to load %s from ICD %s",\
62                        "vk"#func, icd_term->scanned_icd->lib_name);                     \
63             return false;                                                               \
64         }                                                                               \
65     } while (0)
66 
67 
68     // ---- Core Vulkan 1.0
69     LOOKUP_REQUIRED_GIPA(DestroyInstance);
70     LOOKUP_REQUIRED_GIPA(EnumeratePhysicalDevices);
71     LOOKUP_REQUIRED_GIPA(GetPhysicalDeviceFeatures);
72     LOOKUP_REQUIRED_GIPA(GetPhysicalDeviceFormatProperties);
73     LOOKUP_REQUIRED_GIPA(GetPhysicalDeviceImageFormatProperties);
74     LOOKUP_REQUIRED_GIPA(GetPhysicalDeviceProperties);
75     LOOKUP_REQUIRED_GIPA(GetPhysicalDeviceQueueFamilyProperties);
76     LOOKUP_REQUIRED_GIPA(GetPhysicalDeviceMemoryProperties);
77     LOOKUP_REQUIRED_GIPA(GetDeviceProcAddr);
78     LOOKUP_REQUIRED_GIPA(CreateDevice);
79     LOOKUP_REQUIRED_GIPA(EnumerateDeviceExtensionProperties);
80     LOOKUP_REQUIRED_GIPA(GetPhysicalDeviceSparseImageFormatProperties);
81 
82     // ---- Core Vulkan 1.1
83     LOOKUP_GIPA(EnumeratePhysicalDeviceGroups);
84     LOOKUP_GIPA(GetPhysicalDeviceFeatures2);
85     LOOKUP_GIPA(GetPhysicalDeviceProperties2);
86     LOOKUP_GIPA(GetPhysicalDeviceFormatProperties2);
87     LOOKUP_GIPA(GetPhysicalDeviceImageFormatProperties2);
88     LOOKUP_GIPA(GetPhysicalDeviceQueueFamilyProperties2);
89     LOOKUP_GIPA(GetPhysicalDeviceMemoryProperties2);
90     LOOKUP_GIPA(GetPhysicalDeviceSparseImageFormatProperties2);
91     LOOKUP_GIPA(GetPhysicalDeviceExternalBufferProperties);
92     LOOKUP_GIPA(GetPhysicalDeviceExternalFenceProperties);
93     LOOKUP_GIPA(GetPhysicalDeviceExternalSemaphoreProperties);
94 
95     // ---- Core Vulkan 1.3
96     LOOKUP_GIPA(GetPhysicalDeviceToolProperties);
97 
98     // ---- VK_KHR_surface extension commands
99     LOOKUP_GIPA(DestroySurfaceKHR);
100     LOOKUP_GIPA(GetPhysicalDeviceSurfaceSupportKHR);
101     LOOKUP_GIPA(GetPhysicalDeviceSurfaceCapabilitiesKHR);
102     LOOKUP_GIPA(GetPhysicalDeviceSurfaceFormatsKHR);
103     LOOKUP_GIPA(GetPhysicalDeviceSurfacePresentModesKHR);
104 
105     // ---- VK_KHR_swapchain extension commands
106     LOOKUP_GIPA(GetPhysicalDevicePresentRectanglesKHR);
107 
108     // ---- VK_KHR_display extension commands
109     LOOKUP_GIPA(GetPhysicalDeviceDisplayPropertiesKHR);
110     LOOKUP_GIPA(GetPhysicalDeviceDisplayPlanePropertiesKHR);
111     LOOKUP_GIPA(GetDisplayPlaneSupportedDisplaysKHR);
112     LOOKUP_GIPA(GetDisplayModePropertiesKHR);
113     LOOKUP_GIPA(CreateDisplayModeKHR);
114     LOOKUP_GIPA(GetDisplayPlaneCapabilitiesKHR);
115     LOOKUP_GIPA(CreateDisplayPlaneSurfaceKHR);
116 
117     // ---- VK_KHR_xlib_surface extension commands
118 #if defined(VK_USE_PLATFORM_XLIB_KHR)
119     LOOKUP_GIPA(CreateXlibSurfaceKHR);
120 #endif // VK_USE_PLATFORM_XLIB_KHR
121 #if defined(VK_USE_PLATFORM_XLIB_KHR)
122     LOOKUP_GIPA(GetPhysicalDeviceXlibPresentationSupportKHR);
123 #endif // VK_USE_PLATFORM_XLIB_KHR
124 
125     // ---- VK_KHR_xcb_surface extension commands
126 #if defined(VK_USE_PLATFORM_XCB_KHR)
127     LOOKUP_GIPA(CreateXcbSurfaceKHR);
128 #endif // VK_USE_PLATFORM_XCB_KHR
129 #if defined(VK_USE_PLATFORM_XCB_KHR)
130     LOOKUP_GIPA(GetPhysicalDeviceXcbPresentationSupportKHR);
131 #endif // VK_USE_PLATFORM_XCB_KHR
132 
133     // ---- VK_KHR_wayland_surface extension commands
134 #if defined(VK_USE_PLATFORM_WAYLAND_KHR)
135     LOOKUP_GIPA(CreateWaylandSurfaceKHR);
136 #endif // VK_USE_PLATFORM_WAYLAND_KHR
137 #if defined(VK_USE_PLATFORM_WAYLAND_KHR)
138     LOOKUP_GIPA(GetPhysicalDeviceWaylandPresentationSupportKHR);
139 #endif // VK_USE_PLATFORM_WAYLAND_KHR
140 
141     // ---- VK_KHR_android_surface extension commands
142 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
143     LOOKUP_GIPA(CreateAndroidSurfaceKHR);
144 #endif // VK_USE_PLATFORM_ANDROID_KHR
145 
146     // ---- VK_KHR_win32_surface extension commands
147 #if defined(VK_USE_PLATFORM_WIN32_KHR)
148     LOOKUP_GIPA(CreateWin32SurfaceKHR);
149 #endif // VK_USE_PLATFORM_WIN32_KHR
150 #if defined(VK_USE_PLATFORM_WIN32_KHR)
151     LOOKUP_GIPA(GetPhysicalDeviceWin32PresentationSupportKHR);
152 #endif // VK_USE_PLATFORM_WIN32_KHR
153 
154     // ---- VK_KHR_video_queue extension commands
155     LOOKUP_GIPA(GetPhysicalDeviceVideoCapabilitiesKHR);
156     LOOKUP_GIPA(GetPhysicalDeviceVideoFormatPropertiesKHR);
157 
158     // ---- VK_KHR_get_physical_device_properties2 extension commands
159     LOOKUP_GIPA(GetPhysicalDeviceFeatures2KHR);
160     LOOKUP_GIPA(GetPhysicalDeviceProperties2KHR);
161     LOOKUP_GIPA(GetPhysicalDeviceFormatProperties2KHR);
162     LOOKUP_GIPA(GetPhysicalDeviceImageFormatProperties2KHR);
163     LOOKUP_GIPA(GetPhysicalDeviceQueueFamilyProperties2KHR);
164     LOOKUP_GIPA(GetPhysicalDeviceMemoryProperties2KHR);
165     LOOKUP_GIPA(GetPhysicalDeviceSparseImageFormatProperties2KHR);
166 
167     // ---- VK_KHR_device_group_creation extension commands
168     LOOKUP_GIPA(EnumeratePhysicalDeviceGroupsKHR);
169 
170     // ---- VK_KHR_external_memory_capabilities extension commands
171     LOOKUP_GIPA(GetPhysicalDeviceExternalBufferPropertiesKHR);
172 
173     // ---- VK_KHR_external_semaphore_capabilities extension commands
174     LOOKUP_GIPA(GetPhysicalDeviceExternalSemaphorePropertiesKHR);
175 
176     // ---- VK_KHR_external_fence_capabilities extension commands
177     LOOKUP_GIPA(GetPhysicalDeviceExternalFencePropertiesKHR);
178 
179     // ---- VK_KHR_performance_query extension commands
180     LOOKUP_GIPA(EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR);
181     LOOKUP_GIPA(GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR);
182 
183     // ---- VK_KHR_get_surface_capabilities2 extension commands
184     LOOKUP_GIPA(GetPhysicalDeviceSurfaceCapabilities2KHR);
185     LOOKUP_GIPA(GetPhysicalDeviceSurfaceFormats2KHR);
186 
187     // ---- VK_KHR_get_display_properties2 extension commands
188     LOOKUP_GIPA(GetPhysicalDeviceDisplayProperties2KHR);
189     LOOKUP_GIPA(GetPhysicalDeviceDisplayPlaneProperties2KHR);
190     LOOKUP_GIPA(GetDisplayModeProperties2KHR);
191     LOOKUP_GIPA(GetDisplayPlaneCapabilities2KHR);
192 
193     // ---- VK_KHR_fragment_shading_rate extension commands
194     LOOKUP_GIPA(GetPhysicalDeviceFragmentShadingRatesKHR);
195 
196     // ---- VK_KHR_video_encode_queue extension commands
197     LOOKUP_GIPA(GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR);
198 
199     // ---- VK_KHR_cooperative_matrix extension commands
200     LOOKUP_GIPA(GetPhysicalDeviceCooperativeMatrixPropertiesKHR);
201 
202     // ---- VK_KHR_calibrated_timestamps extension commands
203     LOOKUP_GIPA(GetPhysicalDeviceCalibrateableTimeDomainsKHR);
204 
205     // ---- VK_EXT_debug_report extension commands
206     LOOKUP_GIPA(CreateDebugReportCallbackEXT);
207     LOOKUP_GIPA(DestroyDebugReportCallbackEXT);
208     LOOKUP_GIPA(DebugReportMessageEXT);
209 
210     // ---- VK_GGP_stream_descriptor_surface extension commands
211 #if defined(VK_USE_PLATFORM_GGP)
212     LOOKUP_GIPA(CreateStreamDescriptorSurfaceGGP);
213 #endif // VK_USE_PLATFORM_GGP
214 
215     // ---- VK_NV_external_memory_capabilities extension commands
216     LOOKUP_GIPA(GetPhysicalDeviceExternalImageFormatPropertiesNV);
217 
218     // ---- VK_NN_vi_surface extension commands
219 #if defined(VK_USE_PLATFORM_VI_NN)
220     LOOKUP_GIPA(CreateViSurfaceNN);
221 #endif // VK_USE_PLATFORM_VI_NN
222 
223     // ---- VK_EXT_direct_mode_display extension commands
224     LOOKUP_GIPA(ReleaseDisplayEXT);
225 
226     // ---- VK_EXT_acquire_xlib_display extension commands
227 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
228     LOOKUP_GIPA(AcquireXlibDisplayEXT);
229 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
230 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
231     LOOKUP_GIPA(GetRandROutputDisplayEXT);
232 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
233 
234     // ---- VK_EXT_display_surface_counter extension commands
235     LOOKUP_GIPA(GetPhysicalDeviceSurfaceCapabilities2EXT);
236 
237     // ---- VK_MVK_ios_surface extension commands
238 #if defined(VK_USE_PLATFORM_IOS_MVK)
239     LOOKUP_GIPA(CreateIOSSurfaceMVK);
240 #endif // VK_USE_PLATFORM_IOS_MVK
241 
242     // ---- VK_MVK_macos_surface extension commands
243 #if defined(VK_USE_PLATFORM_MACOS_MVK)
244     LOOKUP_GIPA(CreateMacOSSurfaceMVK);
245 #endif // VK_USE_PLATFORM_MACOS_MVK
246 
247     // ---- VK_EXT_debug_utils extension commands
248     LOOKUP_GIPA(CreateDebugUtilsMessengerEXT);
249     LOOKUP_GIPA(DestroyDebugUtilsMessengerEXT);
250     LOOKUP_GIPA(SubmitDebugUtilsMessageEXT);
251 
252     // ---- VK_EXT_sample_locations extension commands
253     LOOKUP_GIPA(GetPhysicalDeviceMultisamplePropertiesEXT);
254 
255     // ---- VK_EXT_calibrated_timestamps extension commands
256     LOOKUP_GIPA(GetPhysicalDeviceCalibrateableTimeDomainsEXT);
257 
258     // ---- VK_FUCHSIA_imagepipe_surface extension commands
259 #if defined(VK_USE_PLATFORM_FUCHSIA)
260     LOOKUP_GIPA(CreateImagePipeSurfaceFUCHSIA);
261 #endif // VK_USE_PLATFORM_FUCHSIA
262 
263     // ---- VK_EXT_metal_surface extension commands
264 #if defined(VK_USE_PLATFORM_METAL_EXT)
265     LOOKUP_GIPA(CreateMetalSurfaceEXT);
266 #endif // VK_USE_PLATFORM_METAL_EXT
267 
268     // ---- VK_EXT_tooling_info extension commands
269     LOOKUP_GIPA(GetPhysicalDeviceToolPropertiesEXT);
270 
271     // ---- VK_NV_cooperative_matrix extension commands
272     LOOKUP_GIPA(GetPhysicalDeviceCooperativeMatrixPropertiesNV);
273 
274     // ---- VK_NV_coverage_reduction_mode extension commands
275     LOOKUP_GIPA(GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV);
276 
277     // ---- VK_EXT_full_screen_exclusive extension commands
278 #if defined(VK_USE_PLATFORM_WIN32_KHR)
279     LOOKUP_GIPA(GetPhysicalDeviceSurfacePresentModes2EXT);
280 #endif // VK_USE_PLATFORM_WIN32_KHR
281 
282     // ---- VK_EXT_headless_surface extension commands
283     LOOKUP_GIPA(CreateHeadlessSurfaceEXT);
284 
285     // ---- VK_EXT_acquire_drm_display extension commands
286     LOOKUP_GIPA(AcquireDrmDisplayEXT);
287     LOOKUP_GIPA(GetDrmDisplayEXT);
288 
289     // ---- VK_NV_acquire_winrt_display extension commands
290 #if defined(VK_USE_PLATFORM_WIN32_KHR)
291     LOOKUP_GIPA(AcquireWinrtDisplayNV);
292 #endif // VK_USE_PLATFORM_WIN32_KHR
293 #if defined(VK_USE_PLATFORM_WIN32_KHR)
294     LOOKUP_GIPA(GetWinrtDisplayNV);
295 #endif // VK_USE_PLATFORM_WIN32_KHR
296 
297     // ---- VK_EXT_directfb_surface extension commands
298 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
299     LOOKUP_GIPA(CreateDirectFBSurfaceEXT);
300 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
301 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
302     LOOKUP_GIPA(GetPhysicalDeviceDirectFBPresentationSupportEXT);
303 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
304 
305     // ---- VK_QNX_screen_surface extension commands
306 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
307     LOOKUP_GIPA(CreateScreenSurfaceQNX);
308 #endif // VK_USE_PLATFORM_SCREEN_QNX
309 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
310     LOOKUP_GIPA(GetPhysicalDeviceScreenPresentationSupportQNX);
311 #endif // VK_USE_PLATFORM_SCREEN_QNX
312 
313     // ---- VK_NV_optical_flow extension commands
314     LOOKUP_GIPA(GetPhysicalDeviceOpticalFlowImageFormatsNV);
315 
316     // ---- VK_OHOS_surface extension commands
317 #if defined(VK_USE_PLATFORM_OHOS)
318     LOOKUP_GIPA(CreateSurfaceOHOS);
319 #endif // VK_USE_PLATFORM_OHOS
320 
321 #undef LOOKUP_REQUIRED_GIPA
322 #undef LOOKUP_GIPA
323 
324     return true;
325 };
326 
327 // 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)328 VKAPI_ATTR void VKAPI_CALL loader_init_device_dispatch_table(struct loader_dev_dispatch_table *dev_table, PFN_vkGetDeviceProcAddr gpa,
329                                                              VkDevice dev) {
330     VkLayerDispatchTable *table = &dev_table->core_dispatch;
331     if (table->magic != DEVICE_DISP_TABLE_MAGIC_NUMBER) { abort(); }
332     for (uint32_t i = 0; i < MAX_NUM_UNKNOWN_EXTS; i++) dev_table->ext_dispatch[i] = (PFN_vkDevExt)vkDevExtError;
333 
334     // ---- Core Vulkan 1.0 commands
335     table->GetDeviceProcAddr = gpa;
336     table->DestroyDevice = (PFN_vkDestroyDevice)gpa(dev, "vkDestroyDevice");
337     table->GetDeviceQueue = (PFN_vkGetDeviceQueue)gpa(dev, "vkGetDeviceQueue");
338     table->QueueSubmit = (PFN_vkQueueSubmit)gpa(dev, "vkQueueSubmit");
339     table->QueueWaitIdle = (PFN_vkQueueWaitIdle)gpa(dev, "vkQueueWaitIdle");
340     table->DeviceWaitIdle = (PFN_vkDeviceWaitIdle)gpa(dev, "vkDeviceWaitIdle");
341     table->AllocateMemory = (PFN_vkAllocateMemory)gpa(dev, "vkAllocateMemory");
342     table->FreeMemory = (PFN_vkFreeMemory)gpa(dev, "vkFreeMemory");
343     table->MapMemory = (PFN_vkMapMemory)gpa(dev, "vkMapMemory");
344     table->UnmapMemory = (PFN_vkUnmapMemory)gpa(dev, "vkUnmapMemory");
345     table->FlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges)gpa(dev, "vkFlushMappedMemoryRanges");
346     table->InvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges)gpa(dev, "vkInvalidateMappedMemoryRanges");
347     table->GetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment)gpa(dev, "vkGetDeviceMemoryCommitment");
348     table->BindBufferMemory = (PFN_vkBindBufferMemory)gpa(dev, "vkBindBufferMemory");
349     table->BindImageMemory = (PFN_vkBindImageMemory)gpa(dev, "vkBindImageMemory");
350     table->GetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements)gpa(dev, "vkGetBufferMemoryRequirements");
351     table->GetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements)gpa(dev, "vkGetImageMemoryRequirements");
352     table->GetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements)gpa(dev, "vkGetImageSparseMemoryRequirements");
353     table->QueueBindSparse = (PFN_vkQueueBindSparse)gpa(dev, "vkQueueBindSparse");
354     table->CreateFence = (PFN_vkCreateFence)gpa(dev, "vkCreateFence");
355     table->DestroyFence = (PFN_vkDestroyFence)gpa(dev, "vkDestroyFence");
356     table->ResetFences = (PFN_vkResetFences)gpa(dev, "vkResetFences");
357     table->GetFenceStatus = (PFN_vkGetFenceStatus)gpa(dev, "vkGetFenceStatus");
358     table->WaitForFences = (PFN_vkWaitForFences)gpa(dev, "vkWaitForFences");
359     table->CreateSemaphore = (PFN_vkCreateSemaphore)gpa(dev, "vkCreateSemaphore");
360     table->DestroySemaphore = (PFN_vkDestroySemaphore)gpa(dev, "vkDestroySemaphore");
361     table->CreateEvent = (PFN_vkCreateEvent)gpa(dev, "vkCreateEvent");
362     table->DestroyEvent = (PFN_vkDestroyEvent)gpa(dev, "vkDestroyEvent");
363     table->GetEventStatus = (PFN_vkGetEventStatus)gpa(dev, "vkGetEventStatus");
364     table->SetEvent = (PFN_vkSetEvent)gpa(dev, "vkSetEvent");
365     table->ResetEvent = (PFN_vkResetEvent)gpa(dev, "vkResetEvent");
366     table->CreateQueryPool = (PFN_vkCreateQueryPool)gpa(dev, "vkCreateQueryPool");
367     table->DestroyQueryPool = (PFN_vkDestroyQueryPool)gpa(dev, "vkDestroyQueryPool");
368     table->GetQueryPoolResults = (PFN_vkGetQueryPoolResults)gpa(dev, "vkGetQueryPoolResults");
369     table->CreateBuffer = (PFN_vkCreateBuffer)gpa(dev, "vkCreateBuffer");
370     table->DestroyBuffer = (PFN_vkDestroyBuffer)gpa(dev, "vkDestroyBuffer");
371     table->CreateBufferView = (PFN_vkCreateBufferView)gpa(dev, "vkCreateBufferView");
372     table->DestroyBufferView = (PFN_vkDestroyBufferView)gpa(dev, "vkDestroyBufferView");
373     table->CreateImage = (PFN_vkCreateImage)gpa(dev, "vkCreateImage");
374     table->DestroyImage = (PFN_vkDestroyImage)gpa(dev, "vkDestroyImage");
375     table->GetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout)gpa(dev, "vkGetImageSubresourceLayout");
376     table->CreateImageView = (PFN_vkCreateImageView)gpa(dev, "vkCreateImageView");
377     table->DestroyImageView = (PFN_vkDestroyImageView)gpa(dev, "vkDestroyImageView");
378     table->CreateShaderModule = (PFN_vkCreateShaderModule)gpa(dev, "vkCreateShaderModule");
379     table->DestroyShaderModule = (PFN_vkDestroyShaderModule)gpa(dev, "vkDestroyShaderModule");
380     table->CreatePipelineCache = (PFN_vkCreatePipelineCache)gpa(dev, "vkCreatePipelineCache");
381     table->DestroyPipelineCache = (PFN_vkDestroyPipelineCache)gpa(dev, "vkDestroyPipelineCache");
382     table->GetPipelineCacheData = (PFN_vkGetPipelineCacheData)gpa(dev, "vkGetPipelineCacheData");
383     table->MergePipelineCaches = (PFN_vkMergePipelineCaches)gpa(dev, "vkMergePipelineCaches");
384     table->CreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines)gpa(dev, "vkCreateGraphicsPipelines");
385     table->CreateComputePipelines = (PFN_vkCreateComputePipelines)gpa(dev, "vkCreateComputePipelines");
386     table->DestroyPipeline = (PFN_vkDestroyPipeline)gpa(dev, "vkDestroyPipeline");
387     table->CreatePipelineLayout = (PFN_vkCreatePipelineLayout)gpa(dev, "vkCreatePipelineLayout");
388     table->DestroyPipelineLayout = (PFN_vkDestroyPipelineLayout)gpa(dev, "vkDestroyPipelineLayout");
389     table->CreateSampler = (PFN_vkCreateSampler)gpa(dev, "vkCreateSampler");
390     table->DestroySampler = (PFN_vkDestroySampler)gpa(dev, "vkDestroySampler");
391     table->CreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout)gpa(dev, "vkCreateDescriptorSetLayout");
392     table->DestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout)gpa(dev, "vkDestroyDescriptorSetLayout");
393     table->CreateDescriptorPool = (PFN_vkCreateDescriptorPool)gpa(dev, "vkCreateDescriptorPool");
394     table->DestroyDescriptorPool = (PFN_vkDestroyDescriptorPool)gpa(dev, "vkDestroyDescriptorPool");
395     table->ResetDescriptorPool = (PFN_vkResetDescriptorPool)gpa(dev, "vkResetDescriptorPool");
396     table->AllocateDescriptorSets = (PFN_vkAllocateDescriptorSets)gpa(dev, "vkAllocateDescriptorSets");
397     table->FreeDescriptorSets = (PFN_vkFreeDescriptorSets)gpa(dev, "vkFreeDescriptorSets");
398     table->UpdateDescriptorSets = (PFN_vkUpdateDescriptorSets)gpa(dev, "vkUpdateDescriptorSets");
399     table->CreateFramebuffer = (PFN_vkCreateFramebuffer)gpa(dev, "vkCreateFramebuffer");
400     table->DestroyFramebuffer = (PFN_vkDestroyFramebuffer)gpa(dev, "vkDestroyFramebuffer");
401     table->CreateRenderPass = (PFN_vkCreateRenderPass)gpa(dev, "vkCreateRenderPass");
402     table->DestroyRenderPass = (PFN_vkDestroyRenderPass)gpa(dev, "vkDestroyRenderPass");
403     table->GetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity)gpa(dev, "vkGetRenderAreaGranularity");
404     table->CreateCommandPool = (PFN_vkCreateCommandPool)gpa(dev, "vkCreateCommandPool");
405     table->DestroyCommandPool = (PFN_vkDestroyCommandPool)gpa(dev, "vkDestroyCommandPool");
406     table->ResetCommandPool = (PFN_vkResetCommandPool)gpa(dev, "vkResetCommandPool");
407     table->AllocateCommandBuffers = (PFN_vkAllocateCommandBuffers)gpa(dev, "vkAllocateCommandBuffers");
408     table->FreeCommandBuffers = (PFN_vkFreeCommandBuffers)gpa(dev, "vkFreeCommandBuffers");
409     table->BeginCommandBuffer = (PFN_vkBeginCommandBuffer)gpa(dev, "vkBeginCommandBuffer");
410     table->EndCommandBuffer = (PFN_vkEndCommandBuffer)gpa(dev, "vkEndCommandBuffer");
411     table->ResetCommandBuffer = (PFN_vkResetCommandBuffer)gpa(dev, "vkResetCommandBuffer");
412     table->CmdBindPipeline = (PFN_vkCmdBindPipeline)gpa(dev, "vkCmdBindPipeline");
413     table->CmdSetViewport = (PFN_vkCmdSetViewport)gpa(dev, "vkCmdSetViewport");
414     table->CmdSetScissor = (PFN_vkCmdSetScissor)gpa(dev, "vkCmdSetScissor");
415     table->CmdSetLineWidth = (PFN_vkCmdSetLineWidth)gpa(dev, "vkCmdSetLineWidth");
416     table->CmdSetDepthBias = (PFN_vkCmdSetDepthBias)gpa(dev, "vkCmdSetDepthBias");
417     table->CmdSetBlendConstants = (PFN_vkCmdSetBlendConstants)gpa(dev, "vkCmdSetBlendConstants");
418     table->CmdSetDepthBounds = (PFN_vkCmdSetDepthBounds)gpa(dev, "vkCmdSetDepthBounds");
419     table->CmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask)gpa(dev, "vkCmdSetStencilCompareMask");
420     table->CmdSetStencilWriteMask = (PFN_vkCmdSetStencilWriteMask)gpa(dev, "vkCmdSetStencilWriteMask");
421     table->CmdSetStencilReference = (PFN_vkCmdSetStencilReference)gpa(dev, "vkCmdSetStencilReference");
422     table->CmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets)gpa(dev, "vkCmdBindDescriptorSets");
423     table->CmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer)gpa(dev, "vkCmdBindIndexBuffer");
424     table->CmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers)gpa(dev, "vkCmdBindVertexBuffers");
425     table->CmdDraw = (PFN_vkCmdDraw)gpa(dev, "vkCmdDraw");
426     table->CmdDrawIndexed = (PFN_vkCmdDrawIndexed)gpa(dev, "vkCmdDrawIndexed");
427     table->CmdDrawIndirect = (PFN_vkCmdDrawIndirect)gpa(dev, "vkCmdDrawIndirect");
428     table->CmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect)gpa(dev, "vkCmdDrawIndexedIndirect");
429     table->CmdDispatch = (PFN_vkCmdDispatch)gpa(dev, "vkCmdDispatch");
430     table->CmdDispatchIndirect = (PFN_vkCmdDispatchIndirect)gpa(dev, "vkCmdDispatchIndirect");
431     table->CmdCopyBuffer = (PFN_vkCmdCopyBuffer)gpa(dev, "vkCmdCopyBuffer");
432     table->CmdCopyImage = (PFN_vkCmdCopyImage)gpa(dev, "vkCmdCopyImage");
433     table->CmdBlitImage = (PFN_vkCmdBlitImage)gpa(dev, "vkCmdBlitImage");
434     table->CmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage)gpa(dev, "vkCmdCopyBufferToImage");
435     table->CmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer)gpa(dev, "vkCmdCopyImageToBuffer");
436     table->CmdUpdateBuffer = (PFN_vkCmdUpdateBuffer)gpa(dev, "vkCmdUpdateBuffer");
437     table->CmdFillBuffer = (PFN_vkCmdFillBuffer)gpa(dev, "vkCmdFillBuffer");
438     table->CmdClearColorImage = (PFN_vkCmdClearColorImage)gpa(dev, "vkCmdClearColorImage");
439     table->CmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage)gpa(dev, "vkCmdClearDepthStencilImage");
440     table->CmdClearAttachments = (PFN_vkCmdClearAttachments)gpa(dev, "vkCmdClearAttachments");
441     table->CmdResolveImage = (PFN_vkCmdResolveImage)gpa(dev, "vkCmdResolveImage");
442     table->CmdSetEvent = (PFN_vkCmdSetEvent)gpa(dev, "vkCmdSetEvent");
443     table->CmdResetEvent = (PFN_vkCmdResetEvent)gpa(dev, "vkCmdResetEvent");
444     table->CmdWaitEvents = (PFN_vkCmdWaitEvents)gpa(dev, "vkCmdWaitEvents");
445     table->CmdPipelineBarrier = (PFN_vkCmdPipelineBarrier)gpa(dev, "vkCmdPipelineBarrier");
446     table->CmdBeginQuery = (PFN_vkCmdBeginQuery)gpa(dev, "vkCmdBeginQuery");
447     table->CmdEndQuery = (PFN_vkCmdEndQuery)gpa(dev, "vkCmdEndQuery");
448     table->CmdResetQueryPool = (PFN_vkCmdResetQueryPool)gpa(dev, "vkCmdResetQueryPool");
449     table->CmdWriteTimestamp = (PFN_vkCmdWriteTimestamp)gpa(dev, "vkCmdWriteTimestamp");
450     table->CmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults)gpa(dev, "vkCmdCopyQueryPoolResults");
451     table->CmdPushConstants = (PFN_vkCmdPushConstants)gpa(dev, "vkCmdPushConstants");
452     table->CmdBeginRenderPass = (PFN_vkCmdBeginRenderPass)gpa(dev, "vkCmdBeginRenderPass");
453     table->CmdNextSubpass = (PFN_vkCmdNextSubpass)gpa(dev, "vkCmdNextSubpass");
454     table->CmdEndRenderPass = (PFN_vkCmdEndRenderPass)gpa(dev, "vkCmdEndRenderPass");
455     table->CmdExecuteCommands = (PFN_vkCmdExecuteCommands)gpa(dev, "vkCmdExecuteCommands");
456 
457     // ---- Core Vulkan 1.1 commands
458     table->BindBufferMemory2 = (PFN_vkBindBufferMemory2)gpa(dev, "vkBindBufferMemory2");
459     table->BindImageMemory2 = (PFN_vkBindImageMemory2)gpa(dev, "vkBindImageMemory2");
460     table->GetDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures)gpa(dev, "vkGetDeviceGroupPeerMemoryFeatures");
461     table->CmdSetDeviceMask = (PFN_vkCmdSetDeviceMask)gpa(dev, "vkCmdSetDeviceMask");
462     table->CmdDispatchBase = (PFN_vkCmdDispatchBase)gpa(dev, "vkCmdDispatchBase");
463     table->GetImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2)gpa(dev, "vkGetImageMemoryRequirements2");
464     table->GetBufferMemoryRequirements2 = (PFN_vkGetBufferMemoryRequirements2)gpa(dev, "vkGetBufferMemoryRequirements2");
465     table->GetImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2)gpa(dev, "vkGetImageSparseMemoryRequirements2");
466     table->TrimCommandPool = (PFN_vkTrimCommandPool)gpa(dev, "vkTrimCommandPool");
467     table->GetDeviceQueue2 = (PFN_vkGetDeviceQueue2)gpa(dev, "vkGetDeviceQueue2");
468     table->CreateSamplerYcbcrConversion = (PFN_vkCreateSamplerYcbcrConversion)gpa(dev, "vkCreateSamplerYcbcrConversion");
469     table->DestroySamplerYcbcrConversion = (PFN_vkDestroySamplerYcbcrConversion)gpa(dev, "vkDestroySamplerYcbcrConversion");
470     table->CreateDescriptorUpdateTemplate = (PFN_vkCreateDescriptorUpdateTemplate)gpa(dev, "vkCreateDescriptorUpdateTemplate");
471     table->DestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate)gpa(dev, "vkDestroyDescriptorUpdateTemplate");
472     table->UpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate)gpa(dev, "vkUpdateDescriptorSetWithTemplate");
473     table->GetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport)gpa(dev, "vkGetDescriptorSetLayoutSupport");
474 
475     // ---- Core Vulkan 1.2 commands
476     table->CmdDrawIndirectCount = (PFN_vkCmdDrawIndirectCount)gpa(dev, "vkCmdDrawIndirectCount");
477     table->CmdDrawIndexedIndirectCount = (PFN_vkCmdDrawIndexedIndirectCount)gpa(dev, "vkCmdDrawIndexedIndirectCount");
478     table->CreateRenderPass2 = (PFN_vkCreateRenderPass2)gpa(dev, "vkCreateRenderPass2");
479     table->CmdBeginRenderPass2 = (PFN_vkCmdBeginRenderPass2)gpa(dev, "vkCmdBeginRenderPass2");
480     table->CmdNextSubpass2 = (PFN_vkCmdNextSubpass2)gpa(dev, "vkCmdNextSubpass2");
481     table->CmdEndRenderPass2 = (PFN_vkCmdEndRenderPass2)gpa(dev, "vkCmdEndRenderPass2");
482     table->ResetQueryPool = (PFN_vkResetQueryPool)gpa(dev, "vkResetQueryPool");
483     table->GetSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue)gpa(dev, "vkGetSemaphoreCounterValue");
484     table->WaitSemaphores = (PFN_vkWaitSemaphores)gpa(dev, "vkWaitSemaphores");
485     table->SignalSemaphore = (PFN_vkSignalSemaphore)gpa(dev, "vkSignalSemaphore");
486     table->GetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddress)gpa(dev, "vkGetBufferDeviceAddress");
487     table->GetBufferOpaqueCaptureAddress = (PFN_vkGetBufferOpaqueCaptureAddress)gpa(dev, "vkGetBufferOpaqueCaptureAddress");
488     table->GetDeviceMemoryOpaqueCaptureAddress = (PFN_vkGetDeviceMemoryOpaqueCaptureAddress)gpa(dev, "vkGetDeviceMemoryOpaqueCaptureAddress");
489 
490     // ---- Core Vulkan 1.3 commands
491     table->CreatePrivateDataSlot = (PFN_vkCreatePrivateDataSlot)gpa(dev, "vkCreatePrivateDataSlot");
492     table->DestroyPrivateDataSlot = (PFN_vkDestroyPrivateDataSlot)gpa(dev, "vkDestroyPrivateDataSlot");
493     table->SetPrivateData = (PFN_vkSetPrivateData)gpa(dev, "vkSetPrivateData");
494     table->GetPrivateData = (PFN_vkGetPrivateData)gpa(dev, "vkGetPrivateData");
495     table->CmdSetEvent2 = (PFN_vkCmdSetEvent2)gpa(dev, "vkCmdSetEvent2");
496     table->CmdResetEvent2 = (PFN_vkCmdResetEvent2)gpa(dev, "vkCmdResetEvent2");
497     table->CmdWaitEvents2 = (PFN_vkCmdWaitEvents2)gpa(dev, "vkCmdWaitEvents2");
498     table->CmdPipelineBarrier2 = (PFN_vkCmdPipelineBarrier2)gpa(dev, "vkCmdPipelineBarrier2");
499     table->CmdWriteTimestamp2 = (PFN_vkCmdWriteTimestamp2)gpa(dev, "vkCmdWriteTimestamp2");
500     table->QueueSubmit2 = (PFN_vkQueueSubmit2)gpa(dev, "vkQueueSubmit2");
501     table->CmdCopyBuffer2 = (PFN_vkCmdCopyBuffer2)gpa(dev, "vkCmdCopyBuffer2");
502     table->CmdCopyImage2 = (PFN_vkCmdCopyImage2)gpa(dev, "vkCmdCopyImage2");
503     table->CmdCopyBufferToImage2 = (PFN_vkCmdCopyBufferToImage2)gpa(dev, "vkCmdCopyBufferToImage2");
504     table->CmdCopyImageToBuffer2 = (PFN_vkCmdCopyImageToBuffer2)gpa(dev, "vkCmdCopyImageToBuffer2");
505     table->CmdBlitImage2 = (PFN_vkCmdBlitImage2)gpa(dev, "vkCmdBlitImage2");
506     table->CmdResolveImage2 = (PFN_vkCmdResolveImage2)gpa(dev, "vkCmdResolveImage2");
507     table->CmdBeginRendering = (PFN_vkCmdBeginRendering)gpa(dev, "vkCmdBeginRendering");
508     table->CmdEndRendering = (PFN_vkCmdEndRendering)gpa(dev, "vkCmdEndRendering");
509     table->CmdSetCullMode = (PFN_vkCmdSetCullMode)gpa(dev, "vkCmdSetCullMode");
510     table->CmdSetFrontFace = (PFN_vkCmdSetFrontFace)gpa(dev, "vkCmdSetFrontFace");
511     table->CmdSetPrimitiveTopology = (PFN_vkCmdSetPrimitiveTopology)gpa(dev, "vkCmdSetPrimitiveTopology");
512     table->CmdSetViewportWithCount = (PFN_vkCmdSetViewportWithCount)gpa(dev, "vkCmdSetViewportWithCount");
513     table->CmdSetScissorWithCount = (PFN_vkCmdSetScissorWithCount)gpa(dev, "vkCmdSetScissorWithCount");
514     table->CmdBindVertexBuffers2 = (PFN_vkCmdBindVertexBuffers2)gpa(dev, "vkCmdBindVertexBuffers2");
515     table->CmdSetDepthTestEnable = (PFN_vkCmdSetDepthTestEnable)gpa(dev, "vkCmdSetDepthTestEnable");
516     table->CmdSetDepthWriteEnable = (PFN_vkCmdSetDepthWriteEnable)gpa(dev, "vkCmdSetDepthWriteEnable");
517     table->CmdSetDepthCompareOp = (PFN_vkCmdSetDepthCompareOp)gpa(dev, "vkCmdSetDepthCompareOp");
518     table->CmdSetDepthBoundsTestEnable = (PFN_vkCmdSetDepthBoundsTestEnable)gpa(dev, "vkCmdSetDepthBoundsTestEnable");
519     table->CmdSetStencilTestEnable = (PFN_vkCmdSetStencilTestEnable)gpa(dev, "vkCmdSetStencilTestEnable");
520     table->CmdSetStencilOp = (PFN_vkCmdSetStencilOp)gpa(dev, "vkCmdSetStencilOp");
521     table->CmdSetRasterizerDiscardEnable = (PFN_vkCmdSetRasterizerDiscardEnable)gpa(dev, "vkCmdSetRasterizerDiscardEnable");
522     table->CmdSetDepthBiasEnable = (PFN_vkCmdSetDepthBiasEnable)gpa(dev, "vkCmdSetDepthBiasEnable");
523     table->CmdSetPrimitiveRestartEnable = (PFN_vkCmdSetPrimitiveRestartEnable)gpa(dev, "vkCmdSetPrimitiveRestartEnable");
524     table->GetDeviceBufferMemoryRequirements = (PFN_vkGetDeviceBufferMemoryRequirements)gpa(dev, "vkGetDeviceBufferMemoryRequirements");
525     table->GetDeviceImageMemoryRequirements = (PFN_vkGetDeviceImageMemoryRequirements)gpa(dev, "vkGetDeviceImageMemoryRequirements");
526     table->GetDeviceImageSparseMemoryRequirements = (PFN_vkGetDeviceImageSparseMemoryRequirements)gpa(dev, "vkGetDeviceImageSparseMemoryRequirements");
527 }
528 
529 // 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)530 VKAPI_ATTR void VKAPI_CALL loader_init_device_extension_dispatch_table(struct loader_dev_dispatch_table *dev_table,
531                                                                        PFN_vkGetInstanceProcAddr gipa,
532                                                                        PFN_vkGetDeviceProcAddr gdpa,
533                                                                        VkInstance inst,
534                                                                        VkDevice dev) {
535     VkLayerDispatchTable *table = &dev_table->core_dispatch;
536     table->magic = DEVICE_DISP_TABLE_MAGIC_NUMBER;
537 
538     // ---- VK_KHR_swapchain extension commands
539     table->CreateSwapchainKHR = (PFN_vkCreateSwapchainKHR)gdpa(dev, "vkCreateSwapchainKHR");
540     table->DestroySwapchainKHR = (PFN_vkDestroySwapchainKHR)gdpa(dev, "vkDestroySwapchainKHR");
541     table->GetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR)gdpa(dev, "vkGetSwapchainImagesKHR");
542     table->AcquireNextImageKHR = (PFN_vkAcquireNextImageKHR)gdpa(dev, "vkAcquireNextImageKHR");
543     table->QueuePresentKHR = (PFN_vkQueuePresentKHR)gdpa(dev, "vkQueuePresentKHR");
544     table->GetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR)gdpa(dev, "vkGetDeviceGroupPresentCapabilitiesKHR");
545     table->GetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR)gdpa(dev, "vkGetDeviceGroupSurfacePresentModesKHR");
546     table->AcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR)gdpa(dev, "vkAcquireNextImage2KHR");
547 
548     // ---- VK_KHR_display_swapchain extension commands
549     table->CreateSharedSwapchainsKHR = (PFN_vkCreateSharedSwapchainsKHR)gdpa(dev, "vkCreateSharedSwapchainsKHR");
550 
551     // ---- VK_KHR_video_queue extension commands
552     table->CreateVideoSessionKHR = (PFN_vkCreateVideoSessionKHR)gdpa(dev, "vkCreateVideoSessionKHR");
553     table->DestroyVideoSessionKHR = (PFN_vkDestroyVideoSessionKHR)gdpa(dev, "vkDestroyVideoSessionKHR");
554     table->GetVideoSessionMemoryRequirementsKHR = (PFN_vkGetVideoSessionMemoryRequirementsKHR)gdpa(dev, "vkGetVideoSessionMemoryRequirementsKHR");
555     table->BindVideoSessionMemoryKHR = (PFN_vkBindVideoSessionMemoryKHR)gdpa(dev, "vkBindVideoSessionMemoryKHR");
556     table->CreateVideoSessionParametersKHR = (PFN_vkCreateVideoSessionParametersKHR)gdpa(dev, "vkCreateVideoSessionParametersKHR");
557     table->UpdateVideoSessionParametersKHR = (PFN_vkUpdateVideoSessionParametersKHR)gdpa(dev, "vkUpdateVideoSessionParametersKHR");
558     table->DestroyVideoSessionParametersKHR = (PFN_vkDestroyVideoSessionParametersKHR)gdpa(dev, "vkDestroyVideoSessionParametersKHR");
559     table->CmdBeginVideoCodingKHR = (PFN_vkCmdBeginVideoCodingKHR)gdpa(dev, "vkCmdBeginVideoCodingKHR");
560     table->CmdEndVideoCodingKHR = (PFN_vkCmdEndVideoCodingKHR)gdpa(dev, "vkCmdEndVideoCodingKHR");
561     table->CmdControlVideoCodingKHR = (PFN_vkCmdControlVideoCodingKHR)gdpa(dev, "vkCmdControlVideoCodingKHR");
562 
563     // ---- VK_KHR_video_decode_queue extension commands
564     table->CmdDecodeVideoKHR = (PFN_vkCmdDecodeVideoKHR)gdpa(dev, "vkCmdDecodeVideoKHR");
565 
566     // ---- VK_KHR_dynamic_rendering extension commands
567     table->CmdBeginRenderingKHR = (PFN_vkCmdBeginRenderingKHR)gdpa(dev, "vkCmdBeginRenderingKHR");
568     table->CmdEndRenderingKHR = (PFN_vkCmdEndRenderingKHR)gdpa(dev, "vkCmdEndRenderingKHR");
569 
570     // ---- VK_KHR_device_group extension commands
571     table->GetDeviceGroupPeerMemoryFeaturesKHR = (PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)gdpa(dev, "vkGetDeviceGroupPeerMemoryFeaturesKHR");
572     table->CmdSetDeviceMaskKHR = (PFN_vkCmdSetDeviceMaskKHR)gdpa(dev, "vkCmdSetDeviceMaskKHR");
573     table->CmdDispatchBaseKHR = (PFN_vkCmdDispatchBaseKHR)gdpa(dev, "vkCmdDispatchBaseKHR");
574 
575     // ---- VK_KHR_maintenance1 extension commands
576     table->TrimCommandPoolKHR = (PFN_vkTrimCommandPoolKHR)gdpa(dev, "vkTrimCommandPoolKHR");
577 
578     // ---- VK_KHR_external_memory_win32 extension commands
579 #if defined(VK_USE_PLATFORM_WIN32_KHR)
580     table->GetMemoryWin32HandleKHR = (PFN_vkGetMemoryWin32HandleKHR)gdpa(dev, "vkGetMemoryWin32HandleKHR");
581 #endif // VK_USE_PLATFORM_WIN32_KHR
582 #if defined(VK_USE_PLATFORM_WIN32_KHR)
583     table->GetMemoryWin32HandlePropertiesKHR = (PFN_vkGetMemoryWin32HandlePropertiesKHR)gdpa(dev, "vkGetMemoryWin32HandlePropertiesKHR");
584 #endif // VK_USE_PLATFORM_WIN32_KHR
585 
586     // ---- VK_KHR_external_memory_fd extension commands
587     table->GetMemoryFdKHR = (PFN_vkGetMemoryFdKHR)gdpa(dev, "vkGetMemoryFdKHR");
588     table->GetMemoryFdPropertiesKHR = (PFN_vkGetMemoryFdPropertiesKHR)gdpa(dev, "vkGetMemoryFdPropertiesKHR");
589 
590     // ---- VK_KHR_external_semaphore_win32 extension commands
591 #if defined(VK_USE_PLATFORM_WIN32_KHR)
592     table->ImportSemaphoreWin32HandleKHR = (PFN_vkImportSemaphoreWin32HandleKHR)gdpa(dev, "vkImportSemaphoreWin32HandleKHR");
593 #endif // VK_USE_PLATFORM_WIN32_KHR
594 #if defined(VK_USE_PLATFORM_WIN32_KHR)
595     table->GetSemaphoreWin32HandleKHR = (PFN_vkGetSemaphoreWin32HandleKHR)gdpa(dev, "vkGetSemaphoreWin32HandleKHR");
596 #endif // VK_USE_PLATFORM_WIN32_KHR
597 
598     // ---- VK_KHR_external_semaphore_fd extension commands
599     table->ImportSemaphoreFdKHR = (PFN_vkImportSemaphoreFdKHR)gdpa(dev, "vkImportSemaphoreFdKHR");
600     table->GetSemaphoreFdKHR = (PFN_vkGetSemaphoreFdKHR)gdpa(dev, "vkGetSemaphoreFdKHR");
601 
602     // ---- VK_KHR_push_descriptor extension commands
603     table->CmdPushDescriptorSetKHR = (PFN_vkCmdPushDescriptorSetKHR)gdpa(dev, "vkCmdPushDescriptorSetKHR");
604     table->CmdPushDescriptorSetWithTemplateKHR = (PFN_vkCmdPushDescriptorSetWithTemplateKHR)gdpa(dev, "vkCmdPushDescriptorSetWithTemplateKHR");
605 
606     // ---- VK_KHR_descriptor_update_template extension commands
607     table->CreateDescriptorUpdateTemplateKHR = (PFN_vkCreateDescriptorUpdateTemplateKHR)gdpa(dev, "vkCreateDescriptorUpdateTemplateKHR");
608     table->DestroyDescriptorUpdateTemplateKHR = (PFN_vkDestroyDescriptorUpdateTemplateKHR)gdpa(dev, "vkDestroyDescriptorUpdateTemplateKHR");
609     table->UpdateDescriptorSetWithTemplateKHR = (PFN_vkUpdateDescriptorSetWithTemplateKHR)gdpa(dev, "vkUpdateDescriptorSetWithTemplateKHR");
610 
611     // ---- VK_KHR_create_renderpass2 extension commands
612     table->CreateRenderPass2KHR = (PFN_vkCreateRenderPass2KHR)gdpa(dev, "vkCreateRenderPass2KHR");
613     table->CmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR)gdpa(dev, "vkCmdBeginRenderPass2KHR");
614     table->CmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR)gdpa(dev, "vkCmdNextSubpass2KHR");
615     table->CmdEndRenderPass2KHR = (PFN_vkCmdEndRenderPass2KHR)gdpa(dev, "vkCmdEndRenderPass2KHR");
616 
617     // ---- VK_KHR_shared_presentable_image extension commands
618     table->GetSwapchainStatusKHR = (PFN_vkGetSwapchainStatusKHR)gdpa(dev, "vkGetSwapchainStatusKHR");
619 
620     // ---- VK_KHR_external_fence_win32 extension commands
621 #if defined(VK_USE_PLATFORM_WIN32_KHR)
622     table->ImportFenceWin32HandleKHR = (PFN_vkImportFenceWin32HandleKHR)gdpa(dev, "vkImportFenceWin32HandleKHR");
623 #endif // VK_USE_PLATFORM_WIN32_KHR
624 #if defined(VK_USE_PLATFORM_WIN32_KHR)
625     table->GetFenceWin32HandleKHR = (PFN_vkGetFenceWin32HandleKHR)gdpa(dev, "vkGetFenceWin32HandleKHR");
626 #endif // VK_USE_PLATFORM_WIN32_KHR
627 
628     // ---- VK_KHR_external_fence_fd extension commands
629     table->ImportFenceFdKHR = (PFN_vkImportFenceFdKHR)gdpa(dev, "vkImportFenceFdKHR");
630     table->GetFenceFdKHR = (PFN_vkGetFenceFdKHR)gdpa(dev, "vkGetFenceFdKHR");
631 
632     // ---- VK_KHR_performance_query extension commands
633     table->AcquireProfilingLockKHR = (PFN_vkAcquireProfilingLockKHR)gdpa(dev, "vkAcquireProfilingLockKHR");
634     table->ReleaseProfilingLockKHR = (PFN_vkReleaseProfilingLockKHR)gdpa(dev, "vkReleaseProfilingLockKHR");
635 
636     // ---- VK_KHR_get_memory_requirements2 extension commands
637     table->GetImageMemoryRequirements2KHR = (PFN_vkGetImageMemoryRequirements2KHR)gdpa(dev, "vkGetImageMemoryRequirements2KHR");
638     table->GetBufferMemoryRequirements2KHR = (PFN_vkGetBufferMemoryRequirements2KHR)gdpa(dev, "vkGetBufferMemoryRequirements2KHR");
639     table->GetImageSparseMemoryRequirements2KHR = (PFN_vkGetImageSparseMemoryRequirements2KHR)gdpa(dev, "vkGetImageSparseMemoryRequirements2KHR");
640 
641     // ---- VK_KHR_sampler_ycbcr_conversion extension commands
642     table->CreateSamplerYcbcrConversionKHR = (PFN_vkCreateSamplerYcbcrConversionKHR)gdpa(dev, "vkCreateSamplerYcbcrConversionKHR");
643     table->DestroySamplerYcbcrConversionKHR = (PFN_vkDestroySamplerYcbcrConversionKHR)gdpa(dev, "vkDestroySamplerYcbcrConversionKHR");
644 
645     // ---- VK_KHR_bind_memory2 extension commands
646     table->BindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)gdpa(dev, "vkBindBufferMemory2KHR");
647     table->BindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)gdpa(dev, "vkBindImageMemory2KHR");
648 
649     // ---- VK_KHR_maintenance3 extension commands
650     table->GetDescriptorSetLayoutSupportKHR = (PFN_vkGetDescriptorSetLayoutSupportKHR)gdpa(dev, "vkGetDescriptorSetLayoutSupportKHR");
651 
652     // ---- VK_KHR_draw_indirect_count extension commands
653     table->CmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)gdpa(dev, "vkCmdDrawIndirectCountKHR");
654     table->CmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)gdpa(dev, "vkCmdDrawIndexedIndirectCountKHR");
655 
656     // ---- VK_KHR_timeline_semaphore extension commands
657     table->GetSemaphoreCounterValueKHR = (PFN_vkGetSemaphoreCounterValueKHR)gdpa(dev, "vkGetSemaphoreCounterValueKHR");
658     table->WaitSemaphoresKHR = (PFN_vkWaitSemaphoresKHR)gdpa(dev, "vkWaitSemaphoresKHR");
659     table->SignalSemaphoreKHR = (PFN_vkSignalSemaphoreKHR)gdpa(dev, "vkSignalSemaphoreKHR");
660 
661     // ---- VK_KHR_fragment_shading_rate extension commands
662     table->CmdSetFragmentShadingRateKHR = (PFN_vkCmdSetFragmentShadingRateKHR)gdpa(dev, "vkCmdSetFragmentShadingRateKHR");
663 
664     // ---- VK_KHR_present_wait extension commands
665     table->WaitForPresentKHR = (PFN_vkWaitForPresentKHR)gdpa(dev, "vkWaitForPresentKHR");
666 
667     // ---- VK_KHR_buffer_device_address extension commands
668     table->GetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR)gdpa(dev, "vkGetBufferDeviceAddressKHR");
669     table->GetBufferOpaqueCaptureAddressKHR = (PFN_vkGetBufferOpaqueCaptureAddressKHR)gdpa(dev, "vkGetBufferOpaqueCaptureAddressKHR");
670     table->GetDeviceMemoryOpaqueCaptureAddressKHR = (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)gdpa(dev, "vkGetDeviceMemoryOpaqueCaptureAddressKHR");
671 
672     // ---- VK_KHR_deferred_host_operations extension commands
673     table->CreateDeferredOperationKHR = (PFN_vkCreateDeferredOperationKHR)gdpa(dev, "vkCreateDeferredOperationKHR");
674     table->DestroyDeferredOperationKHR = (PFN_vkDestroyDeferredOperationKHR)gdpa(dev, "vkDestroyDeferredOperationKHR");
675     table->GetDeferredOperationMaxConcurrencyKHR = (PFN_vkGetDeferredOperationMaxConcurrencyKHR)gdpa(dev, "vkGetDeferredOperationMaxConcurrencyKHR");
676     table->GetDeferredOperationResultKHR = (PFN_vkGetDeferredOperationResultKHR)gdpa(dev, "vkGetDeferredOperationResultKHR");
677     table->DeferredOperationJoinKHR = (PFN_vkDeferredOperationJoinKHR)gdpa(dev, "vkDeferredOperationJoinKHR");
678 
679     // ---- VK_KHR_pipeline_executable_properties extension commands
680     table->GetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)gdpa(dev, "vkGetPipelineExecutablePropertiesKHR");
681     table->GetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)gdpa(dev, "vkGetPipelineExecutableStatisticsKHR");
682     table->GetPipelineExecutableInternalRepresentationsKHR = (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)gdpa(dev, "vkGetPipelineExecutableInternalRepresentationsKHR");
683 
684     // ---- VK_KHR_map_memory2 extension commands
685     table->MapMemory2KHR = (PFN_vkMapMemory2KHR)gdpa(dev, "vkMapMemory2KHR");
686     table->UnmapMemory2KHR = (PFN_vkUnmapMemory2KHR)gdpa(dev, "vkUnmapMemory2KHR");
687 
688     // ---- VK_KHR_video_encode_queue extension commands
689     table->GetEncodedVideoSessionParametersKHR = (PFN_vkGetEncodedVideoSessionParametersKHR)gdpa(dev, "vkGetEncodedVideoSessionParametersKHR");
690     table->CmdEncodeVideoKHR = (PFN_vkCmdEncodeVideoKHR)gdpa(dev, "vkCmdEncodeVideoKHR");
691 
692     // ---- VK_KHR_synchronization2 extension commands
693     table->CmdSetEvent2KHR = (PFN_vkCmdSetEvent2KHR)gdpa(dev, "vkCmdSetEvent2KHR");
694     table->CmdResetEvent2KHR = (PFN_vkCmdResetEvent2KHR)gdpa(dev, "vkCmdResetEvent2KHR");
695     table->CmdWaitEvents2KHR = (PFN_vkCmdWaitEvents2KHR)gdpa(dev, "vkCmdWaitEvents2KHR");
696     table->CmdPipelineBarrier2KHR = (PFN_vkCmdPipelineBarrier2KHR)gdpa(dev, "vkCmdPipelineBarrier2KHR");
697     table->CmdWriteTimestamp2KHR = (PFN_vkCmdWriteTimestamp2KHR)gdpa(dev, "vkCmdWriteTimestamp2KHR");
698     table->QueueSubmit2KHR = (PFN_vkQueueSubmit2KHR)gdpa(dev, "vkQueueSubmit2KHR");
699     table->CmdWriteBufferMarker2AMD = (PFN_vkCmdWriteBufferMarker2AMD)gdpa(dev, "vkCmdWriteBufferMarker2AMD");
700     table->GetQueueCheckpointData2NV = (PFN_vkGetQueueCheckpointData2NV)gdpa(dev, "vkGetQueueCheckpointData2NV");
701 
702     // ---- VK_KHR_copy_commands2 extension commands
703     table->CmdCopyBuffer2KHR = (PFN_vkCmdCopyBuffer2KHR)gdpa(dev, "vkCmdCopyBuffer2KHR");
704     table->CmdCopyImage2KHR = (PFN_vkCmdCopyImage2KHR)gdpa(dev, "vkCmdCopyImage2KHR");
705     table->CmdCopyBufferToImage2KHR = (PFN_vkCmdCopyBufferToImage2KHR)gdpa(dev, "vkCmdCopyBufferToImage2KHR");
706     table->CmdCopyImageToBuffer2KHR = (PFN_vkCmdCopyImageToBuffer2KHR)gdpa(dev, "vkCmdCopyImageToBuffer2KHR");
707     table->CmdBlitImage2KHR = (PFN_vkCmdBlitImage2KHR)gdpa(dev, "vkCmdBlitImage2KHR");
708     table->CmdResolveImage2KHR = (PFN_vkCmdResolveImage2KHR)gdpa(dev, "vkCmdResolveImage2KHR");
709 
710     // ---- VK_KHR_ray_tracing_maintenance1 extension commands
711     table->CmdTraceRaysIndirect2KHR = (PFN_vkCmdTraceRaysIndirect2KHR)gdpa(dev, "vkCmdTraceRaysIndirect2KHR");
712 
713     // ---- VK_KHR_maintenance4 extension commands
714     table->GetDeviceBufferMemoryRequirementsKHR = (PFN_vkGetDeviceBufferMemoryRequirementsKHR)gdpa(dev, "vkGetDeviceBufferMemoryRequirementsKHR");
715     table->GetDeviceImageMemoryRequirementsKHR = (PFN_vkGetDeviceImageMemoryRequirementsKHR)gdpa(dev, "vkGetDeviceImageMemoryRequirementsKHR");
716     table->GetDeviceImageSparseMemoryRequirementsKHR = (PFN_vkGetDeviceImageSparseMemoryRequirementsKHR)gdpa(dev, "vkGetDeviceImageSparseMemoryRequirementsKHR");
717 
718     // ---- VK_KHR_maintenance5 extension commands
719     table->CmdBindIndexBuffer2KHR = (PFN_vkCmdBindIndexBuffer2KHR)gdpa(dev, "vkCmdBindIndexBuffer2KHR");
720     table->GetRenderingAreaGranularityKHR = (PFN_vkGetRenderingAreaGranularityKHR)gdpa(dev, "vkGetRenderingAreaGranularityKHR");
721     table->GetDeviceImageSubresourceLayoutKHR = (PFN_vkGetDeviceImageSubresourceLayoutKHR)gdpa(dev, "vkGetDeviceImageSubresourceLayoutKHR");
722     table->GetImageSubresourceLayout2KHR = (PFN_vkGetImageSubresourceLayout2KHR)gdpa(dev, "vkGetImageSubresourceLayout2KHR");
723 
724     // ---- VK_KHR_calibrated_timestamps extension commands
725     table->GetCalibratedTimestampsKHR = (PFN_vkGetCalibratedTimestampsKHR)gdpa(dev, "vkGetCalibratedTimestampsKHR");
726 
727     // ---- VK_KHR_maintenance6 extension commands
728     table->CmdBindDescriptorSets2KHR = (PFN_vkCmdBindDescriptorSets2KHR)gdpa(dev, "vkCmdBindDescriptorSets2KHR");
729     table->CmdPushConstants2KHR = (PFN_vkCmdPushConstants2KHR)gdpa(dev, "vkCmdPushConstants2KHR");
730     table->CmdPushDescriptorSet2KHR = (PFN_vkCmdPushDescriptorSet2KHR)gdpa(dev, "vkCmdPushDescriptorSet2KHR");
731     table->CmdPushDescriptorSetWithTemplate2KHR = (PFN_vkCmdPushDescriptorSetWithTemplate2KHR)gdpa(dev, "vkCmdPushDescriptorSetWithTemplate2KHR");
732     table->CmdSetDescriptorBufferOffsets2EXT = (PFN_vkCmdSetDescriptorBufferOffsets2EXT)gdpa(dev, "vkCmdSetDescriptorBufferOffsets2EXT");
733     table->CmdBindDescriptorBufferEmbeddedSamplers2EXT = (PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT)gdpa(dev, "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT");
734 
735     // ---- VK_EXT_debug_marker extension commands
736     table->DebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)gdpa(dev, "vkDebugMarkerSetObjectTagEXT");
737     table->DebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)gdpa(dev, "vkDebugMarkerSetObjectNameEXT");
738     table->CmdDebugMarkerBeginEXT = (PFN_vkCmdDebugMarkerBeginEXT)gdpa(dev, "vkCmdDebugMarkerBeginEXT");
739     table->CmdDebugMarkerEndEXT = (PFN_vkCmdDebugMarkerEndEXT)gdpa(dev, "vkCmdDebugMarkerEndEXT");
740     table->CmdDebugMarkerInsertEXT = (PFN_vkCmdDebugMarkerInsertEXT)gdpa(dev, "vkCmdDebugMarkerInsertEXT");
741 
742     // ---- VK_EXT_transform_feedback extension commands
743     table->CmdBindTransformFeedbackBuffersEXT = (PFN_vkCmdBindTransformFeedbackBuffersEXT)gdpa(dev, "vkCmdBindTransformFeedbackBuffersEXT");
744     table->CmdBeginTransformFeedbackEXT = (PFN_vkCmdBeginTransformFeedbackEXT)gdpa(dev, "vkCmdBeginTransformFeedbackEXT");
745     table->CmdEndTransformFeedbackEXT = (PFN_vkCmdEndTransformFeedbackEXT)gdpa(dev, "vkCmdEndTransformFeedbackEXT");
746     table->CmdBeginQueryIndexedEXT = (PFN_vkCmdBeginQueryIndexedEXT)gdpa(dev, "vkCmdBeginQueryIndexedEXT");
747     table->CmdEndQueryIndexedEXT = (PFN_vkCmdEndQueryIndexedEXT)gdpa(dev, "vkCmdEndQueryIndexedEXT");
748     table->CmdDrawIndirectByteCountEXT = (PFN_vkCmdDrawIndirectByteCountEXT)gdpa(dev, "vkCmdDrawIndirectByteCountEXT");
749 
750     // ---- VK_NVX_binary_import extension commands
751     table->CreateCuModuleNVX = (PFN_vkCreateCuModuleNVX)gdpa(dev, "vkCreateCuModuleNVX");
752     table->CreateCuFunctionNVX = (PFN_vkCreateCuFunctionNVX)gdpa(dev, "vkCreateCuFunctionNVX");
753     table->DestroyCuModuleNVX = (PFN_vkDestroyCuModuleNVX)gdpa(dev, "vkDestroyCuModuleNVX");
754     table->DestroyCuFunctionNVX = (PFN_vkDestroyCuFunctionNVX)gdpa(dev, "vkDestroyCuFunctionNVX");
755     table->CmdCuLaunchKernelNVX = (PFN_vkCmdCuLaunchKernelNVX)gdpa(dev, "vkCmdCuLaunchKernelNVX");
756 
757     // ---- VK_NVX_image_view_handle extension commands
758     table->GetImageViewHandleNVX = (PFN_vkGetImageViewHandleNVX)gdpa(dev, "vkGetImageViewHandleNVX");
759     table->GetImageViewAddressNVX = (PFN_vkGetImageViewAddressNVX)gdpa(dev, "vkGetImageViewAddressNVX");
760 
761     // ---- VK_AMD_draw_indirect_count extension commands
762     table->CmdDrawIndirectCountAMD = (PFN_vkCmdDrawIndirectCountAMD)gdpa(dev, "vkCmdDrawIndirectCountAMD");
763     table->CmdDrawIndexedIndirectCountAMD = (PFN_vkCmdDrawIndexedIndirectCountAMD)gdpa(dev, "vkCmdDrawIndexedIndirectCountAMD");
764 
765     // ---- VK_AMD_shader_info extension commands
766     table->GetShaderInfoAMD = (PFN_vkGetShaderInfoAMD)gdpa(dev, "vkGetShaderInfoAMD");
767 
768     // ---- VK_NV_external_memory_win32 extension commands
769 #if defined(VK_USE_PLATFORM_WIN32_KHR)
770     table->GetMemoryWin32HandleNV = (PFN_vkGetMemoryWin32HandleNV)gdpa(dev, "vkGetMemoryWin32HandleNV");
771 #endif // VK_USE_PLATFORM_WIN32_KHR
772 
773     // ---- VK_EXT_conditional_rendering extension commands
774     table->CmdBeginConditionalRenderingEXT = (PFN_vkCmdBeginConditionalRenderingEXT)gdpa(dev, "vkCmdBeginConditionalRenderingEXT");
775     table->CmdEndConditionalRenderingEXT = (PFN_vkCmdEndConditionalRenderingEXT)gdpa(dev, "vkCmdEndConditionalRenderingEXT");
776 
777     // ---- VK_NV_clip_space_w_scaling extension commands
778     table->CmdSetViewportWScalingNV = (PFN_vkCmdSetViewportWScalingNV)gdpa(dev, "vkCmdSetViewportWScalingNV");
779 
780     // ---- VK_EXT_display_control extension commands
781     table->DisplayPowerControlEXT = (PFN_vkDisplayPowerControlEXT)gdpa(dev, "vkDisplayPowerControlEXT");
782     table->RegisterDeviceEventEXT = (PFN_vkRegisterDeviceEventEXT)gdpa(dev, "vkRegisterDeviceEventEXT");
783     table->RegisterDisplayEventEXT = (PFN_vkRegisterDisplayEventEXT)gdpa(dev, "vkRegisterDisplayEventEXT");
784     table->GetSwapchainCounterEXT = (PFN_vkGetSwapchainCounterEXT)gdpa(dev, "vkGetSwapchainCounterEXT");
785 
786     // ---- VK_GOOGLE_display_timing extension commands
787     table->GetRefreshCycleDurationGOOGLE = (PFN_vkGetRefreshCycleDurationGOOGLE)gdpa(dev, "vkGetRefreshCycleDurationGOOGLE");
788     table->GetPastPresentationTimingGOOGLE = (PFN_vkGetPastPresentationTimingGOOGLE)gdpa(dev, "vkGetPastPresentationTimingGOOGLE");
789 
790     // ---- VK_EXT_discard_rectangles extension commands
791     table->CmdSetDiscardRectangleEXT = (PFN_vkCmdSetDiscardRectangleEXT)gdpa(dev, "vkCmdSetDiscardRectangleEXT");
792     table->CmdSetDiscardRectangleEnableEXT = (PFN_vkCmdSetDiscardRectangleEnableEXT)gdpa(dev, "vkCmdSetDiscardRectangleEnableEXT");
793     table->CmdSetDiscardRectangleModeEXT = (PFN_vkCmdSetDiscardRectangleModeEXT)gdpa(dev, "vkCmdSetDiscardRectangleModeEXT");
794 
795     // ---- VK_EXT_hdr_metadata extension commands
796     table->SetHdrMetadataEXT = (PFN_vkSetHdrMetadataEXT)gdpa(dev, "vkSetHdrMetadataEXT");
797 
798     // ---- VK_EXT_debug_utils extension commands
799     table->SetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)gipa(inst, "vkSetDebugUtilsObjectNameEXT");
800     table->SetDebugUtilsObjectTagEXT = (PFN_vkSetDebugUtilsObjectTagEXT)gipa(inst, "vkSetDebugUtilsObjectTagEXT");
801     table->QueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT)gipa(inst, "vkQueueBeginDebugUtilsLabelEXT");
802     table->QueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)gipa(inst, "vkQueueEndDebugUtilsLabelEXT");
803     table->QueueInsertDebugUtilsLabelEXT = (PFN_vkQueueInsertDebugUtilsLabelEXT)gipa(inst, "vkQueueInsertDebugUtilsLabelEXT");
804     table->CmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)gipa(inst, "vkCmdBeginDebugUtilsLabelEXT");
805     table->CmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)gipa(inst, "vkCmdEndDebugUtilsLabelEXT");
806     table->CmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT)gipa(inst, "vkCmdInsertDebugUtilsLabelEXT");
807 
808     // ---- VK_ANDROID_external_memory_android_hardware_buffer extension commands
809 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
810     table->GetAndroidHardwareBufferPropertiesANDROID = (PFN_vkGetAndroidHardwareBufferPropertiesANDROID)gdpa(dev, "vkGetAndroidHardwareBufferPropertiesANDROID");
811 #endif // VK_USE_PLATFORM_ANDROID_KHR
812 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
813     table->GetMemoryAndroidHardwareBufferANDROID = (PFN_vkGetMemoryAndroidHardwareBufferANDROID)gdpa(dev, "vkGetMemoryAndroidHardwareBufferANDROID");
814 #endif // VK_USE_PLATFORM_ANDROID_KHR
815 
816     // ---- VK_AMDX_shader_enqueue extension commands
817 #if defined(VK_ENABLE_BETA_EXTENSIONS)
818     table->CreateExecutionGraphPipelinesAMDX = (PFN_vkCreateExecutionGraphPipelinesAMDX)gdpa(dev, "vkCreateExecutionGraphPipelinesAMDX");
819 #endif // VK_ENABLE_BETA_EXTENSIONS
820 #if defined(VK_ENABLE_BETA_EXTENSIONS)
821     table->GetExecutionGraphPipelineScratchSizeAMDX = (PFN_vkGetExecutionGraphPipelineScratchSizeAMDX)gdpa(dev, "vkGetExecutionGraphPipelineScratchSizeAMDX");
822 #endif // VK_ENABLE_BETA_EXTENSIONS
823 #if defined(VK_ENABLE_BETA_EXTENSIONS)
824     table->GetExecutionGraphPipelineNodeIndexAMDX = (PFN_vkGetExecutionGraphPipelineNodeIndexAMDX)gdpa(dev, "vkGetExecutionGraphPipelineNodeIndexAMDX");
825 #endif // VK_ENABLE_BETA_EXTENSIONS
826 #if defined(VK_ENABLE_BETA_EXTENSIONS)
827     table->CmdInitializeGraphScratchMemoryAMDX = (PFN_vkCmdInitializeGraphScratchMemoryAMDX)gdpa(dev, "vkCmdInitializeGraphScratchMemoryAMDX");
828 #endif // VK_ENABLE_BETA_EXTENSIONS
829 #if defined(VK_ENABLE_BETA_EXTENSIONS)
830     table->CmdDispatchGraphAMDX = (PFN_vkCmdDispatchGraphAMDX)gdpa(dev, "vkCmdDispatchGraphAMDX");
831 #endif // VK_ENABLE_BETA_EXTENSIONS
832 #if defined(VK_ENABLE_BETA_EXTENSIONS)
833     table->CmdDispatchGraphIndirectAMDX = (PFN_vkCmdDispatchGraphIndirectAMDX)gdpa(dev, "vkCmdDispatchGraphIndirectAMDX");
834 #endif // VK_ENABLE_BETA_EXTENSIONS
835 #if defined(VK_ENABLE_BETA_EXTENSIONS)
836     table->CmdDispatchGraphIndirectCountAMDX = (PFN_vkCmdDispatchGraphIndirectCountAMDX)gdpa(dev, "vkCmdDispatchGraphIndirectCountAMDX");
837 #endif // VK_ENABLE_BETA_EXTENSIONS
838 
839     // ---- VK_EXT_sample_locations extension commands
840     table->CmdSetSampleLocationsEXT = (PFN_vkCmdSetSampleLocationsEXT)gdpa(dev, "vkCmdSetSampleLocationsEXT");
841 
842     // ---- VK_EXT_image_drm_format_modifier extension commands
843     table->GetImageDrmFormatModifierPropertiesEXT = (PFN_vkGetImageDrmFormatModifierPropertiesEXT)gdpa(dev, "vkGetImageDrmFormatModifierPropertiesEXT");
844 
845     // ---- VK_EXT_validation_cache extension commands
846     table->CreateValidationCacheEXT = (PFN_vkCreateValidationCacheEXT)gdpa(dev, "vkCreateValidationCacheEXT");
847     table->DestroyValidationCacheEXT = (PFN_vkDestroyValidationCacheEXT)gdpa(dev, "vkDestroyValidationCacheEXT");
848     table->MergeValidationCachesEXT = (PFN_vkMergeValidationCachesEXT)gdpa(dev, "vkMergeValidationCachesEXT");
849     table->GetValidationCacheDataEXT = (PFN_vkGetValidationCacheDataEXT)gdpa(dev, "vkGetValidationCacheDataEXT");
850 
851     // ---- VK_NV_shading_rate_image extension commands
852     table->CmdBindShadingRateImageNV = (PFN_vkCmdBindShadingRateImageNV)gdpa(dev, "vkCmdBindShadingRateImageNV");
853     table->CmdSetViewportShadingRatePaletteNV = (PFN_vkCmdSetViewportShadingRatePaletteNV)gdpa(dev, "vkCmdSetViewportShadingRatePaletteNV");
854     table->CmdSetCoarseSampleOrderNV = (PFN_vkCmdSetCoarseSampleOrderNV)gdpa(dev, "vkCmdSetCoarseSampleOrderNV");
855 
856     // ---- VK_NV_ray_tracing extension commands
857     table->CreateAccelerationStructureNV = (PFN_vkCreateAccelerationStructureNV)gdpa(dev, "vkCreateAccelerationStructureNV");
858     table->DestroyAccelerationStructureNV = (PFN_vkDestroyAccelerationStructureNV)gdpa(dev, "vkDestroyAccelerationStructureNV");
859     table->GetAccelerationStructureMemoryRequirementsNV = (PFN_vkGetAccelerationStructureMemoryRequirementsNV)gdpa(dev, "vkGetAccelerationStructureMemoryRequirementsNV");
860     table->BindAccelerationStructureMemoryNV = (PFN_vkBindAccelerationStructureMemoryNV)gdpa(dev, "vkBindAccelerationStructureMemoryNV");
861     table->CmdBuildAccelerationStructureNV = (PFN_vkCmdBuildAccelerationStructureNV)gdpa(dev, "vkCmdBuildAccelerationStructureNV");
862     table->CmdCopyAccelerationStructureNV = (PFN_vkCmdCopyAccelerationStructureNV)gdpa(dev, "vkCmdCopyAccelerationStructureNV");
863     table->CmdTraceRaysNV = (PFN_vkCmdTraceRaysNV)gdpa(dev, "vkCmdTraceRaysNV");
864     table->CreateRayTracingPipelinesNV = (PFN_vkCreateRayTracingPipelinesNV)gdpa(dev, "vkCreateRayTracingPipelinesNV");
865     table->GetRayTracingShaderGroupHandlesKHR = (PFN_vkGetRayTracingShaderGroupHandlesKHR)gdpa(dev, "vkGetRayTracingShaderGroupHandlesKHR");
866     table->GetRayTracingShaderGroupHandlesNV = (PFN_vkGetRayTracingShaderGroupHandlesNV)gdpa(dev, "vkGetRayTracingShaderGroupHandlesNV");
867     table->GetAccelerationStructureHandleNV = (PFN_vkGetAccelerationStructureHandleNV)gdpa(dev, "vkGetAccelerationStructureHandleNV");
868     table->CmdWriteAccelerationStructuresPropertiesNV = (PFN_vkCmdWriteAccelerationStructuresPropertiesNV)gdpa(dev, "vkCmdWriteAccelerationStructuresPropertiesNV");
869     table->CompileDeferredNV = (PFN_vkCompileDeferredNV)gdpa(dev, "vkCompileDeferredNV");
870 
871     // ---- VK_EXT_external_memory_host extension commands
872     table->GetMemoryHostPointerPropertiesEXT = (PFN_vkGetMemoryHostPointerPropertiesEXT)gdpa(dev, "vkGetMemoryHostPointerPropertiesEXT");
873 
874     // ---- VK_AMD_buffer_marker extension commands
875     table->CmdWriteBufferMarkerAMD = (PFN_vkCmdWriteBufferMarkerAMD)gdpa(dev, "vkCmdWriteBufferMarkerAMD");
876 
877     // ---- VK_EXT_calibrated_timestamps extension commands
878     table->GetCalibratedTimestampsEXT = (PFN_vkGetCalibratedTimestampsEXT)gdpa(dev, "vkGetCalibratedTimestampsEXT");
879 
880     // ---- VK_NV_mesh_shader extension commands
881     table->CmdDrawMeshTasksNV = (PFN_vkCmdDrawMeshTasksNV)gdpa(dev, "vkCmdDrawMeshTasksNV");
882     table->CmdDrawMeshTasksIndirectNV = (PFN_vkCmdDrawMeshTasksIndirectNV)gdpa(dev, "vkCmdDrawMeshTasksIndirectNV");
883     table->CmdDrawMeshTasksIndirectCountNV = (PFN_vkCmdDrawMeshTasksIndirectCountNV)gdpa(dev, "vkCmdDrawMeshTasksIndirectCountNV");
884 
885     // ---- VK_NV_scissor_exclusive extension commands
886     table->CmdSetExclusiveScissorEnableNV = (PFN_vkCmdSetExclusiveScissorEnableNV)gdpa(dev, "vkCmdSetExclusiveScissorEnableNV");
887     table->CmdSetExclusiveScissorNV = (PFN_vkCmdSetExclusiveScissorNV)gdpa(dev, "vkCmdSetExclusiveScissorNV");
888 
889     // ---- VK_NV_device_diagnostic_checkpoints extension commands
890     table->CmdSetCheckpointNV = (PFN_vkCmdSetCheckpointNV)gdpa(dev, "vkCmdSetCheckpointNV");
891     table->GetQueueCheckpointDataNV = (PFN_vkGetQueueCheckpointDataNV)gdpa(dev, "vkGetQueueCheckpointDataNV");
892 
893     // ---- VK_INTEL_performance_query extension commands
894     table->InitializePerformanceApiINTEL = (PFN_vkInitializePerformanceApiINTEL)gdpa(dev, "vkInitializePerformanceApiINTEL");
895     table->UninitializePerformanceApiINTEL = (PFN_vkUninitializePerformanceApiINTEL)gdpa(dev, "vkUninitializePerformanceApiINTEL");
896     table->CmdSetPerformanceMarkerINTEL = (PFN_vkCmdSetPerformanceMarkerINTEL)gdpa(dev, "vkCmdSetPerformanceMarkerINTEL");
897     table->CmdSetPerformanceStreamMarkerINTEL = (PFN_vkCmdSetPerformanceStreamMarkerINTEL)gdpa(dev, "vkCmdSetPerformanceStreamMarkerINTEL");
898     table->CmdSetPerformanceOverrideINTEL = (PFN_vkCmdSetPerformanceOverrideINTEL)gdpa(dev, "vkCmdSetPerformanceOverrideINTEL");
899     table->AcquirePerformanceConfigurationINTEL = (PFN_vkAcquirePerformanceConfigurationINTEL)gdpa(dev, "vkAcquirePerformanceConfigurationINTEL");
900     table->ReleasePerformanceConfigurationINTEL = (PFN_vkReleasePerformanceConfigurationINTEL)gdpa(dev, "vkReleasePerformanceConfigurationINTEL");
901     table->QueueSetPerformanceConfigurationINTEL = (PFN_vkQueueSetPerformanceConfigurationINTEL)gdpa(dev, "vkQueueSetPerformanceConfigurationINTEL");
902     table->GetPerformanceParameterINTEL = (PFN_vkGetPerformanceParameterINTEL)gdpa(dev, "vkGetPerformanceParameterINTEL");
903 
904     // ---- VK_AMD_display_native_hdr extension commands
905     table->SetLocalDimmingAMD = (PFN_vkSetLocalDimmingAMD)gdpa(dev, "vkSetLocalDimmingAMD");
906 
907     // ---- VK_EXT_buffer_device_address extension commands
908     table->GetBufferDeviceAddressEXT = (PFN_vkGetBufferDeviceAddressEXT)gdpa(dev, "vkGetBufferDeviceAddressEXT");
909 
910     // ---- VK_EXT_full_screen_exclusive extension commands
911 #if defined(VK_USE_PLATFORM_WIN32_KHR)
912     table->AcquireFullScreenExclusiveModeEXT = (PFN_vkAcquireFullScreenExclusiveModeEXT)gdpa(dev, "vkAcquireFullScreenExclusiveModeEXT");
913 #endif // VK_USE_PLATFORM_WIN32_KHR
914 #if defined(VK_USE_PLATFORM_WIN32_KHR)
915     table->ReleaseFullScreenExclusiveModeEXT = (PFN_vkReleaseFullScreenExclusiveModeEXT)gdpa(dev, "vkReleaseFullScreenExclusiveModeEXT");
916 #endif // VK_USE_PLATFORM_WIN32_KHR
917 #if defined(VK_USE_PLATFORM_WIN32_KHR)
918     table->GetDeviceGroupSurfacePresentModes2EXT = (PFN_vkGetDeviceGroupSurfacePresentModes2EXT)gdpa(dev, "vkGetDeviceGroupSurfacePresentModes2EXT");
919 #endif // VK_USE_PLATFORM_WIN32_KHR
920 
921     // ---- VK_EXT_line_rasterization extension commands
922     table->CmdSetLineStippleEXT = (PFN_vkCmdSetLineStippleEXT)gdpa(dev, "vkCmdSetLineStippleEXT");
923 
924     // ---- VK_EXT_host_query_reset extension commands
925     table->ResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT)gdpa(dev, "vkResetQueryPoolEXT");
926 
927     // ---- VK_EXT_extended_dynamic_state extension commands
928     table->CmdSetCullModeEXT = (PFN_vkCmdSetCullModeEXT)gdpa(dev, "vkCmdSetCullModeEXT");
929     table->CmdSetFrontFaceEXT = (PFN_vkCmdSetFrontFaceEXT)gdpa(dev, "vkCmdSetFrontFaceEXT");
930     table->CmdSetPrimitiveTopologyEXT = (PFN_vkCmdSetPrimitiveTopologyEXT)gdpa(dev, "vkCmdSetPrimitiveTopologyEXT");
931     table->CmdSetViewportWithCountEXT = (PFN_vkCmdSetViewportWithCountEXT)gdpa(dev, "vkCmdSetViewportWithCountEXT");
932     table->CmdSetScissorWithCountEXT = (PFN_vkCmdSetScissorWithCountEXT)gdpa(dev, "vkCmdSetScissorWithCountEXT");
933     table->CmdBindVertexBuffers2EXT = (PFN_vkCmdBindVertexBuffers2EXT)gdpa(dev, "vkCmdBindVertexBuffers2EXT");
934     table->CmdSetDepthTestEnableEXT = (PFN_vkCmdSetDepthTestEnableEXT)gdpa(dev, "vkCmdSetDepthTestEnableEXT");
935     table->CmdSetDepthWriteEnableEXT = (PFN_vkCmdSetDepthWriteEnableEXT)gdpa(dev, "vkCmdSetDepthWriteEnableEXT");
936     table->CmdSetDepthCompareOpEXT = (PFN_vkCmdSetDepthCompareOpEXT)gdpa(dev, "vkCmdSetDepthCompareOpEXT");
937     table->CmdSetDepthBoundsTestEnableEXT = (PFN_vkCmdSetDepthBoundsTestEnableEXT)gdpa(dev, "vkCmdSetDepthBoundsTestEnableEXT");
938     table->CmdSetStencilTestEnableEXT = (PFN_vkCmdSetStencilTestEnableEXT)gdpa(dev, "vkCmdSetStencilTestEnableEXT");
939     table->CmdSetStencilOpEXT = (PFN_vkCmdSetStencilOpEXT)gdpa(dev, "vkCmdSetStencilOpEXT");
940 
941     // ---- VK_EXT_host_image_copy extension commands
942     table->CopyMemoryToImageEXT = (PFN_vkCopyMemoryToImageEXT)gdpa(dev, "vkCopyMemoryToImageEXT");
943     table->CopyImageToMemoryEXT = (PFN_vkCopyImageToMemoryEXT)gdpa(dev, "vkCopyImageToMemoryEXT");
944     table->CopyImageToImageEXT = (PFN_vkCopyImageToImageEXT)gdpa(dev, "vkCopyImageToImageEXT");
945     table->TransitionImageLayoutEXT = (PFN_vkTransitionImageLayoutEXT)gdpa(dev, "vkTransitionImageLayoutEXT");
946     table->GetImageSubresourceLayout2EXT = (PFN_vkGetImageSubresourceLayout2EXT)gdpa(dev, "vkGetImageSubresourceLayout2EXT");
947 
948     // ---- VK_EXT_swapchain_maintenance1 extension commands
949     table->ReleaseSwapchainImagesEXT = (PFN_vkReleaseSwapchainImagesEXT)gdpa(dev, "vkReleaseSwapchainImagesEXT");
950 
951     // ---- VK_NV_device_generated_commands extension commands
952     table->GetGeneratedCommandsMemoryRequirementsNV = (PFN_vkGetGeneratedCommandsMemoryRequirementsNV)gdpa(dev, "vkGetGeneratedCommandsMemoryRequirementsNV");
953     table->CmdPreprocessGeneratedCommandsNV = (PFN_vkCmdPreprocessGeneratedCommandsNV)gdpa(dev, "vkCmdPreprocessGeneratedCommandsNV");
954     table->CmdExecuteGeneratedCommandsNV = (PFN_vkCmdExecuteGeneratedCommandsNV)gdpa(dev, "vkCmdExecuteGeneratedCommandsNV");
955     table->CmdBindPipelineShaderGroupNV = (PFN_vkCmdBindPipelineShaderGroupNV)gdpa(dev, "vkCmdBindPipelineShaderGroupNV");
956     table->CreateIndirectCommandsLayoutNV = (PFN_vkCreateIndirectCommandsLayoutNV)gdpa(dev, "vkCreateIndirectCommandsLayoutNV");
957     table->DestroyIndirectCommandsLayoutNV = (PFN_vkDestroyIndirectCommandsLayoutNV)gdpa(dev, "vkDestroyIndirectCommandsLayoutNV");
958 
959     // ---- VK_EXT_depth_bias_control extension commands
960     table->CmdSetDepthBias2EXT = (PFN_vkCmdSetDepthBias2EXT)gdpa(dev, "vkCmdSetDepthBias2EXT");
961 
962     // ---- VK_EXT_private_data extension commands
963     table->CreatePrivateDataSlotEXT = (PFN_vkCreatePrivateDataSlotEXT)gdpa(dev, "vkCreatePrivateDataSlotEXT");
964     table->DestroyPrivateDataSlotEXT = (PFN_vkDestroyPrivateDataSlotEXT)gdpa(dev, "vkDestroyPrivateDataSlotEXT");
965     table->SetPrivateDataEXT = (PFN_vkSetPrivateDataEXT)gdpa(dev, "vkSetPrivateDataEXT");
966     table->GetPrivateDataEXT = (PFN_vkGetPrivateDataEXT)gdpa(dev, "vkGetPrivateDataEXT");
967 
968     // ---- VK_NV_cuda_kernel_launch extension commands
969     table->CreateCudaModuleNV = (PFN_vkCreateCudaModuleNV)gdpa(dev, "vkCreateCudaModuleNV");
970     table->GetCudaModuleCacheNV = (PFN_vkGetCudaModuleCacheNV)gdpa(dev, "vkGetCudaModuleCacheNV");
971     table->CreateCudaFunctionNV = (PFN_vkCreateCudaFunctionNV)gdpa(dev, "vkCreateCudaFunctionNV");
972     table->DestroyCudaModuleNV = (PFN_vkDestroyCudaModuleNV)gdpa(dev, "vkDestroyCudaModuleNV");
973     table->DestroyCudaFunctionNV = (PFN_vkDestroyCudaFunctionNV)gdpa(dev, "vkDestroyCudaFunctionNV");
974     table->CmdCudaLaunchKernelNV = (PFN_vkCmdCudaLaunchKernelNV)gdpa(dev, "vkCmdCudaLaunchKernelNV");
975 
976     // ---- VK_EXT_metal_objects extension commands
977 #if defined(VK_USE_PLATFORM_METAL_EXT)
978     table->ExportMetalObjectsEXT = (PFN_vkExportMetalObjectsEXT)gdpa(dev, "vkExportMetalObjectsEXT");
979 #endif // VK_USE_PLATFORM_METAL_EXT
980 
981     // ---- VK_EXT_descriptor_buffer extension commands
982     table->GetDescriptorSetLayoutSizeEXT = (PFN_vkGetDescriptorSetLayoutSizeEXT)gdpa(dev, "vkGetDescriptorSetLayoutSizeEXT");
983     table->GetDescriptorSetLayoutBindingOffsetEXT = (PFN_vkGetDescriptorSetLayoutBindingOffsetEXT)gdpa(dev, "vkGetDescriptorSetLayoutBindingOffsetEXT");
984     table->GetDescriptorEXT = (PFN_vkGetDescriptorEXT)gdpa(dev, "vkGetDescriptorEXT");
985     table->CmdBindDescriptorBuffersEXT = (PFN_vkCmdBindDescriptorBuffersEXT)gdpa(dev, "vkCmdBindDescriptorBuffersEXT");
986     table->CmdSetDescriptorBufferOffsetsEXT = (PFN_vkCmdSetDescriptorBufferOffsetsEXT)gdpa(dev, "vkCmdSetDescriptorBufferOffsetsEXT");
987     table->CmdBindDescriptorBufferEmbeddedSamplersEXT = (PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT)gdpa(dev, "vkCmdBindDescriptorBufferEmbeddedSamplersEXT");
988     table->GetBufferOpaqueCaptureDescriptorDataEXT = (PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT)gdpa(dev, "vkGetBufferOpaqueCaptureDescriptorDataEXT");
989     table->GetImageOpaqueCaptureDescriptorDataEXT = (PFN_vkGetImageOpaqueCaptureDescriptorDataEXT)gdpa(dev, "vkGetImageOpaqueCaptureDescriptorDataEXT");
990     table->GetImageViewOpaqueCaptureDescriptorDataEXT = (PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT)gdpa(dev, "vkGetImageViewOpaqueCaptureDescriptorDataEXT");
991     table->GetSamplerOpaqueCaptureDescriptorDataEXT = (PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT)gdpa(dev, "vkGetSamplerOpaqueCaptureDescriptorDataEXT");
992     table->GetAccelerationStructureOpaqueCaptureDescriptorDataEXT = (PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT)gdpa(dev, "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT");
993 
994     // ---- VK_NV_fragment_shading_rate_enums extension commands
995     table->CmdSetFragmentShadingRateEnumNV = (PFN_vkCmdSetFragmentShadingRateEnumNV)gdpa(dev, "vkCmdSetFragmentShadingRateEnumNV");
996 
997     // ---- VK_EXT_device_fault extension commands
998     table->GetDeviceFaultInfoEXT = (PFN_vkGetDeviceFaultInfoEXT)gdpa(dev, "vkGetDeviceFaultInfoEXT");
999 
1000     // ---- VK_EXT_vertex_input_dynamic_state extension commands
1001     table->CmdSetVertexInputEXT = (PFN_vkCmdSetVertexInputEXT)gdpa(dev, "vkCmdSetVertexInputEXT");
1002 
1003     // ---- VK_FUCHSIA_external_memory extension commands
1004 #if defined(VK_USE_PLATFORM_FUCHSIA)
1005     table->GetMemoryZirconHandleFUCHSIA = (PFN_vkGetMemoryZirconHandleFUCHSIA)gdpa(dev, "vkGetMemoryZirconHandleFUCHSIA");
1006 #endif // VK_USE_PLATFORM_FUCHSIA
1007 #if defined(VK_USE_PLATFORM_FUCHSIA)
1008     table->GetMemoryZirconHandlePropertiesFUCHSIA = (PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)gdpa(dev, "vkGetMemoryZirconHandlePropertiesFUCHSIA");
1009 #endif // VK_USE_PLATFORM_FUCHSIA
1010 
1011     // ---- VK_FUCHSIA_external_semaphore extension commands
1012 #if defined(VK_USE_PLATFORM_FUCHSIA)
1013     table->ImportSemaphoreZirconHandleFUCHSIA = (PFN_vkImportSemaphoreZirconHandleFUCHSIA)gdpa(dev, "vkImportSemaphoreZirconHandleFUCHSIA");
1014 #endif // VK_USE_PLATFORM_FUCHSIA
1015 #if defined(VK_USE_PLATFORM_FUCHSIA)
1016     table->GetSemaphoreZirconHandleFUCHSIA = (PFN_vkGetSemaphoreZirconHandleFUCHSIA)gdpa(dev, "vkGetSemaphoreZirconHandleFUCHSIA");
1017 #endif // VK_USE_PLATFORM_FUCHSIA
1018 
1019     // ---- VK_FUCHSIA_buffer_collection extension commands
1020 #if defined(VK_USE_PLATFORM_FUCHSIA)
1021     table->CreateBufferCollectionFUCHSIA = (PFN_vkCreateBufferCollectionFUCHSIA)gdpa(dev, "vkCreateBufferCollectionFUCHSIA");
1022 #endif // VK_USE_PLATFORM_FUCHSIA
1023 #if defined(VK_USE_PLATFORM_FUCHSIA)
1024     table->SetBufferCollectionImageConstraintsFUCHSIA = (PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)gdpa(dev, "vkSetBufferCollectionImageConstraintsFUCHSIA");
1025 #endif // VK_USE_PLATFORM_FUCHSIA
1026 #if defined(VK_USE_PLATFORM_FUCHSIA)
1027     table->SetBufferCollectionBufferConstraintsFUCHSIA = (PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)gdpa(dev, "vkSetBufferCollectionBufferConstraintsFUCHSIA");
1028 #endif // VK_USE_PLATFORM_FUCHSIA
1029 #if defined(VK_USE_PLATFORM_FUCHSIA)
1030     table->DestroyBufferCollectionFUCHSIA = (PFN_vkDestroyBufferCollectionFUCHSIA)gdpa(dev, "vkDestroyBufferCollectionFUCHSIA");
1031 #endif // VK_USE_PLATFORM_FUCHSIA
1032 #if defined(VK_USE_PLATFORM_FUCHSIA)
1033     table->GetBufferCollectionPropertiesFUCHSIA = (PFN_vkGetBufferCollectionPropertiesFUCHSIA)gdpa(dev, "vkGetBufferCollectionPropertiesFUCHSIA");
1034 #endif // VK_USE_PLATFORM_FUCHSIA
1035 
1036     // ---- VK_HUAWEI_subpass_shading extension commands
1037     table->GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = (PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI)gdpa(dev, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI");
1038     table->CmdSubpassShadingHUAWEI = (PFN_vkCmdSubpassShadingHUAWEI)gdpa(dev, "vkCmdSubpassShadingHUAWEI");
1039 
1040     // ---- VK_HUAWEI_invocation_mask extension commands
1041     table->CmdBindInvocationMaskHUAWEI = (PFN_vkCmdBindInvocationMaskHUAWEI)gdpa(dev, "vkCmdBindInvocationMaskHUAWEI");
1042 
1043     // ---- VK_NV_external_memory_rdma extension commands
1044     table->GetMemoryRemoteAddressNV = (PFN_vkGetMemoryRemoteAddressNV)gdpa(dev, "vkGetMemoryRemoteAddressNV");
1045 
1046     // ---- VK_EXT_pipeline_properties extension commands
1047     table->GetPipelinePropertiesEXT = (PFN_vkGetPipelinePropertiesEXT)gdpa(dev, "vkGetPipelinePropertiesEXT");
1048 
1049     // ---- VK_EXT_extended_dynamic_state2 extension commands
1050     table->CmdSetPatchControlPointsEXT = (PFN_vkCmdSetPatchControlPointsEXT)gdpa(dev, "vkCmdSetPatchControlPointsEXT");
1051     table->CmdSetRasterizerDiscardEnableEXT = (PFN_vkCmdSetRasterizerDiscardEnableEXT)gdpa(dev, "vkCmdSetRasterizerDiscardEnableEXT");
1052     table->CmdSetDepthBiasEnableEXT = (PFN_vkCmdSetDepthBiasEnableEXT)gdpa(dev, "vkCmdSetDepthBiasEnableEXT");
1053     table->CmdSetLogicOpEXT = (PFN_vkCmdSetLogicOpEXT)gdpa(dev, "vkCmdSetLogicOpEXT");
1054     table->CmdSetPrimitiveRestartEnableEXT = (PFN_vkCmdSetPrimitiveRestartEnableEXT)gdpa(dev, "vkCmdSetPrimitiveRestartEnableEXT");
1055 
1056     // ---- VK_EXT_color_write_enable extension commands
1057     table->CmdSetColorWriteEnableEXT = (PFN_vkCmdSetColorWriteEnableEXT)gdpa(dev, "vkCmdSetColorWriteEnableEXT");
1058 
1059     // ---- VK_EXT_multi_draw extension commands
1060     table->CmdDrawMultiEXT = (PFN_vkCmdDrawMultiEXT)gdpa(dev, "vkCmdDrawMultiEXT");
1061     table->CmdDrawMultiIndexedEXT = (PFN_vkCmdDrawMultiIndexedEXT)gdpa(dev, "vkCmdDrawMultiIndexedEXT");
1062 
1063     // ---- VK_EXT_opacity_micromap extension commands
1064     table->CreateMicromapEXT = (PFN_vkCreateMicromapEXT)gdpa(dev, "vkCreateMicromapEXT");
1065     table->DestroyMicromapEXT = (PFN_vkDestroyMicromapEXT)gdpa(dev, "vkDestroyMicromapEXT");
1066     table->CmdBuildMicromapsEXT = (PFN_vkCmdBuildMicromapsEXT)gdpa(dev, "vkCmdBuildMicromapsEXT");
1067     table->BuildMicromapsEXT = (PFN_vkBuildMicromapsEXT)gdpa(dev, "vkBuildMicromapsEXT");
1068     table->CopyMicromapEXT = (PFN_vkCopyMicromapEXT)gdpa(dev, "vkCopyMicromapEXT");
1069     table->CopyMicromapToMemoryEXT = (PFN_vkCopyMicromapToMemoryEXT)gdpa(dev, "vkCopyMicromapToMemoryEXT");
1070     table->CopyMemoryToMicromapEXT = (PFN_vkCopyMemoryToMicromapEXT)gdpa(dev, "vkCopyMemoryToMicromapEXT");
1071     table->WriteMicromapsPropertiesEXT = (PFN_vkWriteMicromapsPropertiesEXT)gdpa(dev, "vkWriteMicromapsPropertiesEXT");
1072     table->CmdCopyMicromapEXT = (PFN_vkCmdCopyMicromapEXT)gdpa(dev, "vkCmdCopyMicromapEXT");
1073     table->CmdCopyMicromapToMemoryEXT = (PFN_vkCmdCopyMicromapToMemoryEXT)gdpa(dev, "vkCmdCopyMicromapToMemoryEXT");
1074     table->CmdCopyMemoryToMicromapEXT = (PFN_vkCmdCopyMemoryToMicromapEXT)gdpa(dev, "vkCmdCopyMemoryToMicromapEXT");
1075     table->CmdWriteMicromapsPropertiesEXT = (PFN_vkCmdWriteMicromapsPropertiesEXT)gdpa(dev, "vkCmdWriteMicromapsPropertiesEXT");
1076     table->GetDeviceMicromapCompatibilityEXT = (PFN_vkGetDeviceMicromapCompatibilityEXT)gdpa(dev, "vkGetDeviceMicromapCompatibilityEXT");
1077     table->GetMicromapBuildSizesEXT = (PFN_vkGetMicromapBuildSizesEXT)gdpa(dev, "vkGetMicromapBuildSizesEXT");
1078 
1079     // ---- VK_HUAWEI_cluster_culling_shader extension commands
1080     table->CmdDrawClusterHUAWEI = (PFN_vkCmdDrawClusterHUAWEI)gdpa(dev, "vkCmdDrawClusterHUAWEI");
1081     table->CmdDrawClusterIndirectHUAWEI = (PFN_vkCmdDrawClusterIndirectHUAWEI)gdpa(dev, "vkCmdDrawClusterIndirectHUAWEI");
1082 
1083     // ---- VK_EXT_pageable_device_local_memory extension commands
1084     table->SetDeviceMemoryPriorityEXT = (PFN_vkSetDeviceMemoryPriorityEXT)gdpa(dev, "vkSetDeviceMemoryPriorityEXT");
1085 
1086     // ---- VK_VALVE_descriptor_set_host_mapping extension commands
1087     table->GetDescriptorSetLayoutHostMappingInfoVALVE = (PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE)gdpa(dev, "vkGetDescriptorSetLayoutHostMappingInfoVALVE");
1088     table->GetDescriptorSetHostMappingVALVE = (PFN_vkGetDescriptorSetHostMappingVALVE)gdpa(dev, "vkGetDescriptorSetHostMappingVALVE");
1089 
1090     // ---- VK_NV_copy_memory_indirect extension commands
1091     table->CmdCopyMemoryIndirectNV = (PFN_vkCmdCopyMemoryIndirectNV)gdpa(dev, "vkCmdCopyMemoryIndirectNV");
1092     table->CmdCopyMemoryToImageIndirectNV = (PFN_vkCmdCopyMemoryToImageIndirectNV)gdpa(dev, "vkCmdCopyMemoryToImageIndirectNV");
1093 
1094     // ---- VK_NV_memory_decompression extension commands
1095     table->CmdDecompressMemoryNV = (PFN_vkCmdDecompressMemoryNV)gdpa(dev, "vkCmdDecompressMemoryNV");
1096     table->CmdDecompressMemoryIndirectCountNV = (PFN_vkCmdDecompressMemoryIndirectCountNV)gdpa(dev, "vkCmdDecompressMemoryIndirectCountNV");
1097 
1098     // ---- VK_NV_device_generated_commands_compute extension commands
1099     table->GetPipelineIndirectMemoryRequirementsNV = (PFN_vkGetPipelineIndirectMemoryRequirementsNV)gdpa(dev, "vkGetPipelineIndirectMemoryRequirementsNV");
1100     table->CmdUpdatePipelineIndirectBufferNV = (PFN_vkCmdUpdatePipelineIndirectBufferNV)gdpa(dev, "vkCmdUpdatePipelineIndirectBufferNV");
1101     table->GetPipelineIndirectDeviceAddressNV = (PFN_vkGetPipelineIndirectDeviceAddressNV)gdpa(dev, "vkGetPipelineIndirectDeviceAddressNV");
1102 
1103     // ---- VK_EXT_extended_dynamic_state3 extension commands
1104     table->CmdSetTessellationDomainOriginEXT = (PFN_vkCmdSetTessellationDomainOriginEXT)gdpa(dev, "vkCmdSetTessellationDomainOriginEXT");
1105     table->CmdSetDepthClampEnableEXT = (PFN_vkCmdSetDepthClampEnableEXT)gdpa(dev, "vkCmdSetDepthClampEnableEXT");
1106     table->CmdSetPolygonModeEXT = (PFN_vkCmdSetPolygonModeEXT)gdpa(dev, "vkCmdSetPolygonModeEXT");
1107     table->CmdSetRasterizationSamplesEXT = (PFN_vkCmdSetRasterizationSamplesEXT)gdpa(dev, "vkCmdSetRasterizationSamplesEXT");
1108     table->CmdSetSampleMaskEXT = (PFN_vkCmdSetSampleMaskEXT)gdpa(dev, "vkCmdSetSampleMaskEXT");
1109     table->CmdSetAlphaToCoverageEnableEXT = (PFN_vkCmdSetAlphaToCoverageEnableEXT)gdpa(dev, "vkCmdSetAlphaToCoverageEnableEXT");
1110     table->CmdSetAlphaToOneEnableEXT = (PFN_vkCmdSetAlphaToOneEnableEXT)gdpa(dev, "vkCmdSetAlphaToOneEnableEXT");
1111     table->CmdSetLogicOpEnableEXT = (PFN_vkCmdSetLogicOpEnableEXT)gdpa(dev, "vkCmdSetLogicOpEnableEXT");
1112     table->CmdSetColorBlendEnableEXT = (PFN_vkCmdSetColorBlendEnableEXT)gdpa(dev, "vkCmdSetColorBlendEnableEXT");
1113     table->CmdSetColorBlendEquationEXT = (PFN_vkCmdSetColorBlendEquationEXT)gdpa(dev, "vkCmdSetColorBlendEquationEXT");
1114     table->CmdSetColorWriteMaskEXT = (PFN_vkCmdSetColorWriteMaskEXT)gdpa(dev, "vkCmdSetColorWriteMaskEXT");
1115     table->CmdSetRasterizationStreamEXT = (PFN_vkCmdSetRasterizationStreamEXT)gdpa(dev, "vkCmdSetRasterizationStreamEXT");
1116     table->CmdSetConservativeRasterizationModeEXT = (PFN_vkCmdSetConservativeRasterizationModeEXT)gdpa(dev, "vkCmdSetConservativeRasterizationModeEXT");
1117     table->CmdSetExtraPrimitiveOverestimationSizeEXT = (PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT)gdpa(dev, "vkCmdSetExtraPrimitiveOverestimationSizeEXT");
1118     table->CmdSetDepthClipEnableEXT = (PFN_vkCmdSetDepthClipEnableEXT)gdpa(dev, "vkCmdSetDepthClipEnableEXT");
1119     table->CmdSetSampleLocationsEnableEXT = (PFN_vkCmdSetSampleLocationsEnableEXT)gdpa(dev, "vkCmdSetSampleLocationsEnableEXT");
1120     table->CmdSetColorBlendAdvancedEXT = (PFN_vkCmdSetColorBlendAdvancedEXT)gdpa(dev, "vkCmdSetColorBlendAdvancedEXT");
1121     table->CmdSetProvokingVertexModeEXT = (PFN_vkCmdSetProvokingVertexModeEXT)gdpa(dev, "vkCmdSetProvokingVertexModeEXT");
1122     table->CmdSetLineRasterizationModeEXT = (PFN_vkCmdSetLineRasterizationModeEXT)gdpa(dev, "vkCmdSetLineRasterizationModeEXT");
1123     table->CmdSetLineStippleEnableEXT = (PFN_vkCmdSetLineStippleEnableEXT)gdpa(dev, "vkCmdSetLineStippleEnableEXT");
1124     table->CmdSetDepthClipNegativeOneToOneEXT = (PFN_vkCmdSetDepthClipNegativeOneToOneEXT)gdpa(dev, "vkCmdSetDepthClipNegativeOneToOneEXT");
1125     table->CmdSetViewportWScalingEnableNV = (PFN_vkCmdSetViewportWScalingEnableNV)gdpa(dev, "vkCmdSetViewportWScalingEnableNV");
1126     table->CmdSetViewportSwizzleNV = (PFN_vkCmdSetViewportSwizzleNV)gdpa(dev, "vkCmdSetViewportSwizzleNV");
1127     table->CmdSetCoverageToColorEnableNV = (PFN_vkCmdSetCoverageToColorEnableNV)gdpa(dev, "vkCmdSetCoverageToColorEnableNV");
1128     table->CmdSetCoverageToColorLocationNV = (PFN_vkCmdSetCoverageToColorLocationNV)gdpa(dev, "vkCmdSetCoverageToColorLocationNV");
1129     table->CmdSetCoverageModulationModeNV = (PFN_vkCmdSetCoverageModulationModeNV)gdpa(dev, "vkCmdSetCoverageModulationModeNV");
1130     table->CmdSetCoverageModulationTableEnableNV = (PFN_vkCmdSetCoverageModulationTableEnableNV)gdpa(dev, "vkCmdSetCoverageModulationTableEnableNV");
1131     table->CmdSetCoverageModulationTableNV = (PFN_vkCmdSetCoverageModulationTableNV)gdpa(dev, "vkCmdSetCoverageModulationTableNV");
1132     table->CmdSetShadingRateImageEnableNV = (PFN_vkCmdSetShadingRateImageEnableNV)gdpa(dev, "vkCmdSetShadingRateImageEnableNV");
1133     table->CmdSetRepresentativeFragmentTestEnableNV = (PFN_vkCmdSetRepresentativeFragmentTestEnableNV)gdpa(dev, "vkCmdSetRepresentativeFragmentTestEnableNV");
1134     table->CmdSetCoverageReductionModeNV = (PFN_vkCmdSetCoverageReductionModeNV)gdpa(dev, "vkCmdSetCoverageReductionModeNV");
1135 
1136     // ---- VK_EXT_shader_module_identifier extension commands
1137     table->GetShaderModuleIdentifierEXT = (PFN_vkGetShaderModuleIdentifierEXT)gdpa(dev, "vkGetShaderModuleIdentifierEXT");
1138     table->GetShaderModuleCreateInfoIdentifierEXT = (PFN_vkGetShaderModuleCreateInfoIdentifierEXT)gdpa(dev, "vkGetShaderModuleCreateInfoIdentifierEXT");
1139 
1140     // ---- VK_NV_optical_flow extension commands
1141     table->CreateOpticalFlowSessionNV = (PFN_vkCreateOpticalFlowSessionNV)gdpa(dev, "vkCreateOpticalFlowSessionNV");
1142     table->DestroyOpticalFlowSessionNV = (PFN_vkDestroyOpticalFlowSessionNV)gdpa(dev, "vkDestroyOpticalFlowSessionNV");
1143     table->BindOpticalFlowSessionImageNV = (PFN_vkBindOpticalFlowSessionImageNV)gdpa(dev, "vkBindOpticalFlowSessionImageNV");
1144     table->CmdOpticalFlowExecuteNV = (PFN_vkCmdOpticalFlowExecuteNV)gdpa(dev, "vkCmdOpticalFlowExecuteNV");
1145 
1146     // ---- VK_EXT_shader_object extension commands
1147     table->CreateShadersEXT = (PFN_vkCreateShadersEXT)gdpa(dev, "vkCreateShadersEXT");
1148     table->DestroyShaderEXT = (PFN_vkDestroyShaderEXT)gdpa(dev, "vkDestroyShaderEXT");
1149     table->GetShaderBinaryDataEXT = (PFN_vkGetShaderBinaryDataEXT)gdpa(dev, "vkGetShaderBinaryDataEXT");
1150     table->CmdBindShadersEXT = (PFN_vkCmdBindShadersEXT)gdpa(dev, "vkCmdBindShadersEXT");
1151 
1152     // ---- VK_QCOM_tile_properties extension commands
1153     table->GetFramebufferTilePropertiesQCOM = (PFN_vkGetFramebufferTilePropertiesQCOM)gdpa(dev, "vkGetFramebufferTilePropertiesQCOM");
1154     table->GetDynamicRenderingTilePropertiesQCOM = (PFN_vkGetDynamicRenderingTilePropertiesQCOM)gdpa(dev, "vkGetDynamicRenderingTilePropertiesQCOM");
1155 
1156     // ---- VK_NV_low_latency2 extension commands
1157     table->SetLatencySleepModeNV = (PFN_vkSetLatencySleepModeNV)gdpa(dev, "vkSetLatencySleepModeNV");
1158     table->LatencySleepNV = (PFN_vkLatencySleepNV)gdpa(dev, "vkLatencySleepNV");
1159     table->SetLatencyMarkerNV = (PFN_vkSetLatencyMarkerNV)gdpa(dev, "vkSetLatencyMarkerNV");
1160     table->GetLatencyTimingsNV = (PFN_vkGetLatencyTimingsNV)gdpa(dev, "vkGetLatencyTimingsNV");
1161     table->QueueNotifyOutOfBandNV = (PFN_vkQueueNotifyOutOfBandNV)gdpa(dev, "vkQueueNotifyOutOfBandNV");
1162 
1163     // ---- VK_EXT_attachment_feedback_loop_dynamic_state extension commands
1164     table->CmdSetAttachmentFeedbackLoopEnableEXT = (PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT)gdpa(dev, "vkCmdSetAttachmentFeedbackLoopEnableEXT");
1165 
1166     // ---- VK_QNX_external_memory_screen_buffer extension commands
1167 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
1168     table->GetScreenBufferPropertiesQNX = (PFN_vkGetScreenBufferPropertiesQNX)gdpa(dev, "vkGetScreenBufferPropertiesQNX");
1169 #endif // VK_USE_PLATFORM_SCREEN_QNX
1170 
1171     // ---- VK_KHR_acceleration_structure extension commands
1172     table->CreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)gdpa(dev, "vkCreateAccelerationStructureKHR");
1173     table->DestroyAccelerationStructureKHR = (PFN_vkDestroyAccelerationStructureKHR)gdpa(dev, "vkDestroyAccelerationStructureKHR");
1174     table->CmdBuildAccelerationStructuresKHR = (PFN_vkCmdBuildAccelerationStructuresKHR)gdpa(dev, "vkCmdBuildAccelerationStructuresKHR");
1175     table->CmdBuildAccelerationStructuresIndirectKHR = (PFN_vkCmdBuildAccelerationStructuresIndirectKHR)gdpa(dev, "vkCmdBuildAccelerationStructuresIndirectKHR");
1176     table->BuildAccelerationStructuresKHR = (PFN_vkBuildAccelerationStructuresKHR)gdpa(dev, "vkBuildAccelerationStructuresKHR");
1177     table->CopyAccelerationStructureKHR = (PFN_vkCopyAccelerationStructureKHR)gdpa(dev, "vkCopyAccelerationStructureKHR");
1178     table->CopyAccelerationStructureToMemoryKHR = (PFN_vkCopyAccelerationStructureToMemoryKHR)gdpa(dev, "vkCopyAccelerationStructureToMemoryKHR");
1179     table->CopyMemoryToAccelerationStructureKHR = (PFN_vkCopyMemoryToAccelerationStructureKHR)gdpa(dev, "vkCopyMemoryToAccelerationStructureKHR");
1180     table->WriteAccelerationStructuresPropertiesKHR = (PFN_vkWriteAccelerationStructuresPropertiesKHR)gdpa(dev, "vkWriteAccelerationStructuresPropertiesKHR");
1181     table->CmdCopyAccelerationStructureKHR = (PFN_vkCmdCopyAccelerationStructureKHR)gdpa(dev, "vkCmdCopyAccelerationStructureKHR");
1182     table->CmdCopyAccelerationStructureToMemoryKHR = (PFN_vkCmdCopyAccelerationStructureToMemoryKHR)gdpa(dev, "vkCmdCopyAccelerationStructureToMemoryKHR");
1183     table->CmdCopyMemoryToAccelerationStructureKHR = (PFN_vkCmdCopyMemoryToAccelerationStructureKHR)gdpa(dev, "vkCmdCopyMemoryToAccelerationStructureKHR");
1184     table->GetAccelerationStructureDeviceAddressKHR = (PFN_vkGetAccelerationStructureDeviceAddressKHR)gdpa(dev, "vkGetAccelerationStructureDeviceAddressKHR");
1185     table->CmdWriteAccelerationStructuresPropertiesKHR = (PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)gdpa(dev, "vkCmdWriteAccelerationStructuresPropertiesKHR");
1186     table->GetDeviceAccelerationStructureCompatibilityKHR = (PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)gdpa(dev, "vkGetDeviceAccelerationStructureCompatibilityKHR");
1187     table->GetAccelerationStructureBuildSizesKHR = (PFN_vkGetAccelerationStructureBuildSizesKHR)gdpa(dev, "vkGetAccelerationStructureBuildSizesKHR");
1188 
1189     // ---- VK_KHR_ray_tracing_pipeline extension commands
1190     table->CmdTraceRaysKHR = (PFN_vkCmdTraceRaysKHR)gdpa(dev, "vkCmdTraceRaysKHR");
1191     table->CreateRayTracingPipelinesKHR = (PFN_vkCreateRayTracingPipelinesKHR)gdpa(dev, "vkCreateRayTracingPipelinesKHR");
1192     table->GetRayTracingCaptureReplayShaderGroupHandlesKHR = (PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)gdpa(dev, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
1193     table->CmdTraceRaysIndirectKHR = (PFN_vkCmdTraceRaysIndirectKHR)gdpa(dev, "vkCmdTraceRaysIndirectKHR");
1194     table->GetRayTracingShaderGroupStackSizeKHR = (PFN_vkGetRayTracingShaderGroupStackSizeKHR)gdpa(dev, "vkGetRayTracingShaderGroupStackSizeKHR");
1195     table->CmdSetRayTracingPipelineStackSizeKHR = (PFN_vkCmdSetRayTracingPipelineStackSizeKHR)gdpa(dev, "vkCmdSetRayTracingPipelineStackSizeKHR");
1196 
1197     // ---- VK_EXT_mesh_shader extension commands
1198     table->CmdDrawMeshTasksEXT = (PFN_vkCmdDrawMeshTasksEXT)gdpa(dev, "vkCmdDrawMeshTasksEXT");
1199     table->CmdDrawMeshTasksIndirectEXT = (PFN_vkCmdDrawMeshTasksIndirectEXT)gdpa(dev, "vkCmdDrawMeshTasksIndirectEXT");
1200     table->CmdDrawMeshTasksIndirectCountEXT = (PFN_vkCmdDrawMeshTasksIndirectCountEXT)gdpa(dev, "vkCmdDrawMeshTasksIndirectCountEXT");
1201 
1202     // ---- VK_OHOS_native_buffer extension commands
1203 #if defined(VK_USE_PLATFORM_OHOS)
1204     table->GetSwapchainGrallocUsageOHOS = (PFN_vkGetSwapchainGrallocUsageOHOS)gdpa(dev, "vkGetSwapchainGrallocUsageOHOS");
1205 #endif // VK_USE_PLATFORM_OHOS
1206 #if defined(VK_USE_PLATFORM_OHOS)
1207     table->AcquireImageOHOS = (PFN_vkAcquireImageOHOS)gdpa(dev, "vkAcquireImageOHOS");
1208 #endif // VK_USE_PLATFORM_OHOS
1209 #if defined(VK_USE_PLATFORM_OHOS)
1210     table->QueueSignalReleaseImageOHOS = (PFN_vkQueueSignalReleaseImageOHOS)gdpa(dev, "vkQueueSignalReleaseImageOHOS");
1211 #endif // VK_USE_PLATFORM_OHOS
1212 
1213     // ---- VK_OHOS_external_memory extension commands
1214 #if defined(VK_USE_PLATFORM_OHOS)
1215     table->GetNativeBufferPropertiesOHOS = (PFN_vkGetNativeBufferPropertiesOHOS)gdpa(dev, "vkGetNativeBufferPropertiesOHOS");
1216 #endif // VK_USE_PLATFORM_OHOS
1217 #if defined(VK_USE_PLATFORM_OHOS)
1218     table->GetMemoryNativeBufferOHOS = (PFN_vkGetMemoryNativeBufferOHOS)gdpa(dev, "vkGetMemoryNativeBufferOHOS");
1219 #endif // VK_USE_PLATFORM_OHOS
1220 }
1221 
1222 // Init Instance function pointer dispatch table with core commands
loader_init_instance_core_dispatch_table(VkLayerInstanceDispatchTable * table,PFN_vkGetInstanceProcAddr gpa,VkInstance inst)1223 VKAPI_ATTR void VKAPI_CALL loader_init_instance_core_dispatch_table(VkLayerInstanceDispatchTable *table, PFN_vkGetInstanceProcAddr gpa,
1224                                                                     VkInstance inst) {
1225 
1226     // ---- Core Vulkan 1.0 commands
1227     table->DestroyInstance = (PFN_vkDestroyInstance)gpa(inst, "vkDestroyInstance");
1228     table->EnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices)gpa(inst, "vkEnumeratePhysicalDevices");
1229     table->GetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures)gpa(inst, "vkGetPhysicalDeviceFeatures");
1230     table->GetPhysicalDeviceFormatProperties = (PFN_vkGetPhysicalDeviceFormatProperties)gpa(inst, "vkGetPhysicalDeviceFormatProperties");
1231     table->GetPhysicalDeviceImageFormatProperties = (PFN_vkGetPhysicalDeviceImageFormatProperties)gpa(inst, "vkGetPhysicalDeviceImageFormatProperties");
1232     table->GetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties)gpa(inst, "vkGetPhysicalDeviceProperties");
1233     table->GetPhysicalDeviceQueueFamilyProperties = (PFN_vkGetPhysicalDeviceQueueFamilyProperties)gpa(inst, "vkGetPhysicalDeviceQueueFamilyProperties");
1234     table->GetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties)gpa(inst, "vkGetPhysicalDeviceMemoryProperties");
1235     table->GetInstanceProcAddr = gpa;
1236     table->EnumerateDeviceExtensionProperties = (PFN_vkEnumerateDeviceExtensionProperties)gpa(inst, "vkEnumerateDeviceExtensionProperties");
1237     table->EnumerateDeviceLayerProperties = (PFN_vkEnumerateDeviceLayerProperties)gpa(inst, "vkEnumerateDeviceLayerProperties");
1238     table->GetPhysicalDeviceSparseImageFormatProperties = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties)gpa(inst, "vkGetPhysicalDeviceSparseImageFormatProperties");
1239 
1240     // ---- Core Vulkan 1.1 commands
1241     table->EnumeratePhysicalDeviceGroups = (PFN_vkEnumeratePhysicalDeviceGroups)gpa(inst, "vkEnumeratePhysicalDeviceGroups");
1242     table->GetPhysicalDeviceFeatures2 = (PFN_vkGetPhysicalDeviceFeatures2)gpa(inst, "vkGetPhysicalDeviceFeatures2");
1243     table->GetPhysicalDeviceProperties2 = (PFN_vkGetPhysicalDeviceProperties2)gpa(inst, "vkGetPhysicalDeviceProperties2");
1244     table->GetPhysicalDeviceFormatProperties2 = (PFN_vkGetPhysicalDeviceFormatProperties2)gpa(inst, "vkGetPhysicalDeviceFormatProperties2");
1245     table->GetPhysicalDeviceImageFormatProperties2 = (PFN_vkGetPhysicalDeviceImageFormatProperties2)gpa(inst, "vkGetPhysicalDeviceImageFormatProperties2");
1246     table->GetPhysicalDeviceQueueFamilyProperties2 = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2)gpa(inst, "vkGetPhysicalDeviceQueueFamilyProperties2");
1247     table->GetPhysicalDeviceMemoryProperties2 = (PFN_vkGetPhysicalDeviceMemoryProperties2)gpa(inst, "vkGetPhysicalDeviceMemoryProperties2");
1248     table->GetPhysicalDeviceSparseImageFormatProperties2 = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)gpa(inst, "vkGetPhysicalDeviceSparseImageFormatProperties2");
1249     table->GetPhysicalDeviceExternalBufferProperties = (PFN_vkGetPhysicalDeviceExternalBufferProperties)gpa(inst, "vkGetPhysicalDeviceExternalBufferProperties");
1250     table->GetPhysicalDeviceExternalFenceProperties = (PFN_vkGetPhysicalDeviceExternalFenceProperties)gpa(inst, "vkGetPhysicalDeviceExternalFenceProperties");
1251     table->GetPhysicalDeviceExternalSemaphoreProperties = (PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)gpa(inst, "vkGetPhysicalDeviceExternalSemaphoreProperties");
1252 
1253     // ---- Core Vulkan 1.3 commands
1254     table->GetPhysicalDeviceToolProperties = (PFN_vkGetPhysicalDeviceToolProperties)gpa(inst, "vkGetPhysicalDeviceToolProperties");
1255 }
1256 
1257 // Init Instance function pointer dispatch table with core commands
loader_init_instance_extension_dispatch_table(VkLayerInstanceDispatchTable * table,PFN_vkGetInstanceProcAddr gpa,VkInstance inst)1258 VKAPI_ATTR void VKAPI_CALL loader_init_instance_extension_dispatch_table(VkLayerInstanceDispatchTable *table, PFN_vkGetInstanceProcAddr gpa,
1259                                                                         VkInstance inst) {
1260 
1261     // ---- VK_KHR_surface extension commands
1262     table->DestroySurfaceKHR = (PFN_vkDestroySurfaceKHR)gpa(inst, "vkDestroySurfaceKHR");
1263     table->GetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR)gpa(inst, "vkGetPhysicalDeviceSurfaceSupportKHR");
1264     table->GetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)gpa(inst, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
1265     table->GetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)gpa(inst, "vkGetPhysicalDeviceSurfaceFormatsKHR");
1266     table->GetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)gpa(inst, "vkGetPhysicalDeviceSurfacePresentModesKHR");
1267 
1268     // ---- VK_KHR_swapchain extension commands
1269     table->GetPhysicalDevicePresentRectanglesKHR = (PFN_vkGetPhysicalDevicePresentRectanglesKHR)gpa(inst, "vkGetPhysicalDevicePresentRectanglesKHR");
1270 
1271     // ---- VK_KHR_display extension commands
1272     table->GetPhysicalDeviceDisplayPropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)gpa(inst, "vkGetPhysicalDeviceDisplayPropertiesKHR");
1273     table->GetPhysicalDeviceDisplayPlanePropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)gpa(inst, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
1274     table->GetDisplayPlaneSupportedDisplaysKHR = (PFN_vkGetDisplayPlaneSupportedDisplaysKHR)gpa(inst, "vkGetDisplayPlaneSupportedDisplaysKHR");
1275     table->GetDisplayModePropertiesKHR = (PFN_vkGetDisplayModePropertiesKHR)gpa(inst, "vkGetDisplayModePropertiesKHR");
1276     table->CreateDisplayModeKHR = (PFN_vkCreateDisplayModeKHR)gpa(inst, "vkCreateDisplayModeKHR");
1277     table->GetDisplayPlaneCapabilitiesKHR = (PFN_vkGetDisplayPlaneCapabilitiesKHR)gpa(inst, "vkGetDisplayPlaneCapabilitiesKHR");
1278     table->CreateDisplayPlaneSurfaceKHR = (PFN_vkCreateDisplayPlaneSurfaceKHR)gpa(inst, "vkCreateDisplayPlaneSurfaceKHR");
1279 
1280     // ---- VK_KHR_xlib_surface extension commands
1281 #if defined(VK_USE_PLATFORM_XLIB_KHR)
1282     table->CreateXlibSurfaceKHR = (PFN_vkCreateXlibSurfaceKHR)gpa(inst, "vkCreateXlibSurfaceKHR");
1283 #endif // VK_USE_PLATFORM_XLIB_KHR
1284 #if defined(VK_USE_PLATFORM_XLIB_KHR)
1285     table->GetPhysicalDeviceXlibPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)gpa(inst, "vkGetPhysicalDeviceXlibPresentationSupportKHR");
1286 #endif // VK_USE_PLATFORM_XLIB_KHR
1287 
1288     // ---- VK_KHR_xcb_surface extension commands
1289 #if defined(VK_USE_PLATFORM_XCB_KHR)
1290     table->CreateXcbSurfaceKHR = (PFN_vkCreateXcbSurfaceKHR)gpa(inst, "vkCreateXcbSurfaceKHR");
1291 #endif // VK_USE_PLATFORM_XCB_KHR
1292 #if defined(VK_USE_PLATFORM_XCB_KHR)
1293     table->GetPhysicalDeviceXcbPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)gpa(inst, "vkGetPhysicalDeviceXcbPresentationSupportKHR");
1294 #endif // VK_USE_PLATFORM_XCB_KHR
1295 
1296     // ---- VK_KHR_wayland_surface extension commands
1297 #if defined(VK_USE_PLATFORM_WAYLAND_KHR)
1298     table->CreateWaylandSurfaceKHR = (PFN_vkCreateWaylandSurfaceKHR)gpa(inst, "vkCreateWaylandSurfaceKHR");
1299 #endif // VK_USE_PLATFORM_WAYLAND_KHR
1300 #if defined(VK_USE_PLATFORM_WAYLAND_KHR)
1301     table->GetPhysicalDeviceWaylandPresentationSupportKHR = (PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)gpa(inst, "vkGetPhysicalDeviceWaylandPresentationSupportKHR");
1302 #endif // VK_USE_PLATFORM_WAYLAND_KHR
1303 
1304     // ---- VK_KHR_android_surface extension commands
1305 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
1306     table->CreateAndroidSurfaceKHR = (PFN_vkCreateAndroidSurfaceKHR)gpa(inst, "vkCreateAndroidSurfaceKHR");
1307 #endif // VK_USE_PLATFORM_ANDROID_KHR
1308 
1309     // ---- VK_KHR_win32_surface extension commands
1310 #if defined(VK_USE_PLATFORM_WIN32_KHR)
1311     table->CreateWin32SurfaceKHR = (PFN_vkCreateWin32SurfaceKHR)gpa(inst, "vkCreateWin32SurfaceKHR");
1312 #endif // VK_USE_PLATFORM_WIN32_KHR
1313 #if defined(VK_USE_PLATFORM_WIN32_KHR)
1314     table->GetPhysicalDeviceWin32PresentationSupportKHR = (PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)gpa(inst, "vkGetPhysicalDeviceWin32PresentationSupportKHR");
1315 #endif // VK_USE_PLATFORM_WIN32_KHR
1316 
1317     // ---- VK_KHR_video_queue extension commands
1318     table->GetPhysicalDeviceVideoCapabilitiesKHR = (PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)gpa(inst, "vkGetPhysicalDeviceVideoCapabilitiesKHR");
1319     table->GetPhysicalDeviceVideoFormatPropertiesKHR = (PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)gpa(inst, "vkGetPhysicalDeviceVideoFormatPropertiesKHR");
1320 
1321     // ---- VK_KHR_get_physical_device_properties2 extension commands
1322     table->GetPhysicalDeviceFeatures2KHR = (PFN_vkGetPhysicalDeviceFeatures2KHR)gpa(inst, "vkGetPhysicalDeviceFeatures2KHR");
1323     table->GetPhysicalDeviceProperties2KHR = (PFN_vkGetPhysicalDeviceProperties2KHR)gpa(inst, "vkGetPhysicalDeviceProperties2KHR");
1324     table->GetPhysicalDeviceFormatProperties2KHR = (PFN_vkGetPhysicalDeviceFormatProperties2KHR)gpa(inst, "vkGetPhysicalDeviceFormatProperties2KHR");
1325     table->GetPhysicalDeviceImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)gpa(inst, "vkGetPhysicalDeviceImageFormatProperties2KHR");
1326     table->GetPhysicalDeviceQueueFamilyProperties2KHR = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)gpa(inst, "vkGetPhysicalDeviceQueueFamilyProperties2KHR");
1327     table->GetPhysicalDeviceMemoryProperties2KHR = (PFN_vkGetPhysicalDeviceMemoryProperties2KHR)gpa(inst, "vkGetPhysicalDeviceMemoryProperties2KHR");
1328     table->GetPhysicalDeviceSparseImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)gpa(inst, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
1329 
1330     // ---- VK_KHR_device_group_creation extension commands
1331     table->EnumeratePhysicalDeviceGroupsKHR = (PFN_vkEnumeratePhysicalDeviceGroupsKHR)gpa(inst, "vkEnumeratePhysicalDeviceGroupsKHR");
1332 
1333     // ---- VK_KHR_external_memory_capabilities extension commands
1334     table->GetPhysicalDeviceExternalBufferPropertiesKHR = (PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)gpa(inst, "vkGetPhysicalDeviceExternalBufferPropertiesKHR");
1335 
1336     // ---- VK_KHR_external_semaphore_capabilities extension commands
1337     table->GetPhysicalDeviceExternalSemaphorePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)gpa(inst, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
1338 
1339     // ---- VK_KHR_external_fence_capabilities extension commands
1340     table->GetPhysicalDeviceExternalFencePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)gpa(inst, "vkGetPhysicalDeviceExternalFencePropertiesKHR");
1341 
1342     // ---- VK_KHR_performance_query extension commands
1343     table->EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = (PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)gpa(inst, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
1344     table->GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = (PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)gpa(inst, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
1345 
1346     // ---- VK_KHR_get_surface_capabilities2 extension commands
1347     table->GetPhysicalDeviceSurfaceCapabilities2KHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)gpa(inst, "vkGetPhysicalDeviceSurfaceCapabilities2KHR");
1348     table->GetPhysicalDeviceSurfaceFormats2KHR = (PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)gpa(inst, "vkGetPhysicalDeviceSurfaceFormats2KHR");
1349 
1350     // ---- VK_KHR_get_display_properties2 extension commands
1351     table->GetPhysicalDeviceDisplayProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayProperties2KHR)gpa(inst, "vkGetPhysicalDeviceDisplayProperties2KHR");
1352     table->GetPhysicalDeviceDisplayPlaneProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)gpa(inst, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
1353     table->GetDisplayModeProperties2KHR = (PFN_vkGetDisplayModeProperties2KHR)gpa(inst, "vkGetDisplayModeProperties2KHR");
1354     table->GetDisplayPlaneCapabilities2KHR = (PFN_vkGetDisplayPlaneCapabilities2KHR)gpa(inst, "vkGetDisplayPlaneCapabilities2KHR");
1355 
1356     // ---- VK_KHR_fragment_shading_rate extension commands
1357     table->GetPhysicalDeviceFragmentShadingRatesKHR = (PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR)gpa(inst, "vkGetPhysicalDeviceFragmentShadingRatesKHR");
1358 
1359     // ---- VK_KHR_video_encode_queue extension commands
1360     table->GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = (PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR)gpa(inst, "vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR");
1361 
1362     // ---- VK_KHR_cooperative_matrix extension commands
1363     table->GetPhysicalDeviceCooperativeMatrixPropertiesKHR = (PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR)gpa(inst, "vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR");
1364 
1365     // ---- VK_KHR_calibrated_timestamps extension commands
1366     table->GetPhysicalDeviceCalibrateableTimeDomainsKHR = (PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR)gpa(inst, "vkGetPhysicalDeviceCalibrateableTimeDomainsKHR");
1367 
1368     // ---- VK_EXT_debug_report extension commands
1369     table->CreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)gpa(inst, "vkCreateDebugReportCallbackEXT");
1370     table->DestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT)gpa(inst, "vkDestroyDebugReportCallbackEXT");
1371     table->DebugReportMessageEXT = (PFN_vkDebugReportMessageEXT)gpa(inst, "vkDebugReportMessageEXT");
1372 
1373     // ---- VK_GGP_stream_descriptor_surface extension commands
1374 #if defined(VK_USE_PLATFORM_GGP)
1375     table->CreateStreamDescriptorSurfaceGGP = (PFN_vkCreateStreamDescriptorSurfaceGGP)gpa(inst, "vkCreateStreamDescriptorSurfaceGGP");
1376 #endif // VK_USE_PLATFORM_GGP
1377 
1378     // ---- VK_NV_external_memory_capabilities extension commands
1379     table->GetPhysicalDeviceExternalImageFormatPropertiesNV = (PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)gpa(inst, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
1380 
1381     // ---- VK_NN_vi_surface extension commands
1382 #if defined(VK_USE_PLATFORM_VI_NN)
1383     table->CreateViSurfaceNN = (PFN_vkCreateViSurfaceNN)gpa(inst, "vkCreateViSurfaceNN");
1384 #endif // VK_USE_PLATFORM_VI_NN
1385 
1386     // ---- VK_EXT_direct_mode_display extension commands
1387     table->ReleaseDisplayEXT = (PFN_vkReleaseDisplayEXT)gpa(inst, "vkReleaseDisplayEXT");
1388 
1389     // ---- VK_EXT_acquire_xlib_display extension commands
1390 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
1391     table->AcquireXlibDisplayEXT = (PFN_vkAcquireXlibDisplayEXT)gpa(inst, "vkAcquireXlibDisplayEXT");
1392 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
1393 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
1394     table->GetRandROutputDisplayEXT = (PFN_vkGetRandROutputDisplayEXT)gpa(inst, "vkGetRandROutputDisplayEXT");
1395 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
1396 
1397     // ---- VK_EXT_display_surface_counter extension commands
1398     table->GetPhysicalDeviceSurfaceCapabilities2EXT = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)gpa(inst, "vkGetPhysicalDeviceSurfaceCapabilities2EXT");
1399 
1400     // ---- VK_MVK_ios_surface extension commands
1401 #if defined(VK_USE_PLATFORM_IOS_MVK)
1402     table->CreateIOSSurfaceMVK = (PFN_vkCreateIOSSurfaceMVK)gpa(inst, "vkCreateIOSSurfaceMVK");
1403 #endif // VK_USE_PLATFORM_IOS_MVK
1404 
1405     // ---- VK_MVK_macos_surface extension commands
1406 #if defined(VK_USE_PLATFORM_MACOS_MVK)
1407     table->CreateMacOSSurfaceMVK = (PFN_vkCreateMacOSSurfaceMVK)gpa(inst, "vkCreateMacOSSurfaceMVK");
1408 #endif // VK_USE_PLATFORM_MACOS_MVK
1409 
1410     // ---- VK_EXT_debug_utils extension commands
1411     table->CreateDebugUtilsMessengerEXT = (PFN_vkCreateDebugUtilsMessengerEXT)gpa(inst, "vkCreateDebugUtilsMessengerEXT");
1412     table->DestroyDebugUtilsMessengerEXT = (PFN_vkDestroyDebugUtilsMessengerEXT)gpa(inst, "vkDestroyDebugUtilsMessengerEXT");
1413     table->SubmitDebugUtilsMessageEXT = (PFN_vkSubmitDebugUtilsMessageEXT)gpa(inst, "vkSubmitDebugUtilsMessageEXT");
1414 
1415     // ---- VK_EXT_sample_locations extension commands
1416     table->GetPhysicalDeviceMultisamplePropertiesEXT = (PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)gpa(inst, "vkGetPhysicalDeviceMultisamplePropertiesEXT");
1417 
1418     // ---- VK_EXT_calibrated_timestamps extension commands
1419     table->GetPhysicalDeviceCalibrateableTimeDomainsEXT = (PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)gpa(inst, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
1420 
1421     // ---- VK_FUCHSIA_imagepipe_surface extension commands
1422 #if defined(VK_USE_PLATFORM_FUCHSIA)
1423     table->CreateImagePipeSurfaceFUCHSIA = (PFN_vkCreateImagePipeSurfaceFUCHSIA)gpa(inst, "vkCreateImagePipeSurfaceFUCHSIA");
1424 #endif // VK_USE_PLATFORM_FUCHSIA
1425 
1426     // ---- VK_EXT_metal_surface extension commands
1427 #if defined(VK_USE_PLATFORM_METAL_EXT)
1428     table->CreateMetalSurfaceEXT = (PFN_vkCreateMetalSurfaceEXT)gpa(inst, "vkCreateMetalSurfaceEXT");
1429 #endif // VK_USE_PLATFORM_METAL_EXT
1430 
1431     // ---- VK_EXT_tooling_info extension commands
1432     table->GetPhysicalDeviceToolPropertiesEXT = (PFN_vkGetPhysicalDeviceToolPropertiesEXT)gpa(inst, "vkGetPhysicalDeviceToolPropertiesEXT");
1433 
1434     // ---- VK_NV_cooperative_matrix extension commands
1435     table->GetPhysicalDeviceCooperativeMatrixPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)gpa(inst, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
1436 
1437     // ---- VK_NV_coverage_reduction_mode extension commands
1438     table->GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = (PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)gpa(inst, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
1439 
1440     // ---- VK_EXT_full_screen_exclusive extension commands
1441 #if defined(VK_USE_PLATFORM_WIN32_KHR)
1442     table->GetPhysicalDeviceSurfacePresentModes2EXT = (PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)gpa(inst, "vkGetPhysicalDeviceSurfacePresentModes2EXT");
1443 #endif // VK_USE_PLATFORM_WIN32_KHR
1444 
1445     // ---- VK_EXT_headless_surface extension commands
1446     table->CreateHeadlessSurfaceEXT = (PFN_vkCreateHeadlessSurfaceEXT)gpa(inst, "vkCreateHeadlessSurfaceEXT");
1447 
1448     // ---- VK_EXT_acquire_drm_display extension commands
1449     table->AcquireDrmDisplayEXT = (PFN_vkAcquireDrmDisplayEXT)gpa(inst, "vkAcquireDrmDisplayEXT");
1450     table->GetDrmDisplayEXT = (PFN_vkGetDrmDisplayEXT)gpa(inst, "vkGetDrmDisplayEXT");
1451 
1452     // ---- VK_NV_acquire_winrt_display extension commands
1453 #if defined(VK_USE_PLATFORM_WIN32_KHR)
1454     table->AcquireWinrtDisplayNV = (PFN_vkAcquireWinrtDisplayNV)gpa(inst, "vkAcquireWinrtDisplayNV");
1455 #endif // VK_USE_PLATFORM_WIN32_KHR
1456 #if defined(VK_USE_PLATFORM_WIN32_KHR)
1457     table->GetWinrtDisplayNV = (PFN_vkGetWinrtDisplayNV)gpa(inst, "vkGetWinrtDisplayNV");
1458 #endif // VK_USE_PLATFORM_WIN32_KHR
1459 
1460     // ---- VK_EXT_directfb_surface extension commands
1461 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
1462     table->CreateDirectFBSurfaceEXT = (PFN_vkCreateDirectFBSurfaceEXT)gpa(inst, "vkCreateDirectFBSurfaceEXT");
1463 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
1464 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
1465     table->GetPhysicalDeviceDirectFBPresentationSupportEXT = (PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT)gpa(inst, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT");
1466 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
1467 
1468     // ---- VK_QNX_screen_surface extension commands
1469 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
1470     table->CreateScreenSurfaceQNX = (PFN_vkCreateScreenSurfaceQNX)gpa(inst, "vkCreateScreenSurfaceQNX");
1471 #endif // VK_USE_PLATFORM_SCREEN_QNX
1472 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
1473     table->GetPhysicalDeviceScreenPresentationSupportQNX = (PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX)gpa(inst, "vkGetPhysicalDeviceScreenPresentationSupportQNX");
1474 #endif // VK_USE_PLATFORM_SCREEN_QNX
1475 
1476     // ---- VK_NV_optical_flow extension commands
1477     table->GetPhysicalDeviceOpticalFlowImageFormatsNV = (PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV)gpa(inst, "vkGetPhysicalDeviceOpticalFlowImageFormatsNV");
1478 
1479 #if defined(VK_USE_PLATFORM_OHOS)
1480     table->CreateSurfaceOHOS = (PFN_vkCreateSurfaceOHOS)gpa(inst, "vkCreateSurfaceOHOS");
1481 #endif // VK_USE_PLATFORM_OHOS
1482 }
1483 
1484 // Functions that required a terminator need to have a separate dispatch table which contains their corresponding
1485 // device function. This is used in the terminators themselves.
init_extension_device_proc_terminator_dispatch(struct loader_device * dev)1486 void init_extension_device_proc_terminator_dispatch(struct loader_device *dev) {
1487     struct loader_device_terminator_dispatch* dispatch = &dev->loader_dispatch.extension_terminator_dispatch;
1488     PFN_vkGetDeviceProcAddr gpda = (PFN_vkGetDeviceProcAddr)dev->phys_dev_term->this_icd_term->dispatch.GetDeviceProcAddr;
1489     // ---- VK_KHR_swapchain extension commands
1490     if (dev->driver_extensions.khr_swapchain_enabled)
1491        dispatch->CreateSwapchainKHR = (PFN_vkCreateSwapchainKHR)gpda(dev->icd_device, "vkCreateSwapchainKHR");
1492     if (dev->driver_extensions.khr_swapchain_enabled)
1493        dispatch->GetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR)gpda(dev->icd_device, "vkGetDeviceGroupSurfacePresentModesKHR");
1494     // ---- VK_KHR_display_swapchain extension commands
1495     if (dev->driver_extensions.khr_display_swapchain_enabled)
1496        dispatch->CreateSharedSwapchainsKHR = (PFN_vkCreateSharedSwapchainsKHR)gpda(dev->icd_device, "vkCreateSharedSwapchainsKHR");
1497     // ---- VK_EXT_debug_marker extension commands
1498     if (dev->driver_extensions.ext_debug_marker_enabled)
1499        dispatch->DebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)gpda(dev->icd_device, "vkDebugMarkerSetObjectTagEXT");
1500     if (dev->driver_extensions.ext_debug_marker_enabled)
1501        dispatch->DebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)gpda(dev->icd_device, "vkDebugMarkerSetObjectNameEXT");
1502     // ---- VK_EXT_debug_utils extension commands
1503     if (dev->driver_extensions.ext_debug_utils_enabled)
1504        dispatch->SetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)gpda(dev->icd_device, "vkSetDebugUtilsObjectNameEXT");
1505     if (dev->driver_extensions.ext_debug_utils_enabled)
1506        dispatch->SetDebugUtilsObjectTagEXT = (PFN_vkSetDebugUtilsObjectTagEXT)gpda(dev->icd_device, "vkSetDebugUtilsObjectTagEXT");
1507     if (dev->driver_extensions.ext_debug_utils_enabled)
1508        dispatch->QueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT)gpda(dev->icd_device, "vkQueueBeginDebugUtilsLabelEXT");
1509     if (dev->driver_extensions.ext_debug_utils_enabled)
1510        dispatch->QueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)gpda(dev->icd_device, "vkQueueEndDebugUtilsLabelEXT");
1511     if (dev->driver_extensions.ext_debug_utils_enabled)
1512        dispatch->QueueInsertDebugUtilsLabelEXT = (PFN_vkQueueInsertDebugUtilsLabelEXT)gpda(dev->icd_device, "vkQueueInsertDebugUtilsLabelEXT");
1513     if (dev->driver_extensions.ext_debug_utils_enabled)
1514        dispatch->CmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)gpda(dev->icd_device, "vkCmdBeginDebugUtilsLabelEXT");
1515     if (dev->driver_extensions.ext_debug_utils_enabled)
1516        dispatch->CmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)gpda(dev->icd_device, "vkCmdEndDebugUtilsLabelEXT");
1517     if (dev->driver_extensions.ext_debug_utils_enabled)
1518        dispatch->CmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT)gpda(dev->icd_device, "vkCmdInsertDebugUtilsLabelEXT");
1519 #if defined(VK_USE_PLATFORM_WIN32_KHR)
1520     // ---- VK_EXT_full_screen_exclusive extension commands
1521     if (dev->driver_extensions.ext_full_screen_exclusive_enabled && dev->driver_extensions.khr_device_group_enabled)
1522        dispatch->GetDeviceGroupSurfacePresentModes2EXT = (PFN_vkGetDeviceGroupSurfacePresentModes2EXT)gpda(dev->icd_device, "vkGetDeviceGroupSurfacePresentModes2EXT");
1523 #endif // VK_USE_PLATFORM_WIN32_KHR
1524 }
1525 
1526 // These are prototypes for functions that need their trampoline called in all circumstances.
1527 // They are used in loader_lookup_device_dispatch_table but are defined afterwards.
1528     // ---- VK_EXT_debug_marker extension commands
1529 VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectTagEXT(
1530     VkDevice                                    device,
1531     const VkDebugMarkerObjectTagInfoEXT*        pTagInfo);
1532 VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectNameEXT(
1533     VkDevice                                    device,
1534     const VkDebugMarkerObjectNameInfoEXT*       pNameInfo);
1535     // ---- VK_EXT_debug_utils extension commands
1536 VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectNameEXT(
1537     VkDevice                                    device,
1538     const VkDebugUtilsObjectNameInfoEXT*        pNameInfo);
1539 VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectTagEXT(
1540     VkDevice                                    device,
1541     const VkDebugUtilsObjectTagInfoEXT*         pTagInfo);
1542 
1543 // Device command lookup function
loader_lookup_device_dispatch_table(const VkLayerDispatchTable * table,const char * name,bool * found_name)1544 VKAPI_ATTR void* VKAPI_CALL loader_lookup_device_dispatch_table(const VkLayerDispatchTable *table, const char *name, bool* found_name) {
1545     if (!name || name[0] != 'v' || name[1] != 'k') {
1546         *found_name = false;
1547         return NULL;
1548     }
1549 
1550     name += 2;
1551     *found_name = true;
1552     struct loader_device* dev = (struct loader_device *)table;
1553     const struct loader_instance* inst = dev->phys_dev_term->this_icd_term->this_instance;
1554     uint32_t api_version = VK_MAKE_API_VERSION(0, inst->app_api_version.major, inst->app_api_version.minor, inst->app_api_version.patch);
1555 
1556 
1557     // ---- Core Vulkan 1.0 commands
1558     if (!strcmp(name, "GetDeviceProcAddr")) {
1559         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1560         return (void *)table->GetDeviceProcAddr;
1561     }
1562     if (!strcmp(name, "DestroyDevice")) {
1563         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1564         return (void *)table->DestroyDevice;
1565     }
1566     if (!strcmp(name, "GetDeviceQueue")) {
1567         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1568         return (void *)table->GetDeviceQueue;
1569     }
1570     if (!strcmp(name, "QueueSubmit")) {
1571         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1572         return (void *)table->QueueSubmit;
1573     }
1574     if (!strcmp(name, "QueueWaitIdle")) {
1575         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1576         return (void *)table->QueueWaitIdle;
1577     }
1578     if (!strcmp(name, "DeviceWaitIdle")) {
1579         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1580         return (void *)table->DeviceWaitIdle;
1581     }
1582     if (!strcmp(name, "AllocateMemory")) {
1583         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1584         return (void *)table->AllocateMemory;
1585     }
1586     if (!strcmp(name, "FreeMemory")) {
1587         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1588         return (void *)table->FreeMemory;
1589     }
1590     if (!strcmp(name, "MapMemory")) {
1591         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1592         return (void *)table->MapMemory;
1593     }
1594     if (!strcmp(name, "UnmapMemory")) {
1595         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1596         return (void *)table->UnmapMemory;
1597     }
1598     if (!strcmp(name, "FlushMappedMemoryRanges")) {
1599         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1600         return (void *)table->FlushMappedMemoryRanges;
1601     }
1602     if (!strcmp(name, "InvalidateMappedMemoryRanges")) {
1603         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1604         return (void *)table->InvalidateMappedMemoryRanges;
1605     }
1606     if (!strcmp(name, "GetDeviceMemoryCommitment")) {
1607         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1608         return (void *)table->GetDeviceMemoryCommitment;
1609     }
1610     if (!strcmp(name, "BindBufferMemory")) {
1611         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1612         return (void *)table->BindBufferMemory;
1613     }
1614     if (!strcmp(name, "BindImageMemory")) {
1615         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1616         return (void *)table->BindImageMemory;
1617     }
1618     if (!strcmp(name, "GetBufferMemoryRequirements")) {
1619         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1620         return (void *)table->GetBufferMemoryRequirements;
1621     }
1622     if (!strcmp(name, "GetImageMemoryRequirements")) {
1623         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1624         return (void *)table->GetImageMemoryRequirements;
1625     }
1626     if (!strcmp(name, "GetImageSparseMemoryRequirements")) {
1627         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1628         return (void *)table->GetImageSparseMemoryRequirements;
1629     }
1630     if (!strcmp(name, "QueueBindSparse")) {
1631         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1632         return (void *)table->QueueBindSparse;
1633     }
1634     if (!strcmp(name, "CreateFence")) {
1635         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1636         return (void *)table->CreateFence;
1637     }
1638     if (!strcmp(name, "DestroyFence")) {
1639         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1640         return (void *)table->DestroyFence;
1641     }
1642     if (!strcmp(name, "ResetFences")) {
1643         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1644         return (void *)table->ResetFences;
1645     }
1646     if (!strcmp(name, "GetFenceStatus")) {
1647         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1648         return (void *)table->GetFenceStatus;
1649     }
1650     if (!strcmp(name, "WaitForFences")) {
1651         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1652         return (void *)table->WaitForFences;
1653     }
1654     if (!strcmp(name, "CreateSemaphore")) {
1655         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1656         return (void *)table->CreateSemaphore;
1657     }
1658     if (!strcmp(name, "DestroySemaphore")) {
1659         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1660         return (void *)table->DestroySemaphore;
1661     }
1662     if (!strcmp(name, "CreateEvent")) {
1663         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1664         return (void *)table->CreateEvent;
1665     }
1666     if (!strcmp(name, "DestroyEvent")) {
1667         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1668         return (void *)table->DestroyEvent;
1669     }
1670     if (!strcmp(name, "GetEventStatus")) {
1671         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1672         return (void *)table->GetEventStatus;
1673     }
1674     if (!strcmp(name, "SetEvent")) {
1675         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1676         return (void *)table->SetEvent;
1677     }
1678     if (!strcmp(name, "ResetEvent")) {
1679         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1680         return (void *)table->ResetEvent;
1681     }
1682     if (!strcmp(name, "CreateQueryPool")) {
1683         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1684         return (void *)table->CreateQueryPool;
1685     }
1686     if (!strcmp(name, "DestroyQueryPool")) {
1687         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1688         return (void *)table->DestroyQueryPool;
1689     }
1690     if (!strcmp(name, "GetQueryPoolResults")) {
1691         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1692         return (void *)table->GetQueryPoolResults;
1693     }
1694     if (!strcmp(name, "CreateBuffer")) {
1695         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1696         return (void *)table->CreateBuffer;
1697     }
1698     if (!strcmp(name, "DestroyBuffer")) {
1699         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1700         return (void *)table->DestroyBuffer;
1701     }
1702     if (!strcmp(name, "CreateBufferView")) {
1703         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1704         return (void *)table->CreateBufferView;
1705     }
1706     if (!strcmp(name, "DestroyBufferView")) {
1707         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1708         return (void *)table->DestroyBufferView;
1709     }
1710     if (!strcmp(name, "CreateImage")) {
1711         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1712         return (void *)table->CreateImage;
1713     }
1714     if (!strcmp(name, "DestroyImage")) {
1715         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1716         return (void *)table->DestroyImage;
1717     }
1718     if (!strcmp(name, "GetImageSubresourceLayout")) {
1719         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1720         return (void *)table->GetImageSubresourceLayout;
1721     }
1722     if (!strcmp(name, "CreateImageView")) {
1723         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1724         return (void *)table->CreateImageView;
1725     }
1726     if (!strcmp(name, "DestroyImageView")) {
1727         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1728         return (void *)table->DestroyImageView;
1729     }
1730     if (!strcmp(name, "CreateShaderModule")) {
1731         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1732         return (void *)table->CreateShaderModule;
1733     }
1734     if (!strcmp(name, "DestroyShaderModule")) {
1735         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1736         return (void *)table->DestroyShaderModule;
1737     }
1738     if (!strcmp(name, "CreatePipelineCache")) {
1739         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1740         return (void *)table->CreatePipelineCache;
1741     }
1742     if (!strcmp(name, "DestroyPipelineCache")) {
1743         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1744         return (void *)table->DestroyPipelineCache;
1745     }
1746     if (!strcmp(name, "GetPipelineCacheData")) {
1747         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1748         return (void *)table->GetPipelineCacheData;
1749     }
1750     if (!strcmp(name, "MergePipelineCaches")) {
1751         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1752         return (void *)table->MergePipelineCaches;
1753     }
1754     if (!strcmp(name, "CreateGraphicsPipelines")) {
1755         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1756         return (void *)table->CreateGraphicsPipelines;
1757     }
1758     if (!strcmp(name, "CreateComputePipelines")) {
1759         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1760         return (void *)table->CreateComputePipelines;
1761     }
1762     if (!strcmp(name, "DestroyPipeline")) {
1763         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1764         return (void *)table->DestroyPipeline;
1765     }
1766     if (!strcmp(name, "CreatePipelineLayout")) {
1767         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1768         return (void *)table->CreatePipelineLayout;
1769     }
1770     if (!strcmp(name, "DestroyPipelineLayout")) {
1771         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1772         return (void *)table->DestroyPipelineLayout;
1773     }
1774     if (!strcmp(name, "CreateSampler")) {
1775         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1776         return (void *)table->CreateSampler;
1777     }
1778     if (!strcmp(name, "DestroySampler")) {
1779         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1780         return (void *)table->DestroySampler;
1781     }
1782     if (!strcmp(name, "CreateDescriptorSetLayout")) {
1783         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1784         return (void *)table->CreateDescriptorSetLayout;
1785     }
1786     if (!strcmp(name, "DestroyDescriptorSetLayout")) {
1787         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1788         return (void *)table->DestroyDescriptorSetLayout;
1789     }
1790     if (!strcmp(name, "CreateDescriptorPool")) {
1791         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1792         return (void *)table->CreateDescriptorPool;
1793     }
1794     if (!strcmp(name, "DestroyDescriptorPool")) {
1795         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1796         return (void *)table->DestroyDescriptorPool;
1797     }
1798     if (!strcmp(name, "ResetDescriptorPool")) {
1799         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1800         return (void *)table->ResetDescriptorPool;
1801     }
1802     if (!strcmp(name, "AllocateDescriptorSets")) {
1803         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1804         return (void *)table->AllocateDescriptorSets;
1805     }
1806     if (!strcmp(name, "FreeDescriptorSets")) {
1807         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1808         return (void *)table->FreeDescriptorSets;
1809     }
1810     if (!strcmp(name, "UpdateDescriptorSets")) {
1811         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1812         return (void *)table->UpdateDescriptorSets;
1813     }
1814     if (!strcmp(name, "CreateFramebuffer")) {
1815         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1816         return (void *)table->CreateFramebuffer;
1817     }
1818     if (!strcmp(name, "DestroyFramebuffer")) {
1819         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1820         return (void *)table->DestroyFramebuffer;
1821     }
1822     if (!strcmp(name, "CreateRenderPass")) {
1823         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1824         return (void *)table->CreateRenderPass;
1825     }
1826     if (!strcmp(name, "DestroyRenderPass")) {
1827         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1828         return (void *)table->DestroyRenderPass;
1829     }
1830     if (!strcmp(name, "GetRenderAreaGranularity")) {
1831         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1832         return (void *)table->GetRenderAreaGranularity;
1833     }
1834     if (!strcmp(name, "CreateCommandPool")) {
1835         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1836         return (void *)table->CreateCommandPool;
1837     }
1838     if (!strcmp(name, "DestroyCommandPool")) {
1839         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1840         return (void *)table->DestroyCommandPool;
1841     }
1842     if (!strcmp(name, "ResetCommandPool")) {
1843         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1844         return (void *)table->ResetCommandPool;
1845     }
1846     if (!strcmp(name, "AllocateCommandBuffers")) {
1847         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1848         return (void *)table->AllocateCommandBuffers;
1849     }
1850     if (!strcmp(name, "FreeCommandBuffers")) {
1851         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1852         return (void *)table->FreeCommandBuffers;
1853     }
1854     if (!strcmp(name, "BeginCommandBuffer")) {
1855         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1856         return (void *)table->BeginCommandBuffer;
1857     }
1858     if (!strcmp(name, "EndCommandBuffer")) {
1859         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1860         return (void *)table->EndCommandBuffer;
1861     }
1862     if (!strcmp(name, "ResetCommandBuffer")) {
1863         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1864         return (void *)table->ResetCommandBuffer;
1865     }
1866     if (!strcmp(name, "CmdBindPipeline")) {
1867         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1868         return (void *)table->CmdBindPipeline;
1869     }
1870     if (!strcmp(name, "CmdSetViewport")) {
1871         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1872         return (void *)table->CmdSetViewport;
1873     }
1874     if (!strcmp(name, "CmdSetScissor")) {
1875         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1876         return (void *)table->CmdSetScissor;
1877     }
1878     if (!strcmp(name, "CmdSetLineWidth")) {
1879         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1880         return (void *)table->CmdSetLineWidth;
1881     }
1882     if (!strcmp(name, "CmdSetDepthBias")) {
1883         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1884         return (void *)table->CmdSetDepthBias;
1885     }
1886     if (!strcmp(name, "CmdSetBlendConstants")) {
1887         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1888         return (void *)table->CmdSetBlendConstants;
1889     }
1890     if (!strcmp(name, "CmdSetDepthBounds")) {
1891         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1892         return (void *)table->CmdSetDepthBounds;
1893     }
1894     if (!strcmp(name, "CmdSetStencilCompareMask")) {
1895         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1896         return (void *)table->CmdSetStencilCompareMask;
1897     }
1898     if (!strcmp(name, "CmdSetStencilWriteMask")) {
1899         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1900         return (void *)table->CmdSetStencilWriteMask;
1901     }
1902     if (!strcmp(name, "CmdSetStencilReference")) {
1903         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1904         return (void *)table->CmdSetStencilReference;
1905     }
1906     if (!strcmp(name, "CmdBindDescriptorSets")) {
1907         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1908         return (void *)table->CmdBindDescriptorSets;
1909     }
1910     if (!strcmp(name, "CmdBindIndexBuffer")) {
1911         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1912         return (void *)table->CmdBindIndexBuffer;
1913     }
1914     if (!strcmp(name, "CmdBindVertexBuffers")) {
1915         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1916         return (void *)table->CmdBindVertexBuffers;
1917     }
1918     if (!strcmp(name, "CmdDraw")) {
1919         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1920         return (void *)table->CmdDraw;
1921     }
1922     if (!strcmp(name, "CmdDrawIndexed")) {
1923         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1924         return (void *)table->CmdDrawIndexed;
1925     }
1926     if (!strcmp(name, "CmdDrawIndirect")) {
1927         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1928         return (void *)table->CmdDrawIndirect;
1929     }
1930     if (!strcmp(name, "CmdDrawIndexedIndirect")) {
1931         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1932         return (void *)table->CmdDrawIndexedIndirect;
1933     }
1934     if (!strcmp(name, "CmdDispatch")) {
1935         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1936         return (void *)table->CmdDispatch;
1937     }
1938     if (!strcmp(name, "CmdDispatchIndirect")) {
1939         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1940         return (void *)table->CmdDispatchIndirect;
1941     }
1942     if (!strcmp(name, "CmdCopyBuffer")) {
1943         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1944         return (void *)table->CmdCopyBuffer;
1945     }
1946     if (!strcmp(name, "CmdCopyImage")) {
1947         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1948         return (void *)table->CmdCopyImage;
1949     }
1950     if (!strcmp(name, "CmdBlitImage")) {
1951         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1952         return (void *)table->CmdBlitImage;
1953     }
1954     if (!strcmp(name, "CmdCopyBufferToImage")) {
1955         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1956         return (void *)table->CmdCopyBufferToImage;
1957     }
1958     if (!strcmp(name, "CmdCopyImageToBuffer")) {
1959         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1960         return (void *)table->CmdCopyImageToBuffer;
1961     }
1962     if (!strcmp(name, "CmdUpdateBuffer")) {
1963         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1964         return (void *)table->CmdUpdateBuffer;
1965     }
1966     if (!strcmp(name, "CmdFillBuffer")) {
1967         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1968         return (void *)table->CmdFillBuffer;
1969     }
1970     if (!strcmp(name, "CmdClearColorImage")) {
1971         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1972         return (void *)table->CmdClearColorImage;
1973     }
1974     if (!strcmp(name, "CmdClearDepthStencilImage")) {
1975         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1976         return (void *)table->CmdClearDepthStencilImage;
1977     }
1978     if (!strcmp(name, "CmdClearAttachments")) {
1979         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1980         return (void *)table->CmdClearAttachments;
1981     }
1982     if (!strcmp(name, "CmdResolveImage")) {
1983         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1984         return (void *)table->CmdResolveImage;
1985     }
1986     if (!strcmp(name, "CmdSetEvent")) {
1987         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1988         return (void *)table->CmdSetEvent;
1989     }
1990     if (!strcmp(name, "CmdResetEvent")) {
1991         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1992         return (void *)table->CmdResetEvent;
1993     }
1994     if (!strcmp(name, "CmdWaitEvents")) {
1995         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1996         return (void *)table->CmdWaitEvents;
1997     }
1998     if (!strcmp(name, "CmdPipelineBarrier")) {
1999         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2000         return (void *)table->CmdPipelineBarrier;
2001     }
2002     if (!strcmp(name, "CmdBeginQuery")) {
2003         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2004         return (void *)table->CmdBeginQuery;
2005     }
2006     if (!strcmp(name, "CmdEndQuery")) {
2007         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2008         return (void *)table->CmdEndQuery;
2009     }
2010     if (!strcmp(name, "CmdResetQueryPool")) {
2011         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2012         return (void *)table->CmdResetQueryPool;
2013     }
2014     if (!strcmp(name, "CmdWriteTimestamp")) {
2015         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2016         return (void *)table->CmdWriteTimestamp;
2017     }
2018     if (!strcmp(name, "CmdCopyQueryPoolResults")) {
2019         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2020         return (void *)table->CmdCopyQueryPoolResults;
2021     }
2022     if (!strcmp(name, "CmdPushConstants")) {
2023         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2024         return (void *)table->CmdPushConstants;
2025     }
2026     if (!strcmp(name, "CmdBeginRenderPass")) {
2027         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2028         return (void *)table->CmdBeginRenderPass;
2029     }
2030     if (!strcmp(name, "CmdNextSubpass")) {
2031         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2032         return (void *)table->CmdNextSubpass;
2033     }
2034     if (!strcmp(name, "CmdEndRenderPass")) {
2035         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2036         return (void *)table->CmdEndRenderPass;
2037     }
2038     if (!strcmp(name, "CmdExecuteCommands")) {
2039         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2040         return (void *)table->CmdExecuteCommands;
2041     }
2042 
2043     // ---- Core Vulkan 1.1 commands
2044     if (!strcmp(name, "BindBufferMemory2")) {
2045         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2046         return (void *)table->BindBufferMemory2;
2047     }
2048     if (!strcmp(name, "BindImageMemory2")) {
2049         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2050         return (void *)table->BindImageMemory2;
2051     }
2052     if (!strcmp(name, "GetDeviceGroupPeerMemoryFeatures")) {
2053         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2054         return (void *)table->GetDeviceGroupPeerMemoryFeatures;
2055     }
2056     if (!strcmp(name, "CmdSetDeviceMask")) {
2057         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2058         return (void *)table->CmdSetDeviceMask;
2059     }
2060     if (!strcmp(name, "CmdDispatchBase")) {
2061         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2062         return (void *)table->CmdDispatchBase;
2063     }
2064     if (!strcmp(name, "GetImageMemoryRequirements2")) {
2065         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2066         return (void *)table->GetImageMemoryRequirements2;
2067     }
2068     if (!strcmp(name, "GetBufferMemoryRequirements2")) {
2069         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2070         return (void *)table->GetBufferMemoryRequirements2;
2071     }
2072     if (!strcmp(name, "GetImageSparseMemoryRequirements2")) {
2073         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2074         return (void *)table->GetImageSparseMemoryRequirements2;
2075     }
2076     if (!strcmp(name, "TrimCommandPool")) {
2077         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2078         return (void *)table->TrimCommandPool;
2079     }
2080     if (!strcmp(name, "GetDeviceQueue2")) {
2081         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2082         return (void *)table->GetDeviceQueue2;
2083     }
2084     if (!strcmp(name, "CreateSamplerYcbcrConversion")) {
2085         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2086         return (void *)table->CreateSamplerYcbcrConversion;
2087     }
2088     if (!strcmp(name, "DestroySamplerYcbcrConversion")) {
2089         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2090         return (void *)table->DestroySamplerYcbcrConversion;
2091     }
2092     if (!strcmp(name, "CreateDescriptorUpdateTemplate")) {
2093         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2094         return (void *)table->CreateDescriptorUpdateTemplate;
2095     }
2096     if (!strcmp(name, "DestroyDescriptorUpdateTemplate")) {
2097         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2098         return (void *)table->DestroyDescriptorUpdateTemplate;
2099     }
2100     if (!strcmp(name, "UpdateDescriptorSetWithTemplate")) {
2101         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2102         return (void *)table->UpdateDescriptorSetWithTemplate;
2103     }
2104     if (!strcmp(name, "GetDescriptorSetLayoutSupport")) {
2105         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2106         return (void *)table->GetDescriptorSetLayoutSupport;
2107     }
2108 
2109     // ---- Core Vulkan 1.2 commands
2110     if (!strcmp(name, "CmdDrawIndirectCount")) {
2111         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2112         return (void *)table->CmdDrawIndirectCount;
2113     }
2114     if (!strcmp(name, "CmdDrawIndexedIndirectCount")) {
2115         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2116         return (void *)table->CmdDrawIndexedIndirectCount;
2117     }
2118     if (!strcmp(name, "CreateRenderPass2")) {
2119         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2120         return (void *)table->CreateRenderPass2;
2121     }
2122     if (!strcmp(name, "CmdBeginRenderPass2")) {
2123         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2124         return (void *)table->CmdBeginRenderPass2;
2125     }
2126     if (!strcmp(name, "CmdNextSubpass2")) {
2127         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2128         return (void *)table->CmdNextSubpass2;
2129     }
2130     if (!strcmp(name, "CmdEndRenderPass2")) {
2131         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2132         return (void *)table->CmdEndRenderPass2;
2133     }
2134     if (!strcmp(name, "ResetQueryPool")) {
2135         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2136         return (void *)table->ResetQueryPool;
2137     }
2138     if (!strcmp(name, "GetSemaphoreCounterValue")) {
2139         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2140         return (void *)table->GetSemaphoreCounterValue;
2141     }
2142     if (!strcmp(name, "WaitSemaphores")) {
2143         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2144         return (void *)table->WaitSemaphores;
2145     }
2146     if (!strcmp(name, "SignalSemaphore")) {
2147         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2148         return (void *)table->SignalSemaphore;
2149     }
2150     if (!strcmp(name, "GetBufferDeviceAddress")) {
2151         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2152         return (void *)table->GetBufferDeviceAddress;
2153     }
2154     if (!strcmp(name, "GetBufferOpaqueCaptureAddress")) {
2155         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2156         return (void *)table->GetBufferOpaqueCaptureAddress;
2157     }
2158     if (!strcmp(name, "GetDeviceMemoryOpaqueCaptureAddress")) {
2159         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2160         return (void *)table->GetDeviceMemoryOpaqueCaptureAddress;
2161     }
2162 
2163     // ---- Core Vulkan 1.3 commands
2164     if (!strcmp(name, "CreatePrivateDataSlot")) {
2165         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2166         return (void *)table->CreatePrivateDataSlot;
2167     }
2168     if (!strcmp(name, "DestroyPrivateDataSlot")) {
2169         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2170         return (void *)table->DestroyPrivateDataSlot;
2171     }
2172     if (!strcmp(name, "SetPrivateData")) {
2173         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2174         return (void *)table->SetPrivateData;
2175     }
2176     if (!strcmp(name, "GetPrivateData")) {
2177         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2178         return (void *)table->GetPrivateData;
2179     }
2180     if (!strcmp(name, "CmdSetEvent2")) {
2181         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2182         return (void *)table->CmdSetEvent2;
2183     }
2184     if (!strcmp(name, "CmdResetEvent2")) {
2185         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2186         return (void *)table->CmdResetEvent2;
2187     }
2188     if (!strcmp(name, "CmdWaitEvents2")) {
2189         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2190         return (void *)table->CmdWaitEvents2;
2191     }
2192     if (!strcmp(name, "CmdPipelineBarrier2")) {
2193         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2194         return (void *)table->CmdPipelineBarrier2;
2195     }
2196     if (!strcmp(name, "CmdWriteTimestamp2")) {
2197         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2198         return (void *)table->CmdWriteTimestamp2;
2199     }
2200     if (!strcmp(name, "QueueSubmit2")) {
2201         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2202         return (void *)table->QueueSubmit2;
2203     }
2204     if (!strcmp(name, "CmdCopyBuffer2")) {
2205         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2206         return (void *)table->CmdCopyBuffer2;
2207     }
2208     if (!strcmp(name, "CmdCopyImage2")) {
2209         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2210         return (void *)table->CmdCopyImage2;
2211     }
2212     if (!strcmp(name, "CmdCopyBufferToImage2")) {
2213         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2214         return (void *)table->CmdCopyBufferToImage2;
2215     }
2216     if (!strcmp(name, "CmdCopyImageToBuffer2")) {
2217         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2218         return (void *)table->CmdCopyImageToBuffer2;
2219     }
2220     if (!strcmp(name, "CmdBlitImage2")) {
2221         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2222         return (void *)table->CmdBlitImage2;
2223     }
2224     if (!strcmp(name, "CmdResolveImage2")) {
2225         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2226         return (void *)table->CmdResolveImage2;
2227     }
2228     if (!strcmp(name, "CmdBeginRendering")) {
2229         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2230         return (void *)table->CmdBeginRendering;
2231     }
2232     if (!strcmp(name, "CmdEndRendering")) {
2233         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2234         return (void *)table->CmdEndRendering;
2235     }
2236     if (!strcmp(name, "CmdSetCullMode")) {
2237         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2238         return (void *)table->CmdSetCullMode;
2239     }
2240     if (!strcmp(name, "CmdSetFrontFace")) {
2241         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2242         return (void *)table->CmdSetFrontFace;
2243     }
2244     if (!strcmp(name, "CmdSetPrimitiveTopology")) {
2245         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2246         return (void *)table->CmdSetPrimitiveTopology;
2247     }
2248     if (!strcmp(name, "CmdSetViewportWithCount")) {
2249         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2250         return (void *)table->CmdSetViewportWithCount;
2251     }
2252     if (!strcmp(name, "CmdSetScissorWithCount")) {
2253         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2254         return (void *)table->CmdSetScissorWithCount;
2255     }
2256     if (!strcmp(name, "CmdBindVertexBuffers2")) {
2257         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2258         return (void *)table->CmdBindVertexBuffers2;
2259     }
2260     if (!strcmp(name, "CmdSetDepthTestEnable")) {
2261         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2262         return (void *)table->CmdSetDepthTestEnable;
2263     }
2264     if (!strcmp(name, "CmdSetDepthWriteEnable")) {
2265         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2266         return (void *)table->CmdSetDepthWriteEnable;
2267     }
2268     if (!strcmp(name, "CmdSetDepthCompareOp")) {
2269         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2270         return (void *)table->CmdSetDepthCompareOp;
2271     }
2272     if (!strcmp(name, "CmdSetDepthBoundsTestEnable")) {
2273         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2274         return (void *)table->CmdSetDepthBoundsTestEnable;
2275     }
2276     if (!strcmp(name, "CmdSetStencilTestEnable")) {
2277         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2278         return (void *)table->CmdSetStencilTestEnable;
2279     }
2280     if (!strcmp(name, "CmdSetStencilOp")) {
2281         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2282         return (void *)table->CmdSetStencilOp;
2283     }
2284     if (!strcmp(name, "CmdSetRasterizerDiscardEnable")) {
2285         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2286         return (void *)table->CmdSetRasterizerDiscardEnable;
2287     }
2288     if (!strcmp(name, "CmdSetDepthBiasEnable")) {
2289         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2290         return (void *)table->CmdSetDepthBiasEnable;
2291     }
2292     if (!strcmp(name, "CmdSetPrimitiveRestartEnable")) {
2293         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2294         return (void *)table->CmdSetPrimitiveRestartEnable;
2295     }
2296     if (!strcmp(name, "GetDeviceBufferMemoryRequirements")) {
2297         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2298         return (void *)table->GetDeviceBufferMemoryRequirements;
2299     }
2300     if (!strcmp(name, "GetDeviceImageMemoryRequirements")) {
2301         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2302         return (void *)table->GetDeviceImageMemoryRequirements;
2303     }
2304     if (!strcmp(name, "GetDeviceImageSparseMemoryRequirements")) {
2305         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2306         return (void *)table->GetDeviceImageSparseMemoryRequirements;
2307     }
2308 
2309     // ---- VK_KHR_swapchain extension commands
2310     if (!strcmp(name, "CreateSwapchainKHR")) return (void *)table->CreateSwapchainKHR;
2311     if (!strcmp(name, "DestroySwapchainKHR")) return (void *)table->DestroySwapchainKHR;
2312     if (!strcmp(name, "GetSwapchainImagesKHR")) return (void *)table->GetSwapchainImagesKHR;
2313     if (!strcmp(name, "AcquireNextImageKHR")) return (void *)table->AcquireNextImageKHR;
2314     if (!strcmp(name, "QueuePresentKHR")) return (void *)table->QueuePresentKHR;
2315     if (!strcmp(name, "GetDeviceGroupPresentCapabilitiesKHR")) return (void *)table->GetDeviceGroupPresentCapabilitiesKHR;
2316     if (!strcmp(name, "GetDeviceGroupSurfacePresentModesKHR")) return (void *)table->GetDeviceGroupSurfacePresentModesKHR;
2317     if (!strcmp(name, "AcquireNextImage2KHR")) return (void *)table->AcquireNextImage2KHR;
2318 
2319     // ---- VK_KHR_display_swapchain extension commands
2320     if (!strcmp(name, "CreateSharedSwapchainsKHR")) return (void *)table->CreateSharedSwapchainsKHR;
2321 
2322     // ---- VK_KHR_video_queue extension commands
2323     if (!strcmp(name, "CreateVideoSessionKHR")) return (void *)table->CreateVideoSessionKHR;
2324     if (!strcmp(name, "DestroyVideoSessionKHR")) return (void *)table->DestroyVideoSessionKHR;
2325     if (!strcmp(name, "GetVideoSessionMemoryRequirementsKHR")) return (void *)table->GetVideoSessionMemoryRequirementsKHR;
2326     if (!strcmp(name, "BindVideoSessionMemoryKHR")) return (void *)table->BindVideoSessionMemoryKHR;
2327     if (!strcmp(name, "CreateVideoSessionParametersKHR")) return (void *)table->CreateVideoSessionParametersKHR;
2328     if (!strcmp(name, "UpdateVideoSessionParametersKHR")) return (void *)table->UpdateVideoSessionParametersKHR;
2329     if (!strcmp(name, "DestroyVideoSessionParametersKHR")) return (void *)table->DestroyVideoSessionParametersKHR;
2330     if (!strcmp(name, "CmdBeginVideoCodingKHR")) return (void *)table->CmdBeginVideoCodingKHR;
2331     if (!strcmp(name, "CmdEndVideoCodingKHR")) return (void *)table->CmdEndVideoCodingKHR;
2332     if (!strcmp(name, "CmdControlVideoCodingKHR")) return (void *)table->CmdControlVideoCodingKHR;
2333 
2334     // ---- VK_KHR_video_decode_queue extension commands
2335     if (!strcmp(name, "CmdDecodeVideoKHR")) return (void *)table->CmdDecodeVideoKHR;
2336 
2337     // ---- VK_KHR_dynamic_rendering extension commands
2338     if (!strcmp(name, "CmdBeginRenderingKHR")) return (void *)table->CmdBeginRenderingKHR;
2339     if (!strcmp(name, "CmdEndRenderingKHR")) return (void *)table->CmdEndRenderingKHR;
2340 
2341     // ---- VK_KHR_device_group extension commands
2342     if (!strcmp(name, "GetDeviceGroupPeerMemoryFeaturesKHR")) return (void *)table->GetDeviceGroupPeerMemoryFeaturesKHR;
2343     if (!strcmp(name, "CmdSetDeviceMaskKHR")) return (void *)table->CmdSetDeviceMaskKHR;
2344     if (!strcmp(name, "CmdDispatchBaseKHR")) return (void *)table->CmdDispatchBaseKHR;
2345 
2346     // ---- VK_KHR_maintenance1 extension commands
2347     if (!strcmp(name, "TrimCommandPoolKHR")) return (void *)table->TrimCommandPoolKHR;
2348 
2349     // ---- VK_KHR_external_memory_win32 extension commands
2350 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2351     if (!strcmp(name, "GetMemoryWin32HandleKHR")) return (void *)table->GetMemoryWin32HandleKHR;
2352 #endif // VK_USE_PLATFORM_WIN32_KHR
2353 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2354     if (!strcmp(name, "GetMemoryWin32HandlePropertiesKHR")) return (void *)table->GetMemoryWin32HandlePropertiesKHR;
2355 #endif // VK_USE_PLATFORM_WIN32_KHR
2356 
2357     // ---- VK_KHR_external_memory_fd extension commands
2358     if (!strcmp(name, "GetMemoryFdKHR")) return (void *)table->GetMemoryFdKHR;
2359     if (!strcmp(name, "GetMemoryFdPropertiesKHR")) return (void *)table->GetMemoryFdPropertiesKHR;
2360 
2361     // ---- VK_KHR_external_semaphore_win32 extension commands
2362 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2363     if (!strcmp(name, "ImportSemaphoreWin32HandleKHR")) return (void *)table->ImportSemaphoreWin32HandleKHR;
2364 #endif // VK_USE_PLATFORM_WIN32_KHR
2365 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2366     if (!strcmp(name, "GetSemaphoreWin32HandleKHR")) return (void *)table->GetSemaphoreWin32HandleKHR;
2367 #endif // VK_USE_PLATFORM_WIN32_KHR
2368 
2369     // ---- VK_KHR_external_semaphore_fd extension commands
2370     if (!strcmp(name, "ImportSemaphoreFdKHR")) return (void *)table->ImportSemaphoreFdKHR;
2371     if (!strcmp(name, "GetSemaphoreFdKHR")) return (void *)table->GetSemaphoreFdKHR;
2372 
2373     // ---- VK_KHR_push_descriptor extension commands
2374     if (!strcmp(name, "CmdPushDescriptorSetKHR")) return (void *)table->CmdPushDescriptorSetKHR;
2375     if (!strcmp(name, "CmdPushDescriptorSetWithTemplateKHR")) return (void *)table->CmdPushDescriptorSetWithTemplateKHR;
2376 
2377     // ---- VK_KHR_descriptor_update_template extension commands
2378     if (!strcmp(name, "CreateDescriptorUpdateTemplateKHR")) return (void *)table->CreateDescriptorUpdateTemplateKHR;
2379     if (!strcmp(name, "DestroyDescriptorUpdateTemplateKHR")) return (void *)table->DestroyDescriptorUpdateTemplateKHR;
2380     if (!strcmp(name, "UpdateDescriptorSetWithTemplateKHR")) return (void *)table->UpdateDescriptorSetWithTemplateKHR;
2381 
2382     // ---- VK_KHR_create_renderpass2 extension commands
2383     if (!strcmp(name, "CreateRenderPass2KHR")) return (void *)table->CreateRenderPass2KHR;
2384     if (!strcmp(name, "CmdBeginRenderPass2KHR")) return (void *)table->CmdBeginRenderPass2KHR;
2385     if (!strcmp(name, "CmdNextSubpass2KHR")) return (void *)table->CmdNextSubpass2KHR;
2386     if (!strcmp(name, "CmdEndRenderPass2KHR")) return (void *)table->CmdEndRenderPass2KHR;
2387 
2388     // ---- VK_KHR_shared_presentable_image extension commands
2389     if (!strcmp(name, "GetSwapchainStatusKHR")) return (void *)table->GetSwapchainStatusKHR;
2390 
2391     // ---- VK_KHR_external_fence_win32 extension commands
2392 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2393     if (!strcmp(name, "ImportFenceWin32HandleKHR")) return (void *)table->ImportFenceWin32HandleKHR;
2394 #endif // VK_USE_PLATFORM_WIN32_KHR
2395 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2396     if (!strcmp(name, "GetFenceWin32HandleKHR")) return (void *)table->GetFenceWin32HandleKHR;
2397 #endif // VK_USE_PLATFORM_WIN32_KHR
2398 
2399     // ---- VK_KHR_external_fence_fd extension commands
2400     if (!strcmp(name, "ImportFenceFdKHR")) return (void *)table->ImportFenceFdKHR;
2401     if (!strcmp(name, "GetFenceFdKHR")) return (void *)table->GetFenceFdKHR;
2402 
2403     // ---- VK_KHR_performance_query extension commands
2404     if (!strcmp(name, "AcquireProfilingLockKHR")) return (void *)table->AcquireProfilingLockKHR;
2405     if (!strcmp(name, "ReleaseProfilingLockKHR")) return (void *)table->ReleaseProfilingLockKHR;
2406 
2407     // ---- VK_KHR_get_memory_requirements2 extension commands
2408     if (!strcmp(name, "GetImageMemoryRequirements2KHR")) return (void *)table->GetImageMemoryRequirements2KHR;
2409     if (!strcmp(name, "GetBufferMemoryRequirements2KHR")) return (void *)table->GetBufferMemoryRequirements2KHR;
2410     if (!strcmp(name, "GetImageSparseMemoryRequirements2KHR")) return (void *)table->GetImageSparseMemoryRequirements2KHR;
2411 
2412     // ---- VK_KHR_sampler_ycbcr_conversion extension commands
2413     if (!strcmp(name, "CreateSamplerYcbcrConversionKHR")) return (void *)table->CreateSamplerYcbcrConversionKHR;
2414     if (!strcmp(name, "DestroySamplerYcbcrConversionKHR")) return (void *)table->DestroySamplerYcbcrConversionKHR;
2415 
2416     // ---- VK_KHR_bind_memory2 extension commands
2417     if (!strcmp(name, "BindBufferMemory2KHR")) return (void *)table->BindBufferMemory2KHR;
2418     if (!strcmp(name, "BindImageMemory2KHR")) return (void *)table->BindImageMemory2KHR;
2419 
2420     // ---- VK_KHR_maintenance3 extension commands
2421     if (!strcmp(name, "GetDescriptorSetLayoutSupportKHR")) return (void *)table->GetDescriptorSetLayoutSupportKHR;
2422 
2423     // ---- VK_KHR_draw_indirect_count extension commands
2424     if (!strcmp(name, "CmdDrawIndirectCountKHR")) return (void *)table->CmdDrawIndirectCountKHR;
2425     if (!strcmp(name, "CmdDrawIndexedIndirectCountKHR")) return (void *)table->CmdDrawIndexedIndirectCountKHR;
2426 
2427     // ---- VK_KHR_timeline_semaphore extension commands
2428     if (!strcmp(name, "GetSemaphoreCounterValueKHR")) return (void *)table->GetSemaphoreCounterValueKHR;
2429     if (!strcmp(name, "WaitSemaphoresKHR")) return (void *)table->WaitSemaphoresKHR;
2430     if (!strcmp(name, "SignalSemaphoreKHR")) return (void *)table->SignalSemaphoreKHR;
2431 
2432     // ---- VK_KHR_fragment_shading_rate extension commands
2433     if (!strcmp(name, "CmdSetFragmentShadingRateKHR")) return (void *)table->CmdSetFragmentShadingRateKHR;
2434 
2435     // ---- VK_KHR_present_wait extension commands
2436     if (!strcmp(name, "WaitForPresentKHR")) return (void *)table->WaitForPresentKHR;
2437 
2438     // ---- VK_KHR_buffer_device_address extension commands
2439     if (!strcmp(name, "GetBufferDeviceAddressKHR")) return (void *)table->GetBufferDeviceAddressKHR;
2440     if (!strcmp(name, "GetBufferOpaqueCaptureAddressKHR")) return (void *)table->GetBufferOpaqueCaptureAddressKHR;
2441     if (!strcmp(name, "GetDeviceMemoryOpaqueCaptureAddressKHR")) return (void *)table->GetDeviceMemoryOpaqueCaptureAddressKHR;
2442 
2443     // ---- VK_KHR_deferred_host_operations extension commands
2444     if (!strcmp(name, "CreateDeferredOperationKHR")) return (void *)table->CreateDeferredOperationKHR;
2445     if (!strcmp(name, "DestroyDeferredOperationKHR")) return (void *)table->DestroyDeferredOperationKHR;
2446     if (!strcmp(name, "GetDeferredOperationMaxConcurrencyKHR")) return (void *)table->GetDeferredOperationMaxConcurrencyKHR;
2447     if (!strcmp(name, "GetDeferredOperationResultKHR")) return (void *)table->GetDeferredOperationResultKHR;
2448     if (!strcmp(name, "DeferredOperationJoinKHR")) return (void *)table->DeferredOperationJoinKHR;
2449 
2450     // ---- VK_KHR_pipeline_executable_properties extension commands
2451     if (!strcmp(name, "GetPipelineExecutablePropertiesKHR")) return (void *)table->GetPipelineExecutablePropertiesKHR;
2452     if (!strcmp(name, "GetPipelineExecutableStatisticsKHR")) return (void *)table->GetPipelineExecutableStatisticsKHR;
2453     if (!strcmp(name, "GetPipelineExecutableInternalRepresentationsKHR")) return (void *)table->GetPipelineExecutableInternalRepresentationsKHR;
2454 
2455     // ---- VK_KHR_map_memory2 extension commands
2456     if (!strcmp(name, "MapMemory2KHR")) return (void *)table->MapMemory2KHR;
2457     if (!strcmp(name, "UnmapMemory2KHR")) return (void *)table->UnmapMemory2KHR;
2458 
2459     // ---- VK_KHR_video_encode_queue extension commands
2460     if (!strcmp(name, "GetEncodedVideoSessionParametersKHR")) return (void *)table->GetEncodedVideoSessionParametersKHR;
2461     if (!strcmp(name, "CmdEncodeVideoKHR")) return (void *)table->CmdEncodeVideoKHR;
2462 
2463     // ---- VK_KHR_synchronization2 extension commands
2464     if (!strcmp(name, "CmdSetEvent2KHR")) return (void *)table->CmdSetEvent2KHR;
2465     if (!strcmp(name, "CmdResetEvent2KHR")) return (void *)table->CmdResetEvent2KHR;
2466     if (!strcmp(name, "CmdWaitEvents2KHR")) return (void *)table->CmdWaitEvents2KHR;
2467     if (!strcmp(name, "CmdPipelineBarrier2KHR")) return (void *)table->CmdPipelineBarrier2KHR;
2468     if (!strcmp(name, "CmdWriteTimestamp2KHR")) return (void *)table->CmdWriteTimestamp2KHR;
2469     if (!strcmp(name, "QueueSubmit2KHR")) return (void *)table->QueueSubmit2KHR;
2470     if (!strcmp(name, "CmdWriteBufferMarker2AMD")) return (void *)table->CmdWriteBufferMarker2AMD;
2471     if (!strcmp(name, "GetQueueCheckpointData2NV")) return (void *)table->GetQueueCheckpointData2NV;
2472 
2473     // ---- VK_KHR_copy_commands2 extension commands
2474     if (!strcmp(name, "CmdCopyBuffer2KHR")) return (void *)table->CmdCopyBuffer2KHR;
2475     if (!strcmp(name, "CmdCopyImage2KHR")) return (void *)table->CmdCopyImage2KHR;
2476     if (!strcmp(name, "CmdCopyBufferToImage2KHR")) return (void *)table->CmdCopyBufferToImage2KHR;
2477     if (!strcmp(name, "CmdCopyImageToBuffer2KHR")) return (void *)table->CmdCopyImageToBuffer2KHR;
2478     if (!strcmp(name, "CmdBlitImage2KHR")) return (void *)table->CmdBlitImage2KHR;
2479     if (!strcmp(name, "CmdResolveImage2KHR")) return (void *)table->CmdResolveImage2KHR;
2480 
2481     // ---- VK_KHR_ray_tracing_maintenance1 extension commands
2482     if (!strcmp(name, "CmdTraceRaysIndirect2KHR")) return (void *)table->CmdTraceRaysIndirect2KHR;
2483 
2484     // ---- VK_KHR_maintenance4 extension commands
2485     if (!strcmp(name, "GetDeviceBufferMemoryRequirementsKHR")) return (void *)table->GetDeviceBufferMemoryRequirementsKHR;
2486     if (!strcmp(name, "GetDeviceImageMemoryRequirementsKHR")) return (void *)table->GetDeviceImageMemoryRequirementsKHR;
2487     if (!strcmp(name, "GetDeviceImageSparseMemoryRequirementsKHR")) return (void *)table->GetDeviceImageSparseMemoryRequirementsKHR;
2488 
2489     // ---- VK_KHR_maintenance5 extension commands
2490     if (!strcmp(name, "CmdBindIndexBuffer2KHR")) return (void *)table->CmdBindIndexBuffer2KHR;
2491     if (!strcmp(name, "GetRenderingAreaGranularityKHR")) return (void *)table->GetRenderingAreaGranularityKHR;
2492     if (!strcmp(name, "GetDeviceImageSubresourceLayoutKHR")) return (void *)table->GetDeviceImageSubresourceLayoutKHR;
2493     if (!strcmp(name, "GetImageSubresourceLayout2KHR")) return (void *)table->GetImageSubresourceLayout2KHR;
2494 
2495     // ---- VK_KHR_calibrated_timestamps extension commands
2496     if (!strcmp(name, "GetCalibratedTimestampsKHR")) return (void *)table->GetCalibratedTimestampsKHR;
2497 
2498     // ---- VK_KHR_maintenance6 extension commands
2499     if (!strcmp(name, "CmdBindDescriptorSets2KHR")) return (void *)table->CmdBindDescriptorSets2KHR;
2500     if (!strcmp(name, "CmdPushConstants2KHR")) return (void *)table->CmdPushConstants2KHR;
2501     if (!strcmp(name, "CmdPushDescriptorSet2KHR")) return (void *)table->CmdPushDescriptorSet2KHR;
2502     if (!strcmp(name, "CmdPushDescriptorSetWithTemplate2KHR")) return (void *)table->CmdPushDescriptorSetWithTemplate2KHR;
2503     if (!strcmp(name, "CmdSetDescriptorBufferOffsets2EXT")) return (void *)table->CmdSetDescriptorBufferOffsets2EXT;
2504     if (!strcmp(name, "CmdBindDescriptorBufferEmbeddedSamplers2EXT")) return (void *)table->CmdBindDescriptorBufferEmbeddedSamplers2EXT;
2505 
2506     // ---- VK_EXT_debug_marker extension commands
2507     if (!strcmp(name, "DebugMarkerSetObjectTagEXT")) return dev->layer_extensions.ext_debug_marker_enabled ? (void *)DebugMarkerSetObjectTagEXT : NULL;
2508     if (!strcmp(name, "DebugMarkerSetObjectNameEXT")) return dev->layer_extensions.ext_debug_marker_enabled ? (void *)DebugMarkerSetObjectNameEXT : NULL;
2509     if (!strcmp(name, "CmdDebugMarkerBeginEXT")) return (void *)table->CmdDebugMarkerBeginEXT;
2510     if (!strcmp(name, "CmdDebugMarkerEndEXT")) return (void *)table->CmdDebugMarkerEndEXT;
2511     if (!strcmp(name, "CmdDebugMarkerInsertEXT")) return (void *)table->CmdDebugMarkerInsertEXT;
2512 
2513     // ---- VK_EXT_transform_feedback extension commands
2514     if (!strcmp(name, "CmdBindTransformFeedbackBuffersEXT")) return (void *)table->CmdBindTransformFeedbackBuffersEXT;
2515     if (!strcmp(name, "CmdBeginTransformFeedbackEXT")) return (void *)table->CmdBeginTransformFeedbackEXT;
2516     if (!strcmp(name, "CmdEndTransformFeedbackEXT")) return (void *)table->CmdEndTransformFeedbackEXT;
2517     if (!strcmp(name, "CmdBeginQueryIndexedEXT")) return (void *)table->CmdBeginQueryIndexedEXT;
2518     if (!strcmp(name, "CmdEndQueryIndexedEXT")) return (void *)table->CmdEndQueryIndexedEXT;
2519     if (!strcmp(name, "CmdDrawIndirectByteCountEXT")) return (void *)table->CmdDrawIndirectByteCountEXT;
2520 
2521     // ---- VK_NVX_binary_import extension commands
2522     if (!strcmp(name, "CreateCuModuleNVX")) return (void *)table->CreateCuModuleNVX;
2523     if (!strcmp(name, "CreateCuFunctionNVX")) return (void *)table->CreateCuFunctionNVX;
2524     if (!strcmp(name, "DestroyCuModuleNVX")) return (void *)table->DestroyCuModuleNVX;
2525     if (!strcmp(name, "DestroyCuFunctionNVX")) return (void *)table->DestroyCuFunctionNVX;
2526     if (!strcmp(name, "CmdCuLaunchKernelNVX")) return (void *)table->CmdCuLaunchKernelNVX;
2527 
2528     // ---- VK_NVX_image_view_handle extension commands
2529     if (!strcmp(name, "GetImageViewHandleNVX")) return (void *)table->GetImageViewHandleNVX;
2530     if (!strcmp(name, "GetImageViewAddressNVX")) return (void *)table->GetImageViewAddressNVX;
2531 
2532     // ---- VK_AMD_draw_indirect_count extension commands
2533     if (!strcmp(name, "CmdDrawIndirectCountAMD")) return (void *)table->CmdDrawIndirectCountAMD;
2534     if (!strcmp(name, "CmdDrawIndexedIndirectCountAMD")) return (void *)table->CmdDrawIndexedIndirectCountAMD;
2535 
2536     // ---- VK_AMD_shader_info extension commands
2537     if (!strcmp(name, "GetShaderInfoAMD")) return (void *)table->GetShaderInfoAMD;
2538 
2539     // ---- VK_NV_external_memory_win32 extension commands
2540 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2541     if (!strcmp(name, "GetMemoryWin32HandleNV")) return (void *)table->GetMemoryWin32HandleNV;
2542 #endif // VK_USE_PLATFORM_WIN32_KHR
2543 
2544     // ---- VK_EXT_conditional_rendering extension commands
2545     if (!strcmp(name, "CmdBeginConditionalRenderingEXT")) return (void *)table->CmdBeginConditionalRenderingEXT;
2546     if (!strcmp(name, "CmdEndConditionalRenderingEXT")) return (void *)table->CmdEndConditionalRenderingEXT;
2547 
2548     // ---- VK_NV_clip_space_w_scaling extension commands
2549     if (!strcmp(name, "CmdSetViewportWScalingNV")) return (void *)table->CmdSetViewportWScalingNV;
2550 
2551     // ---- VK_EXT_display_control extension commands
2552     if (!strcmp(name, "DisplayPowerControlEXT")) return (void *)table->DisplayPowerControlEXT;
2553     if (!strcmp(name, "RegisterDeviceEventEXT")) return (void *)table->RegisterDeviceEventEXT;
2554     if (!strcmp(name, "RegisterDisplayEventEXT")) return (void *)table->RegisterDisplayEventEXT;
2555     if (!strcmp(name, "GetSwapchainCounterEXT")) return (void *)table->GetSwapchainCounterEXT;
2556 
2557     // ---- VK_GOOGLE_display_timing extension commands
2558     if (!strcmp(name, "GetRefreshCycleDurationGOOGLE")) return (void *)table->GetRefreshCycleDurationGOOGLE;
2559     if (!strcmp(name, "GetPastPresentationTimingGOOGLE")) return (void *)table->GetPastPresentationTimingGOOGLE;
2560 
2561     // ---- VK_EXT_discard_rectangles extension commands
2562     if (!strcmp(name, "CmdSetDiscardRectangleEXT")) return (void *)table->CmdSetDiscardRectangleEXT;
2563     if (!strcmp(name, "CmdSetDiscardRectangleEnableEXT")) return (void *)table->CmdSetDiscardRectangleEnableEXT;
2564     if (!strcmp(name, "CmdSetDiscardRectangleModeEXT")) return (void *)table->CmdSetDiscardRectangleModeEXT;
2565 
2566     // ---- VK_EXT_hdr_metadata extension commands
2567     if (!strcmp(name, "SetHdrMetadataEXT")) return (void *)table->SetHdrMetadataEXT;
2568 
2569     // ---- VK_EXT_debug_utils extension commands
2570     if (!strcmp(name, "SetDebugUtilsObjectNameEXT")) return dev->layer_extensions.ext_debug_utils_enabled ? (void *)SetDebugUtilsObjectNameEXT : NULL;
2571     if (!strcmp(name, "SetDebugUtilsObjectTagEXT")) return dev->layer_extensions.ext_debug_utils_enabled ? (void *)SetDebugUtilsObjectTagEXT : NULL;
2572     if (!strcmp(name, "QueueBeginDebugUtilsLabelEXT")) return (void *)table->QueueBeginDebugUtilsLabelEXT;
2573     if (!strcmp(name, "QueueEndDebugUtilsLabelEXT")) return (void *)table->QueueEndDebugUtilsLabelEXT;
2574     if (!strcmp(name, "QueueInsertDebugUtilsLabelEXT")) return (void *)table->QueueInsertDebugUtilsLabelEXT;
2575     if (!strcmp(name, "CmdBeginDebugUtilsLabelEXT")) return (void *)table->CmdBeginDebugUtilsLabelEXT;
2576     if (!strcmp(name, "CmdEndDebugUtilsLabelEXT")) return (void *)table->CmdEndDebugUtilsLabelEXT;
2577     if (!strcmp(name, "CmdInsertDebugUtilsLabelEXT")) return (void *)table->CmdInsertDebugUtilsLabelEXT;
2578 
2579     // ---- VK_ANDROID_external_memory_android_hardware_buffer extension commands
2580 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
2581     if (!strcmp(name, "GetAndroidHardwareBufferPropertiesANDROID")) return (void *)table->GetAndroidHardwareBufferPropertiesANDROID;
2582 #endif // VK_USE_PLATFORM_ANDROID_KHR
2583 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
2584     if (!strcmp(name, "GetMemoryAndroidHardwareBufferANDROID")) return (void *)table->GetMemoryAndroidHardwareBufferANDROID;
2585 #endif // VK_USE_PLATFORM_ANDROID_KHR
2586 
2587     // ---- VK_AMDX_shader_enqueue extension commands
2588 #if defined(VK_ENABLE_BETA_EXTENSIONS)
2589     if (!strcmp(name, "CreateExecutionGraphPipelinesAMDX")) return (void *)table->CreateExecutionGraphPipelinesAMDX;
2590 #endif // VK_ENABLE_BETA_EXTENSIONS
2591 #if defined(VK_ENABLE_BETA_EXTENSIONS)
2592     if (!strcmp(name, "GetExecutionGraphPipelineScratchSizeAMDX")) return (void *)table->GetExecutionGraphPipelineScratchSizeAMDX;
2593 #endif // VK_ENABLE_BETA_EXTENSIONS
2594 #if defined(VK_ENABLE_BETA_EXTENSIONS)
2595     if (!strcmp(name, "GetExecutionGraphPipelineNodeIndexAMDX")) return (void *)table->GetExecutionGraphPipelineNodeIndexAMDX;
2596 #endif // VK_ENABLE_BETA_EXTENSIONS
2597 #if defined(VK_ENABLE_BETA_EXTENSIONS)
2598     if (!strcmp(name, "CmdInitializeGraphScratchMemoryAMDX")) return (void *)table->CmdInitializeGraphScratchMemoryAMDX;
2599 #endif // VK_ENABLE_BETA_EXTENSIONS
2600 #if defined(VK_ENABLE_BETA_EXTENSIONS)
2601     if (!strcmp(name, "CmdDispatchGraphAMDX")) return (void *)table->CmdDispatchGraphAMDX;
2602 #endif // VK_ENABLE_BETA_EXTENSIONS
2603 #if defined(VK_ENABLE_BETA_EXTENSIONS)
2604     if (!strcmp(name, "CmdDispatchGraphIndirectAMDX")) return (void *)table->CmdDispatchGraphIndirectAMDX;
2605 #endif // VK_ENABLE_BETA_EXTENSIONS
2606 #if defined(VK_ENABLE_BETA_EXTENSIONS)
2607     if (!strcmp(name, "CmdDispatchGraphIndirectCountAMDX")) return (void *)table->CmdDispatchGraphIndirectCountAMDX;
2608 #endif // VK_ENABLE_BETA_EXTENSIONS
2609 
2610     // ---- VK_EXT_sample_locations extension commands
2611     if (!strcmp(name, "CmdSetSampleLocationsEXT")) return (void *)table->CmdSetSampleLocationsEXT;
2612 
2613     // ---- VK_EXT_image_drm_format_modifier extension commands
2614     if (!strcmp(name, "GetImageDrmFormatModifierPropertiesEXT")) return (void *)table->GetImageDrmFormatModifierPropertiesEXT;
2615 
2616     // ---- VK_EXT_validation_cache extension commands
2617     if (!strcmp(name, "CreateValidationCacheEXT")) return (void *)table->CreateValidationCacheEXT;
2618     if (!strcmp(name, "DestroyValidationCacheEXT")) return (void *)table->DestroyValidationCacheEXT;
2619     if (!strcmp(name, "MergeValidationCachesEXT")) return (void *)table->MergeValidationCachesEXT;
2620     if (!strcmp(name, "GetValidationCacheDataEXT")) return (void *)table->GetValidationCacheDataEXT;
2621 
2622     // ---- VK_NV_shading_rate_image extension commands
2623     if (!strcmp(name, "CmdBindShadingRateImageNV")) return (void *)table->CmdBindShadingRateImageNV;
2624     if (!strcmp(name, "CmdSetViewportShadingRatePaletteNV")) return (void *)table->CmdSetViewportShadingRatePaletteNV;
2625     if (!strcmp(name, "CmdSetCoarseSampleOrderNV")) return (void *)table->CmdSetCoarseSampleOrderNV;
2626 
2627     // ---- VK_NV_ray_tracing extension commands
2628     if (!strcmp(name, "CreateAccelerationStructureNV")) return (void *)table->CreateAccelerationStructureNV;
2629     if (!strcmp(name, "DestroyAccelerationStructureNV")) return (void *)table->DestroyAccelerationStructureNV;
2630     if (!strcmp(name, "GetAccelerationStructureMemoryRequirementsNV")) return (void *)table->GetAccelerationStructureMemoryRequirementsNV;
2631     if (!strcmp(name, "BindAccelerationStructureMemoryNV")) return (void *)table->BindAccelerationStructureMemoryNV;
2632     if (!strcmp(name, "CmdBuildAccelerationStructureNV")) return (void *)table->CmdBuildAccelerationStructureNV;
2633     if (!strcmp(name, "CmdCopyAccelerationStructureNV")) return (void *)table->CmdCopyAccelerationStructureNV;
2634     if (!strcmp(name, "CmdTraceRaysNV")) return (void *)table->CmdTraceRaysNV;
2635     if (!strcmp(name, "CreateRayTracingPipelinesNV")) return (void *)table->CreateRayTracingPipelinesNV;
2636     if (!strcmp(name, "GetRayTracingShaderGroupHandlesKHR")) return (void *)table->GetRayTracingShaderGroupHandlesKHR;
2637     if (!strcmp(name, "GetRayTracingShaderGroupHandlesNV")) return (void *)table->GetRayTracingShaderGroupHandlesNV;
2638     if (!strcmp(name, "GetAccelerationStructureHandleNV")) return (void *)table->GetAccelerationStructureHandleNV;
2639     if (!strcmp(name, "CmdWriteAccelerationStructuresPropertiesNV")) return (void *)table->CmdWriteAccelerationStructuresPropertiesNV;
2640     if (!strcmp(name, "CompileDeferredNV")) return (void *)table->CompileDeferredNV;
2641 
2642     // ---- VK_EXT_external_memory_host extension commands
2643     if (!strcmp(name, "GetMemoryHostPointerPropertiesEXT")) return (void *)table->GetMemoryHostPointerPropertiesEXT;
2644 
2645     // ---- VK_AMD_buffer_marker extension commands
2646     if (!strcmp(name, "CmdWriteBufferMarkerAMD")) return (void *)table->CmdWriteBufferMarkerAMD;
2647 
2648     // ---- VK_EXT_calibrated_timestamps extension commands
2649     if (!strcmp(name, "GetCalibratedTimestampsEXT")) return (void *)table->GetCalibratedTimestampsEXT;
2650 
2651     // ---- VK_NV_mesh_shader extension commands
2652     if (!strcmp(name, "CmdDrawMeshTasksNV")) return (void *)table->CmdDrawMeshTasksNV;
2653     if (!strcmp(name, "CmdDrawMeshTasksIndirectNV")) return (void *)table->CmdDrawMeshTasksIndirectNV;
2654     if (!strcmp(name, "CmdDrawMeshTasksIndirectCountNV")) return (void *)table->CmdDrawMeshTasksIndirectCountNV;
2655 
2656     // ---- VK_NV_scissor_exclusive extension commands
2657     if (!strcmp(name, "CmdSetExclusiveScissorEnableNV")) return (void *)table->CmdSetExclusiveScissorEnableNV;
2658     if (!strcmp(name, "CmdSetExclusiveScissorNV")) return (void *)table->CmdSetExclusiveScissorNV;
2659 
2660     // ---- VK_NV_device_diagnostic_checkpoints extension commands
2661     if (!strcmp(name, "CmdSetCheckpointNV")) return (void *)table->CmdSetCheckpointNV;
2662     if (!strcmp(name, "GetQueueCheckpointDataNV")) return (void *)table->GetQueueCheckpointDataNV;
2663 
2664     // ---- VK_INTEL_performance_query extension commands
2665     if (!strcmp(name, "InitializePerformanceApiINTEL")) return (void *)table->InitializePerformanceApiINTEL;
2666     if (!strcmp(name, "UninitializePerformanceApiINTEL")) return (void *)table->UninitializePerformanceApiINTEL;
2667     if (!strcmp(name, "CmdSetPerformanceMarkerINTEL")) return (void *)table->CmdSetPerformanceMarkerINTEL;
2668     if (!strcmp(name, "CmdSetPerformanceStreamMarkerINTEL")) return (void *)table->CmdSetPerformanceStreamMarkerINTEL;
2669     if (!strcmp(name, "CmdSetPerformanceOverrideINTEL")) return (void *)table->CmdSetPerformanceOverrideINTEL;
2670     if (!strcmp(name, "AcquirePerformanceConfigurationINTEL")) return (void *)table->AcquirePerformanceConfigurationINTEL;
2671     if (!strcmp(name, "ReleasePerformanceConfigurationINTEL")) return (void *)table->ReleasePerformanceConfigurationINTEL;
2672     if (!strcmp(name, "QueueSetPerformanceConfigurationINTEL")) return (void *)table->QueueSetPerformanceConfigurationINTEL;
2673     if (!strcmp(name, "GetPerformanceParameterINTEL")) return (void *)table->GetPerformanceParameterINTEL;
2674 
2675     // ---- VK_AMD_display_native_hdr extension commands
2676     if (!strcmp(name, "SetLocalDimmingAMD")) return (void *)table->SetLocalDimmingAMD;
2677 
2678     // ---- VK_EXT_buffer_device_address extension commands
2679     if (!strcmp(name, "GetBufferDeviceAddressEXT")) return (void *)table->GetBufferDeviceAddressEXT;
2680 
2681     // ---- VK_EXT_full_screen_exclusive extension commands
2682 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2683     if (!strcmp(name, "AcquireFullScreenExclusiveModeEXT")) return (void *)table->AcquireFullScreenExclusiveModeEXT;
2684 #endif // VK_USE_PLATFORM_WIN32_KHR
2685 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2686     if (!strcmp(name, "ReleaseFullScreenExclusiveModeEXT")) return (void *)table->ReleaseFullScreenExclusiveModeEXT;
2687 #endif // VK_USE_PLATFORM_WIN32_KHR
2688 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2689     if (!strcmp(name, "GetDeviceGroupSurfacePresentModes2EXT")) return (void *)table->GetDeviceGroupSurfacePresentModes2EXT;
2690 #endif // VK_USE_PLATFORM_WIN32_KHR
2691 
2692     // ---- VK_EXT_line_rasterization extension commands
2693     if (!strcmp(name, "CmdSetLineStippleEXT")) return (void *)table->CmdSetLineStippleEXT;
2694 
2695     // ---- VK_EXT_host_query_reset extension commands
2696     if (!strcmp(name, "ResetQueryPoolEXT")) return (void *)table->ResetQueryPoolEXT;
2697 
2698     // ---- VK_EXT_extended_dynamic_state extension commands
2699     if (!strcmp(name, "CmdSetCullModeEXT")) return (void *)table->CmdSetCullModeEXT;
2700     if (!strcmp(name, "CmdSetFrontFaceEXT")) return (void *)table->CmdSetFrontFaceEXT;
2701     if (!strcmp(name, "CmdSetPrimitiveTopologyEXT")) return (void *)table->CmdSetPrimitiveTopologyEXT;
2702     if (!strcmp(name, "CmdSetViewportWithCountEXT")) return (void *)table->CmdSetViewportWithCountEXT;
2703     if (!strcmp(name, "CmdSetScissorWithCountEXT")) return (void *)table->CmdSetScissorWithCountEXT;
2704     if (!strcmp(name, "CmdBindVertexBuffers2EXT")) return (void *)table->CmdBindVertexBuffers2EXT;
2705     if (!strcmp(name, "CmdSetDepthTestEnableEXT")) return (void *)table->CmdSetDepthTestEnableEXT;
2706     if (!strcmp(name, "CmdSetDepthWriteEnableEXT")) return (void *)table->CmdSetDepthWriteEnableEXT;
2707     if (!strcmp(name, "CmdSetDepthCompareOpEXT")) return (void *)table->CmdSetDepthCompareOpEXT;
2708     if (!strcmp(name, "CmdSetDepthBoundsTestEnableEXT")) return (void *)table->CmdSetDepthBoundsTestEnableEXT;
2709     if (!strcmp(name, "CmdSetStencilTestEnableEXT")) return (void *)table->CmdSetStencilTestEnableEXT;
2710     if (!strcmp(name, "CmdSetStencilOpEXT")) return (void *)table->CmdSetStencilOpEXT;
2711 
2712     // ---- VK_EXT_host_image_copy extension commands
2713     if (!strcmp(name, "CopyMemoryToImageEXT")) return (void *)table->CopyMemoryToImageEXT;
2714     if (!strcmp(name, "CopyImageToMemoryEXT")) return (void *)table->CopyImageToMemoryEXT;
2715     if (!strcmp(name, "CopyImageToImageEXT")) return (void *)table->CopyImageToImageEXT;
2716     if (!strcmp(name, "TransitionImageLayoutEXT")) return (void *)table->TransitionImageLayoutEXT;
2717     if (!strcmp(name, "GetImageSubresourceLayout2EXT")) return (void *)table->GetImageSubresourceLayout2EXT;
2718 
2719     // ---- VK_EXT_swapchain_maintenance1 extension commands
2720     if (!strcmp(name, "ReleaseSwapchainImagesEXT")) return (void *)table->ReleaseSwapchainImagesEXT;
2721 
2722     // ---- VK_NV_device_generated_commands extension commands
2723     if (!strcmp(name, "GetGeneratedCommandsMemoryRequirementsNV")) return (void *)table->GetGeneratedCommandsMemoryRequirementsNV;
2724     if (!strcmp(name, "CmdPreprocessGeneratedCommandsNV")) return (void *)table->CmdPreprocessGeneratedCommandsNV;
2725     if (!strcmp(name, "CmdExecuteGeneratedCommandsNV")) return (void *)table->CmdExecuteGeneratedCommandsNV;
2726     if (!strcmp(name, "CmdBindPipelineShaderGroupNV")) return (void *)table->CmdBindPipelineShaderGroupNV;
2727     if (!strcmp(name, "CreateIndirectCommandsLayoutNV")) return (void *)table->CreateIndirectCommandsLayoutNV;
2728     if (!strcmp(name, "DestroyIndirectCommandsLayoutNV")) return (void *)table->DestroyIndirectCommandsLayoutNV;
2729 
2730     // ---- VK_EXT_depth_bias_control extension commands
2731     if (!strcmp(name, "CmdSetDepthBias2EXT")) return (void *)table->CmdSetDepthBias2EXT;
2732 
2733     // ---- VK_EXT_private_data extension commands
2734     if (!strcmp(name, "CreatePrivateDataSlotEXT")) return (void *)table->CreatePrivateDataSlotEXT;
2735     if (!strcmp(name, "DestroyPrivateDataSlotEXT")) return (void *)table->DestroyPrivateDataSlotEXT;
2736     if (!strcmp(name, "SetPrivateDataEXT")) return (void *)table->SetPrivateDataEXT;
2737     if (!strcmp(name, "GetPrivateDataEXT")) return (void *)table->GetPrivateDataEXT;
2738 
2739     // ---- VK_NV_cuda_kernel_launch extension commands
2740     if (!strcmp(name, "CreateCudaModuleNV")) return (void *)table->CreateCudaModuleNV;
2741     if (!strcmp(name, "GetCudaModuleCacheNV")) return (void *)table->GetCudaModuleCacheNV;
2742     if (!strcmp(name, "CreateCudaFunctionNV")) return (void *)table->CreateCudaFunctionNV;
2743     if (!strcmp(name, "DestroyCudaModuleNV")) return (void *)table->DestroyCudaModuleNV;
2744     if (!strcmp(name, "DestroyCudaFunctionNV")) return (void *)table->DestroyCudaFunctionNV;
2745     if (!strcmp(name, "CmdCudaLaunchKernelNV")) return (void *)table->CmdCudaLaunchKernelNV;
2746 
2747     // ---- VK_EXT_metal_objects extension commands
2748 #if defined(VK_USE_PLATFORM_METAL_EXT)
2749     if (!strcmp(name, "ExportMetalObjectsEXT")) return (void *)table->ExportMetalObjectsEXT;
2750 #endif // VK_USE_PLATFORM_METAL_EXT
2751 
2752     // ---- VK_EXT_descriptor_buffer extension commands
2753     if (!strcmp(name, "GetDescriptorSetLayoutSizeEXT")) return (void *)table->GetDescriptorSetLayoutSizeEXT;
2754     if (!strcmp(name, "GetDescriptorSetLayoutBindingOffsetEXT")) return (void *)table->GetDescriptorSetLayoutBindingOffsetEXT;
2755     if (!strcmp(name, "GetDescriptorEXT")) return (void *)table->GetDescriptorEXT;
2756     if (!strcmp(name, "CmdBindDescriptorBuffersEXT")) return (void *)table->CmdBindDescriptorBuffersEXT;
2757     if (!strcmp(name, "CmdSetDescriptorBufferOffsetsEXT")) return (void *)table->CmdSetDescriptorBufferOffsetsEXT;
2758     if (!strcmp(name, "CmdBindDescriptorBufferEmbeddedSamplersEXT")) return (void *)table->CmdBindDescriptorBufferEmbeddedSamplersEXT;
2759     if (!strcmp(name, "GetBufferOpaqueCaptureDescriptorDataEXT")) return (void *)table->GetBufferOpaqueCaptureDescriptorDataEXT;
2760     if (!strcmp(name, "GetImageOpaqueCaptureDescriptorDataEXT")) return (void *)table->GetImageOpaqueCaptureDescriptorDataEXT;
2761     if (!strcmp(name, "GetImageViewOpaqueCaptureDescriptorDataEXT")) return (void *)table->GetImageViewOpaqueCaptureDescriptorDataEXT;
2762     if (!strcmp(name, "GetSamplerOpaqueCaptureDescriptorDataEXT")) return (void *)table->GetSamplerOpaqueCaptureDescriptorDataEXT;
2763     if (!strcmp(name, "GetAccelerationStructureOpaqueCaptureDescriptorDataEXT")) return (void *)table->GetAccelerationStructureOpaqueCaptureDescriptorDataEXT;
2764 
2765     // ---- VK_NV_fragment_shading_rate_enums extension commands
2766     if (!strcmp(name, "CmdSetFragmentShadingRateEnumNV")) return (void *)table->CmdSetFragmentShadingRateEnumNV;
2767 
2768     // ---- VK_EXT_device_fault extension commands
2769     if (!strcmp(name, "GetDeviceFaultInfoEXT")) return (void *)table->GetDeviceFaultInfoEXT;
2770 
2771     // ---- VK_EXT_vertex_input_dynamic_state extension commands
2772     if (!strcmp(name, "CmdSetVertexInputEXT")) return (void *)table->CmdSetVertexInputEXT;
2773 
2774     // ---- VK_FUCHSIA_external_memory extension commands
2775 #if defined(VK_USE_PLATFORM_FUCHSIA)
2776     if (!strcmp(name, "GetMemoryZirconHandleFUCHSIA")) return (void *)table->GetMemoryZirconHandleFUCHSIA;
2777 #endif // VK_USE_PLATFORM_FUCHSIA
2778 #if defined(VK_USE_PLATFORM_FUCHSIA)
2779     if (!strcmp(name, "GetMemoryZirconHandlePropertiesFUCHSIA")) return (void *)table->GetMemoryZirconHandlePropertiesFUCHSIA;
2780 #endif // VK_USE_PLATFORM_FUCHSIA
2781 
2782     // ---- VK_FUCHSIA_external_semaphore extension commands
2783 #if defined(VK_USE_PLATFORM_FUCHSIA)
2784     if (!strcmp(name, "ImportSemaphoreZirconHandleFUCHSIA")) return (void *)table->ImportSemaphoreZirconHandleFUCHSIA;
2785 #endif // VK_USE_PLATFORM_FUCHSIA
2786 #if defined(VK_USE_PLATFORM_FUCHSIA)
2787     if (!strcmp(name, "GetSemaphoreZirconHandleFUCHSIA")) return (void *)table->GetSemaphoreZirconHandleFUCHSIA;
2788 #endif // VK_USE_PLATFORM_FUCHSIA
2789 
2790     // ---- VK_FUCHSIA_buffer_collection extension commands
2791 #if defined(VK_USE_PLATFORM_FUCHSIA)
2792     if (!strcmp(name, "CreateBufferCollectionFUCHSIA")) return (void *)table->CreateBufferCollectionFUCHSIA;
2793 #endif // VK_USE_PLATFORM_FUCHSIA
2794 #if defined(VK_USE_PLATFORM_FUCHSIA)
2795     if (!strcmp(name, "SetBufferCollectionImageConstraintsFUCHSIA")) return (void *)table->SetBufferCollectionImageConstraintsFUCHSIA;
2796 #endif // VK_USE_PLATFORM_FUCHSIA
2797 #if defined(VK_USE_PLATFORM_FUCHSIA)
2798     if (!strcmp(name, "SetBufferCollectionBufferConstraintsFUCHSIA")) return (void *)table->SetBufferCollectionBufferConstraintsFUCHSIA;
2799 #endif // VK_USE_PLATFORM_FUCHSIA
2800 #if defined(VK_USE_PLATFORM_FUCHSIA)
2801     if (!strcmp(name, "DestroyBufferCollectionFUCHSIA")) return (void *)table->DestroyBufferCollectionFUCHSIA;
2802 #endif // VK_USE_PLATFORM_FUCHSIA
2803 #if defined(VK_USE_PLATFORM_FUCHSIA)
2804     if (!strcmp(name, "GetBufferCollectionPropertiesFUCHSIA")) return (void *)table->GetBufferCollectionPropertiesFUCHSIA;
2805 #endif // VK_USE_PLATFORM_FUCHSIA
2806 
2807     // ---- VK_HUAWEI_subpass_shading extension commands
2808     if (!strcmp(name, "GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI")) return (void *)table->GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
2809     if (!strcmp(name, "CmdSubpassShadingHUAWEI")) return (void *)table->CmdSubpassShadingHUAWEI;
2810 
2811     // ---- VK_HUAWEI_invocation_mask extension commands
2812     if (!strcmp(name, "CmdBindInvocationMaskHUAWEI")) return (void *)table->CmdBindInvocationMaskHUAWEI;
2813 
2814     // ---- VK_NV_external_memory_rdma extension commands
2815     if (!strcmp(name, "GetMemoryRemoteAddressNV")) return (void *)table->GetMemoryRemoteAddressNV;
2816 
2817     // ---- VK_EXT_pipeline_properties extension commands
2818     if (!strcmp(name, "GetPipelinePropertiesEXT")) return (void *)table->GetPipelinePropertiesEXT;
2819 
2820     // ---- VK_EXT_extended_dynamic_state2 extension commands
2821     if (!strcmp(name, "CmdSetPatchControlPointsEXT")) return (void *)table->CmdSetPatchControlPointsEXT;
2822     if (!strcmp(name, "CmdSetRasterizerDiscardEnableEXT")) return (void *)table->CmdSetRasterizerDiscardEnableEXT;
2823     if (!strcmp(name, "CmdSetDepthBiasEnableEXT")) return (void *)table->CmdSetDepthBiasEnableEXT;
2824     if (!strcmp(name, "CmdSetLogicOpEXT")) return (void *)table->CmdSetLogicOpEXT;
2825     if (!strcmp(name, "CmdSetPrimitiveRestartEnableEXT")) return (void *)table->CmdSetPrimitiveRestartEnableEXT;
2826 
2827     // ---- VK_EXT_color_write_enable extension commands
2828     if (!strcmp(name, "CmdSetColorWriteEnableEXT")) return (void *)table->CmdSetColorWriteEnableEXT;
2829 
2830     // ---- VK_EXT_multi_draw extension commands
2831     if (!strcmp(name, "CmdDrawMultiEXT")) return (void *)table->CmdDrawMultiEXT;
2832     if (!strcmp(name, "CmdDrawMultiIndexedEXT")) return (void *)table->CmdDrawMultiIndexedEXT;
2833 
2834     // ---- VK_EXT_opacity_micromap extension commands
2835     if (!strcmp(name, "CreateMicromapEXT")) return (void *)table->CreateMicromapEXT;
2836     if (!strcmp(name, "DestroyMicromapEXT")) return (void *)table->DestroyMicromapEXT;
2837     if (!strcmp(name, "CmdBuildMicromapsEXT")) return (void *)table->CmdBuildMicromapsEXT;
2838     if (!strcmp(name, "BuildMicromapsEXT")) return (void *)table->BuildMicromapsEXT;
2839     if (!strcmp(name, "CopyMicromapEXT")) return (void *)table->CopyMicromapEXT;
2840     if (!strcmp(name, "CopyMicromapToMemoryEXT")) return (void *)table->CopyMicromapToMemoryEXT;
2841     if (!strcmp(name, "CopyMemoryToMicromapEXT")) return (void *)table->CopyMemoryToMicromapEXT;
2842     if (!strcmp(name, "WriteMicromapsPropertiesEXT")) return (void *)table->WriteMicromapsPropertiesEXT;
2843     if (!strcmp(name, "CmdCopyMicromapEXT")) return (void *)table->CmdCopyMicromapEXT;
2844     if (!strcmp(name, "CmdCopyMicromapToMemoryEXT")) return (void *)table->CmdCopyMicromapToMemoryEXT;
2845     if (!strcmp(name, "CmdCopyMemoryToMicromapEXT")) return (void *)table->CmdCopyMemoryToMicromapEXT;
2846     if (!strcmp(name, "CmdWriteMicromapsPropertiesEXT")) return (void *)table->CmdWriteMicromapsPropertiesEXT;
2847     if (!strcmp(name, "GetDeviceMicromapCompatibilityEXT")) return (void *)table->GetDeviceMicromapCompatibilityEXT;
2848     if (!strcmp(name, "GetMicromapBuildSizesEXT")) return (void *)table->GetMicromapBuildSizesEXT;
2849 
2850     // ---- VK_HUAWEI_cluster_culling_shader extension commands
2851     if (!strcmp(name, "CmdDrawClusterHUAWEI")) return (void *)table->CmdDrawClusterHUAWEI;
2852     if (!strcmp(name, "CmdDrawClusterIndirectHUAWEI")) return (void *)table->CmdDrawClusterIndirectHUAWEI;
2853 
2854     // ---- VK_EXT_pageable_device_local_memory extension commands
2855     if (!strcmp(name, "SetDeviceMemoryPriorityEXT")) return (void *)table->SetDeviceMemoryPriorityEXT;
2856 
2857     // ---- VK_VALVE_descriptor_set_host_mapping extension commands
2858     if (!strcmp(name, "GetDescriptorSetLayoutHostMappingInfoVALVE")) return (void *)table->GetDescriptorSetLayoutHostMappingInfoVALVE;
2859     if (!strcmp(name, "GetDescriptorSetHostMappingVALVE")) return (void *)table->GetDescriptorSetHostMappingVALVE;
2860 
2861     // ---- VK_NV_copy_memory_indirect extension commands
2862     if (!strcmp(name, "CmdCopyMemoryIndirectNV")) return (void *)table->CmdCopyMemoryIndirectNV;
2863     if (!strcmp(name, "CmdCopyMemoryToImageIndirectNV")) return (void *)table->CmdCopyMemoryToImageIndirectNV;
2864 
2865     // ---- VK_NV_memory_decompression extension commands
2866     if (!strcmp(name, "CmdDecompressMemoryNV")) return (void *)table->CmdDecompressMemoryNV;
2867     if (!strcmp(name, "CmdDecompressMemoryIndirectCountNV")) return (void *)table->CmdDecompressMemoryIndirectCountNV;
2868 
2869     // ---- VK_NV_device_generated_commands_compute extension commands
2870     if (!strcmp(name, "GetPipelineIndirectMemoryRequirementsNV")) return (void *)table->GetPipelineIndirectMemoryRequirementsNV;
2871     if (!strcmp(name, "CmdUpdatePipelineIndirectBufferNV")) return (void *)table->CmdUpdatePipelineIndirectBufferNV;
2872     if (!strcmp(name, "GetPipelineIndirectDeviceAddressNV")) return (void *)table->GetPipelineIndirectDeviceAddressNV;
2873 
2874     // ---- VK_EXT_extended_dynamic_state3 extension commands
2875     if (!strcmp(name, "CmdSetTessellationDomainOriginEXT")) return (void *)table->CmdSetTessellationDomainOriginEXT;
2876     if (!strcmp(name, "CmdSetDepthClampEnableEXT")) return (void *)table->CmdSetDepthClampEnableEXT;
2877     if (!strcmp(name, "CmdSetPolygonModeEXT")) return (void *)table->CmdSetPolygonModeEXT;
2878     if (!strcmp(name, "CmdSetRasterizationSamplesEXT")) return (void *)table->CmdSetRasterizationSamplesEXT;
2879     if (!strcmp(name, "CmdSetSampleMaskEXT")) return (void *)table->CmdSetSampleMaskEXT;
2880     if (!strcmp(name, "CmdSetAlphaToCoverageEnableEXT")) return (void *)table->CmdSetAlphaToCoverageEnableEXT;
2881     if (!strcmp(name, "CmdSetAlphaToOneEnableEXT")) return (void *)table->CmdSetAlphaToOneEnableEXT;
2882     if (!strcmp(name, "CmdSetLogicOpEnableEXT")) return (void *)table->CmdSetLogicOpEnableEXT;
2883     if (!strcmp(name, "CmdSetColorBlendEnableEXT")) return (void *)table->CmdSetColorBlendEnableEXT;
2884     if (!strcmp(name, "CmdSetColorBlendEquationEXT")) return (void *)table->CmdSetColorBlendEquationEXT;
2885     if (!strcmp(name, "CmdSetColorWriteMaskEXT")) return (void *)table->CmdSetColorWriteMaskEXT;
2886     if (!strcmp(name, "CmdSetRasterizationStreamEXT")) return (void *)table->CmdSetRasterizationStreamEXT;
2887     if (!strcmp(name, "CmdSetConservativeRasterizationModeEXT")) return (void *)table->CmdSetConservativeRasterizationModeEXT;
2888     if (!strcmp(name, "CmdSetExtraPrimitiveOverestimationSizeEXT")) return (void *)table->CmdSetExtraPrimitiveOverestimationSizeEXT;
2889     if (!strcmp(name, "CmdSetDepthClipEnableEXT")) return (void *)table->CmdSetDepthClipEnableEXT;
2890     if (!strcmp(name, "CmdSetSampleLocationsEnableEXT")) return (void *)table->CmdSetSampleLocationsEnableEXT;
2891     if (!strcmp(name, "CmdSetColorBlendAdvancedEXT")) return (void *)table->CmdSetColorBlendAdvancedEXT;
2892     if (!strcmp(name, "CmdSetProvokingVertexModeEXT")) return (void *)table->CmdSetProvokingVertexModeEXT;
2893     if (!strcmp(name, "CmdSetLineRasterizationModeEXT")) return (void *)table->CmdSetLineRasterizationModeEXT;
2894     if (!strcmp(name, "CmdSetLineStippleEnableEXT")) return (void *)table->CmdSetLineStippleEnableEXT;
2895     if (!strcmp(name, "CmdSetDepthClipNegativeOneToOneEXT")) return (void *)table->CmdSetDepthClipNegativeOneToOneEXT;
2896     if (!strcmp(name, "CmdSetViewportWScalingEnableNV")) return (void *)table->CmdSetViewportWScalingEnableNV;
2897     if (!strcmp(name, "CmdSetViewportSwizzleNV")) return (void *)table->CmdSetViewportSwizzleNV;
2898     if (!strcmp(name, "CmdSetCoverageToColorEnableNV")) return (void *)table->CmdSetCoverageToColorEnableNV;
2899     if (!strcmp(name, "CmdSetCoverageToColorLocationNV")) return (void *)table->CmdSetCoverageToColorLocationNV;
2900     if (!strcmp(name, "CmdSetCoverageModulationModeNV")) return (void *)table->CmdSetCoverageModulationModeNV;
2901     if (!strcmp(name, "CmdSetCoverageModulationTableEnableNV")) return (void *)table->CmdSetCoverageModulationTableEnableNV;
2902     if (!strcmp(name, "CmdSetCoverageModulationTableNV")) return (void *)table->CmdSetCoverageModulationTableNV;
2903     if (!strcmp(name, "CmdSetShadingRateImageEnableNV")) return (void *)table->CmdSetShadingRateImageEnableNV;
2904     if (!strcmp(name, "CmdSetRepresentativeFragmentTestEnableNV")) return (void *)table->CmdSetRepresentativeFragmentTestEnableNV;
2905     if (!strcmp(name, "CmdSetCoverageReductionModeNV")) return (void *)table->CmdSetCoverageReductionModeNV;
2906 
2907     // ---- VK_EXT_shader_module_identifier extension commands
2908     if (!strcmp(name, "GetShaderModuleIdentifierEXT")) return (void *)table->GetShaderModuleIdentifierEXT;
2909     if (!strcmp(name, "GetShaderModuleCreateInfoIdentifierEXT")) return (void *)table->GetShaderModuleCreateInfoIdentifierEXT;
2910 
2911     // ---- VK_NV_optical_flow extension commands
2912     if (!strcmp(name, "CreateOpticalFlowSessionNV")) return (void *)table->CreateOpticalFlowSessionNV;
2913     if (!strcmp(name, "DestroyOpticalFlowSessionNV")) return (void *)table->DestroyOpticalFlowSessionNV;
2914     if (!strcmp(name, "BindOpticalFlowSessionImageNV")) return (void *)table->BindOpticalFlowSessionImageNV;
2915     if (!strcmp(name, "CmdOpticalFlowExecuteNV")) return (void *)table->CmdOpticalFlowExecuteNV;
2916 
2917     // ---- VK_EXT_shader_object extension commands
2918     if (!strcmp(name, "CreateShadersEXT")) return (void *)table->CreateShadersEXT;
2919     if (!strcmp(name, "DestroyShaderEXT")) return (void *)table->DestroyShaderEXT;
2920     if (!strcmp(name, "GetShaderBinaryDataEXT")) return (void *)table->GetShaderBinaryDataEXT;
2921     if (!strcmp(name, "CmdBindShadersEXT")) return (void *)table->CmdBindShadersEXT;
2922 
2923     // ---- VK_QCOM_tile_properties extension commands
2924     if (!strcmp(name, "GetFramebufferTilePropertiesQCOM")) return (void *)table->GetFramebufferTilePropertiesQCOM;
2925     if (!strcmp(name, "GetDynamicRenderingTilePropertiesQCOM")) return (void *)table->GetDynamicRenderingTilePropertiesQCOM;
2926 
2927     // ---- VK_NV_low_latency2 extension commands
2928     if (!strcmp(name, "SetLatencySleepModeNV")) return (void *)table->SetLatencySleepModeNV;
2929     if (!strcmp(name, "LatencySleepNV")) return (void *)table->LatencySleepNV;
2930     if (!strcmp(name, "SetLatencyMarkerNV")) return (void *)table->SetLatencyMarkerNV;
2931     if (!strcmp(name, "GetLatencyTimingsNV")) return (void *)table->GetLatencyTimingsNV;
2932     if (!strcmp(name, "QueueNotifyOutOfBandNV")) return (void *)table->QueueNotifyOutOfBandNV;
2933 
2934     // ---- VK_EXT_attachment_feedback_loop_dynamic_state extension commands
2935     if (!strcmp(name, "CmdSetAttachmentFeedbackLoopEnableEXT")) return (void *)table->CmdSetAttachmentFeedbackLoopEnableEXT;
2936 
2937     // ---- VK_QNX_external_memory_screen_buffer extension commands
2938 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
2939     if (!strcmp(name, "GetScreenBufferPropertiesQNX")) return (void *)table->GetScreenBufferPropertiesQNX;
2940 #endif // VK_USE_PLATFORM_SCREEN_QNX
2941 
2942     // ---- VK_KHR_acceleration_structure extension commands
2943     if (!strcmp(name, "CreateAccelerationStructureKHR")) return (void *)table->CreateAccelerationStructureKHR;
2944     if (!strcmp(name, "DestroyAccelerationStructureKHR")) return (void *)table->DestroyAccelerationStructureKHR;
2945     if (!strcmp(name, "CmdBuildAccelerationStructuresKHR")) return (void *)table->CmdBuildAccelerationStructuresKHR;
2946     if (!strcmp(name, "CmdBuildAccelerationStructuresIndirectKHR")) return (void *)table->CmdBuildAccelerationStructuresIndirectKHR;
2947     if (!strcmp(name, "BuildAccelerationStructuresKHR")) return (void *)table->BuildAccelerationStructuresKHR;
2948     if (!strcmp(name, "CopyAccelerationStructureKHR")) return (void *)table->CopyAccelerationStructureKHR;
2949     if (!strcmp(name, "CopyAccelerationStructureToMemoryKHR")) return (void *)table->CopyAccelerationStructureToMemoryKHR;
2950     if (!strcmp(name, "CopyMemoryToAccelerationStructureKHR")) return (void *)table->CopyMemoryToAccelerationStructureKHR;
2951     if (!strcmp(name, "WriteAccelerationStructuresPropertiesKHR")) return (void *)table->WriteAccelerationStructuresPropertiesKHR;
2952     if (!strcmp(name, "CmdCopyAccelerationStructureKHR")) return (void *)table->CmdCopyAccelerationStructureKHR;
2953     if (!strcmp(name, "CmdCopyAccelerationStructureToMemoryKHR")) return (void *)table->CmdCopyAccelerationStructureToMemoryKHR;
2954     if (!strcmp(name, "CmdCopyMemoryToAccelerationStructureKHR")) return (void *)table->CmdCopyMemoryToAccelerationStructureKHR;
2955     if (!strcmp(name, "GetAccelerationStructureDeviceAddressKHR")) return (void *)table->GetAccelerationStructureDeviceAddressKHR;
2956     if (!strcmp(name, "CmdWriteAccelerationStructuresPropertiesKHR")) return (void *)table->CmdWriteAccelerationStructuresPropertiesKHR;
2957     if (!strcmp(name, "GetDeviceAccelerationStructureCompatibilityKHR")) return (void *)table->GetDeviceAccelerationStructureCompatibilityKHR;
2958     if (!strcmp(name, "GetAccelerationStructureBuildSizesKHR")) return (void *)table->GetAccelerationStructureBuildSizesKHR;
2959 
2960     // ---- VK_KHR_ray_tracing_pipeline extension commands
2961     if (!strcmp(name, "CmdTraceRaysKHR")) return (void *)table->CmdTraceRaysKHR;
2962     if (!strcmp(name, "CreateRayTracingPipelinesKHR")) return (void *)table->CreateRayTracingPipelinesKHR;
2963     if (!strcmp(name, "GetRayTracingCaptureReplayShaderGroupHandlesKHR")) return (void *)table->GetRayTracingCaptureReplayShaderGroupHandlesKHR;
2964     if (!strcmp(name, "CmdTraceRaysIndirectKHR")) return (void *)table->CmdTraceRaysIndirectKHR;
2965     if (!strcmp(name, "GetRayTracingShaderGroupStackSizeKHR")) return (void *)table->GetRayTracingShaderGroupStackSizeKHR;
2966     if (!strcmp(name, "CmdSetRayTracingPipelineStackSizeKHR")) return (void *)table->CmdSetRayTracingPipelineStackSizeKHR;
2967 
2968     // ---- VK_EXT_mesh_shader extension commands
2969     if (!strcmp(name, "CmdDrawMeshTasksEXT")) return (void *)table->CmdDrawMeshTasksEXT;
2970     if (!strcmp(name, "CmdDrawMeshTasksIndirectEXT")) return (void *)table->CmdDrawMeshTasksIndirectEXT;
2971     if (!strcmp(name, "CmdDrawMeshTasksIndirectCountEXT")) return (void *)table->CmdDrawMeshTasksIndirectCountEXT;
2972 
2973     // ---- VK_OHOS_native_buffer extension commands
2974 #ifdef VK_USE_PLATFORM_OHOS
2975     if (!strcmp(name, "GetSwapchainGrallocUsageOHOS")) return (void *)table->GetSwapchainGrallocUsageOHOS;
2976 #endif // VK_USE_PLATFORM_OHOS
2977 #ifdef VK_USE_PLATFORM_OHOS
2978     if (!strcmp(name, "AcquireImageOHOS")) return (void *)table->AcquireImageOHOS;
2979 #endif // VK_USE_PLATFORM_OHOS
2980 #ifdef VK_USE_PLATFORM_OHOS
2981     if (!strcmp(name, "QueueSignalReleaseImageOHOS")) return (void *)table->QueueSignalReleaseImageOHOS;
2982 #endif // VK_USE_PLATFORM_OHOS
2983 
2984     // ---- VK_OHOS_external_memory extension commands
2985 #ifdef VK_USE_PLATFORM_OHOS
2986     if (!strcmp(name, "GetNativeBufferPropertiesOHOS")) return (void *)table->GetNativeBufferPropertiesOHOS;
2987 #endif // VK_USE_PLATFORM_OHOS
2988 #ifdef VK_USE_PLATFORM_OHOS
2989     if (!strcmp(name, "GetMemoryNativeBufferOHOS")) return (void *)table->GetMemoryNativeBufferOHOS;
2990 #endif // VK_USE_PLATFORM_OHOS
2991 
2992     *found_name = false;
2993     return NULL;
2994 }
2995 
2996 // Instance command lookup function
loader_lookup_instance_dispatch_table(const VkLayerInstanceDispatchTable * table,const char * name,bool * found_name)2997 VKAPI_ATTR void* VKAPI_CALL loader_lookup_instance_dispatch_table(const VkLayerInstanceDispatchTable *table, const char *name,
2998                                                                  bool *found_name) {
2999     if (!name || name[0] != 'v' || name[1] != 'k') {
3000         *found_name = false;
3001         return NULL;
3002     }
3003 
3004     *found_name = true;
3005     name += 2;
3006 
3007     // ---- Core Vulkan 1.0 commands
3008     if (!strcmp(name, "DestroyInstance")) return (void *)table->DestroyInstance;
3009     if (!strcmp(name, "EnumeratePhysicalDevices")) return (void *)table->EnumeratePhysicalDevices;
3010     if (!strcmp(name, "GetPhysicalDeviceFeatures")) return (void *)table->GetPhysicalDeviceFeatures;
3011     if (!strcmp(name, "GetPhysicalDeviceFormatProperties")) return (void *)table->GetPhysicalDeviceFormatProperties;
3012     if (!strcmp(name, "GetPhysicalDeviceImageFormatProperties")) return (void *)table->GetPhysicalDeviceImageFormatProperties;
3013     if (!strcmp(name, "GetPhysicalDeviceProperties")) return (void *)table->GetPhysicalDeviceProperties;
3014     if (!strcmp(name, "GetPhysicalDeviceQueueFamilyProperties")) return (void *)table->GetPhysicalDeviceQueueFamilyProperties;
3015     if (!strcmp(name, "GetPhysicalDeviceMemoryProperties")) return (void *)table->GetPhysicalDeviceMemoryProperties;
3016     if (!strcmp(name, "GetInstanceProcAddr")) return (void *)table->GetInstanceProcAddr;
3017     if (!strcmp(name, "EnumerateDeviceExtensionProperties")) return (void *)table->EnumerateDeviceExtensionProperties;
3018     if (!strcmp(name, "EnumerateDeviceLayerProperties")) return (void *)table->EnumerateDeviceLayerProperties;
3019     if (!strcmp(name, "GetPhysicalDeviceSparseImageFormatProperties")) return (void *)table->GetPhysicalDeviceSparseImageFormatProperties;
3020 
3021     // ---- Core Vulkan 1.1 commands
3022     if (!strcmp(name, "EnumeratePhysicalDeviceGroups")) return (void *)table->EnumeratePhysicalDeviceGroups;
3023     if (!strcmp(name, "GetPhysicalDeviceFeatures2")) return (void *)table->GetPhysicalDeviceFeatures2;
3024     if (!strcmp(name, "GetPhysicalDeviceProperties2")) return (void *)table->GetPhysicalDeviceProperties2;
3025     if (!strcmp(name, "GetPhysicalDeviceFormatProperties2")) return (void *)table->GetPhysicalDeviceFormatProperties2;
3026     if (!strcmp(name, "GetPhysicalDeviceImageFormatProperties2")) return (void *)table->GetPhysicalDeviceImageFormatProperties2;
3027     if (!strcmp(name, "GetPhysicalDeviceQueueFamilyProperties2")) return (void *)table->GetPhysicalDeviceQueueFamilyProperties2;
3028     if (!strcmp(name, "GetPhysicalDeviceMemoryProperties2")) return (void *)table->GetPhysicalDeviceMemoryProperties2;
3029     if (!strcmp(name, "GetPhysicalDeviceSparseImageFormatProperties2")) return (void *)table->GetPhysicalDeviceSparseImageFormatProperties2;
3030     if (!strcmp(name, "GetPhysicalDeviceExternalBufferProperties")) return (void *)table->GetPhysicalDeviceExternalBufferProperties;
3031     if (!strcmp(name, "GetPhysicalDeviceExternalFenceProperties")) return (void *)table->GetPhysicalDeviceExternalFenceProperties;
3032     if (!strcmp(name, "GetPhysicalDeviceExternalSemaphoreProperties")) return (void *)table->GetPhysicalDeviceExternalSemaphoreProperties;
3033 
3034     // ---- Core Vulkan 1.3 commands
3035     if (!strcmp(name, "GetPhysicalDeviceToolProperties")) return (void *)table->GetPhysicalDeviceToolProperties;
3036 
3037     // ---- VK_KHR_surface extension commands
3038     if (!strcmp(name, "DestroySurfaceKHR")) return (void *)table->DestroySurfaceKHR;
3039     if (!strcmp(name, "GetPhysicalDeviceSurfaceSupportKHR")) return (void *)table->GetPhysicalDeviceSurfaceSupportKHR;
3040     if (!strcmp(name, "GetPhysicalDeviceSurfaceCapabilitiesKHR")) return (void *)table->GetPhysicalDeviceSurfaceCapabilitiesKHR;
3041     if (!strcmp(name, "GetPhysicalDeviceSurfaceFormatsKHR")) return (void *)table->GetPhysicalDeviceSurfaceFormatsKHR;
3042     if (!strcmp(name, "GetPhysicalDeviceSurfacePresentModesKHR")) return (void *)table->GetPhysicalDeviceSurfacePresentModesKHR;
3043 
3044     // ---- VK_KHR_swapchain extension commands
3045     if (!strcmp(name, "GetPhysicalDevicePresentRectanglesKHR")) return (void *)table->GetPhysicalDevicePresentRectanglesKHR;
3046 
3047     // ---- VK_KHR_display extension commands
3048     if (!strcmp(name, "GetPhysicalDeviceDisplayPropertiesKHR")) return (void *)table->GetPhysicalDeviceDisplayPropertiesKHR;
3049     if (!strcmp(name, "GetPhysicalDeviceDisplayPlanePropertiesKHR")) return (void *)table->GetPhysicalDeviceDisplayPlanePropertiesKHR;
3050     if (!strcmp(name, "GetDisplayPlaneSupportedDisplaysKHR")) return (void *)table->GetDisplayPlaneSupportedDisplaysKHR;
3051     if (!strcmp(name, "GetDisplayModePropertiesKHR")) return (void *)table->GetDisplayModePropertiesKHR;
3052     if (!strcmp(name, "CreateDisplayModeKHR")) return (void *)table->CreateDisplayModeKHR;
3053     if (!strcmp(name, "GetDisplayPlaneCapabilitiesKHR")) return (void *)table->GetDisplayPlaneCapabilitiesKHR;
3054     if (!strcmp(name, "CreateDisplayPlaneSurfaceKHR")) return (void *)table->CreateDisplayPlaneSurfaceKHR;
3055 
3056     // ---- VK_KHR_xlib_surface extension commands
3057 #if defined(VK_USE_PLATFORM_XLIB_KHR)
3058     if (!strcmp(name, "CreateXlibSurfaceKHR")) return (void *)table->CreateXlibSurfaceKHR;
3059 #endif // VK_USE_PLATFORM_XLIB_KHR
3060 #if defined(VK_USE_PLATFORM_XLIB_KHR)
3061     if (!strcmp(name, "GetPhysicalDeviceXlibPresentationSupportKHR")) return (void *)table->GetPhysicalDeviceXlibPresentationSupportKHR;
3062 #endif // VK_USE_PLATFORM_XLIB_KHR
3063 
3064     // ---- VK_KHR_xcb_surface extension commands
3065 #if defined(VK_USE_PLATFORM_XCB_KHR)
3066     if (!strcmp(name, "CreateXcbSurfaceKHR")) return (void *)table->CreateXcbSurfaceKHR;
3067 #endif // VK_USE_PLATFORM_XCB_KHR
3068 #if defined(VK_USE_PLATFORM_XCB_KHR)
3069     if (!strcmp(name, "GetPhysicalDeviceXcbPresentationSupportKHR")) return (void *)table->GetPhysicalDeviceXcbPresentationSupportKHR;
3070 #endif // VK_USE_PLATFORM_XCB_KHR
3071 
3072     // ---- VK_KHR_wayland_surface extension commands
3073 #if defined(VK_USE_PLATFORM_WAYLAND_KHR)
3074     if (!strcmp(name, "CreateWaylandSurfaceKHR")) return (void *)table->CreateWaylandSurfaceKHR;
3075 #endif // VK_USE_PLATFORM_WAYLAND_KHR
3076 #if defined(VK_USE_PLATFORM_WAYLAND_KHR)
3077     if (!strcmp(name, "GetPhysicalDeviceWaylandPresentationSupportKHR")) return (void *)table->GetPhysicalDeviceWaylandPresentationSupportKHR;
3078 #endif // VK_USE_PLATFORM_WAYLAND_KHR
3079 
3080     // ---- VK_KHR_android_surface extension commands
3081 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
3082     if (!strcmp(name, "CreateAndroidSurfaceKHR")) return (void *)table->CreateAndroidSurfaceKHR;
3083 #endif // VK_USE_PLATFORM_ANDROID_KHR
3084 
3085     // ---- VK_KHR_win32_surface extension commands
3086 #if defined(VK_USE_PLATFORM_WIN32_KHR)
3087     if (!strcmp(name, "CreateWin32SurfaceKHR")) return (void *)table->CreateWin32SurfaceKHR;
3088 #endif // VK_USE_PLATFORM_WIN32_KHR
3089 #if defined(VK_USE_PLATFORM_WIN32_KHR)
3090     if (!strcmp(name, "GetPhysicalDeviceWin32PresentationSupportKHR")) return (void *)table->GetPhysicalDeviceWin32PresentationSupportKHR;
3091 #endif // VK_USE_PLATFORM_WIN32_KHR
3092 
3093     // ---- VK_KHR_video_queue extension commands
3094     if (!strcmp(name, "GetPhysicalDeviceVideoCapabilitiesKHR")) return (void *)table->GetPhysicalDeviceVideoCapabilitiesKHR;
3095     if (!strcmp(name, "GetPhysicalDeviceVideoFormatPropertiesKHR")) return (void *)table->GetPhysicalDeviceVideoFormatPropertiesKHR;
3096 
3097     // ---- VK_KHR_get_physical_device_properties2 extension commands
3098     if (!strcmp(name, "GetPhysicalDeviceFeatures2KHR")) return (void *)table->GetPhysicalDeviceFeatures2KHR;
3099     if (!strcmp(name, "GetPhysicalDeviceProperties2KHR")) return (void *)table->GetPhysicalDeviceProperties2KHR;
3100     if (!strcmp(name, "GetPhysicalDeviceFormatProperties2KHR")) return (void *)table->GetPhysicalDeviceFormatProperties2KHR;
3101     if (!strcmp(name, "GetPhysicalDeviceImageFormatProperties2KHR")) return (void *)table->GetPhysicalDeviceImageFormatProperties2KHR;
3102     if (!strcmp(name, "GetPhysicalDeviceQueueFamilyProperties2KHR")) return (void *)table->GetPhysicalDeviceQueueFamilyProperties2KHR;
3103     if (!strcmp(name, "GetPhysicalDeviceMemoryProperties2KHR")) return (void *)table->GetPhysicalDeviceMemoryProperties2KHR;
3104     if (!strcmp(name, "GetPhysicalDeviceSparseImageFormatProperties2KHR")) return (void *)table->GetPhysicalDeviceSparseImageFormatProperties2KHR;
3105 
3106     // ---- VK_KHR_device_group_creation extension commands
3107     if (!strcmp(name, "EnumeratePhysicalDeviceGroupsKHR")) return (void *)table->EnumeratePhysicalDeviceGroupsKHR;
3108 
3109     // ---- VK_KHR_external_memory_capabilities extension commands
3110     if (!strcmp(name, "GetPhysicalDeviceExternalBufferPropertiesKHR")) return (void *)table->GetPhysicalDeviceExternalBufferPropertiesKHR;
3111 
3112     // ---- VK_KHR_external_semaphore_capabilities extension commands
3113     if (!strcmp(name, "GetPhysicalDeviceExternalSemaphorePropertiesKHR")) return (void *)table->GetPhysicalDeviceExternalSemaphorePropertiesKHR;
3114 
3115     // ---- VK_KHR_external_fence_capabilities extension commands
3116     if (!strcmp(name, "GetPhysicalDeviceExternalFencePropertiesKHR")) return (void *)table->GetPhysicalDeviceExternalFencePropertiesKHR;
3117 
3118     // ---- VK_KHR_performance_query extension commands
3119     if (!strcmp(name, "EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR")) return (void *)table->EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
3120     if (!strcmp(name, "GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR")) return (void *)table->GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
3121 
3122     // ---- VK_KHR_get_surface_capabilities2 extension commands
3123     if (!strcmp(name, "GetPhysicalDeviceSurfaceCapabilities2KHR")) return (void *)table->GetPhysicalDeviceSurfaceCapabilities2KHR;
3124     if (!strcmp(name, "GetPhysicalDeviceSurfaceFormats2KHR")) return (void *)table->GetPhysicalDeviceSurfaceFormats2KHR;
3125 
3126     // ---- VK_KHR_get_display_properties2 extension commands
3127     if (!strcmp(name, "GetPhysicalDeviceDisplayProperties2KHR")) return (void *)table->GetPhysicalDeviceDisplayProperties2KHR;
3128     if (!strcmp(name, "GetPhysicalDeviceDisplayPlaneProperties2KHR")) return (void *)table->GetPhysicalDeviceDisplayPlaneProperties2KHR;
3129     if (!strcmp(name, "GetDisplayModeProperties2KHR")) return (void *)table->GetDisplayModeProperties2KHR;
3130     if (!strcmp(name, "GetDisplayPlaneCapabilities2KHR")) return (void *)table->GetDisplayPlaneCapabilities2KHR;
3131 
3132     // ---- VK_KHR_fragment_shading_rate extension commands
3133     if (!strcmp(name, "GetPhysicalDeviceFragmentShadingRatesKHR")) return (void *)table->GetPhysicalDeviceFragmentShadingRatesKHR;
3134 
3135     // ---- VK_KHR_video_encode_queue extension commands
3136     if (!strcmp(name, "GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR")) return (void *)table->GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR;
3137 
3138     // ---- VK_KHR_cooperative_matrix extension commands
3139     if (!strcmp(name, "GetPhysicalDeviceCooperativeMatrixPropertiesKHR")) return (void *)table->GetPhysicalDeviceCooperativeMatrixPropertiesKHR;
3140 
3141     // ---- VK_KHR_calibrated_timestamps extension commands
3142     if (!strcmp(name, "GetPhysicalDeviceCalibrateableTimeDomainsKHR")) return (void *)table->GetPhysicalDeviceCalibrateableTimeDomainsKHR;
3143 
3144     // ---- VK_EXT_debug_report extension commands
3145     if (!strcmp(name, "CreateDebugReportCallbackEXT")) return (void *)table->CreateDebugReportCallbackEXT;
3146     if (!strcmp(name, "DestroyDebugReportCallbackEXT")) return (void *)table->DestroyDebugReportCallbackEXT;
3147     if (!strcmp(name, "DebugReportMessageEXT")) return (void *)table->DebugReportMessageEXT;
3148 
3149     // ---- VK_GGP_stream_descriptor_surface extension commands
3150 #if defined(VK_USE_PLATFORM_GGP)
3151     if (!strcmp(name, "CreateStreamDescriptorSurfaceGGP")) return (void *)table->CreateStreamDescriptorSurfaceGGP;
3152 #endif // VK_USE_PLATFORM_GGP
3153 
3154     // ---- VK_NV_external_memory_capabilities extension commands
3155     if (!strcmp(name, "GetPhysicalDeviceExternalImageFormatPropertiesNV")) return (void *)table->GetPhysicalDeviceExternalImageFormatPropertiesNV;
3156 
3157     // ---- VK_NN_vi_surface extension commands
3158 #if defined(VK_USE_PLATFORM_VI_NN)
3159     if (!strcmp(name, "CreateViSurfaceNN")) return (void *)table->CreateViSurfaceNN;
3160 #endif // VK_USE_PLATFORM_VI_NN
3161 
3162     // ---- VK_EXT_direct_mode_display extension commands
3163     if (!strcmp(name, "ReleaseDisplayEXT")) return (void *)table->ReleaseDisplayEXT;
3164 
3165     // ---- VK_EXT_acquire_xlib_display extension commands
3166 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
3167     if (!strcmp(name, "AcquireXlibDisplayEXT")) return (void *)table->AcquireXlibDisplayEXT;
3168 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
3169 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
3170     if (!strcmp(name, "GetRandROutputDisplayEXT")) return (void *)table->GetRandROutputDisplayEXT;
3171 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
3172 
3173     // ---- VK_EXT_display_surface_counter extension commands
3174     if (!strcmp(name, "GetPhysicalDeviceSurfaceCapabilities2EXT")) return (void *)table->GetPhysicalDeviceSurfaceCapabilities2EXT;
3175 
3176     // ---- VK_MVK_ios_surface extension commands
3177 #if defined(VK_USE_PLATFORM_IOS_MVK)
3178     if (!strcmp(name, "CreateIOSSurfaceMVK")) return (void *)table->CreateIOSSurfaceMVK;
3179 #endif // VK_USE_PLATFORM_IOS_MVK
3180 
3181     // ---- VK_MVK_macos_surface extension commands
3182 #if defined(VK_USE_PLATFORM_MACOS_MVK)
3183     if (!strcmp(name, "CreateMacOSSurfaceMVK")) return (void *)table->CreateMacOSSurfaceMVK;
3184 #endif // VK_USE_PLATFORM_MACOS_MVK
3185 
3186     // ---- VK_EXT_debug_utils extension commands
3187     if (!strcmp(name, "CreateDebugUtilsMessengerEXT")) return (void *)table->CreateDebugUtilsMessengerEXT;
3188     if (!strcmp(name, "DestroyDebugUtilsMessengerEXT")) return (void *)table->DestroyDebugUtilsMessengerEXT;
3189     if (!strcmp(name, "SubmitDebugUtilsMessageEXT")) return (void *)table->SubmitDebugUtilsMessageEXT;
3190 
3191     // ---- VK_EXT_sample_locations extension commands
3192     if (!strcmp(name, "GetPhysicalDeviceMultisamplePropertiesEXT")) return (void *)table->GetPhysicalDeviceMultisamplePropertiesEXT;
3193 
3194     // ---- VK_EXT_calibrated_timestamps extension commands
3195     if (!strcmp(name, "GetPhysicalDeviceCalibrateableTimeDomainsEXT")) return (void *)table->GetPhysicalDeviceCalibrateableTimeDomainsEXT;
3196 
3197     // ---- VK_FUCHSIA_imagepipe_surface extension commands
3198 #if defined(VK_USE_PLATFORM_FUCHSIA)
3199     if (!strcmp(name, "CreateImagePipeSurfaceFUCHSIA")) return (void *)table->CreateImagePipeSurfaceFUCHSIA;
3200 #endif // VK_USE_PLATFORM_FUCHSIA
3201 
3202     // ---- VK_EXT_metal_surface extension commands
3203 #if defined(VK_USE_PLATFORM_METAL_EXT)
3204     if (!strcmp(name, "CreateMetalSurfaceEXT")) return (void *)table->CreateMetalSurfaceEXT;
3205 #endif // VK_USE_PLATFORM_METAL_EXT
3206 
3207     // ---- VK_EXT_tooling_info extension commands
3208     if (!strcmp(name, "GetPhysicalDeviceToolPropertiesEXT")) return (void *)table->GetPhysicalDeviceToolPropertiesEXT;
3209 
3210     // ---- VK_NV_cooperative_matrix extension commands
3211     if (!strcmp(name, "GetPhysicalDeviceCooperativeMatrixPropertiesNV")) return (void *)table->GetPhysicalDeviceCooperativeMatrixPropertiesNV;
3212 
3213     // ---- VK_NV_coverage_reduction_mode extension commands
3214     if (!strcmp(name, "GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV")) return (void *)table->GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
3215 
3216     // ---- VK_EXT_full_screen_exclusive extension commands
3217 #if defined(VK_USE_PLATFORM_WIN32_KHR)
3218     if (!strcmp(name, "GetPhysicalDeviceSurfacePresentModes2EXT")) return (void *)table->GetPhysicalDeviceSurfacePresentModes2EXT;
3219 #endif // VK_USE_PLATFORM_WIN32_KHR
3220 
3221     // ---- VK_EXT_headless_surface extension commands
3222     if (!strcmp(name, "CreateHeadlessSurfaceEXT")) return (void *)table->CreateHeadlessSurfaceEXT;
3223 
3224     // ---- VK_EXT_acquire_drm_display extension commands
3225     if (!strcmp(name, "AcquireDrmDisplayEXT")) return (void *)table->AcquireDrmDisplayEXT;
3226     if (!strcmp(name, "GetDrmDisplayEXT")) return (void *)table->GetDrmDisplayEXT;
3227 
3228     // ---- VK_NV_acquire_winrt_display extension commands
3229 #if defined(VK_USE_PLATFORM_WIN32_KHR)
3230     if (!strcmp(name, "AcquireWinrtDisplayNV")) return (void *)table->AcquireWinrtDisplayNV;
3231 #endif // VK_USE_PLATFORM_WIN32_KHR
3232 #if defined(VK_USE_PLATFORM_WIN32_KHR)
3233     if (!strcmp(name, "GetWinrtDisplayNV")) return (void *)table->GetWinrtDisplayNV;
3234 #endif // VK_USE_PLATFORM_WIN32_KHR
3235 
3236     // ---- VK_EXT_directfb_surface extension commands
3237 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
3238     if (!strcmp(name, "CreateDirectFBSurfaceEXT")) return (void *)table->CreateDirectFBSurfaceEXT;
3239 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
3240 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
3241     if (!strcmp(name, "GetPhysicalDeviceDirectFBPresentationSupportEXT")) return (void *)table->GetPhysicalDeviceDirectFBPresentationSupportEXT;
3242 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
3243 
3244     // ---- VK_QNX_screen_surface extension commands
3245 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
3246     if (!strcmp(name, "CreateScreenSurfaceQNX")) return (void *)table->CreateScreenSurfaceQNX;
3247 #endif // VK_USE_PLATFORM_SCREEN_QNX
3248 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
3249     if (!strcmp(name, "GetPhysicalDeviceScreenPresentationSupportQNX")) return (void *)table->GetPhysicalDeviceScreenPresentationSupportQNX;
3250 #endif // VK_USE_PLATFORM_SCREEN_QNX
3251 
3252     // ---- VK_NV_optical_flow extension commands
3253     if (!strcmp(name, "GetPhysicalDeviceOpticalFlowImageFormatsNV")) return (void *)table->GetPhysicalDeviceOpticalFlowImageFormatsNV;
3254 
3255     // ---- VK_OHOS_surface extension commands
3256 #ifdef VK_USE_PLATFORM_OHOS
3257     if (!strcmp(name, "CreateSurfaceOHOS")) return (void *)table->CreateSurfaceOHOS;
3258 #endif // VK_USE_PLATFORM_OHOS
3259 
3260     *found_name = false;
3261     return NULL;
3262 }
3263 
3264 
3265 // ---- VK_KHR_video_queue extension trampoline/terminators
3266 
GetPhysicalDeviceVideoCapabilitiesKHR(VkPhysicalDevice physicalDevice,const VkVideoProfileInfoKHR * pVideoProfile,VkVideoCapabilitiesKHR * pCapabilities)3267 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoCapabilitiesKHR(
3268     VkPhysicalDevice                            physicalDevice,
3269     const VkVideoProfileInfoKHR*                pVideoProfile,
3270     VkVideoCapabilitiesKHR*                     pCapabilities) {
3271     const VkLayerInstanceDispatchTable *disp;
3272     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
3273     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
3274         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3275                    "vkGetPhysicalDeviceVideoCapabilitiesKHR: Invalid physicalDevice "
3276                    "[VUID-vkGetPhysicalDeviceVideoCapabilitiesKHR-physicalDevice-parameter]");
3277         abort(); /* Intentionally fail so user can correct issue. */
3278     }
3279     disp = loader_get_instance_layer_dispatch(physicalDevice);
3280     return disp->GetPhysicalDeviceVideoCapabilitiesKHR(unwrapped_phys_dev, pVideoProfile, pCapabilities);
3281 }
3282 
terminator_GetPhysicalDeviceVideoCapabilitiesKHR(VkPhysicalDevice physicalDevice,const VkVideoProfileInfoKHR * pVideoProfile,VkVideoCapabilitiesKHR * pCapabilities)3283 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceVideoCapabilitiesKHR(
3284     VkPhysicalDevice                            physicalDevice,
3285     const VkVideoProfileInfoKHR*                pVideoProfile,
3286     VkVideoCapabilitiesKHR*                     pCapabilities) {
3287     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
3288     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
3289     if (NULL == icd_term->dispatch.GetPhysicalDeviceVideoCapabilitiesKHR) {
3290         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
3291                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceVideoCapabilitiesKHR");
3292         abort(); /* Intentionally fail so user can correct issue. */
3293     }
3294     return icd_term->dispatch.GetPhysicalDeviceVideoCapabilitiesKHR(phys_dev_term->phys_dev, pVideoProfile, pCapabilities);
3295 }
3296 
GetPhysicalDeviceVideoFormatPropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo,uint32_t * pVideoFormatPropertyCount,VkVideoFormatPropertiesKHR * pVideoFormatProperties)3297 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoFormatPropertiesKHR(
3298     VkPhysicalDevice                            physicalDevice,
3299     const VkPhysicalDeviceVideoFormatInfoKHR*   pVideoFormatInfo,
3300     uint32_t*                                   pVideoFormatPropertyCount,
3301     VkVideoFormatPropertiesKHR*                 pVideoFormatProperties) {
3302     const VkLayerInstanceDispatchTable *disp;
3303     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
3304     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
3305         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3306                    "vkGetPhysicalDeviceVideoFormatPropertiesKHR: Invalid physicalDevice "
3307                    "[VUID-vkGetPhysicalDeviceVideoFormatPropertiesKHR-physicalDevice-parameter]");
3308         abort(); /* Intentionally fail so user can correct issue. */
3309     }
3310     disp = loader_get_instance_layer_dispatch(physicalDevice);
3311     return disp->GetPhysicalDeviceVideoFormatPropertiesKHR(unwrapped_phys_dev, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties);
3312 }
3313 
terminator_GetPhysicalDeviceVideoFormatPropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo,uint32_t * pVideoFormatPropertyCount,VkVideoFormatPropertiesKHR * pVideoFormatProperties)3314 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceVideoFormatPropertiesKHR(
3315     VkPhysicalDevice                            physicalDevice,
3316     const VkPhysicalDeviceVideoFormatInfoKHR*   pVideoFormatInfo,
3317     uint32_t*                                   pVideoFormatPropertyCount,
3318     VkVideoFormatPropertiesKHR*                 pVideoFormatProperties) {
3319     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
3320     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
3321     if (NULL == icd_term->dispatch.GetPhysicalDeviceVideoFormatPropertiesKHR) {
3322         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
3323                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceVideoFormatPropertiesKHR");
3324         abort(); /* Intentionally fail so user can correct issue. */
3325     }
3326     return icd_term->dispatch.GetPhysicalDeviceVideoFormatPropertiesKHR(phys_dev_term->phys_dev, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties);
3327 }
3328 
CreateVideoSessionKHR(VkDevice device,const VkVideoSessionCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkVideoSessionKHR * pVideoSession)3329 VKAPI_ATTR VkResult VKAPI_CALL CreateVideoSessionKHR(
3330     VkDevice                                    device,
3331     const VkVideoSessionCreateInfoKHR*          pCreateInfo,
3332     const VkAllocationCallbacks*                pAllocator,
3333     VkVideoSessionKHR*                          pVideoSession) {
3334     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3335     if (NULL == disp) {
3336         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3337                    "vkCreateVideoSessionKHR: Invalid device "
3338                    "[VUID-vkCreateVideoSessionKHR-device-parameter]");
3339         abort(); /* Intentionally fail so user can correct issue. */
3340     }
3341     return disp->CreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession);
3342 }
3343 
DestroyVideoSessionKHR(VkDevice device,VkVideoSessionKHR videoSession,const VkAllocationCallbacks * pAllocator)3344 VKAPI_ATTR void VKAPI_CALL DestroyVideoSessionKHR(
3345     VkDevice                                    device,
3346     VkVideoSessionKHR                           videoSession,
3347     const VkAllocationCallbacks*                pAllocator) {
3348     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3349     if (NULL == disp) {
3350         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3351                    "vkDestroyVideoSessionKHR: Invalid device "
3352                    "[VUID-vkDestroyVideoSessionKHR-device-parameter]");
3353         abort(); /* Intentionally fail so user can correct issue. */
3354     }
3355     disp->DestroyVideoSessionKHR(device, videoSession, pAllocator);
3356 }
3357 
GetVideoSessionMemoryRequirementsKHR(VkDevice device,VkVideoSessionKHR videoSession,uint32_t * pMemoryRequirementsCount,VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements)3358 VKAPI_ATTR VkResult VKAPI_CALL GetVideoSessionMemoryRequirementsKHR(
3359     VkDevice                                    device,
3360     VkVideoSessionKHR                           videoSession,
3361     uint32_t*                                   pMemoryRequirementsCount,
3362     VkVideoSessionMemoryRequirementsKHR*        pMemoryRequirements) {
3363     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3364     if (NULL == disp) {
3365         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3366                    "vkGetVideoSessionMemoryRequirementsKHR: Invalid device "
3367                    "[VUID-vkGetVideoSessionMemoryRequirementsKHR-device-parameter]");
3368         abort(); /* Intentionally fail so user can correct issue. */
3369     }
3370     return disp->GetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements);
3371 }
3372 
BindVideoSessionMemoryKHR(VkDevice device,VkVideoSessionKHR videoSession,uint32_t bindSessionMemoryInfoCount,const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos)3373 VKAPI_ATTR VkResult VKAPI_CALL BindVideoSessionMemoryKHR(
3374     VkDevice                                    device,
3375     VkVideoSessionKHR                           videoSession,
3376     uint32_t                                    bindSessionMemoryInfoCount,
3377     const VkBindVideoSessionMemoryInfoKHR*      pBindSessionMemoryInfos) {
3378     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3379     if (NULL == disp) {
3380         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3381                    "vkBindVideoSessionMemoryKHR: Invalid device "
3382                    "[VUID-vkBindVideoSessionMemoryKHR-device-parameter]");
3383         abort(); /* Intentionally fail so user can correct issue. */
3384     }
3385     return disp->BindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos);
3386 }
3387 
CreateVideoSessionParametersKHR(VkDevice device,const VkVideoSessionParametersCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkVideoSessionParametersKHR * pVideoSessionParameters)3388 VKAPI_ATTR VkResult VKAPI_CALL CreateVideoSessionParametersKHR(
3389     VkDevice                                    device,
3390     const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
3391     const VkAllocationCallbacks*                pAllocator,
3392     VkVideoSessionParametersKHR*                pVideoSessionParameters) {
3393     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3394     if (NULL == disp) {
3395         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3396                    "vkCreateVideoSessionParametersKHR: Invalid device "
3397                    "[VUID-vkCreateVideoSessionParametersKHR-device-parameter]");
3398         abort(); /* Intentionally fail so user can correct issue. */
3399     }
3400     return disp->CreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters);
3401 }
3402 
UpdateVideoSessionParametersKHR(VkDevice device,VkVideoSessionParametersKHR videoSessionParameters,const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo)3403 VKAPI_ATTR VkResult VKAPI_CALL UpdateVideoSessionParametersKHR(
3404     VkDevice                                    device,
3405     VkVideoSessionParametersKHR                 videoSessionParameters,
3406     const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo) {
3407     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3408     if (NULL == disp) {
3409         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3410                    "vkUpdateVideoSessionParametersKHR: Invalid device "
3411                    "[VUID-vkUpdateVideoSessionParametersKHR-device-parameter]");
3412         abort(); /* Intentionally fail so user can correct issue. */
3413     }
3414     return disp->UpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo);
3415 }
3416 
DestroyVideoSessionParametersKHR(VkDevice device,VkVideoSessionParametersKHR videoSessionParameters,const VkAllocationCallbacks * pAllocator)3417 VKAPI_ATTR void VKAPI_CALL DestroyVideoSessionParametersKHR(
3418     VkDevice                                    device,
3419     VkVideoSessionParametersKHR                 videoSessionParameters,
3420     const VkAllocationCallbacks*                pAllocator) {
3421     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3422     if (NULL == disp) {
3423         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3424                    "vkDestroyVideoSessionParametersKHR: Invalid device "
3425                    "[VUID-vkDestroyVideoSessionParametersKHR-device-parameter]");
3426         abort(); /* Intentionally fail so user can correct issue. */
3427     }
3428     disp->DestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator);
3429 }
3430 
CmdBeginVideoCodingKHR(VkCommandBuffer commandBuffer,const VkVideoBeginCodingInfoKHR * pBeginInfo)3431 VKAPI_ATTR void VKAPI_CALL CmdBeginVideoCodingKHR(
3432     VkCommandBuffer                             commandBuffer,
3433     const VkVideoBeginCodingInfoKHR*            pBeginInfo) {
3434     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3435     if (NULL == disp) {
3436         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3437                    "vkCmdBeginVideoCodingKHR: Invalid commandBuffer "
3438                    "[VUID-vkCmdBeginVideoCodingKHR-commandBuffer-parameter]");
3439         abort(); /* Intentionally fail so user can correct issue. */
3440     }
3441     disp->CmdBeginVideoCodingKHR(commandBuffer, pBeginInfo);
3442 }
3443 
CmdEndVideoCodingKHR(VkCommandBuffer commandBuffer,const VkVideoEndCodingInfoKHR * pEndCodingInfo)3444 VKAPI_ATTR void VKAPI_CALL CmdEndVideoCodingKHR(
3445     VkCommandBuffer                             commandBuffer,
3446     const VkVideoEndCodingInfoKHR*              pEndCodingInfo) {
3447     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3448     if (NULL == disp) {
3449         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3450                    "vkCmdEndVideoCodingKHR: Invalid commandBuffer "
3451                    "[VUID-vkCmdEndVideoCodingKHR-commandBuffer-parameter]");
3452         abort(); /* Intentionally fail so user can correct issue. */
3453     }
3454     disp->CmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo);
3455 }
3456 
CmdControlVideoCodingKHR(VkCommandBuffer commandBuffer,const VkVideoCodingControlInfoKHR * pCodingControlInfo)3457 VKAPI_ATTR void VKAPI_CALL CmdControlVideoCodingKHR(
3458     VkCommandBuffer                             commandBuffer,
3459     const VkVideoCodingControlInfoKHR*          pCodingControlInfo) {
3460     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3461     if (NULL == disp) {
3462         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3463                    "vkCmdControlVideoCodingKHR: Invalid commandBuffer "
3464                    "[VUID-vkCmdControlVideoCodingKHR-commandBuffer-parameter]");
3465         abort(); /* Intentionally fail so user can correct issue. */
3466     }
3467     disp->CmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo);
3468 }
3469 
3470 
3471 // ---- VK_KHR_video_decode_queue extension trampoline/terminators
3472 
CmdDecodeVideoKHR(VkCommandBuffer commandBuffer,const VkVideoDecodeInfoKHR * pDecodeInfo)3473 VKAPI_ATTR void VKAPI_CALL CmdDecodeVideoKHR(
3474     VkCommandBuffer                             commandBuffer,
3475     const VkVideoDecodeInfoKHR*                 pDecodeInfo) {
3476     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3477     if (NULL == disp) {
3478         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3479                    "vkCmdDecodeVideoKHR: Invalid commandBuffer "
3480                    "[VUID-vkCmdDecodeVideoKHR-commandBuffer-parameter]");
3481         abort(); /* Intentionally fail so user can correct issue. */
3482     }
3483     disp->CmdDecodeVideoKHR(commandBuffer, pDecodeInfo);
3484 }
3485 
3486 
3487 // ---- VK_KHR_dynamic_rendering extension trampoline/terminators
3488 
CmdBeginRenderingKHR(VkCommandBuffer commandBuffer,const VkRenderingInfo * pRenderingInfo)3489 VKAPI_ATTR void VKAPI_CALL CmdBeginRenderingKHR(
3490     VkCommandBuffer                             commandBuffer,
3491     const VkRenderingInfo*                      pRenderingInfo) {
3492     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3493     if (NULL == disp) {
3494         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3495                    "vkCmdBeginRenderingKHR: Invalid commandBuffer "
3496                    "[VUID-vkCmdBeginRenderingKHR-commandBuffer-parameter]");
3497         abort(); /* Intentionally fail so user can correct issue. */
3498     }
3499     disp->CmdBeginRenderingKHR(commandBuffer, pRenderingInfo);
3500 }
3501 
CmdEndRenderingKHR(VkCommandBuffer commandBuffer)3502 VKAPI_ATTR void VKAPI_CALL CmdEndRenderingKHR(
3503     VkCommandBuffer                             commandBuffer) {
3504     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3505     if (NULL == disp) {
3506         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3507                    "vkCmdEndRenderingKHR: Invalid commandBuffer "
3508                    "[VUID-vkCmdEndRenderingKHR-commandBuffer-parameter]");
3509         abort(); /* Intentionally fail so user can correct issue. */
3510     }
3511     disp->CmdEndRenderingKHR(commandBuffer);
3512 }
3513 
3514 
3515 // ---- VK_KHR_device_group extension trampoline/terminators
3516 
GetDeviceGroupPeerMemoryFeaturesKHR(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)3517 VKAPI_ATTR void VKAPI_CALL GetDeviceGroupPeerMemoryFeaturesKHR(
3518     VkDevice                                    device,
3519     uint32_t                                    heapIndex,
3520     uint32_t                                    localDeviceIndex,
3521     uint32_t                                    remoteDeviceIndex,
3522     VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures) {
3523     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3524     if (NULL == disp) {
3525         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3526                    "vkGetDeviceGroupPeerMemoryFeaturesKHR: Invalid device "
3527                    "[VUID-vkGetDeviceGroupPeerMemoryFeaturesKHR-device-parameter]");
3528         abort(); /* Intentionally fail so user can correct issue. */
3529     }
3530     disp->GetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
3531 }
3532 
CmdSetDeviceMaskKHR(VkCommandBuffer commandBuffer,uint32_t deviceMask)3533 VKAPI_ATTR void VKAPI_CALL CmdSetDeviceMaskKHR(
3534     VkCommandBuffer                             commandBuffer,
3535     uint32_t                                    deviceMask) {
3536     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3537     if (NULL == disp) {
3538         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3539                    "vkCmdSetDeviceMaskKHR: Invalid commandBuffer "
3540                    "[VUID-vkCmdSetDeviceMaskKHR-commandBuffer-parameter]");
3541         abort(); /* Intentionally fail so user can correct issue. */
3542     }
3543     disp->CmdSetDeviceMaskKHR(commandBuffer, deviceMask);
3544 }
3545 
CmdDispatchBaseKHR(VkCommandBuffer commandBuffer,uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)3546 VKAPI_ATTR void VKAPI_CALL CmdDispatchBaseKHR(
3547     VkCommandBuffer                             commandBuffer,
3548     uint32_t                                    baseGroupX,
3549     uint32_t                                    baseGroupY,
3550     uint32_t                                    baseGroupZ,
3551     uint32_t                                    groupCountX,
3552     uint32_t                                    groupCountY,
3553     uint32_t                                    groupCountZ) {
3554     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3555     if (NULL == disp) {
3556         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3557                    "vkCmdDispatchBaseKHR: Invalid commandBuffer "
3558                    "[VUID-vkCmdDispatchBaseKHR-commandBuffer-parameter]");
3559         abort(); /* Intentionally fail so user can correct issue. */
3560     }
3561     disp->CmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
3562 }
3563 
3564 
3565 // ---- VK_KHR_maintenance1 extension trampoline/terminators
3566 
TrimCommandPoolKHR(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)3567 VKAPI_ATTR void VKAPI_CALL TrimCommandPoolKHR(
3568     VkDevice                                    device,
3569     VkCommandPool                               commandPool,
3570     VkCommandPoolTrimFlags                      flags) {
3571     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3572     if (NULL == disp) {
3573         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3574                    "vkTrimCommandPoolKHR: Invalid device "
3575                    "[VUID-vkTrimCommandPoolKHR-device-parameter]");
3576         abort(); /* Intentionally fail so user can correct issue. */
3577     }
3578     disp->TrimCommandPoolKHR(device, commandPool, flags);
3579 }
3580 
3581 
3582 // ---- VK_KHR_external_memory_win32 extension trampoline/terminators
3583 
3584 #if defined(VK_USE_PLATFORM_WIN32_KHR)
GetMemoryWin32HandleKHR(VkDevice device,const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)3585 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandleKHR(
3586     VkDevice                                    device,
3587     const VkMemoryGetWin32HandleInfoKHR*        pGetWin32HandleInfo,
3588     HANDLE*                                     pHandle) {
3589     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3590     if (NULL == disp) {
3591         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3592                    "vkGetMemoryWin32HandleKHR: Invalid device "
3593                    "[VUID-vkGetMemoryWin32HandleKHR-device-parameter]");
3594         abort(); /* Intentionally fail so user can correct issue. */
3595     }
3596     return disp->GetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
3597 }
3598 
3599 #endif // VK_USE_PLATFORM_WIN32_KHR
3600 #if defined(VK_USE_PLATFORM_WIN32_KHR)
GetMemoryWin32HandlePropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,HANDLE handle,VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties)3601 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandlePropertiesKHR(
3602     VkDevice                                    device,
3603     VkExternalMemoryHandleTypeFlagBits          handleType,
3604     HANDLE                                      handle,
3605     VkMemoryWin32HandlePropertiesKHR*           pMemoryWin32HandleProperties) {
3606     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3607     if (NULL == disp) {
3608         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3609                    "vkGetMemoryWin32HandlePropertiesKHR: Invalid device "
3610                    "[VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter]");
3611         abort(); /* Intentionally fail so user can correct issue. */
3612     }
3613     return disp->GetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties);
3614 }
3615 
3616 #endif // VK_USE_PLATFORM_WIN32_KHR
3617 
3618 // ---- VK_KHR_external_memory_fd extension trampoline/terminators
3619 
GetMemoryFdKHR(VkDevice device,const VkMemoryGetFdInfoKHR * pGetFdInfo,int * pFd)3620 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryFdKHR(
3621     VkDevice                                    device,
3622     const VkMemoryGetFdInfoKHR*                 pGetFdInfo,
3623     int*                                        pFd) {
3624     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3625     if (NULL == disp) {
3626         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3627                    "vkGetMemoryFdKHR: Invalid device "
3628                    "[VUID-vkGetMemoryFdKHR-device-parameter]");
3629         abort(); /* Intentionally fail so user can correct issue. */
3630     }
3631     return disp->GetMemoryFdKHR(device, pGetFdInfo, pFd);
3632 }
3633 
GetMemoryFdPropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,int fd,VkMemoryFdPropertiesKHR * pMemoryFdProperties)3634 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryFdPropertiesKHR(
3635     VkDevice                                    device,
3636     VkExternalMemoryHandleTypeFlagBits          handleType,
3637     int                                         fd,
3638     VkMemoryFdPropertiesKHR*                    pMemoryFdProperties) {
3639     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3640     if (NULL == disp) {
3641         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3642                    "vkGetMemoryFdPropertiesKHR: Invalid device "
3643                    "[VUID-vkGetMemoryFdPropertiesKHR-device-parameter]");
3644         abort(); /* Intentionally fail so user can correct issue. */
3645     }
3646     return disp->GetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties);
3647 }
3648 
3649 
3650 // ---- VK_KHR_external_semaphore_win32 extension trampoline/terminators
3651 
3652 #if defined(VK_USE_PLATFORM_WIN32_KHR)
ImportSemaphoreWin32HandleKHR(VkDevice device,const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo)3653 VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreWin32HandleKHR(
3654     VkDevice                                    device,
3655     const VkImportSemaphoreWin32HandleInfoKHR*  pImportSemaphoreWin32HandleInfo) {
3656     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3657     if (NULL == disp) {
3658         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3659                    "vkImportSemaphoreWin32HandleKHR: Invalid device "
3660                    "[VUID-vkImportSemaphoreWin32HandleKHR-device-parameter]");
3661         abort(); /* Intentionally fail so user can correct issue. */
3662     }
3663     return disp->ImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo);
3664 }
3665 
3666 #endif // VK_USE_PLATFORM_WIN32_KHR
3667 #if defined(VK_USE_PLATFORM_WIN32_KHR)
GetSemaphoreWin32HandleKHR(VkDevice device,const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)3668 VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreWin32HandleKHR(
3669     VkDevice                                    device,
3670     const VkSemaphoreGetWin32HandleInfoKHR*     pGetWin32HandleInfo,
3671     HANDLE*                                     pHandle) {
3672     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3673     if (NULL == disp) {
3674         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3675                    "vkGetSemaphoreWin32HandleKHR: Invalid device "
3676                    "[VUID-vkGetSemaphoreWin32HandleKHR-device-parameter]");
3677         abort(); /* Intentionally fail so user can correct issue. */
3678     }
3679     return disp->GetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
3680 }
3681 
3682 #endif // VK_USE_PLATFORM_WIN32_KHR
3683 
3684 // ---- VK_KHR_external_semaphore_fd extension trampoline/terminators
3685 
ImportSemaphoreFdKHR(VkDevice device,const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo)3686 VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreFdKHR(
3687     VkDevice                                    device,
3688     const VkImportSemaphoreFdInfoKHR*           pImportSemaphoreFdInfo) {
3689     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3690     if (NULL == disp) {
3691         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3692                    "vkImportSemaphoreFdKHR: Invalid device "
3693                    "[VUID-vkImportSemaphoreFdKHR-device-parameter]");
3694         abort(); /* Intentionally fail so user can correct issue. */
3695     }
3696     return disp->ImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo);
3697 }
3698 
GetSemaphoreFdKHR(VkDevice device,const VkSemaphoreGetFdInfoKHR * pGetFdInfo,int * pFd)3699 VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreFdKHR(
3700     VkDevice                                    device,
3701     const VkSemaphoreGetFdInfoKHR*              pGetFdInfo,
3702     int*                                        pFd) {
3703     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3704     if (NULL == disp) {
3705         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3706                    "vkGetSemaphoreFdKHR: Invalid device "
3707                    "[VUID-vkGetSemaphoreFdKHR-device-parameter]");
3708         abort(); /* Intentionally fail so user can correct issue. */
3709     }
3710     return disp->GetSemaphoreFdKHR(device, pGetFdInfo, pFd);
3711 }
3712 
3713 
3714 // ---- VK_KHR_push_descriptor extension trampoline/terminators
3715 
CmdPushDescriptorSetKHR(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t set,uint32_t descriptorWriteCount,const VkWriteDescriptorSet * pDescriptorWrites)3716 VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetKHR(
3717     VkCommandBuffer                             commandBuffer,
3718     VkPipelineBindPoint                         pipelineBindPoint,
3719     VkPipelineLayout                            layout,
3720     uint32_t                                    set,
3721     uint32_t                                    descriptorWriteCount,
3722     const VkWriteDescriptorSet*                 pDescriptorWrites) {
3723     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3724     if (NULL == disp) {
3725         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3726                    "vkCmdPushDescriptorSetKHR: Invalid commandBuffer "
3727                    "[VUID-vkCmdPushDescriptorSetKHR-commandBuffer-parameter]");
3728         abort(); /* Intentionally fail so user can correct issue. */
3729     }
3730     disp->CmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites);
3731 }
3732 
CmdPushDescriptorSetWithTemplateKHR(VkCommandBuffer commandBuffer,VkDescriptorUpdateTemplate descriptorUpdateTemplate,VkPipelineLayout layout,uint32_t set,const void * pData)3733 VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetWithTemplateKHR(
3734     VkCommandBuffer                             commandBuffer,
3735     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
3736     VkPipelineLayout                            layout,
3737     uint32_t                                    set,
3738     const void*                                 pData) {
3739     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3740     if (NULL == disp) {
3741         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3742                    "vkCmdPushDescriptorSetWithTemplateKHR: Invalid commandBuffer "
3743                    "[VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter]");
3744         abort(); /* Intentionally fail so user can correct issue. */
3745     }
3746     disp->CmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData);
3747 }
3748 
3749 
3750 // ---- VK_KHR_descriptor_update_template extension trampoline/terminators
3751 
CreateDescriptorUpdateTemplateKHR(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)3752 VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorUpdateTemplateKHR(
3753     VkDevice                                    device,
3754     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3755     const VkAllocationCallbacks*                pAllocator,
3756     VkDescriptorUpdateTemplate*                 pDescriptorUpdateTemplate) {
3757     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3758     if (NULL == disp) {
3759         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3760                    "vkCreateDescriptorUpdateTemplateKHR: Invalid device "
3761                    "[VUID-vkCreateDescriptorUpdateTemplateKHR-device-parameter]");
3762         abort(); /* Intentionally fail so user can correct issue. */
3763     }
3764     return disp->CreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
3765 }
3766 
DestroyDescriptorUpdateTemplateKHR(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)3767 VKAPI_ATTR void VKAPI_CALL DestroyDescriptorUpdateTemplateKHR(
3768     VkDevice                                    device,
3769     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
3770     const VkAllocationCallbacks*                pAllocator) {
3771     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3772     if (NULL == disp) {
3773         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3774                    "vkDestroyDescriptorUpdateTemplateKHR: Invalid device "
3775                    "[VUID-vkDestroyDescriptorUpdateTemplateKHR-device-parameter]");
3776         abort(); /* Intentionally fail so user can correct issue. */
3777     }
3778     disp->DestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator);
3779 }
3780 
UpdateDescriptorSetWithTemplateKHR(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)3781 VKAPI_ATTR void VKAPI_CALL UpdateDescriptorSetWithTemplateKHR(
3782     VkDevice                                    device,
3783     VkDescriptorSet                             descriptorSet,
3784     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
3785     const void*                                 pData) {
3786     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3787     if (NULL == disp) {
3788         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3789                    "vkUpdateDescriptorSetWithTemplateKHR: Invalid device "
3790                    "[VUID-vkUpdateDescriptorSetWithTemplateKHR-device-parameter]");
3791         abort(); /* Intentionally fail so user can correct issue. */
3792     }
3793     disp->UpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData);
3794 }
3795 
3796 
3797 // ---- VK_KHR_create_renderpass2 extension trampoline/terminators
3798 
CreateRenderPass2KHR(VkDevice device,const VkRenderPassCreateInfo2 * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)3799 VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass2KHR(
3800     VkDevice                                    device,
3801     const VkRenderPassCreateInfo2*              pCreateInfo,
3802     const VkAllocationCallbacks*                pAllocator,
3803     VkRenderPass*                               pRenderPass) {
3804     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3805     if (NULL == disp) {
3806         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3807                    "vkCreateRenderPass2KHR: Invalid device "
3808                    "[VUID-vkCreateRenderPass2KHR-device-parameter]");
3809         abort(); /* Intentionally fail so user can correct issue. */
3810     }
3811     return disp->CreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
3812 }
3813 
CmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,const VkSubpassBeginInfo * pSubpassBeginInfo)3814 VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass2KHR(
3815     VkCommandBuffer                             commandBuffer,
3816     const VkRenderPassBeginInfo*                pRenderPassBegin,
3817     const VkSubpassBeginInfo*                   pSubpassBeginInfo) {
3818     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3819     if (NULL == disp) {
3820         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3821                    "vkCmdBeginRenderPass2KHR: Invalid commandBuffer "
3822                    "[VUID-vkCmdBeginRenderPass2KHR-commandBuffer-parameter]");
3823         abort(); /* Intentionally fail so user can correct issue. */
3824     }
3825     disp->CmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
3826 }
3827 
CmdNextSubpass2KHR(VkCommandBuffer commandBuffer,const VkSubpassBeginInfo * pSubpassBeginInfo,const VkSubpassEndInfo * pSubpassEndInfo)3828 VKAPI_ATTR void VKAPI_CALL CmdNextSubpass2KHR(
3829     VkCommandBuffer                             commandBuffer,
3830     const VkSubpassBeginInfo*                   pSubpassBeginInfo,
3831     const VkSubpassEndInfo*                     pSubpassEndInfo) {
3832     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3833     if (NULL == disp) {
3834         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3835                    "vkCmdNextSubpass2KHR: Invalid commandBuffer "
3836                    "[VUID-vkCmdNextSubpass2KHR-commandBuffer-parameter]");
3837         abort(); /* Intentionally fail so user can correct issue. */
3838     }
3839     disp->CmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
3840 }
3841 
CmdEndRenderPass2KHR(VkCommandBuffer commandBuffer,const VkSubpassEndInfo * pSubpassEndInfo)3842 VKAPI_ATTR void VKAPI_CALL CmdEndRenderPass2KHR(
3843     VkCommandBuffer                             commandBuffer,
3844     const VkSubpassEndInfo*                     pSubpassEndInfo) {
3845     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3846     if (NULL == disp) {
3847         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3848                    "vkCmdEndRenderPass2KHR: Invalid commandBuffer "
3849                    "[VUID-vkCmdEndRenderPass2KHR-commandBuffer-parameter]");
3850         abort(); /* Intentionally fail so user can correct issue. */
3851     }
3852     disp->CmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo);
3853 }
3854 
3855 
3856 // ---- VK_KHR_shared_presentable_image extension trampoline/terminators
3857 
GetSwapchainStatusKHR(VkDevice device,VkSwapchainKHR swapchain)3858 VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainStatusKHR(
3859     VkDevice                                    device,
3860     VkSwapchainKHR                              swapchain) {
3861     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3862     if (NULL == disp) {
3863         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3864                    "vkGetSwapchainStatusKHR: Invalid device "
3865                    "[VUID-vkGetSwapchainStatusKHR-device-parameter]");
3866         abort(); /* Intentionally fail so user can correct issue. */
3867     }
3868     return disp->GetSwapchainStatusKHR(device, swapchain);
3869 }
3870 
3871 
3872 // ---- VK_KHR_external_fence_win32 extension trampoline/terminators
3873 
3874 #if defined(VK_USE_PLATFORM_WIN32_KHR)
ImportFenceWin32HandleKHR(VkDevice device,const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo)3875 VKAPI_ATTR VkResult VKAPI_CALL ImportFenceWin32HandleKHR(
3876     VkDevice                                    device,
3877     const VkImportFenceWin32HandleInfoKHR*      pImportFenceWin32HandleInfo) {
3878     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3879     if (NULL == disp) {
3880         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3881                    "vkImportFenceWin32HandleKHR: Invalid device "
3882                    "[VUID-vkImportFenceWin32HandleKHR-device-parameter]");
3883         abort(); /* Intentionally fail so user can correct issue. */
3884     }
3885     return disp->ImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo);
3886 }
3887 
3888 #endif // VK_USE_PLATFORM_WIN32_KHR
3889 #if defined(VK_USE_PLATFORM_WIN32_KHR)
GetFenceWin32HandleKHR(VkDevice device,const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)3890 VKAPI_ATTR VkResult VKAPI_CALL GetFenceWin32HandleKHR(
3891     VkDevice                                    device,
3892     const VkFenceGetWin32HandleInfoKHR*         pGetWin32HandleInfo,
3893     HANDLE*                                     pHandle) {
3894     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3895     if (NULL == disp) {
3896         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3897                    "vkGetFenceWin32HandleKHR: Invalid device "
3898                    "[VUID-vkGetFenceWin32HandleKHR-device-parameter]");
3899         abort(); /* Intentionally fail so user can correct issue. */
3900     }
3901     return disp->GetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
3902 }
3903 
3904 #endif // VK_USE_PLATFORM_WIN32_KHR
3905 
3906 // ---- VK_KHR_external_fence_fd extension trampoline/terminators
3907 
ImportFenceFdKHR(VkDevice device,const VkImportFenceFdInfoKHR * pImportFenceFdInfo)3908 VKAPI_ATTR VkResult VKAPI_CALL ImportFenceFdKHR(
3909     VkDevice                                    device,
3910     const VkImportFenceFdInfoKHR*               pImportFenceFdInfo) {
3911     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3912     if (NULL == disp) {
3913         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3914                    "vkImportFenceFdKHR: Invalid device "
3915                    "[VUID-vkImportFenceFdKHR-device-parameter]");
3916         abort(); /* Intentionally fail so user can correct issue. */
3917     }
3918     return disp->ImportFenceFdKHR(device, pImportFenceFdInfo);
3919 }
3920 
GetFenceFdKHR(VkDevice device,const VkFenceGetFdInfoKHR * pGetFdInfo,int * pFd)3921 VKAPI_ATTR VkResult VKAPI_CALL GetFenceFdKHR(
3922     VkDevice                                    device,
3923     const VkFenceGetFdInfoKHR*                  pGetFdInfo,
3924     int*                                        pFd) {
3925     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3926     if (NULL == disp) {
3927         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3928                    "vkGetFenceFdKHR: Invalid device "
3929                    "[VUID-vkGetFenceFdKHR-device-parameter]");
3930         abort(); /* Intentionally fail so user can correct issue. */
3931     }
3932     return disp->GetFenceFdKHR(device, pGetFdInfo, pFd);
3933 }
3934 
3935 
3936 // ---- VK_KHR_performance_query extension trampoline/terminators
3937 
EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,uint32_t * pCounterCount,VkPerformanceCounterKHR * pCounters,VkPerformanceCounterDescriptionKHR * pCounterDescriptions)3938 VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
3939     VkPhysicalDevice                            physicalDevice,
3940     uint32_t                                    queueFamilyIndex,
3941     uint32_t*                                   pCounterCount,
3942     VkPerformanceCounterKHR*                    pCounters,
3943     VkPerformanceCounterDescriptionKHR*         pCounterDescriptions) {
3944     const VkLayerInstanceDispatchTable *disp;
3945     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
3946     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
3947         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3948                    "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR: Invalid physicalDevice "
3949                    "[VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-physicalDevice-parameter]");
3950         abort(); /* Intentionally fail so user can correct issue. */
3951     }
3952     disp = loader_get_instance_layer_dispatch(physicalDevice);
3953     return disp->EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(unwrapped_phys_dev, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions);
3954 }
3955 
terminator_EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,uint32_t * pCounterCount,VkPerformanceCounterKHR * pCounters,VkPerformanceCounterDescriptionKHR * pCounterDescriptions)3956 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
3957     VkPhysicalDevice                            physicalDevice,
3958     uint32_t                                    queueFamilyIndex,
3959     uint32_t*                                   pCounterCount,
3960     VkPerformanceCounterKHR*                    pCounters,
3961     VkPerformanceCounterDescriptionKHR*         pCounterDescriptions) {
3962     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
3963     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
3964     if (NULL == icd_term->dispatch.EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR) {
3965         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
3966                    "ICD associated with VkPhysicalDevice does not support EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
3967         abort(); /* Intentionally fail so user can correct issue. */
3968     }
3969     return icd_term->dispatch.EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(phys_dev_term->phys_dev, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions);
3970 }
3971 
GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(VkPhysicalDevice physicalDevice,const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo,uint32_t * pNumPasses)3972 VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
3973     VkPhysicalDevice                            physicalDevice,
3974     const VkQueryPoolPerformanceCreateInfoKHR*  pPerformanceQueryCreateInfo,
3975     uint32_t*                                   pNumPasses) {
3976     const VkLayerInstanceDispatchTable *disp;
3977     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
3978     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
3979         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3980                    "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR: Invalid physicalDevice "
3981                    "[VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-physicalDevice-parameter]");
3982         abort(); /* Intentionally fail so user can correct issue. */
3983     }
3984     disp = loader_get_instance_layer_dispatch(physicalDevice);
3985     disp->GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(unwrapped_phys_dev, pPerformanceQueryCreateInfo, pNumPasses);
3986 }
3987 
terminator_GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(VkPhysicalDevice physicalDevice,const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo,uint32_t * pNumPasses)3988 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
3989     VkPhysicalDevice                            physicalDevice,
3990     const VkQueryPoolPerformanceCreateInfoKHR*  pPerformanceQueryCreateInfo,
3991     uint32_t*                                   pNumPasses) {
3992     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
3993     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
3994     if (NULL == icd_term->dispatch.GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR) {
3995         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
3996                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
3997         abort(); /* Intentionally fail so user can correct issue. */
3998     }
3999     icd_term->dispatch.GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(phys_dev_term->phys_dev, pPerformanceQueryCreateInfo, pNumPasses);
4000 }
4001 
AcquireProfilingLockKHR(VkDevice device,const VkAcquireProfilingLockInfoKHR * pInfo)4002 VKAPI_ATTR VkResult VKAPI_CALL AcquireProfilingLockKHR(
4003     VkDevice                                    device,
4004     const VkAcquireProfilingLockInfoKHR*        pInfo) {
4005     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4006     if (NULL == disp) {
4007         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4008                    "vkAcquireProfilingLockKHR: Invalid device "
4009                    "[VUID-vkAcquireProfilingLockKHR-device-parameter]");
4010         abort(); /* Intentionally fail so user can correct issue. */
4011     }
4012     return disp->AcquireProfilingLockKHR(device, pInfo);
4013 }
4014 
ReleaseProfilingLockKHR(VkDevice device)4015 VKAPI_ATTR void VKAPI_CALL ReleaseProfilingLockKHR(
4016     VkDevice                                    device) {
4017     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4018     if (NULL == disp) {
4019         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4020                    "vkReleaseProfilingLockKHR: Invalid device "
4021                    "[VUID-vkReleaseProfilingLockKHR-device-parameter]");
4022         abort(); /* Intentionally fail so user can correct issue. */
4023     }
4024     disp->ReleaseProfilingLockKHR(device);
4025 }
4026 
4027 
4028 // ---- VK_KHR_get_memory_requirements2 extension trampoline/terminators
4029 
GetImageMemoryRequirements2KHR(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)4030 VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements2KHR(
4031     VkDevice                                    device,
4032     const VkImageMemoryRequirementsInfo2*       pInfo,
4033     VkMemoryRequirements2*                      pMemoryRequirements) {
4034     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4035     if (NULL == disp) {
4036         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4037                    "vkGetImageMemoryRequirements2KHR: Invalid device "
4038                    "[VUID-vkGetImageMemoryRequirements2KHR-device-parameter]");
4039         abort(); /* Intentionally fail so user can correct issue. */
4040     }
4041     disp->GetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements);
4042 }
4043 
GetBufferMemoryRequirements2KHR(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)4044 VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements2KHR(
4045     VkDevice                                    device,
4046     const VkBufferMemoryRequirementsInfo2*      pInfo,
4047     VkMemoryRequirements2*                      pMemoryRequirements) {
4048     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4049     if (NULL == disp) {
4050         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4051                    "vkGetBufferMemoryRequirements2KHR: Invalid device "
4052                    "[VUID-vkGetBufferMemoryRequirements2KHR-device-parameter]");
4053         abort(); /* Intentionally fail so user can correct issue. */
4054     }
4055     disp->GetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements);
4056 }
4057 
GetImageSparseMemoryRequirements2KHR(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)4058 VKAPI_ATTR void VKAPI_CALL GetImageSparseMemoryRequirements2KHR(
4059     VkDevice                                    device,
4060     const VkImageSparseMemoryRequirementsInfo2* pInfo,
4061     uint32_t*                                   pSparseMemoryRequirementCount,
4062     VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements) {
4063     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4064     if (NULL == disp) {
4065         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4066                    "vkGetImageSparseMemoryRequirements2KHR: Invalid device "
4067                    "[VUID-vkGetImageSparseMemoryRequirements2KHR-device-parameter]");
4068         abort(); /* Intentionally fail so user can correct issue. */
4069     }
4070     disp->GetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
4071 }
4072 
4073 
4074 // ---- VK_KHR_sampler_ycbcr_conversion extension trampoline/terminators
4075 
CreateSamplerYcbcrConversionKHR(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)4076 VKAPI_ATTR VkResult VKAPI_CALL CreateSamplerYcbcrConversionKHR(
4077     VkDevice                                    device,
4078     const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
4079     const VkAllocationCallbacks*                pAllocator,
4080     VkSamplerYcbcrConversion*                   pYcbcrConversion) {
4081     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4082     if (NULL == disp) {
4083         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4084                    "vkCreateSamplerYcbcrConversionKHR: Invalid device "
4085                    "[VUID-vkCreateSamplerYcbcrConversionKHR-device-parameter]");
4086         abort(); /* Intentionally fail so user can correct issue. */
4087     }
4088     return disp->CreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion);
4089 }
4090 
DestroySamplerYcbcrConversionKHR(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)4091 VKAPI_ATTR void VKAPI_CALL DestroySamplerYcbcrConversionKHR(
4092     VkDevice                                    device,
4093     VkSamplerYcbcrConversion                    ycbcrConversion,
4094     const VkAllocationCallbacks*                pAllocator) {
4095     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4096     if (NULL == disp) {
4097         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4098                    "vkDestroySamplerYcbcrConversionKHR: Invalid device "
4099                    "[VUID-vkDestroySamplerYcbcrConversionKHR-device-parameter]");
4100         abort(); /* Intentionally fail so user can correct issue. */
4101     }
4102     disp->DestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator);
4103 }
4104 
4105 
4106 // ---- VK_KHR_bind_memory2 extension trampoline/terminators
4107 
BindBufferMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)4108 VKAPI_ATTR VkResult VKAPI_CALL BindBufferMemory2KHR(
4109     VkDevice                                    device,
4110     uint32_t                                    bindInfoCount,
4111     const VkBindBufferMemoryInfo*               pBindInfos) {
4112     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4113     if (NULL == disp) {
4114         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4115                    "vkBindBufferMemory2KHR: Invalid device "
4116                    "[VUID-vkBindBufferMemory2KHR-device-parameter]");
4117         abort(); /* Intentionally fail so user can correct issue. */
4118     }
4119     return disp->BindBufferMemory2KHR(device, bindInfoCount, pBindInfos);
4120 }
4121 
BindImageMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)4122 VKAPI_ATTR VkResult VKAPI_CALL BindImageMemory2KHR(
4123     VkDevice                                    device,
4124     uint32_t                                    bindInfoCount,
4125     const VkBindImageMemoryInfo*                pBindInfos) {
4126     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4127     if (NULL == disp) {
4128         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4129                    "vkBindImageMemory2KHR: Invalid device "
4130                    "[VUID-vkBindImageMemory2KHR-device-parameter]");
4131         abort(); /* Intentionally fail so user can correct issue. */
4132     }
4133     return disp->BindImageMemory2KHR(device, bindInfoCount, pBindInfos);
4134 }
4135 
4136 
4137 // ---- VK_KHR_maintenance3 extension trampoline/terminators
4138 
GetDescriptorSetLayoutSupportKHR(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)4139 VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSupportKHR(
4140     VkDevice                                    device,
4141     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
4142     VkDescriptorSetLayoutSupport*               pSupport) {
4143     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4144     if (NULL == disp) {
4145         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4146                    "vkGetDescriptorSetLayoutSupportKHR: Invalid device "
4147                    "[VUID-vkGetDescriptorSetLayoutSupportKHR-device-parameter]");
4148         abort(); /* Intentionally fail so user can correct issue. */
4149     }
4150     disp->GetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport);
4151 }
4152 
4153 
4154 // ---- VK_KHR_draw_indirect_count extension trampoline/terminators
4155 
CmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)4156 VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCountKHR(
4157     VkCommandBuffer                             commandBuffer,
4158     VkBuffer                                    buffer,
4159     VkDeviceSize                                offset,
4160     VkBuffer                                    countBuffer,
4161     VkDeviceSize                                countBufferOffset,
4162     uint32_t                                    maxDrawCount,
4163     uint32_t                                    stride) {
4164     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4165     if (NULL == disp) {
4166         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4167                    "vkCmdDrawIndirectCountKHR: Invalid commandBuffer "
4168                    "[VUID-vkCmdDrawIndirectCountKHR-commandBuffer-parameter]");
4169         abort(); /* Intentionally fail so user can correct issue. */
4170     }
4171     disp->CmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
4172 }
4173 
CmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)4174 VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCountKHR(
4175     VkCommandBuffer                             commandBuffer,
4176     VkBuffer                                    buffer,
4177     VkDeviceSize                                offset,
4178     VkBuffer                                    countBuffer,
4179     VkDeviceSize                                countBufferOffset,
4180     uint32_t                                    maxDrawCount,
4181     uint32_t                                    stride) {
4182     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4183     if (NULL == disp) {
4184         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4185                    "vkCmdDrawIndexedIndirectCountKHR: Invalid commandBuffer "
4186                    "[VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-parameter]");
4187         abort(); /* Intentionally fail so user can correct issue. */
4188     }
4189     disp->CmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
4190 }
4191 
4192 
4193 // ---- VK_KHR_timeline_semaphore extension trampoline/terminators
4194 
GetSemaphoreCounterValueKHR(VkDevice device,VkSemaphore semaphore,uint64_t * pValue)4195 VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreCounterValueKHR(
4196     VkDevice                                    device,
4197     VkSemaphore                                 semaphore,
4198     uint64_t*                                   pValue) {
4199     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4200     if (NULL == disp) {
4201         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4202                    "vkGetSemaphoreCounterValueKHR: Invalid device "
4203                    "[VUID-vkGetSemaphoreCounterValueKHR-device-parameter]");
4204         abort(); /* Intentionally fail so user can correct issue. */
4205     }
4206     return disp->GetSemaphoreCounterValueKHR(device, semaphore, pValue);
4207 }
4208 
WaitSemaphoresKHR(VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)4209 VKAPI_ATTR VkResult VKAPI_CALL WaitSemaphoresKHR(
4210     VkDevice                                    device,
4211     const VkSemaphoreWaitInfo*                  pWaitInfo,
4212     uint64_t                                    timeout) {
4213     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4214     if (NULL == disp) {
4215         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4216                    "vkWaitSemaphoresKHR: Invalid device "
4217                    "[VUID-vkWaitSemaphoresKHR-device-parameter]");
4218         abort(); /* Intentionally fail so user can correct issue. */
4219     }
4220     return disp->WaitSemaphoresKHR(device, pWaitInfo, timeout);
4221 }
4222 
SignalSemaphoreKHR(VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)4223 VKAPI_ATTR VkResult VKAPI_CALL SignalSemaphoreKHR(
4224     VkDevice                                    device,
4225     const VkSemaphoreSignalInfo*                pSignalInfo) {
4226     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4227     if (NULL == disp) {
4228         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4229                    "vkSignalSemaphoreKHR: Invalid device "
4230                    "[VUID-vkSignalSemaphoreKHR-device-parameter]");
4231         abort(); /* Intentionally fail so user can correct issue. */
4232     }
4233     return disp->SignalSemaphoreKHR(device, pSignalInfo);
4234 }
4235 
4236 
4237 // ---- VK_KHR_fragment_shading_rate extension trampoline/terminators
4238 
GetPhysicalDeviceFragmentShadingRatesKHR(VkPhysicalDevice physicalDevice,uint32_t * pFragmentShadingRateCount,VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates)4239 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceFragmentShadingRatesKHR(
4240     VkPhysicalDevice                            physicalDevice,
4241     uint32_t*                                   pFragmentShadingRateCount,
4242     VkPhysicalDeviceFragmentShadingRateKHR*     pFragmentShadingRates) {
4243     const VkLayerInstanceDispatchTable *disp;
4244     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
4245     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
4246         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4247                    "vkGetPhysicalDeviceFragmentShadingRatesKHR: Invalid physicalDevice "
4248                    "[VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-physicalDevice-parameter]");
4249         abort(); /* Intentionally fail so user can correct issue. */
4250     }
4251     disp = loader_get_instance_layer_dispatch(physicalDevice);
4252     return disp->GetPhysicalDeviceFragmentShadingRatesKHR(unwrapped_phys_dev, pFragmentShadingRateCount, pFragmentShadingRates);
4253 }
4254 
terminator_GetPhysicalDeviceFragmentShadingRatesKHR(VkPhysicalDevice physicalDevice,uint32_t * pFragmentShadingRateCount,VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates)4255 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceFragmentShadingRatesKHR(
4256     VkPhysicalDevice                            physicalDevice,
4257     uint32_t*                                   pFragmentShadingRateCount,
4258     VkPhysicalDeviceFragmentShadingRateKHR*     pFragmentShadingRates) {
4259     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
4260     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
4261     if (NULL == icd_term->dispatch.GetPhysicalDeviceFragmentShadingRatesKHR) {
4262         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
4263                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceFragmentShadingRatesKHR");
4264         abort(); /* Intentionally fail so user can correct issue. */
4265     }
4266     return icd_term->dispatch.GetPhysicalDeviceFragmentShadingRatesKHR(phys_dev_term->phys_dev, pFragmentShadingRateCount, pFragmentShadingRates);
4267 }
4268 
CmdSetFragmentShadingRateKHR(VkCommandBuffer commandBuffer,const VkExtent2D * pFragmentSize,const VkFragmentShadingRateCombinerOpKHR combinerOps[2])4269 VKAPI_ATTR void VKAPI_CALL CmdSetFragmentShadingRateKHR(
4270     VkCommandBuffer                             commandBuffer,
4271     const VkExtent2D*                           pFragmentSize,
4272     const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]) {
4273     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4274     if (NULL == disp) {
4275         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4276                    "vkCmdSetFragmentShadingRateKHR: Invalid commandBuffer "
4277                    "[VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-parameter]");
4278         abort(); /* Intentionally fail so user can correct issue. */
4279     }
4280     disp->CmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps);
4281 }
4282 
4283 
4284 // ---- VK_KHR_present_wait extension trampoline/terminators
4285 
WaitForPresentKHR(VkDevice device,VkSwapchainKHR swapchain,uint64_t presentId,uint64_t timeout)4286 VKAPI_ATTR VkResult VKAPI_CALL WaitForPresentKHR(
4287     VkDevice                                    device,
4288     VkSwapchainKHR                              swapchain,
4289     uint64_t                                    presentId,
4290     uint64_t                                    timeout) {
4291     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4292     if (NULL == disp) {
4293         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4294                    "vkWaitForPresentKHR: Invalid device "
4295                    "[VUID-vkWaitForPresentKHR-device-parameter]");
4296         abort(); /* Intentionally fail so user can correct issue. */
4297     }
4298     return disp->WaitForPresentKHR(device, swapchain, presentId, timeout);
4299 }
4300 
4301 
4302 // ---- VK_KHR_buffer_device_address extension trampoline/terminators
4303 
GetBufferDeviceAddressKHR(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)4304 VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressKHR(
4305     VkDevice                                    device,
4306     const VkBufferDeviceAddressInfo*            pInfo) {
4307     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4308     if (NULL == disp) {
4309         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4310                    "vkGetBufferDeviceAddressKHR: Invalid device "
4311                    "[VUID-vkGetBufferDeviceAddressKHR-device-parameter]");
4312         abort(); /* Intentionally fail so user can correct issue. */
4313     }
4314     return disp->GetBufferDeviceAddressKHR(device, pInfo);
4315 }
4316 
GetBufferOpaqueCaptureAddressKHR(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)4317 VKAPI_ATTR uint64_t VKAPI_CALL GetBufferOpaqueCaptureAddressKHR(
4318     VkDevice                                    device,
4319     const VkBufferDeviceAddressInfo*            pInfo) {
4320     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4321     if (NULL == disp) {
4322         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4323                    "vkGetBufferOpaqueCaptureAddressKHR: Invalid device "
4324                    "[VUID-vkGetBufferOpaqueCaptureAddressKHR-device-parameter]");
4325         abort(); /* Intentionally fail so user can correct issue. */
4326     }
4327     return disp->GetBufferOpaqueCaptureAddressKHR(device, pInfo);
4328 }
4329 
GetDeviceMemoryOpaqueCaptureAddressKHR(VkDevice device,const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo)4330 VKAPI_ATTR uint64_t VKAPI_CALL GetDeviceMemoryOpaqueCaptureAddressKHR(
4331     VkDevice                                    device,
4332     const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) {
4333     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4334     if (NULL == disp) {
4335         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4336                    "vkGetDeviceMemoryOpaqueCaptureAddressKHR: Invalid device "
4337                    "[VUID-vkGetDeviceMemoryOpaqueCaptureAddressKHR-device-parameter]");
4338         abort(); /* Intentionally fail so user can correct issue. */
4339     }
4340     return disp->GetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo);
4341 }
4342 
4343 
4344 // ---- VK_KHR_deferred_host_operations extension trampoline/terminators
4345 
CreateDeferredOperationKHR(VkDevice device,const VkAllocationCallbacks * pAllocator,VkDeferredOperationKHR * pDeferredOperation)4346 VKAPI_ATTR VkResult VKAPI_CALL CreateDeferredOperationKHR(
4347     VkDevice                                    device,
4348     const VkAllocationCallbacks*                pAllocator,
4349     VkDeferredOperationKHR*                     pDeferredOperation) {
4350     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4351     if (NULL == disp) {
4352         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4353                    "vkCreateDeferredOperationKHR: Invalid device "
4354                    "[VUID-vkCreateDeferredOperationKHR-device-parameter]");
4355         abort(); /* Intentionally fail so user can correct issue. */
4356     }
4357     return disp->CreateDeferredOperationKHR(device, pAllocator, pDeferredOperation);
4358 }
4359 
DestroyDeferredOperationKHR(VkDevice device,VkDeferredOperationKHR operation,const VkAllocationCallbacks * pAllocator)4360 VKAPI_ATTR void VKAPI_CALL DestroyDeferredOperationKHR(
4361     VkDevice                                    device,
4362     VkDeferredOperationKHR                      operation,
4363     const VkAllocationCallbacks*                pAllocator) {
4364     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4365     if (NULL == disp) {
4366         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4367                    "vkDestroyDeferredOperationKHR: Invalid device "
4368                    "[VUID-vkDestroyDeferredOperationKHR-device-parameter]");
4369         abort(); /* Intentionally fail so user can correct issue. */
4370     }
4371     disp->DestroyDeferredOperationKHR(device, operation, pAllocator);
4372 }
4373 
GetDeferredOperationMaxConcurrencyKHR(VkDevice device,VkDeferredOperationKHR operation)4374 VKAPI_ATTR uint32_t VKAPI_CALL GetDeferredOperationMaxConcurrencyKHR(
4375     VkDevice                                    device,
4376     VkDeferredOperationKHR                      operation) {
4377     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4378     if (NULL == disp) {
4379         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4380                    "vkGetDeferredOperationMaxConcurrencyKHR: Invalid device "
4381                    "[VUID-vkGetDeferredOperationMaxConcurrencyKHR-device-parameter]");
4382         abort(); /* Intentionally fail so user can correct issue. */
4383     }
4384     return disp->GetDeferredOperationMaxConcurrencyKHR(device, operation);
4385 }
4386 
GetDeferredOperationResultKHR(VkDevice device,VkDeferredOperationKHR operation)4387 VKAPI_ATTR VkResult VKAPI_CALL GetDeferredOperationResultKHR(
4388     VkDevice                                    device,
4389     VkDeferredOperationKHR                      operation) {
4390     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4391     if (NULL == disp) {
4392         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4393                    "vkGetDeferredOperationResultKHR: Invalid device "
4394                    "[VUID-vkGetDeferredOperationResultKHR-device-parameter]");
4395         abort(); /* Intentionally fail so user can correct issue. */
4396     }
4397     return disp->GetDeferredOperationResultKHR(device, operation);
4398 }
4399 
DeferredOperationJoinKHR(VkDevice device,VkDeferredOperationKHR operation)4400 VKAPI_ATTR VkResult VKAPI_CALL DeferredOperationJoinKHR(
4401     VkDevice                                    device,
4402     VkDeferredOperationKHR                      operation) {
4403     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4404     if (NULL == disp) {
4405         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4406                    "vkDeferredOperationJoinKHR: Invalid device "
4407                    "[VUID-vkDeferredOperationJoinKHR-device-parameter]");
4408         abort(); /* Intentionally fail so user can correct issue. */
4409     }
4410     return disp->DeferredOperationJoinKHR(device, operation);
4411 }
4412 
4413 
4414 // ---- VK_KHR_pipeline_executable_properties extension trampoline/terminators
4415 
GetPipelineExecutablePropertiesKHR(VkDevice device,const VkPipelineInfoKHR * pPipelineInfo,uint32_t * pExecutableCount,VkPipelineExecutablePropertiesKHR * pProperties)4416 VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutablePropertiesKHR(
4417     VkDevice                                    device,
4418     const VkPipelineInfoKHR*                    pPipelineInfo,
4419     uint32_t*                                   pExecutableCount,
4420     VkPipelineExecutablePropertiesKHR*          pProperties) {
4421     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4422     if (NULL == disp) {
4423         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4424                    "vkGetPipelineExecutablePropertiesKHR: Invalid device "
4425                    "[VUID-vkGetPipelineExecutablePropertiesKHR-device-parameter]");
4426         abort(); /* Intentionally fail so user can correct issue. */
4427     }
4428     return disp->GetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties);
4429 }
4430 
GetPipelineExecutableStatisticsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pStatisticCount,VkPipelineExecutableStatisticKHR * pStatistics)4431 VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutableStatisticsKHR(
4432     VkDevice                                    device,
4433     const VkPipelineExecutableInfoKHR*          pExecutableInfo,
4434     uint32_t*                                   pStatisticCount,
4435     VkPipelineExecutableStatisticKHR*           pStatistics) {
4436     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4437     if (NULL == disp) {
4438         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4439                    "vkGetPipelineExecutableStatisticsKHR: Invalid device "
4440                    "[VUID-vkGetPipelineExecutableStatisticsKHR-device-parameter]");
4441         abort(); /* Intentionally fail so user can correct issue. */
4442     }
4443     return disp->GetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics);
4444 }
4445 
GetPipelineExecutableInternalRepresentationsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pInternalRepresentationCount,VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations)4446 VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutableInternalRepresentationsKHR(
4447     VkDevice                                    device,
4448     const VkPipelineExecutableInfoKHR*          pExecutableInfo,
4449     uint32_t*                                   pInternalRepresentationCount,
4450     VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) {
4451     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4452     if (NULL == disp) {
4453         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4454                    "vkGetPipelineExecutableInternalRepresentationsKHR: Invalid device "
4455                    "[VUID-vkGetPipelineExecutableInternalRepresentationsKHR-device-parameter]");
4456         abort(); /* Intentionally fail so user can correct issue. */
4457     }
4458     return disp->GetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations);
4459 }
4460 
4461 
4462 // ---- VK_KHR_map_memory2 extension trampoline/terminators
4463 
MapMemory2KHR(VkDevice device,const VkMemoryMapInfoKHR * pMemoryMapInfo,void ** ppData)4464 VKAPI_ATTR VkResult VKAPI_CALL MapMemory2KHR(
4465     VkDevice                                    device,
4466     const VkMemoryMapInfoKHR*                   pMemoryMapInfo,
4467     void**                                      ppData) {
4468     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4469     if (NULL == disp) {
4470         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4471                    "vkMapMemory2KHR: Invalid device "
4472                    "[VUID-vkMapMemory2KHR-device-parameter]");
4473         abort(); /* Intentionally fail so user can correct issue. */
4474     }
4475     return disp->MapMemory2KHR(device, pMemoryMapInfo, ppData);
4476 }
4477 
UnmapMemory2KHR(VkDevice device,const VkMemoryUnmapInfoKHR * pMemoryUnmapInfo)4478 VKAPI_ATTR VkResult VKAPI_CALL UnmapMemory2KHR(
4479     VkDevice                                    device,
4480     const VkMemoryUnmapInfoKHR*                 pMemoryUnmapInfo) {
4481     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4482     if (NULL == disp) {
4483         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4484                    "vkUnmapMemory2KHR: Invalid device "
4485                    "[VUID-vkUnmapMemory2KHR-device-parameter]");
4486         abort(); /* Intentionally fail so user can correct issue. */
4487     }
4488     return disp->UnmapMemory2KHR(device, pMemoryUnmapInfo);
4489 }
4490 
4491 
4492 // ---- VK_KHR_video_encode_queue extension trampoline/terminators
4493 
GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR * pQualityLevelInfo,VkVideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties)4494 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(
4495     VkPhysicalDevice                            physicalDevice,
4496     const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR* pQualityLevelInfo,
4497     VkVideoEncodeQualityLevelPropertiesKHR*     pQualityLevelProperties) {
4498     const VkLayerInstanceDispatchTable *disp;
4499     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
4500     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
4501         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4502                    "vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR: Invalid physicalDevice "
4503                    "[VUID-vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR-physicalDevice-parameter]");
4504         abort(); /* Intentionally fail so user can correct issue. */
4505     }
4506     disp = loader_get_instance_layer_dispatch(physicalDevice);
4507     return disp->GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(unwrapped_phys_dev, pQualityLevelInfo, pQualityLevelProperties);
4508 }
4509 
terminator_GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR * pQualityLevelInfo,VkVideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties)4510 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(
4511     VkPhysicalDevice                            physicalDevice,
4512     const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR* pQualityLevelInfo,
4513     VkVideoEncodeQualityLevelPropertiesKHR*     pQualityLevelProperties) {
4514     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
4515     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
4516     if (NULL == icd_term->dispatch.GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR) {
4517         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
4518                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR");
4519         abort(); /* Intentionally fail so user can correct issue. */
4520     }
4521     return icd_term->dispatch.GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(phys_dev_term->phys_dev, pQualityLevelInfo, pQualityLevelProperties);
4522 }
4523 
GetEncodedVideoSessionParametersKHR(VkDevice device,const VkVideoEncodeSessionParametersGetInfoKHR * pVideoSessionParametersInfo,VkVideoEncodeSessionParametersFeedbackInfoKHR * pFeedbackInfo,size_t * pDataSize,void * pData)4524 VKAPI_ATTR VkResult VKAPI_CALL GetEncodedVideoSessionParametersKHR(
4525     VkDevice                                    device,
4526     const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo,
4527     VkVideoEncodeSessionParametersFeedbackInfoKHR* pFeedbackInfo,
4528     size_t*                                     pDataSize,
4529     void*                                       pData) {
4530     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4531     if (NULL == disp) {
4532         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4533                    "vkGetEncodedVideoSessionParametersKHR: Invalid device "
4534                    "[VUID-vkGetEncodedVideoSessionParametersKHR-device-parameter]");
4535         abort(); /* Intentionally fail so user can correct issue. */
4536     }
4537     return disp->GetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData);
4538 }
4539 
CmdEncodeVideoKHR(VkCommandBuffer commandBuffer,const VkVideoEncodeInfoKHR * pEncodeInfo)4540 VKAPI_ATTR void VKAPI_CALL CmdEncodeVideoKHR(
4541     VkCommandBuffer                             commandBuffer,
4542     const VkVideoEncodeInfoKHR*                 pEncodeInfo) {
4543     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4544     if (NULL == disp) {
4545         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4546                    "vkCmdEncodeVideoKHR: Invalid commandBuffer "
4547                    "[VUID-vkCmdEncodeVideoKHR-commandBuffer-parameter]");
4548         abort(); /* Intentionally fail so user can correct issue. */
4549     }
4550     disp->CmdEncodeVideoKHR(commandBuffer, pEncodeInfo);
4551 }
4552 
4553 
4554 // ---- VK_KHR_synchronization2 extension trampoline/terminators
4555 
CmdSetEvent2KHR(VkCommandBuffer commandBuffer,VkEvent event,const VkDependencyInfo * pDependencyInfo)4556 VKAPI_ATTR void VKAPI_CALL CmdSetEvent2KHR(
4557     VkCommandBuffer                             commandBuffer,
4558     VkEvent                                     event,
4559     const VkDependencyInfo*                     pDependencyInfo) {
4560     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4561     if (NULL == disp) {
4562         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4563                    "vkCmdSetEvent2KHR: Invalid commandBuffer "
4564                    "[VUID-vkCmdSetEvent2KHR-commandBuffer-parameter]");
4565         abort(); /* Intentionally fail so user can correct issue. */
4566     }
4567     disp->CmdSetEvent2KHR(commandBuffer, event, pDependencyInfo);
4568 }
4569 
CmdResetEvent2KHR(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags2 stageMask)4570 VKAPI_ATTR void VKAPI_CALL CmdResetEvent2KHR(
4571     VkCommandBuffer                             commandBuffer,
4572     VkEvent                                     event,
4573     VkPipelineStageFlags2                       stageMask) {
4574     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4575     if (NULL == disp) {
4576         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4577                    "vkCmdResetEvent2KHR: Invalid commandBuffer "
4578                    "[VUID-vkCmdResetEvent2KHR-commandBuffer-parameter]");
4579         abort(); /* Intentionally fail so user can correct issue. */
4580     }
4581     disp->CmdResetEvent2KHR(commandBuffer, event, stageMask);
4582 }
4583 
CmdWaitEvents2KHR(VkCommandBuffer commandBuffer,uint32_t eventCount,const VkEvent * pEvents,const VkDependencyInfo * pDependencyInfos)4584 VKAPI_ATTR void VKAPI_CALL CmdWaitEvents2KHR(
4585     VkCommandBuffer                             commandBuffer,
4586     uint32_t                                    eventCount,
4587     const VkEvent*                              pEvents,
4588     const VkDependencyInfo*                     pDependencyInfos) {
4589     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4590     if (NULL == disp) {
4591         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4592                    "vkCmdWaitEvents2KHR: Invalid commandBuffer "
4593                    "[VUID-vkCmdWaitEvents2KHR-commandBuffer-parameter]");
4594         abort(); /* Intentionally fail so user can correct issue. */
4595     }
4596     disp->CmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos);
4597 }
4598 
CmdPipelineBarrier2KHR(VkCommandBuffer commandBuffer,const VkDependencyInfo * pDependencyInfo)4599 VKAPI_ATTR void VKAPI_CALL CmdPipelineBarrier2KHR(
4600     VkCommandBuffer                             commandBuffer,
4601     const VkDependencyInfo*                     pDependencyInfo) {
4602     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4603     if (NULL == disp) {
4604         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4605                    "vkCmdPipelineBarrier2KHR: Invalid commandBuffer "
4606                    "[VUID-vkCmdPipelineBarrier2KHR-commandBuffer-parameter]");
4607         abort(); /* Intentionally fail so user can correct issue. */
4608     }
4609     disp->CmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo);
4610 }
4611 
CmdWriteTimestamp2KHR(VkCommandBuffer commandBuffer,VkPipelineStageFlags2 stage,VkQueryPool queryPool,uint32_t query)4612 VKAPI_ATTR void VKAPI_CALL CmdWriteTimestamp2KHR(
4613     VkCommandBuffer                             commandBuffer,
4614     VkPipelineStageFlags2                       stage,
4615     VkQueryPool                                 queryPool,
4616     uint32_t                                    query) {
4617     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4618     if (NULL == disp) {
4619         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4620                    "vkCmdWriteTimestamp2KHR: Invalid commandBuffer "
4621                    "[VUID-vkCmdWriteTimestamp2KHR-commandBuffer-parameter]");
4622         abort(); /* Intentionally fail so user can correct issue. */
4623     }
4624     disp->CmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query);
4625 }
4626 
QueueSubmit2KHR(VkQueue queue,uint32_t submitCount,const VkSubmitInfo2 * pSubmits,VkFence fence)4627 VKAPI_ATTR VkResult VKAPI_CALL QueueSubmit2KHR(
4628     VkQueue                                     queue,
4629     uint32_t                                    submitCount,
4630     const VkSubmitInfo2*                        pSubmits,
4631     VkFence                                     fence) {
4632     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
4633     if (NULL == disp) {
4634         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4635                    "vkQueueSubmit2KHR: Invalid queue "
4636                    "[VUID-vkQueueSubmit2KHR-queue-parameter]");
4637         abort(); /* Intentionally fail so user can correct issue. */
4638     }
4639     return disp->QueueSubmit2KHR(queue, submitCount, pSubmits, fence);
4640 }
4641 
CmdWriteBufferMarker2AMD(VkCommandBuffer commandBuffer,VkPipelineStageFlags2 stage,VkBuffer dstBuffer,VkDeviceSize dstOffset,uint32_t marker)4642 VKAPI_ATTR void VKAPI_CALL CmdWriteBufferMarker2AMD(
4643     VkCommandBuffer                             commandBuffer,
4644     VkPipelineStageFlags2                       stage,
4645     VkBuffer                                    dstBuffer,
4646     VkDeviceSize                                dstOffset,
4647     uint32_t                                    marker) {
4648     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4649     if (NULL == disp) {
4650         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4651                    "vkCmdWriteBufferMarker2AMD: Invalid commandBuffer "
4652                    "[VUID-vkCmdWriteBufferMarker2AMD-commandBuffer-parameter]");
4653         abort(); /* Intentionally fail so user can correct issue. */
4654     }
4655     disp->CmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker);
4656 }
4657 
GetQueueCheckpointData2NV(VkQueue queue,uint32_t * pCheckpointDataCount,VkCheckpointData2NV * pCheckpointData)4658 VKAPI_ATTR void VKAPI_CALL GetQueueCheckpointData2NV(
4659     VkQueue                                     queue,
4660     uint32_t*                                   pCheckpointDataCount,
4661     VkCheckpointData2NV*                        pCheckpointData) {
4662     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
4663     if (NULL == disp) {
4664         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4665                    "vkGetQueueCheckpointData2NV: Invalid queue "
4666                    "[VUID-vkGetQueueCheckpointData2NV-queue-parameter]");
4667         abort(); /* Intentionally fail so user can correct issue. */
4668     }
4669     disp->GetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData);
4670 }
4671 
4672 
4673 // ---- VK_KHR_copy_commands2 extension trampoline/terminators
4674 
CmdCopyBuffer2KHR(VkCommandBuffer commandBuffer,const VkCopyBufferInfo2 * pCopyBufferInfo)4675 VKAPI_ATTR void VKAPI_CALL CmdCopyBuffer2KHR(
4676     VkCommandBuffer                             commandBuffer,
4677     const VkCopyBufferInfo2*                    pCopyBufferInfo) {
4678     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4679     if (NULL == disp) {
4680         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4681                    "vkCmdCopyBuffer2KHR: Invalid commandBuffer "
4682                    "[VUID-vkCmdCopyBuffer2KHR-commandBuffer-parameter]");
4683         abort(); /* Intentionally fail so user can correct issue. */
4684     }
4685     disp->CmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo);
4686 }
4687 
CmdCopyImage2KHR(VkCommandBuffer commandBuffer,const VkCopyImageInfo2 * pCopyImageInfo)4688 VKAPI_ATTR void VKAPI_CALL CmdCopyImage2KHR(
4689     VkCommandBuffer                             commandBuffer,
4690     const VkCopyImageInfo2*                     pCopyImageInfo) {
4691     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4692     if (NULL == disp) {
4693         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4694                    "vkCmdCopyImage2KHR: Invalid commandBuffer "
4695                    "[VUID-vkCmdCopyImage2KHR-commandBuffer-parameter]");
4696         abort(); /* Intentionally fail so user can correct issue. */
4697     }
4698     disp->CmdCopyImage2KHR(commandBuffer, pCopyImageInfo);
4699 }
4700 
CmdCopyBufferToImage2KHR(VkCommandBuffer commandBuffer,const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo)4701 VKAPI_ATTR void VKAPI_CALL CmdCopyBufferToImage2KHR(
4702     VkCommandBuffer                             commandBuffer,
4703     const VkCopyBufferToImageInfo2*             pCopyBufferToImageInfo) {
4704     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4705     if (NULL == disp) {
4706         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4707                    "vkCmdCopyBufferToImage2KHR: Invalid commandBuffer "
4708                    "[VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-parameter]");
4709         abort(); /* Intentionally fail so user can correct issue. */
4710     }
4711     disp->CmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo);
4712 }
4713 
CmdCopyImageToBuffer2KHR(VkCommandBuffer commandBuffer,const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo)4714 VKAPI_ATTR void VKAPI_CALL CmdCopyImageToBuffer2KHR(
4715     VkCommandBuffer                             commandBuffer,
4716     const VkCopyImageToBufferInfo2*             pCopyImageToBufferInfo) {
4717     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4718     if (NULL == disp) {
4719         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4720                    "vkCmdCopyImageToBuffer2KHR: Invalid commandBuffer "
4721                    "[VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-parameter]");
4722         abort(); /* Intentionally fail so user can correct issue. */
4723     }
4724     disp->CmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo);
4725 }
4726 
CmdBlitImage2KHR(VkCommandBuffer commandBuffer,const VkBlitImageInfo2 * pBlitImageInfo)4727 VKAPI_ATTR void VKAPI_CALL CmdBlitImage2KHR(
4728     VkCommandBuffer                             commandBuffer,
4729     const VkBlitImageInfo2*                     pBlitImageInfo) {
4730     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4731     if (NULL == disp) {
4732         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4733                    "vkCmdBlitImage2KHR: Invalid commandBuffer "
4734                    "[VUID-vkCmdBlitImage2KHR-commandBuffer-parameter]");
4735         abort(); /* Intentionally fail so user can correct issue. */
4736     }
4737     disp->CmdBlitImage2KHR(commandBuffer, pBlitImageInfo);
4738 }
4739 
CmdResolveImage2KHR(VkCommandBuffer commandBuffer,const VkResolveImageInfo2 * pResolveImageInfo)4740 VKAPI_ATTR void VKAPI_CALL CmdResolveImage2KHR(
4741     VkCommandBuffer                             commandBuffer,
4742     const VkResolveImageInfo2*                  pResolveImageInfo) {
4743     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4744     if (NULL == disp) {
4745         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4746                    "vkCmdResolveImage2KHR: Invalid commandBuffer "
4747                    "[VUID-vkCmdResolveImage2KHR-commandBuffer-parameter]");
4748         abort(); /* Intentionally fail so user can correct issue. */
4749     }
4750     disp->CmdResolveImage2KHR(commandBuffer, pResolveImageInfo);
4751 }
4752 
4753 
4754 // ---- VK_KHR_ray_tracing_maintenance1 extension trampoline/terminators
4755 
CmdTraceRaysIndirect2KHR(VkCommandBuffer commandBuffer,VkDeviceAddress indirectDeviceAddress)4756 VKAPI_ATTR void VKAPI_CALL CmdTraceRaysIndirect2KHR(
4757     VkCommandBuffer                             commandBuffer,
4758     VkDeviceAddress                             indirectDeviceAddress) {
4759     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4760     if (NULL == disp) {
4761         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4762                    "vkCmdTraceRaysIndirect2KHR: Invalid commandBuffer "
4763                    "[VUID-vkCmdTraceRaysIndirect2KHR-commandBuffer-parameter]");
4764         abort(); /* Intentionally fail so user can correct issue. */
4765     }
4766     disp->CmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress);
4767 }
4768 
4769 
4770 // ---- VK_KHR_maintenance4 extension trampoline/terminators
4771 
GetDeviceBufferMemoryRequirementsKHR(VkDevice device,const VkDeviceBufferMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)4772 VKAPI_ATTR void VKAPI_CALL GetDeviceBufferMemoryRequirementsKHR(
4773     VkDevice                                    device,
4774     const VkDeviceBufferMemoryRequirements*     pInfo,
4775     VkMemoryRequirements2*                      pMemoryRequirements) {
4776     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4777     if (NULL == disp) {
4778         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4779                    "vkGetDeviceBufferMemoryRequirementsKHR: Invalid device "
4780                    "[VUID-vkGetDeviceBufferMemoryRequirementsKHR-device-parameter]");
4781         abort(); /* Intentionally fail so user can correct issue. */
4782     }
4783     disp->GetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements);
4784 }
4785 
GetDeviceImageMemoryRequirementsKHR(VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)4786 VKAPI_ATTR void VKAPI_CALL GetDeviceImageMemoryRequirementsKHR(
4787     VkDevice                                    device,
4788     const VkDeviceImageMemoryRequirements*      pInfo,
4789     VkMemoryRequirements2*                      pMemoryRequirements) {
4790     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4791     if (NULL == disp) {
4792         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4793                    "vkGetDeviceImageMemoryRequirementsKHR: Invalid device "
4794                    "[VUID-vkGetDeviceImageMemoryRequirementsKHR-device-parameter]");
4795         abort(); /* Intentionally fail so user can correct issue. */
4796     }
4797     disp->GetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements);
4798 }
4799 
GetDeviceImageSparseMemoryRequirementsKHR(VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)4800 VKAPI_ATTR void VKAPI_CALL GetDeviceImageSparseMemoryRequirementsKHR(
4801     VkDevice                                    device,
4802     const VkDeviceImageMemoryRequirements*      pInfo,
4803     uint32_t*                                   pSparseMemoryRequirementCount,
4804     VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements) {
4805     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4806     if (NULL == disp) {
4807         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4808                    "vkGetDeviceImageSparseMemoryRequirementsKHR: Invalid device "
4809                    "[VUID-vkGetDeviceImageSparseMemoryRequirementsKHR-device-parameter]");
4810         abort(); /* Intentionally fail so user can correct issue. */
4811     }
4812     disp->GetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
4813 }
4814 
4815 
4816 // ---- VK_KHR_maintenance5 extension trampoline/terminators
4817 
CmdBindIndexBuffer2KHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkDeviceSize size,VkIndexType indexType)4818 VKAPI_ATTR void VKAPI_CALL CmdBindIndexBuffer2KHR(
4819     VkCommandBuffer                             commandBuffer,
4820     VkBuffer                                    buffer,
4821     VkDeviceSize                                offset,
4822     VkDeviceSize                                size,
4823     VkIndexType                                 indexType) {
4824     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4825     if (NULL == disp) {
4826         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4827                    "vkCmdBindIndexBuffer2KHR: Invalid commandBuffer "
4828                    "[VUID-vkCmdBindIndexBuffer2KHR-commandBuffer-parameter]");
4829         abort(); /* Intentionally fail so user can correct issue. */
4830     }
4831     disp->CmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType);
4832 }
4833 
GetRenderingAreaGranularityKHR(VkDevice device,const VkRenderingAreaInfoKHR * pRenderingAreaInfo,VkExtent2D * pGranularity)4834 VKAPI_ATTR void VKAPI_CALL GetRenderingAreaGranularityKHR(
4835     VkDevice                                    device,
4836     const VkRenderingAreaInfoKHR*               pRenderingAreaInfo,
4837     VkExtent2D*                                 pGranularity) {
4838     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4839     if (NULL == disp) {
4840         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4841                    "vkGetRenderingAreaGranularityKHR: Invalid device "
4842                    "[VUID-vkGetRenderingAreaGranularityKHR-device-parameter]");
4843         abort(); /* Intentionally fail so user can correct issue. */
4844     }
4845     disp->GetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity);
4846 }
4847 
GetDeviceImageSubresourceLayoutKHR(VkDevice device,const VkDeviceImageSubresourceInfoKHR * pInfo,VkSubresourceLayout2KHR * pLayout)4848 VKAPI_ATTR void VKAPI_CALL GetDeviceImageSubresourceLayoutKHR(
4849     VkDevice                                    device,
4850     const VkDeviceImageSubresourceInfoKHR*      pInfo,
4851     VkSubresourceLayout2KHR*                    pLayout) {
4852     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4853     if (NULL == disp) {
4854         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4855                    "vkGetDeviceImageSubresourceLayoutKHR: Invalid device "
4856                    "[VUID-vkGetDeviceImageSubresourceLayoutKHR-device-parameter]");
4857         abort(); /* Intentionally fail so user can correct issue. */
4858     }
4859     disp->GetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout);
4860 }
4861 
GetImageSubresourceLayout2KHR(VkDevice device,VkImage image,const VkImageSubresource2KHR * pSubresource,VkSubresourceLayout2KHR * pLayout)4862 VKAPI_ATTR void VKAPI_CALL GetImageSubresourceLayout2KHR(
4863     VkDevice                                    device,
4864     VkImage                                     image,
4865     const VkImageSubresource2KHR*               pSubresource,
4866     VkSubresourceLayout2KHR*                    pLayout) {
4867     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4868     if (NULL == disp) {
4869         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4870                    "vkGetImageSubresourceLayout2KHR: Invalid device "
4871                    "[VUID-vkGetImageSubresourceLayout2KHR-device-parameter]");
4872         abort(); /* Intentionally fail so user can correct issue. */
4873     }
4874     disp->GetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout);
4875 }
4876 
4877 
4878 // ---- VK_KHR_cooperative_matrix extension trampoline/terminators
4879 
GetPhysicalDeviceCooperativeMatrixPropertiesKHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkCooperativeMatrixPropertiesKHR * pProperties)4880 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixPropertiesKHR(
4881     VkPhysicalDevice                            physicalDevice,
4882     uint32_t*                                   pPropertyCount,
4883     VkCooperativeMatrixPropertiesKHR*           pProperties) {
4884     const VkLayerInstanceDispatchTable *disp;
4885     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
4886     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
4887         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4888                    "vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR: Invalid physicalDevice "
4889                    "[VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR-physicalDevice-parameter]");
4890         abort(); /* Intentionally fail so user can correct issue. */
4891     }
4892     disp = loader_get_instance_layer_dispatch(physicalDevice);
4893     return disp->GetPhysicalDeviceCooperativeMatrixPropertiesKHR(unwrapped_phys_dev, pPropertyCount, pProperties);
4894 }
4895 
terminator_GetPhysicalDeviceCooperativeMatrixPropertiesKHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkCooperativeMatrixPropertiesKHR * pProperties)4896 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceCooperativeMatrixPropertiesKHR(
4897     VkPhysicalDevice                            physicalDevice,
4898     uint32_t*                                   pPropertyCount,
4899     VkCooperativeMatrixPropertiesKHR*           pProperties) {
4900     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
4901     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
4902     if (NULL == icd_term->dispatch.GetPhysicalDeviceCooperativeMatrixPropertiesKHR) {
4903         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
4904                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceCooperativeMatrixPropertiesKHR");
4905         abort(); /* Intentionally fail so user can correct issue. */
4906     }
4907     return icd_term->dispatch.GetPhysicalDeviceCooperativeMatrixPropertiesKHR(phys_dev_term->phys_dev, pPropertyCount, pProperties);
4908 }
4909 
4910 
4911 // ---- VK_KHR_calibrated_timestamps extension trampoline/terminators
4912 
GetPhysicalDeviceCalibrateableTimeDomainsKHR(VkPhysicalDevice physicalDevice,uint32_t * pTimeDomainCount,VkTimeDomainKHR * pTimeDomains)4913 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCalibrateableTimeDomainsKHR(
4914     VkPhysicalDevice                            physicalDevice,
4915     uint32_t*                                   pTimeDomainCount,
4916     VkTimeDomainKHR*                            pTimeDomains) {
4917     const VkLayerInstanceDispatchTable *disp;
4918     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
4919     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
4920         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4921                    "vkGetPhysicalDeviceCalibrateableTimeDomainsKHR: Invalid physicalDevice "
4922                    "[VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsKHR-physicalDevice-parameter]");
4923         abort(); /* Intentionally fail so user can correct issue. */
4924     }
4925     disp = loader_get_instance_layer_dispatch(physicalDevice);
4926     return disp->GetPhysicalDeviceCalibrateableTimeDomainsKHR(unwrapped_phys_dev, pTimeDomainCount, pTimeDomains);
4927 }
4928 
terminator_GetPhysicalDeviceCalibrateableTimeDomainsKHR(VkPhysicalDevice physicalDevice,uint32_t * pTimeDomainCount,VkTimeDomainKHR * pTimeDomains)4929 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceCalibrateableTimeDomainsKHR(
4930     VkPhysicalDevice                            physicalDevice,
4931     uint32_t*                                   pTimeDomainCount,
4932     VkTimeDomainKHR*                            pTimeDomains) {
4933     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
4934     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
4935     if (NULL == icd_term->dispatch.GetPhysicalDeviceCalibrateableTimeDomainsKHR) {
4936         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
4937                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceCalibrateableTimeDomainsKHR");
4938         abort(); /* Intentionally fail so user can correct issue. */
4939     }
4940     return icd_term->dispatch.GetPhysicalDeviceCalibrateableTimeDomainsKHR(phys_dev_term->phys_dev, pTimeDomainCount, pTimeDomains);
4941 }
4942 
GetCalibratedTimestampsKHR(VkDevice device,uint32_t timestampCount,const VkCalibratedTimestampInfoKHR * pTimestampInfos,uint64_t * pTimestamps,uint64_t * pMaxDeviation)4943 VKAPI_ATTR VkResult VKAPI_CALL GetCalibratedTimestampsKHR(
4944     VkDevice                                    device,
4945     uint32_t                                    timestampCount,
4946     const VkCalibratedTimestampInfoKHR*         pTimestampInfos,
4947     uint64_t*                                   pTimestamps,
4948     uint64_t*                                   pMaxDeviation) {
4949     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4950     if (NULL == disp) {
4951         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4952                    "vkGetCalibratedTimestampsKHR: Invalid device "
4953                    "[VUID-vkGetCalibratedTimestampsKHR-device-parameter]");
4954         abort(); /* Intentionally fail so user can correct issue. */
4955     }
4956     return disp->GetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation);
4957 }
4958 
4959 
4960 // ---- VK_KHR_maintenance6 extension trampoline/terminators
4961 
CmdBindDescriptorSets2KHR(VkCommandBuffer commandBuffer,const VkBindDescriptorSetsInfoKHR * pBindDescriptorSetsInfo)4962 VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorSets2KHR(
4963     VkCommandBuffer                             commandBuffer,
4964     const VkBindDescriptorSetsInfoKHR*          pBindDescriptorSetsInfo) {
4965     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4966     if (NULL == disp) {
4967         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4968                    "vkCmdBindDescriptorSets2KHR: Invalid commandBuffer "
4969                    "[VUID-vkCmdBindDescriptorSets2KHR-commandBuffer-parameter]");
4970         abort(); /* Intentionally fail so user can correct issue. */
4971     }
4972     disp->CmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo);
4973 }
4974 
CmdPushConstants2KHR(VkCommandBuffer commandBuffer,const VkPushConstantsInfoKHR * pPushConstantsInfo)4975 VKAPI_ATTR void VKAPI_CALL CmdPushConstants2KHR(
4976     VkCommandBuffer                             commandBuffer,
4977     const VkPushConstantsInfoKHR*               pPushConstantsInfo) {
4978     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4979     if (NULL == disp) {
4980         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4981                    "vkCmdPushConstants2KHR: Invalid commandBuffer "
4982                    "[VUID-vkCmdPushConstants2KHR-commandBuffer-parameter]");
4983         abort(); /* Intentionally fail so user can correct issue. */
4984     }
4985     disp->CmdPushConstants2KHR(commandBuffer, pPushConstantsInfo);
4986 }
4987 
CmdPushDescriptorSet2KHR(VkCommandBuffer commandBuffer,const VkPushDescriptorSetInfoKHR * pPushDescriptorSetInfo)4988 VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSet2KHR(
4989     VkCommandBuffer                             commandBuffer,
4990     const VkPushDescriptorSetInfoKHR*           pPushDescriptorSetInfo) {
4991     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4992     if (NULL == disp) {
4993         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4994                    "vkCmdPushDescriptorSet2KHR: Invalid commandBuffer "
4995                    "[VUID-vkCmdPushDescriptorSet2KHR-commandBuffer-parameter]");
4996         abort(); /* Intentionally fail so user can correct issue. */
4997     }
4998     disp->CmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo);
4999 }
5000 
CmdPushDescriptorSetWithTemplate2KHR(VkCommandBuffer commandBuffer,const VkPushDescriptorSetWithTemplateInfoKHR * pPushDescriptorSetWithTemplateInfo)5001 VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetWithTemplate2KHR(
5002     VkCommandBuffer                             commandBuffer,
5003     const VkPushDescriptorSetWithTemplateInfoKHR* pPushDescriptorSetWithTemplateInfo) {
5004     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5005     if (NULL == disp) {
5006         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5007                    "vkCmdPushDescriptorSetWithTemplate2KHR: Invalid commandBuffer "
5008                    "[VUID-vkCmdPushDescriptorSetWithTemplate2KHR-commandBuffer-parameter]");
5009         abort(); /* Intentionally fail so user can correct issue. */
5010     }
5011     disp->CmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo);
5012 }
5013 
CmdSetDescriptorBufferOffsets2EXT(VkCommandBuffer commandBuffer,const VkSetDescriptorBufferOffsetsInfoEXT * pSetDescriptorBufferOffsetsInfo)5014 VKAPI_ATTR void VKAPI_CALL CmdSetDescriptorBufferOffsets2EXT(
5015     VkCommandBuffer                             commandBuffer,
5016     const VkSetDescriptorBufferOffsetsInfoEXT*  pSetDescriptorBufferOffsetsInfo) {
5017     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5018     if (NULL == disp) {
5019         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5020                    "vkCmdSetDescriptorBufferOffsets2EXT: Invalid commandBuffer "
5021                    "[VUID-vkCmdSetDescriptorBufferOffsets2EXT-commandBuffer-parameter]");
5022         abort(); /* Intentionally fail so user can correct issue. */
5023     }
5024     disp->CmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo);
5025 }
5026 
CmdBindDescriptorBufferEmbeddedSamplers2EXT(VkCommandBuffer commandBuffer,const VkBindDescriptorBufferEmbeddedSamplersInfoEXT * pBindDescriptorBufferEmbeddedSamplersInfo)5027 VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorBufferEmbeddedSamplers2EXT(
5028     VkCommandBuffer                             commandBuffer,
5029     const VkBindDescriptorBufferEmbeddedSamplersInfoEXT* pBindDescriptorBufferEmbeddedSamplersInfo) {
5030     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5031     if (NULL == disp) {
5032         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5033                    "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT: Invalid commandBuffer "
5034                    "[VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-commandBuffer-parameter]");
5035         abort(); /* Intentionally fail so user can correct issue. */
5036     }
5037     disp->CmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo);
5038 }
5039 
5040 
5041 // ---- VK_EXT_debug_marker extension trampoline/terminators
5042 
DebugMarkerSetObjectTagEXT(VkDevice device,const VkDebugMarkerObjectTagInfoEXT * pTagInfo)5043 VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectTagEXT(
5044     VkDevice                                    device,
5045     const VkDebugMarkerObjectTagInfoEXT*        pTagInfo) {
5046     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5047     if (NULL == disp) {
5048         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5049                    "vkDebugMarkerSetObjectTagEXT: Invalid device "
5050                    "[VUID-vkDebugMarkerSetObjectTagEXT-device-parameter]");
5051         abort(); /* Intentionally fail so user can correct issue. */
5052     }
5053     VkDebugMarkerObjectTagInfoEXT local_tag_info;
5054     memcpy(&local_tag_info, pTagInfo, sizeof(VkDebugMarkerObjectTagInfoEXT));
5055     // If this is a physical device, we have to replace it with the proper one for the next call.
5056     if (pTagInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT) {
5057         struct loader_physical_device_tramp *phys_dev_tramp = (struct loader_physical_device_tramp *)(uintptr_t)pTagInfo->object;
5058         local_tag_info.object = (uint64_t)(uintptr_t)phys_dev_tramp->phys_dev;
5059     }
5060     if (pTagInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT) {
5061         struct loader_instance* instance = (struct loader_instance *)(uintptr_t)pTagInfo->object;
5062         local_tag_info.object = (uint64_t)(uintptr_t)instance->instance;
5063     }
5064     return disp->DebugMarkerSetObjectTagEXT(device, &local_tag_info);
5065 }
5066 
terminator_DebugMarkerSetObjectTagEXT(VkDevice device,const VkDebugMarkerObjectTagInfoEXT * pTagInfo)5067 VKAPI_ATTR VkResult VKAPI_CALL terminator_DebugMarkerSetObjectTagEXT(
5068     VkDevice                                    device,
5069     const VkDebugMarkerObjectTagInfoEXT*        pTagInfo) {
5070     uint32_t icd_index = 0;
5071     struct loader_device *dev;
5072     struct loader_icd_term *icd_term = loader_get_icd_and_device(device, &dev, &icd_index);
5073     if (NULL == icd_term || NULL == dev) {
5074         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "DebugMarkerSetObjectTagEXT: Invalid device handle");
5075         abort(); /* Intentionally fail so user can correct issue. */
5076     }
5077     VkDebugMarkerObjectTagInfoEXT local_tag_info;
5078     memcpy(&local_tag_info, pTagInfo, sizeof(VkDebugMarkerObjectTagInfoEXT));
5079     // If this is a physical device, we have to replace it with the proper one for the next call.
5080     if (pTagInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT) {
5081         struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)(uintptr_t)pTagInfo->object;
5082         local_tag_info.object = (uint64_t)(uintptr_t)phys_dev_term->phys_dev;
5083     // 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.
5084     } else if (pTagInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT) {
5085         if (NULL != dev && NULL != dev->loader_dispatch.core_dispatch.CreateSwapchainKHR) {
5086             VkIcdSurface *icd_surface = (VkIcdSurface *)(uintptr_t)pTagInfo->object;
5087             if (NULL != icd_surface->real_icd_surfaces) {
5088                 local_tag_info.object = (uint64_t)icd_surface->real_icd_surfaces[icd_index];
5089             }
5090         }
5091     // If this is an instance we have to replace it with the proper one for the next call.
5092     } else if (pTagInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT) {
5093         local_tag_info.object = (uint64_t)(uintptr_t)icd_term->instance;
5094     }
5095     // Exit early if the driver does not support the function - this can happen as a layer or the loader itself supports
5096     // debug utils but the driver does not.
5097     if (NULL == dev->loader_dispatch.extension_terminator_dispatch.DebugMarkerSetObjectTagEXT)
5098         return VK_SUCCESS;
5099     return dev->loader_dispatch.extension_terminator_dispatch.DebugMarkerSetObjectTagEXT(device, &local_tag_info);
5100 }
5101 
DebugMarkerSetObjectNameEXT(VkDevice device,const VkDebugMarkerObjectNameInfoEXT * pNameInfo)5102 VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectNameEXT(
5103     VkDevice                                    device,
5104     const VkDebugMarkerObjectNameInfoEXT*       pNameInfo) {
5105     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5106     if (NULL == disp) {
5107         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5108                    "vkDebugMarkerSetObjectNameEXT: Invalid device "
5109                    "[VUID-vkDebugMarkerSetObjectNameEXT-device-parameter]");
5110         abort(); /* Intentionally fail so user can correct issue. */
5111     }
5112     VkDebugMarkerObjectNameInfoEXT local_name_info;
5113     memcpy(&local_name_info, pNameInfo, sizeof(VkDebugMarkerObjectNameInfoEXT));
5114     // If this is a physical device, we have to replace it with the proper one for the next call.
5115     if (pNameInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT) {
5116         struct loader_physical_device_tramp *phys_dev_tramp = (struct loader_physical_device_tramp *)(uintptr_t)pNameInfo->object;
5117         local_name_info.object = (uint64_t)(uintptr_t)phys_dev_tramp->phys_dev;
5118     }
5119     if (pNameInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT) {
5120         struct loader_instance* instance = (struct loader_instance *)(uintptr_t)pNameInfo->object;
5121         local_name_info.object = (uint64_t)(uintptr_t)instance->instance;
5122     }
5123     return disp->DebugMarkerSetObjectNameEXT(device, &local_name_info);
5124 }
5125 
terminator_DebugMarkerSetObjectNameEXT(VkDevice device,const VkDebugMarkerObjectNameInfoEXT * pNameInfo)5126 VKAPI_ATTR VkResult VKAPI_CALL terminator_DebugMarkerSetObjectNameEXT(
5127     VkDevice                                    device,
5128     const VkDebugMarkerObjectNameInfoEXT*       pNameInfo) {
5129     uint32_t icd_index = 0;
5130     struct loader_device *dev;
5131     struct loader_icd_term *icd_term = loader_get_icd_and_device(device, &dev, &icd_index);
5132     if (NULL == icd_term || NULL == dev) {
5133         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "DebugMarkerSetObjectNameEXT: Invalid device handle");
5134         abort(); /* Intentionally fail so user can correct issue. */
5135     }
5136     VkDebugMarkerObjectNameInfoEXT local_name_info;
5137     memcpy(&local_name_info, pNameInfo, sizeof(VkDebugMarkerObjectNameInfoEXT));
5138     // If this is a physical device, we have to replace it with the proper one for the next call.
5139     if (pNameInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT) {
5140         struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)(uintptr_t)pNameInfo->object;
5141         local_name_info.object = (uint64_t)(uintptr_t)phys_dev_term->phys_dev;
5142     // 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.
5143     } else if (pNameInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT) {
5144         if (NULL != dev && NULL != dev->loader_dispatch.core_dispatch.CreateSwapchainKHR) {
5145             VkIcdSurface *icd_surface = (VkIcdSurface *)(uintptr_t)pNameInfo->object;
5146             if (NULL != icd_surface->real_icd_surfaces) {
5147                 local_name_info.object = (uint64_t)icd_surface->real_icd_surfaces[icd_index];
5148             }
5149         }
5150     // If this is an instance we have to replace it with the proper one for the next call.
5151     } else if (pNameInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT) {
5152         local_name_info.object = (uint64_t)(uintptr_t)icd_term->instance;
5153     }
5154     // Exit early if the driver does not support the function - this can happen as a layer or the loader itself supports
5155     // debug utils but the driver does not.
5156     if (NULL == dev->loader_dispatch.extension_terminator_dispatch.DebugMarkerSetObjectNameEXT)
5157         return VK_SUCCESS;
5158     return dev->loader_dispatch.extension_terminator_dispatch.DebugMarkerSetObjectNameEXT(device, &local_name_info);
5159 }
5160 
CmdDebugMarkerBeginEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)5161 VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerBeginEXT(
5162     VkCommandBuffer                             commandBuffer,
5163     const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo) {
5164     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5165     if (NULL == disp) {
5166         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5167                    "vkCmdDebugMarkerBeginEXT: Invalid commandBuffer "
5168                    "[VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-parameter]");
5169         abort(); /* Intentionally fail so user can correct issue. */
5170     }
5171     disp->CmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo);
5172 }
5173 
CmdDebugMarkerEndEXT(VkCommandBuffer commandBuffer)5174 VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerEndEXT(
5175     VkCommandBuffer                             commandBuffer) {
5176     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5177     if (NULL == disp) {
5178         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5179                    "vkCmdDebugMarkerEndEXT: Invalid commandBuffer "
5180                    "[VUID-vkCmdDebugMarkerEndEXT-commandBuffer-parameter]");
5181         abort(); /* Intentionally fail so user can correct issue. */
5182     }
5183     disp->CmdDebugMarkerEndEXT(commandBuffer);
5184 }
5185 
CmdDebugMarkerInsertEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)5186 VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerInsertEXT(
5187     VkCommandBuffer                             commandBuffer,
5188     const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo) {
5189     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5190     if (NULL == disp) {
5191         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5192                    "vkCmdDebugMarkerInsertEXT: Invalid commandBuffer "
5193                    "[VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-parameter]");
5194         abort(); /* Intentionally fail so user can correct issue. */
5195     }
5196     disp->CmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo);
5197 }
5198 
5199 
5200 // ---- VK_EXT_transform_feedback extension trampoline/terminators
5201 
CmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes)5202 VKAPI_ATTR void VKAPI_CALL CmdBindTransformFeedbackBuffersEXT(
5203     VkCommandBuffer                             commandBuffer,
5204     uint32_t                                    firstBinding,
5205     uint32_t                                    bindingCount,
5206     const VkBuffer*                             pBuffers,
5207     const VkDeviceSize*                         pOffsets,
5208     const VkDeviceSize*                         pSizes) {
5209     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5210     if (NULL == disp) {
5211         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5212                    "vkCmdBindTransformFeedbackBuffersEXT: Invalid commandBuffer "
5213                    "[VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-parameter]");
5214         abort(); /* Intentionally fail so user can correct issue. */
5215     }
5216     disp->CmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes);
5217 }
5218 
CmdBeginTransformFeedbackEXT(VkCommandBuffer commandBuffer,uint32_t firstCounterBuffer,uint32_t counterBufferCount,const VkBuffer * pCounterBuffers,const VkDeviceSize * pCounterBufferOffsets)5219 VKAPI_ATTR void VKAPI_CALL CmdBeginTransformFeedbackEXT(
5220     VkCommandBuffer                             commandBuffer,
5221     uint32_t                                    firstCounterBuffer,
5222     uint32_t                                    counterBufferCount,
5223     const VkBuffer*                             pCounterBuffers,
5224     const VkDeviceSize*                         pCounterBufferOffsets) {
5225     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5226     if (NULL == disp) {
5227         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5228                    "vkCmdBeginTransformFeedbackEXT: Invalid commandBuffer "
5229                    "[VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-parameter]");
5230         abort(); /* Intentionally fail so user can correct issue. */
5231     }
5232     disp->CmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets);
5233 }
5234 
CmdEndTransformFeedbackEXT(VkCommandBuffer commandBuffer,uint32_t firstCounterBuffer,uint32_t counterBufferCount,const VkBuffer * pCounterBuffers,const VkDeviceSize * pCounterBufferOffsets)5235 VKAPI_ATTR void VKAPI_CALL CmdEndTransformFeedbackEXT(
5236     VkCommandBuffer                             commandBuffer,
5237     uint32_t                                    firstCounterBuffer,
5238     uint32_t                                    counterBufferCount,
5239     const VkBuffer*                             pCounterBuffers,
5240     const VkDeviceSize*                         pCounterBufferOffsets) {
5241     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5242     if (NULL == disp) {
5243         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5244                    "vkCmdEndTransformFeedbackEXT: Invalid commandBuffer "
5245                    "[VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter]");
5246         abort(); /* Intentionally fail so user can correct issue. */
5247     }
5248     disp->CmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets);
5249 }
5250 
CmdBeginQueryIndexedEXT(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,VkQueryControlFlags flags,uint32_t index)5251 VKAPI_ATTR void VKAPI_CALL CmdBeginQueryIndexedEXT(
5252     VkCommandBuffer                             commandBuffer,
5253     VkQueryPool                                 queryPool,
5254     uint32_t                                    query,
5255     VkQueryControlFlags                         flags,
5256     uint32_t                                    index) {
5257     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5258     if (NULL == disp) {
5259         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5260                    "vkCmdBeginQueryIndexedEXT: Invalid commandBuffer "
5261                    "[VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter]");
5262         abort(); /* Intentionally fail so user can correct issue. */
5263     }
5264     disp->CmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index);
5265 }
5266 
CmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,uint32_t index)5267 VKAPI_ATTR void VKAPI_CALL CmdEndQueryIndexedEXT(
5268     VkCommandBuffer                             commandBuffer,
5269     VkQueryPool                                 queryPool,
5270     uint32_t                                    query,
5271     uint32_t                                    index) {
5272     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5273     if (NULL == disp) {
5274         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5275                    "vkCmdEndQueryIndexedEXT: Invalid commandBuffer "
5276                    "[VUID-vkCmdEndQueryIndexedEXT-commandBuffer-parameter]");
5277         abort(); /* Intentionally fail so user can correct issue. */
5278     }
5279     disp->CmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index);
5280 }
5281 
CmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer,uint32_t instanceCount,uint32_t firstInstance,VkBuffer counterBuffer,VkDeviceSize counterBufferOffset,uint32_t counterOffset,uint32_t vertexStride)5282 VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectByteCountEXT(
5283     VkCommandBuffer                             commandBuffer,
5284     uint32_t                                    instanceCount,
5285     uint32_t                                    firstInstance,
5286     VkBuffer                                    counterBuffer,
5287     VkDeviceSize                                counterBufferOffset,
5288     uint32_t                                    counterOffset,
5289     uint32_t                                    vertexStride) {
5290     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5291     if (NULL == disp) {
5292         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5293                    "vkCmdDrawIndirectByteCountEXT: Invalid commandBuffer "
5294                    "[VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter]");
5295         abort(); /* Intentionally fail so user can correct issue. */
5296     }
5297     disp->CmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride);
5298 }
5299 
5300 
5301 // ---- VK_NVX_binary_import extension trampoline/terminators
5302 
CreateCuModuleNVX(VkDevice device,const VkCuModuleCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCuModuleNVX * pModule)5303 VKAPI_ATTR VkResult VKAPI_CALL CreateCuModuleNVX(
5304     VkDevice                                    device,
5305     const VkCuModuleCreateInfoNVX*              pCreateInfo,
5306     const VkAllocationCallbacks*                pAllocator,
5307     VkCuModuleNVX*                              pModule) {
5308     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5309     if (NULL == disp) {
5310         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5311                    "vkCreateCuModuleNVX: Invalid device "
5312                    "[VUID-vkCreateCuModuleNVX-device-parameter]");
5313         abort(); /* Intentionally fail so user can correct issue. */
5314     }
5315     return disp->CreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule);
5316 }
5317 
CreateCuFunctionNVX(VkDevice device,const VkCuFunctionCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCuFunctionNVX * pFunction)5318 VKAPI_ATTR VkResult VKAPI_CALL CreateCuFunctionNVX(
5319     VkDevice                                    device,
5320     const VkCuFunctionCreateInfoNVX*            pCreateInfo,
5321     const VkAllocationCallbacks*                pAllocator,
5322     VkCuFunctionNVX*                            pFunction) {
5323     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5324     if (NULL == disp) {
5325         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5326                    "vkCreateCuFunctionNVX: Invalid device "
5327                    "[VUID-vkCreateCuFunctionNVX-device-parameter]");
5328         abort(); /* Intentionally fail so user can correct issue. */
5329     }
5330     return disp->CreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction);
5331 }
5332 
DestroyCuModuleNVX(VkDevice device,VkCuModuleNVX module,const VkAllocationCallbacks * pAllocator)5333 VKAPI_ATTR void VKAPI_CALL DestroyCuModuleNVX(
5334     VkDevice                                    device,
5335     VkCuModuleNVX                               module,
5336     const VkAllocationCallbacks*                pAllocator) {
5337     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5338     if (NULL == disp) {
5339         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5340                    "vkDestroyCuModuleNVX: Invalid device "
5341                    "[VUID-vkDestroyCuModuleNVX-device-parameter]");
5342         abort(); /* Intentionally fail so user can correct issue. */
5343     }
5344     disp->DestroyCuModuleNVX(device, module, pAllocator);
5345 }
5346 
DestroyCuFunctionNVX(VkDevice device,VkCuFunctionNVX function,const VkAllocationCallbacks * pAllocator)5347 VKAPI_ATTR void VKAPI_CALL DestroyCuFunctionNVX(
5348     VkDevice                                    device,
5349     VkCuFunctionNVX                             function,
5350     const VkAllocationCallbacks*                pAllocator) {
5351     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5352     if (NULL == disp) {
5353         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5354                    "vkDestroyCuFunctionNVX: Invalid device "
5355                    "[VUID-vkDestroyCuFunctionNVX-device-parameter]");
5356         abort(); /* Intentionally fail so user can correct issue. */
5357     }
5358     disp->DestroyCuFunctionNVX(device, function, pAllocator);
5359 }
5360 
CmdCuLaunchKernelNVX(VkCommandBuffer commandBuffer,const VkCuLaunchInfoNVX * pLaunchInfo)5361 VKAPI_ATTR void VKAPI_CALL CmdCuLaunchKernelNVX(
5362     VkCommandBuffer                             commandBuffer,
5363     const VkCuLaunchInfoNVX*                    pLaunchInfo) {
5364     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5365     if (NULL == disp) {
5366         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5367                    "vkCmdCuLaunchKernelNVX: Invalid commandBuffer "
5368                    "[VUID-vkCmdCuLaunchKernelNVX-commandBuffer-parameter]");
5369         abort(); /* Intentionally fail so user can correct issue. */
5370     }
5371     disp->CmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo);
5372 }
5373 
5374 
5375 // ---- VK_NVX_image_view_handle extension trampoline/terminators
5376 
GetImageViewHandleNVX(VkDevice device,const VkImageViewHandleInfoNVX * pInfo)5377 VKAPI_ATTR uint32_t VKAPI_CALL GetImageViewHandleNVX(
5378     VkDevice                                    device,
5379     const VkImageViewHandleInfoNVX*             pInfo) {
5380     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5381     if (NULL == disp) {
5382         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5383                    "vkGetImageViewHandleNVX: Invalid device "
5384                    "[VUID-vkGetImageViewHandleNVX-device-parameter]");
5385         abort(); /* Intentionally fail so user can correct issue. */
5386     }
5387     return disp->GetImageViewHandleNVX(device, pInfo);
5388 }
5389 
GetImageViewAddressNVX(VkDevice device,VkImageView imageView,VkImageViewAddressPropertiesNVX * pProperties)5390 VKAPI_ATTR VkResult VKAPI_CALL GetImageViewAddressNVX(
5391     VkDevice                                    device,
5392     VkImageView                                 imageView,
5393     VkImageViewAddressPropertiesNVX*            pProperties) {
5394     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5395     if (NULL == disp) {
5396         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5397                    "vkGetImageViewAddressNVX: Invalid device "
5398                    "[VUID-vkGetImageViewAddressNVX-device-parameter]");
5399         abort(); /* Intentionally fail so user can correct issue. */
5400     }
5401     return disp->GetImageViewAddressNVX(device, imageView, pProperties);
5402 }
5403 
5404 
5405 // ---- VK_AMD_draw_indirect_count extension trampoline/terminators
5406 
CmdDrawIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)5407 VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCountAMD(
5408     VkCommandBuffer                             commandBuffer,
5409     VkBuffer                                    buffer,
5410     VkDeviceSize                                offset,
5411     VkBuffer                                    countBuffer,
5412     VkDeviceSize                                countBufferOffset,
5413     uint32_t                                    maxDrawCount,
5414     uint32_t                                    stride) {
5415     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5416     if (NULL == disp) {
5417         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5418                    "vkCmdDrawIndirectCountAMD: Invalid commandBuffer "
5419                    "[VUID-vkCmdDrawIndirectCountAMD-commandBuffer-parameter]");
5420         abort(); /* Intentionally fail so user can correct issue. */
5421     }
5422     disp->CmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
5423 }
5424 
CmdDrawIndexedIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)5425 VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCountAMD(
5426     VkCommandBuffer                             commandBuffer,
5427     VkBuffer                                    buffer,
5428     VkDeviceSize                                offset,
5429     VkBuffer                                    countBuffer,
5430     VkDeviceSize                                countBufferOffset,
5431     uint32_t                                    maxDrawCount,
5432     uint32_t                                    stride) {
5433     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5434     if (NULL == disp) {
5435         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5436                    "vkCmdDrawIndexedIndirectCountAMD: Invalid commandBuffer "
5437                    "[VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-parameter]");
5438         abort(); /* Intentionally fail so user can correct issue. */
5439     }
5440     disp->CmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
5441 }
5442 
5443 
5444 // ---- VK_AMD_shader_info extension trampoline/terminators
5445 
GetShaderInfoAMD(VkDevice device,VkPipeline pipeline,VkShaderStageFlagBits shaderStage,VkShaderInfoTypeAMD infoType,size_t * pInfoSize,void * pInfo)5446 VKAPI_ATTR VkResult VKAPI_CALL GetShaderInfoAMD(
5447     VkDevice                                    device,
5448     VkPipeline                                  pipeline,
5449     VkShaderStageFlagBits                       shaderStage,
5450     VkShaderInfoTypeAMD                         infoType,
5451     size_t*                                     pInfoSize,
5452     void*                                       pInfo) {
5453     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5454     if (NULL == disp) {
5455         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5456                    "vkGetShaderInfoAMD: Invalid device "
5457                    "[VUID-vkGetShaderInfoAMD-device-parameter]");
5458         abort(); /* Intentionally fail so user can correct issue. */
5459     }
5460     return disp->GetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
5461 }
5462 
5463 
5464 // ---- VK_NV_external_memory_win32 extension trampoline/terminators
5465 
5466 #if defined(VK_USE_PLATFORM_WIN32_KHR)
GetMemoryWin32HandleNV(VkDevice device,VkDeviceMemory memory,VkExternalMemoryHandleTypeFlagsNV handleType,HANDLE * pHandle)5467 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandleNV(
5468     VkDevice                                    device,
5469     VkDeviceMemory                              memory,
5470     VkExternalMemoryHandleTypeFlagsNV           handleType,
5471     HANDLE*                                     pHandle) {
5472     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5473     if (NULL == disp) {
5474         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5475                    "vkGetMemoryWin32HandleNV: Invalid device "
5476                    "[VUID-vkGetMemoryWin32HandleNV-device-parameter]");
5477         abort(); /* Intentionally fail so user can correct issue. */
5478     }
5479     return disp->GetMemoryWin32HandleNV(device, memory, handleType, pHandle);
5480 }
5481 
5482 #endif // VK_USE_PLATFORM_WIN32_KHR
5483 
5484 // ---- VK_EXT_conditional_rendering extension trampoline/terminators
5485 
CmdBeginConditionalRenderingEXT(VkCommandBuffer commandBuffer,const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin)5486 VKAPI_ATTR void VKAPI_CALL CmdBeginConditionalRenderingEXT(
5487     VkCommandBuffer                             commandBuffer,
5488     const VkConditionalRenderingBeginInfoEXT*   pConditionalRenderingBegin) {
5489     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5490     if (NULL == disp) {
5491         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5492                    "vkCmdBeginConditionalRenderingEXT: Invalid commandBuffer "
5493                    "[VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-parameter]");
5494         abort(); /* Intentionally fail so user can correct issue. */
5495     }
5496     disp->CmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin);
5497 }
5498 
CmdEndConditionalRenderingEXT(VkCommandBuffer commandBuffer)5499 VKAPI_ATTR void VKAPI_CALL CmdEndConditionalRenderingEXT(
5500     VkCommandBuffer                             commandBuffer) {
5501     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5502     if (NULL == disp) {
5503         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5504                    "vkCmdEndConditionalRenderingEXT: Invalid commandBuffer "
5505                    "[VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-parameter]");
5506         abort(); /* Intentionally fail so user can correct issue. */
5507     }
5508     disp->CmdEndConditionalRenderingEXT(commandBuffer);
5509 }
5510 
5511 
5512 // ---- VK_NV_clip_space_w_scaling extension trampoline/terminators
5513 
CmdSetViewportWScalingNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewportWScalingNV * pViewportWScalings)5514 VKAPI_ATTR void VKAPI_CALL CmdSetViewportWScalingNV(
5515     VkCommandBuffer                             commandBuffer,
5516     uint32_t                                    firstViewport,
5517     uint32_t                                    viewportCount,
5518     const VkViewportWScalingNV*                 pViewportWScalings) {
5519     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5520     if (NULL == disp) {
5521         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5522                    "vkCmdSetViewportWScalingNV: Invalid commandBuffer "
5523                    "[VUID-vkCmdSetViewportWScalingNV-commandBuffer-parameter]");
5524         abort(); /* Intentionally fail so user can correct issue. */
5525     }
5526     disp->CmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings);
5527 }
5528 
5529 
5530 // ---- VK_EXT_display_control extension trampoline/terminators
5531 
DisplayPowerControlEXT(VkDevice device,VkDisplayKHR display,const VkDisplayPowerInfoEXT * pDisplayPowerInfo)5532 VKAPI_ATTR VkResult VKAPI_CALL DisplayPowerControlEXT(
5533     VkDevice                                    device,
5534     VkDisplayKHR                                display,
5535     const VkDisplayPowerInfoEXT*                pDisplayPowerInfo) {
5536     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5537     if (NULL == disp) {
5538         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5539                    "vkDisplayPowerControlEXT: Invalid device "
5540                    "[VUID-vkDisplayPowerControlEXT-device-parameter]");
5541         abort(); /* Intentionally fail so user can correct issue. */
5542     }
5543     return disp->DisplayPowerControlEXT(device, display, pDisplayPowerInfo);
5544 }
5545 
RegisterDeviceEventEXT(VkDevice device,const VkDeviceEventInfoEXT * pDeviceEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)5546 VKAPI_ATTR VkResult VKAPI_CALL RegisterDeviceEventEXT(
5547     VkDevice                                    device,
5548     const VkDeviceEventInfoEXT*                 pDeviceEventInfo,
5549     const VkAllocationCallbacks*                pAllocator,
5550     VkFence*                                    pFence) {
5551     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5552     if (NULL == disp) {
5553         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5554                    "vkRegisterDeviceEventEXT: Invalid device "
5555                    "[VUID-vkRegisterDeviceEventEXT-device-parameter]");
5556         abort(); /* Intentionally fail so user can correct issue. */
5557     }
5558     return disp->RegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
5559 }
5560 
RegisterDisplayEventEXT(VkDevice device,VkDisplayKHR display,const VkDisplayEventInfoEXT * pDisplayEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)5561 VKAPI_ATTR VkResult VKAPI_CALL RegisterDisplayEventEXT(
5562     VkDevice                                    device,
5563     VkDisplayKHR                                display,
5564     const VkDisplayEventInfoEXT*                pDisplayEventInfo,
5565     const VkAllocationCallbacks*                pAllocator,
5566     VkFence*                                    pFence) {
5567     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5568     if (NULL == disp) {
5569         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5570                    "vkRegisterDisplayEventEXT: Invalid device "
5571                    "[VUID-vkRegisterDisplayEventEXT-device-parameter]");
5572         abort(); /* Intentionally fail so user can correct issue. */
5573     }
5574     return disp->RegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
5575 }
5576 
GetSwapchainCounterEXT(VkDevice device,VkSwapchainKHR swapchain,VkSurfaceCounterFlagBitsEXT counter,uint64_t * pCounterValue)5577 VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainCounterEXT(
5578     VkDevice                                    device,
5579     VkSwapchainKHR                              swapchain,
5580     VkSurfaceCounterFlagBitsEXT                 counter,
5581     uint64_t*                                   pCounterValue) {
5582     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5583     if (NULL == disp) {
5584         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5585                    "vkGetSwapchainCounterEXT: Invalid device "
5586                    "[VUID-vkGetSwapchainCounterEXT-device-parameter]");
5587         abort(); /* Intentionally fail so user can correct issue. */
5588     }
5589     return disp->GetSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
5590 }
5591 
5592 
5593 // ---- VK_GOOGLE_display_timing extension trampoline/terminators
5594 
GetRefreshCycleDurationGOOGLE(VkDevice device,VkSwapchainKHR swapchain,VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties)5595 VKAPI_ATTR VkResult VKAPI_CALL GetRefreshCycleDurationGOOGLE(
5596     VkDevice                                    device,
5597     VkSwapchainKHR                              swapchain,
5598     VkRefreshCycleDurationGOOGLE*               pDisplayTimingProperties) {
5599     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5600     if (NULL == disp) {
5601         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5602                    "vkGetRefreshCycleDurationGOOGLE: Invalid device "
5603                    "[VUID-vkGetRefreshCycleDurationGOOGLE-device-parameter]");
5604         abort(); /* Intentionally fail so user can correct issue. */
5605     }
5606     return disp->GetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
5607 }
5608 
GetPastPresentationTimingGOOGLE(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pPresentationTimingCount,VkPastPresentationTimingGOOGLE * pPresentationTimings)5609 VKAPI_ATTR VkResult VKAPI_CALL GetPastPresentationTimingGOOGLE(
5610     VkDevice                                    device,
5611     VkSwapchainKHR                              swapchain,
5612     uint32_t*                                   pPresentationTimingCount,
5613     VkPastPresentationTimingGOOGLE*             pPresentationTimings) {
5614     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5615     if (NULL == disp) {
5616         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5617                    "vkGetPastPresentationTimingGOOGLE: Invalid device "
5618                    "[VUID-vkGetPastPresentationTimingGOOGLE-device-parameter]");
5619         abort(); /* Intentionally fail so user can correct issue. */
5620     }
5621     return disp->GetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
5622 }
5623 
5624 
5625 // ---- VK_EXT_discard_rectangles extension trampoline/terminators
5626 
CmdSetDiscardRectangleEXT(VkCommandBuffer commandBuffer,uint32_t firstDiscardRectangle,uint32_t discardRectangleCount,const VkRect2D * pDiscardRectangles)5627 VKAPI_ATTR void VKAPI_CALL CmdSetDiscardRectangleEXT(
5628     VkCommandBuffer                             commandBuffer,
5629     uint32_t                                    firstDiscardRectangle,
5630     uint32_t                                    discardRectangleCount,
5631     const VkRect2D*                             pDiscardRectangles) {
5632     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5633     if (NULL == disp) {
5634         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5635                    "vkCmdSetDiscardRectangleEXT: Invalid commandBuffer "
5636                    "[VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-parameter]");
5637         abort(); /* Intentionally fail so user can correct issue. */
5638     }
5639     disp->CmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles);
5640 }
5641 
CmdSetDiscardRectangleEnableEXT(VkCommandBuffer commandBuffer,VkBool32 discardRectangleEnable)5642 VKAPI_ATTR void VKAPI_CALL CmdSetDiscardRectangleEnableEXT(
5643     VkCommandBuffer                             commandBuffer,
5644     VkBool32                                    discardRectangleEnable) {
5645     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5646     if (NULL == disp) {
5647         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5648                    "vkCmdSetDiscardRectangleEnableEXT: Invalid commandBuffer "
5649                    "[VUID-vkCmdSetDiscardRectangleEnableEXT-commandBuffer-parameter]");
5650         abort(); /* Intentionally fail so user can correct issue. */
5651     }
5652     disp->CmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable);
5653 }
5654 
CmdSetDiscardRectangleModeEXT(VkCommandBuffer commandBuffer,VkDiscardRectangleModeEXT discardRectangleMode)5655 VKAPI_ATTR void VKAPI_CALL CmdSetDiscardRectangleModeEXT(
5656     VkCommandBuffer                             commandBuffer,
5657     VkDiscardRectangleModeEXT                   discardRectangleMode) {
5658     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5659     if (NULL == disp) {
5660         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5661                    "vkCmdSetDiscardRectangleModeEXT: Invalid commandBuffer "
5662                    "[VUID-vkCmdSetDiscardRectangleModeEXT-commandBuffer-parameter]");
5663         abort(); /* Intentionally fail so user can correct issue. */
5664     }
5665     disp->CmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode);
5666 }
5667 
5668 
5669 // ---- VK_EXT_hdr_metadata extension trampoline/terminators
5670 
SetHdrMetadataEXT(VkDevice device,uint32_t swapchainCount,const VkSwapchainKHR * pSwapchains,const VkHdrMetadataEXT * pMetadata)5671 VKAPI_ATTR void VKAPI_CALL SetHdrMetadataEXT(
5672     VkDevice                                    device,
5673     uint32_t                                    swapchainCount,
5674     const VkSwapchainKHR*                       pSwapchains,
5675     const VkHdrMetadataEXT*                     pMetadata) {
5676     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5677     if (NULL == disp) {
5678         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5679                    "vkSetHdrMetadataEXT: Invalid device "
5680                    "[VUID-vkSetHdrMetadataEXT-device-parameter]");
5681         abort(); /* Intentionally fail so user can correct issue. */
5682     }
5683     disp->SetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata);
5684 }
5685 
5686 
5687 // ---- VK_EXT_debug_utils extension trampoline/terminators
5688 
SetDebugUtilsObjectNameEXT(VkDevice device,const VkDebugUtilsObjectNameInfoEXT * pNameInfo)5689 VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectNameEXT(
5690     VkDevice                                    device,
5691     const VkDebugUtilsObjectNameInfoEXT*        pNameInfo) {
5692     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5693     if (NULL == disp) {
5694         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5695                    "vkSetDebugUtilsObjectNameEXT: Invalid device "
5696                    "[VUID-vkSetDebugUtilsObjectNameEXT-device-parameter]");
5697         abort(); /* Intentionally fail so user can correct issue. */
5698     }
5699     VkDebugUtilsObjectNameInfoEXT local_name_info;
5700     memcpy(&local_name_info, pNameInfo, sizeof(VkDebugUtilsObjectNameInfoEXT));
5701     // If this is a physical device, we have to replace it with the proper one for the next call.
5702     if (pNameInfo->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {
5703         struct loader_physical_device_tramp *phys_dev_tramp = (struct loader_physical_device_tramp *)(uintptr_t)pNameInfo->objectHandle;
5704         local_name_info.objectHandle = (uint64_t)(uintptr_t)phys_dev_tramp->phys_dev;
5705     }
5706     if (pNameInfo->objectType == VK_OBJECT_TYPE_INSTANCE) {
5707         struct loader_instance* instance = (struct loader_instance *)(uintptr_t)pNameInfo->objectHandle;
5708         local_name_info.objectHandle = (uint64_t)(uintptr_t)instance->instance;
5709     }
5710     if (disp->SetDebugUtilsObjectNameEXT != NULL) {
5711         return disp->SetDebugUtilsObjectNameEXT(device, &local_name_info);
5712     } else {
5713         return VK_SUCCESS;
5714     }
5715 }
5716 
terminator_SetDebugUtilsObjectNameEXT(VkDevice device,const VkDebugUtilsObjectNameInfoEXT * pNameInfo)5717 VKAPI_ATTR VkResult VKAPI_CALL terminator_SetDebugUtilsObjectNameEXT(
5718     VkDevice                                    device,
5719     const VkDebugUtilsObjectNameInfoEXT*        pNameInfo) {
5720     uint32_t icd_index = 0;
5721     struct loader_device *dev;
5722     struct loader_icd_term *icd_term = loader_get_icd_and_device(device, &dev, &icd_index);
5723     if (NULL == icd_term || NULL == dev) {
5724         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "SetDebugUtilsObjectNameEXT: Invalid device handle");
5725         abort(); /* Intentionally fail so user can correct issue. */
5726     }
5727     VkDebugUtilsObjectNameInfoEXT local_name_info;
5728     memcpy(&local_name_info, pNameInfo, sizeof(VkDebugUtilsObjectNameInfoEXT));
5729     // If this is a physical device, we have to replace it with the proper one for the next call.
5730     if (pNameInfo->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {
5731         struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)(uintptr_t)pNameInfo->objectHandle;
5732         local_name_info.objectHandle = (uint64_t)(uintptr_t)phys_dev_term->phys_dev;
5733     // 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.
5734     } else if (pNameInfo->objectType == VK_OBJECT_TYPE_SURFACE_KHR) {
5735         if (NULL != dev && NULL != dev->loader_dispatch.core_dispatch.CreateSwapchainKHR) {
5736             VkIcdSurface *icd_surface = (VkIcdSurface *)(uintptr_t)pNameInfo->objectHandle;
5737             if (NULL != icd_surface->real_icd_surfaces) {
5738                 local_name_info.objectHandle = (uint64_t)icd_surface->real_icd_surfaces[icd_index];
5739             }
5740         }
5741     // If this is an instance we have to replace it with the proper one for the next call.
5742     } else if (pNameInfo->objectType == VK_OBJECT_TYPE_INSTANCE) {
5743         local_name_info.objectHandle = (uint64_t)(uintptr_t)icd_term->instance;
5744     }
5745     // Exit early if the driver does not support the function - this can happen as a layer or the loader itself supports
5746     // debug utils but the driver does not.
5747     if (NULL == dev->loader_dispatch.extension_terminator_dispatch.SetDebugUtilsObjectNameEXT)
5748         return VK_SUCCESS;
5749     return dev->loader_dispatch.extension_terminator_dispatch.SetDebugUtilsObjectNameEXT(device, &local_name_info);
5750 }
5751 
SetDebugUtilsObjectTagEXT(VkDevice device,const VkDebugUtilsObjectTagInfoEXT * pTagInfo)5752 VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectTagEXT(
5753     VkDevice                                    device,
5754     const VkDebugUtilsObjectTagInfoEXT*         pTagInfo) {
5755     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5756     if (NULL == disp) {
5757         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5758                    "vkSetDebugUtilsObjectTagEXT: Invalid device "
5759                    "[VUID-vkSetDebugUtilsObjectTagEXT-device-parameter]");
5760         abort(); /* Intentionally fail so user can correct issue. */
5761     }
5762     VkDebugUtilsObjectTagInfoEXT local_tag_info;
5763     memcpy(&local_tag_info, pTagInfo, sizeof(VkDebugUtilsObjectTagInfoEXT));
5764     // If this is a physical device, we have to replace it with the proper one for the next call.
5765     if (pTagInfo->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {
5766         struct loader_physical_device_tramp *phys_dev_tramp = (struct loader_physical_device_tramp *)(uintptr_t)pTagInfo->objectHandle;
5767         local_tag_info.objectHandle = (uint64_t)(uintptr_t)phys_dev_tramp->phys_dev;
5768     }
5769     if (pTagInfo->objectType == VK_OBJECT_TYPE_INSTANCE) {
5770         struct loader_instance* instance = (struct loader_instance *)(uintptr_t)pTagInfo->objectHandle;
5771         local_tag_info.objectHandle = (uint64_t)(uintptr_t)instance->instance;
5772     }
5773     if (disp->SetDebugUtilsObjectTagEXT != NULL) {
5774         return disp->SetDebugUtilsObjectTagEXT(device, &local_tag_info);
5775     } else {
5776         return VK_SUCCESS;
5777     }
5778 }
5779 
terminator_SetDebugUtilsObjectTagEXT(VkDevice device,const VkDebugUtilsObjectTagInfoEXT * pTagInfo)5780 VKAPI_ATTR VkResult VKAPI_CALL terminator_SetDebugUtilsObjectTagEXT(
5781     VkDevice                                    device,
5782     const VkDebugUtilsObjectTagInfoEXT*         pTagInfo) {
5783     uint32_t icd_index = 0;
5784     struct loader_device *dev;
5785     struct loader_icd_term *icd_term = loader_get_icd_and_device(device, &dev, &icd_index);
5786     if (NULL == icd_term || NULL == dev) {
5787         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "SetDebugUtilsObjectTagEXT: Invalid device handle");
5788         abort(); /* Intentionally fail so user can correct issue. */
5789     }
5790     VkDebugUtilsObjectTagInfoEXT local_tag_info;
5791     memcpy(&local_tag_info, pTagInfo, sizeof(VkDebugUtilsObjectTagInfoEXT));
5792     // If this is a physical device, we have to replace it with the proper one for the next call.
5793     if (pTagInfo->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {
5794         struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)(uintptr_t)pTagInfo->objectHandle;
5795         local_tag_info.objectHandle = (uint64_t)(uintptr_t)phys_dev_term->phys_dev;
5796     // 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.
5797     } else if (pTagInfo->objectType == VK_OBJECT_TYPE_SURFACE_KHR) {
5798         if (NULL != dev && NULL != dev->loader_dispatch.core_dispatch.CreateSwapchainKHR) {
5799             VkIcdSurface *icd_surface = (VkIcdSurface *)(uintptr_t)pTagInfo->objectHandle;
5800             if (NULL != icd_surface->real_icd_surfaces) {
5801                 local_tag_info.objectHandle = (uint64_t)icd_surface->real_icd_surfaces[icd_index];
5802             }
5803         }
5804     // If this is an instance we have to replace it with the proper one for the next call.
5805     } else if (pTagInfo->objectType == VK_OBJECT_TYPE_INSTANCE) {
5806         local_tag_info.objectHandle = (uint64_t)(uintptr_t)icd_term->instance;
5807     }
5808     // Exit early if the driver does not support the function - this can happen as a layer or the loader itself supports
5809     // debug utils but the driver does not.
5810     if (NULL == dev->loader_dispatch.extension_terminator_dispatch.SetDebugUtilsObjectTagEXT)
5811         return VK_SUCCESS;
5812     return dev->loader_dispatch.extension_terminator_dispatch.SetDebugUtilsObjectTagEXT(device, &local_tag_info);
5813 }
5814 
QueueBeginDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)5815 VKAPI_ATTR void VKAPI_CALL QueueBeginDebugUtilsLabelEXT(
5816     VkQueue                                     queue,
5817     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
5818     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
5819     if (NULL == disp) {
5820         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5821                    "vkQueueBeginDebugUtilsLabelEXT: Invalid queue "
5822                    "[VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter]");
5823         abort(); /* Intentionally fail so user can correct issue. */
5824     }
5825     if (disp->QueueBeginDebugUtilsLabelEXT != NULL) {
5826         disp->QueueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
5827     }
5828 }
5829 
terminator_QueueBeginDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)5830 VKAPI_ATTR void VKAPI_CALL terminator_QueueBeginDebugUtilsLabelEXT(
5831     VkQueue                                     queue,
5832     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
5833     struct loader_dev_dispatch_table *dispatch_table = loader_get_dev_dispatch(queue);
5834     if (NULL == dispatch_table) {
5835         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "VK_EXT_debug_utils: Invalid device handle");
5836         abort(); /* Intentionally fail so user can correct issue. */
5837     }
5838     // Only call down if the device supports the function
5839     if (NULL != dispatch_table->extension_terminator_dispatch.QueueBeginDebugUtilsLabelEXT)
5840         dispatch_table->extension_terminator_dispatch.QueueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
5841 }
5842 
QueueEndDebugUtilsLabelEXT(VkQueue queue)5843 VKAPI_ATTR void VKAPI_CALL QueueEndDebugUtilsLabelEXT(
5844     VkQueue                                     queue) {
5845     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
5846     if (NULL == disp) {
5847         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5848                    "vkQueueEndDebugUtilsLabelEXT: Invalid queue "
5849                    "[VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter]");
5850         abort(); /* Intentionally fail so user can correct issue. */
5851     }
5852     if (disp->QueueEndDebugUtilsLabelEXT != NULL) {
5853         disp->QueueEndDebugUtilsLabelEXT(queue);
5854     }
5855 }
5856 
terminator_QueueEndDebugUtilsLabelEXT(VkQueue queue)5857 VKAPI_ATTR void VKAPI_CALL terminator_QueueEndDebugUtilsLabelEXT(
5858     VkQueue                                     queue) {
5859     struct loader_dev_dispatch_table *dispatch_table = loader_get_dev_dispatch(queue);
5860     if (NULL == dispatch_table) {
5861         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "VK_EXT_debug_utils: Invalid device handle");
5862         abort(); /* Intentionally fail so user can correct issue. */
5863     }
5864     // Only call down if the device supports the function
5865     if (NULL != dispatch_table->extension_terminator_dispatch.QueueEndDebugUtilsLabelEXT)
5866         dispatch_table->extension_terminator_dispatch.QueueEndDebugUtilsLabelEXT(queue);
5867 }
5868 
QueueInsertDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)5869 VKAPI_ATTR void VKAPI_CALL QueueInsertDebugUtilsLabelEXT(
5870     VkQueue                                     queue,
5871     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
5872     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
5873     if (NULL == disp) {
5874         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5875                    "vkQueueInsertDebugUtilsLabelEXT: Invalid queue "
5876                    "[VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter]");
5877         abort(); /* Intentionally fail so user can correct issue. */
5878     }
5879     if (disp->QueueInsertDebugUtilsLabelEXT != NULL) {
5880         disp->QueueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
5881     }
5882 }
5883 
terminator_QueueInsertDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)5884 VKAPI_ATTR void VKAPI_CALL terminator_QueueInsertDebugUtilsLabelEXT(
5885     VkQueue                                     queue,
5886     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
5887     struct loader_dev_dispatch_table *dispatch_table = loader_get_dev_dispatch(queue);
5888     if (NULL == dispatch_table) {
5889         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "VK_EXT_debug_utils: Invalid device handle");
5890         abort(); /* Intentionally fail so user can correct issue. */
5891     }
5892     // Only call down if the device supports the function
5893     if (NULL != dispatch_table->extension_terminator_dispatch.QueueInsertDebugUtilsLabelEXT)
5894         dispatch_table->extension_terminator_dispatch.QueueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
5895 }
5896 
CmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)5897 VKAPI_ATTR void VKAPI_CALL CmdBeginDebugUtilsLabelEXT(
5898     VkCommandBuffer                             commandBuffer,
5899     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
5900     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5901     if (NULL == disp) {
5902         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5903                    "vkCmdBeginDebugUtilsLabelEXT: Invalid commandBuffer "
5904                    "[VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-parameter]");
5905         abort(); /* Intentionally fail so user can correct issue. */
5906     }
5907     if (disp->CmdBeginDebugUtilsLabelEXT != NULL) {
5908         disp->CmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
5909     }
5910 }
5911 
terminator_CmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)5912 VKAPI_ATTR void VKAPI_CALL terminator_CmdBeginDebugUtilsLabelEXT(
5913     VkCommandBuffer                             commandBuffer,
5914     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
5915     struct loader_dev_dispatch_table *dispatch_table = loader_get_dev_dispatch(commandBuffer);
5916     if (NULL == dispatch_table) {
5917         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "VK_EXT_debug_utils: Invalid device handle");
5918         abort(); /* Intentionally fail so user can correct issue. */
5919     }
5920     // Only call down if the device supports the function
5921     if (NULL != dispatch_table->extension_terminator_dispatch.CmdBeginDebugUtilsLabelEXT)
5922         dispatch_table->extension_terminator_dispatch.CmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
5923 }
5924 
CmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer)5925 VKAPI_ATTR void VKAPI_CALL CmdEndDebugUtilsLabelEXT(
5926     VkCommandBuffer                             commandBuffer) {
5927     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5928     if (NULL == disp) {
5929         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5930                    "vkCmdEndDebugUtilsLabelEXT: Invalid commandBuffer "
5931                    "[VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-parameter]");
5932         abort(); /* Intentionally fail so user can correct issue. */
5933     }
5934     if (disp->CmdEndDebugUtilsLabelEXT != NULL) {
5935         disp->CmdEndDebugUtilsLabelEXT(commandBuffer);
5936     }
5937 }
5938 
terminator_CmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer)5939 VKAPI_ATTR void VKAPI_CALL terminator_CmdEndDebugUtilsLabelEXT(
5940     VkCommandBuffer                             commandBuffer) {
5941     struct loader_dev_dispatch_table *dispatch_table = loader_get_dev_dispatch(commandBuffer);
5942     if (NULL == dispatch_table) {
5943         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "VK_EXT_debug_utils: Invalid device handle");
5944         abort(); /* Intentionally fail so user can correct issue. */
5945     }
5946     // Only call down if the device supports the function
5947     if (NULL != dispatch_table->extension_terminator_dispatch.CmdEndDebugUtilsLabelEXT)
5948         dispatch_table->extension_terminator_dispatch.CmdEndDebugUtilsLabelEXT(commandBuffer);
5949 }
5950 
CmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)5951 VKAPI_ATTR void VKAPI_CALL CmdInsertDebugUtilsLabelEXT(
5952     VkCommandBuffer                             commandBuffer,
5953     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
5954     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5955     if (NULL == disp) {
5956         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5957                    "vkCmdInsertDebugUtilsLabelEXT: Invalid commandBuffer "
5958                    "[VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-parameter]");
5959         abort(); /* Intentionally fail so user can correct issue. */
5960     }
5961     if (disp->CmdInsertDebugUtilsLabelEXT != NULL) {
5962         disp->CmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
5963     }
5964 }
5965 
terminator_CmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)5966 VKAPI_ATTR void VKAPI_CALL terminator_CmdInsertDebugUtilsLabelEXT(
5967     VkCommandBuffer                             commandBuffer,
5968     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
5969     struct loader_dev_dispatch_table *dispatch_table = loader_get_dev_dispatch(commandBuffer);
5970     if (NULL == dispatch_table) {
5971         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "VK_EXT_debug_utils: Invalid device handle");
5972         abort(); /* Intentionally fail so user can correct issue. */
5973     }
5974     // Only call down if the device supports the function
5975     if (NULL != dispatch_table->extension_terminator_dispatch.CmdInsertDebugUtilsLabelEXT)
5976         dispatch_table->extension_terminator_dispatch.CmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
5977 }
5978 
5979 
5980 // ---- VK_ANDROID_external_memory_android_hardware_buffer extension trampoline/terminators
5981 
5982 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
GetAndroidHardwareBufferPropertiesANDROID(VkDevice device,const struct AHardwareBuffer * buffer,VkAndroidHardwareBufferPropertiesANDROID * pProperties)5983 VKAPI_ATTR VkResult VKAPI_CALL GetAndroidHardwareBufferPropertiesANDROID(
5984     VkDevice                                    device,
5985     const struct AHardwareBuffer*               buffer,
5986     VkAndroidHardwareBufferPropertiesANDROID*   pProperties) {
5987     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5988     if (NULL == disp) {
5989         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5990                    "vkGetAndroidHardwareBufferPropertiesANDROID: Invalid device "
5991                    "[VUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter]");
5992         abort(); /* Intentionally fail so user can correct issue. */
5993     }
5994     return disp->GetAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties);
5995 }
5996 
5997 #endif // VK_USE_PLATFORM_ANDROID_KHR
5998 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
GetMemoryAndroidHardwareBufferANDROID(VkDevice device,const VkMemoryGetAndroidHardwareBufferInfoANDROID * pInfo,struct AHardwareBuffer ** pBuffer)5999 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryAndroidHardwareBufferANDROID(
6000     VkDevice                                    device,
6001     const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
6002     struct AHardwareBuffer**                    pBuffer) {
6003     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6004     if (NULL == disp) {
6005         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6006                    "vkGetMemoryAndroidHardwareBufferANDROID: Invalid device "
6007                    "[VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter]");
6008         abort(); /* Intentionally fail so user can correct issue. */
6009     }
6010     return disp->GetMemoryAndroidHardwareBufferANDROID(device, pInfo, pBuffer);
6011 }
6012 
6013 #endif // VK_USE_PLATFORM_ANDROID_KHR
6014 
6015 // ---- VK_AMDX_shader_enqueue extension trampoline/terminators
6016 
6017 #if defined(VK_ENABLE_BETA_EXTENSIONS)
CreateExecutionGraphPipelinesAMDX(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkExecutionGraphPipelineCreateInfoAMDX * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)6018 VKAPI_ATTR VkResult VKAPI_CALL CreateExecutionGraphPipelinesAMDX(
6019     VkDevice                                    device,
6020     VkPipelineCache                             pipelineCache,
6021     uint32_t                                    createInfoCount,
6022     const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos,
6023     const VkAllocationCallbacks*                pAllocator,
6024     VkPipeline*                                 pPipelines) {
6025     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6026     if (NULL == disp) {
6027         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6028                    "vkCreateExecutionGraphPipelinesAMDX: Invalid device "
6029                    "[VUID-vkCreateExecutionGraphPipelinesAMDX-device-parameter]");
6030         abort(); /* Intentionally fail so user can correct issue. */
6031     }
6032     return disp->CreateExecutionGraphPipelinesAMDX(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
6033 }
6034 
6035 #endif // VK_ENABLE_BETA_EXTENSIONS
6036 #if defined(VK_ENABLE_BETA_EXTENSIONS)
GetExecutionGraphPipelineScratchSizeAMDX(VkDevice device,VkPipeline executionGraph,VkExecutionGraphPipelineScratchSizeAMDX * pSizeInfo)6037 VKAPI_ATTR VkResult VKAPI_CALL GetExecutionGraphPipelineScratchSizeAMDX(
6038     VkDevice                                    device,
6039     VkPipeline                                  executionGraph,
6040     VkExecutionGraphPipelineScratchSizeAMDX*    pSizeInfo) {
6041     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6042     if (NULL == disp) {
6043         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6044                    "vkGetExecutionGraphPipelineScratchSizeAMDX: Invalid device "
6045                    "[VUID-vkGetExecutionGraphPipelineScratchSizeAMDX-device-parameter]");
6046         abort(); /* Intentionally fail so user can correct issue. */
6047     }
6048     return disp->GetExecutionGraphPipelineScratchSizeAMDX(device, executionGraph, pSizeInfo);
6049 }
6050 
6051 #endif // VK_ENABLE_BETA_EXTENSIONS
6052 #if defined(VK_ENABLE_BETA_EXTENSIONS)
GetExecutionGraphPipelineNodeIndexAMDX(VkDevice device,VkPipeline executionGraph,const VkPipelineShaderStageNodeCreateInfoAMDX * pNodeInfo,uint32_t * pNodeIndex)6053 VKAPI_ATTR VkResult VKAPI_CALL GetExecutionGraphPipelineNodeIndexAMDX(
6054     VkDevice                                    device,
6055     VkPipeline                                  executionGraph,
6056     const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo,
6057     uint32_t*                                   pNodeIndex) {
6058     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6059     if (NULL == disp) {
6060         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6061                    "vkGetExecutionGraphPipelineNodeIndexAMDX: Invalid device "
6062                    "[VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-device-parameter]");
6063         abort(); /* Intentionally fail so user can correct issue. */
6064     }
6065     return disp->GetExecutionGraphPipelineNodeIndexAMDX(device, executionGraph, pNodeInfo, pNodeIndex);
6066 }
6067 
6068 #endif // VK_ENABLE_BETA_EXTENSIONS
6069 #if defined(VK_ENABLE_BETA_EXTENSIONS)
CmdInitializeGraphScratchMemoryAMDX(VkCommandBuffer commandBuffer,VkDeviceAddress scratch)6070 VKAPI_ATTR void VKAPI_CALL CmdInitializeGraphScratchMemoryAMDX(
6071     VkCommandBuffer                             commandBuffer,
6072     VkDeviceAddress                             scratch) {
6073     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6074     if (NULL == disp) {
6075         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6076                    "vkCmdInitializeGraphScratchMemoryAMDX: Invalid commandBuffer "
6077                    "[VUID-vkCmdInitializeGraphScratchMemoryAMDX-commandBuffer-parameter]");
6078         abort(); /* Intentionally fail so user can correct issue. */
6079     }
6080     disp->CmdInitializeGraphScratchMemoryAMDX(commandBuffer, scratch);
6081 }
6082 
6083 #endif // VK_ENABLE_BETA_EXTENSIONS
6084 #if defined(VK_ENABLE_BETA_EXTENSIONS)
CmdDispatchGraphAMDX(VkCommandBuffer commandBuffer,VkDeviceAddress scratch,const VkDispatchGraphCountInfoAMDX * pCountInfo)6085 VKAPI_ATTR void VKAPI_CALL CmdDispatchGraphAMDX(
6086     VkCommandBuffer                             commandBuffer,
6087     VkDeviceAddress                             scratch,
6088     const VkDispatchGraphCountInfoAMDX*         pCountInfo) {
6089     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6090     if (NULL == disp) {
6091         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6092                    "vkCmdDispatchGraphAMDX: Invalid commandBuffer "
6093                    "[VUID-vkCmdDispatchGraphAMDX-commandBuffer-parameter]");
6094         abort(); /* Intentionally fail so user can correct issue. */
6095     }
6096     disp->CmdDispatchGraphAMDX(commandBuffer, scratch, pCountInfo);
6097 }
6098 
6099 #endif // VK_ENABLE_BETA_EXTENSIONS
6100 #if defined(VK_ENABLE_BETA_EXTENSIONS)
CmdDispatchGraphIndirectAMDX(VkCommandBuffer commandBuffer,VkDeviceAddress scratch,const VkDispatchGraphCountInfoAMDX * pCountInfo)6101 VKAPI_ATTR void VKAPI_CALL CmdDispatchGraphIndirectAMDX(
6102     VkCommandBuffer                             commandBuffer,
6103     VkDeviceAddress                             scratch,
6104     const VkDispatchGraphCountInfoAMDX*         pCountInfo) {
6105     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6106     if (NULL == disp) {
6107         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6108                    "vkCmdDispatchGraphIndirectAMDX: Invalid commandBuffer "
6109                    "[VUID-vkCmdDispatchGraphIndirectAMDX-commandBuffer-parameter]");
6110         abort(); /* Intentionally fail so user can correct issue. */
6111     }
6112     disp->CmdDispatchGraphIndirectAMDX(commandBuffer, scratch, pCountInfo);
6113 }
6114 
6115 #endif // VK_ENABLE_BETA_EXTENSIONS
6116 #if defined(VK_ENABLE_BETA_EXTENSIONS)
CmdDispatchGraphIndirectCountAMDX(VkCommandBuffer commandBuffer,VkDeviceAddress scratch,VkDeviceAddress countInfo)6117 VKAPI_ATTR void VKAPI_CALL CmdDispatchGraphIndirectCountAMDX(
6118     VkCommandBuffer                             commandBuffer,
6119     VkDeviceAddress                             scratch,
6120     VkDeviceAddress                             countInfo) {
6121     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6122     if (NULL == disp) {
6123         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6124                    "vkCmdDispatchGraphIndirectCountAMDX: Invalid commandBuffer "
6125                    "[VUID-vkCmdDispatchGraphIndirectCountAMDX-commandBuffer-parameter]");
6126         abort(); /* Intentionally fail so user can correct issue. */
6127     }
6128     disp->CmdDispatchGraphIndirectCountAMDX(commandBuffer, scratch, countInfo);
6129 }
6130 
6131 #endif // VK_ENABLE_BETA_EXTENSIONS
6132 
6133 // ---- VK_EXT_sample_locations extension trampoline/terminators
6134 
CmdSetSampleLocationsEXT(VkCommandBuffer commandBuffer,const VkSampleLocationsInfoEXT * pSampleLocationsInfo)6135 VKAPI_ATTR void VKAPI_CALL CmdSetSampleLocationsEXT(
6136     VkCommandBuffer                             commandBuffer,
6137     const VkSampleLocationsInfoEXT*             pSampleLocationsInfo) {
6138     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6139     if (NULL == disp) {
6140         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6141                    "vkCmdSetSampleLocationsEXT: Invalid commandBuffer "
6142                    "[VUID-vkCmdSetSampleLocationsEXT-commandBuffer-parameter]");
6143         abort(); /* Intentionally fail so user can correct issue. */
6144     }
6145     disp->CmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo);
6146 }
6147 
GetPhysicalDeviceMultisamplePropertiesEXT(VkPhysicalDevice physicalDevice,VkSampleCountFlagBits samples,VkMultisamplePropertiesEXT * pMultisampleProperties)6148 VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceMultisamplePropertiesEXT(
6149     VkPhysicalDevice                            physicalDevice,
6150     VkSampleCountFlagBits                       samples,
6151     VkMultisamplePropertiesEXT*                 pMultisampleProperties) {
6152     const VkLayerInstanceDispatchTable *disp;
6153     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
6154     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
6155         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6156                    "vkGetPhysicalDeviceMultisamplePropertiesEXT: Invalid physicalDevice "
6157                    "[VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-physicalDevice-parameter]");
6158         abort(); /* Intentionally fail so user can correct issue. */
6159     }
6160     disp = loader_get_instance_layer_dispatch(physicalDevice);
6161     disp->GetPhysicalDeviceMultisamplePropertiesEXT(unwrapped_phys_dev, samples, pMultisampleProperties);
6162 }
6163 
terminator_GetPhysicalDeviceMultisamplePropertiesEXT(VkPhysicalDevice physicalDevice,VkSampleCountFlagBits samples,VkMultisamplePropertiesEXT * pMultisampleProperties)6164 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceMultisamplePropertiesEXT(
6165     VkPhysicalDevice                            physicalDevice,
6166     VkSampleCountFlagBits                       samples,
6167     VkMultisamplePropertiesEXT*                 pMultisampleProperties) {
6168     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
6169     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
6170     if (NULL == icd_term->dispatch.GetPhysicalDeviceMultisamplePropertiesEXT) {
6171         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
6172                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceMultisamplePropertiesEXT");
6173         abort(); /* Intentionally fail so user can correct issue. */
6174     }
6175     icd_term->dispatch.GetPhysicalDeviceMultisamplePropertiesEXT(phys_dev_term->phys_dev, samples, pMultisampleProperties);
6176 }
6177 
6178 
6179 // ---- VK_EXT_image_drm_format_modifier extension trampoline/terminators
6180 
GetImageDrmFormatModifierPropertiesEXT(VkDevice device,VkImage image,VkImageDrmFormatModifierPropertiesEXT * pProperties)6181 VKAPI_ATTR VkResult VKAPI_CALL GetImageDrmFormatModifierPropertiesEXT(
6182     VkDevice                                    device,
6183     VkImage                                     image,
6184     VkImageDrmFormatModifierPropertiesEXT*      pProperties) {
6185     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6186     if (NULL == disp) {
6187         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6188                    "vkGetImageDrmFormatModifierPropertiesEXT: Invalid device "
6189                    "[VUID-vkGetImageDrmFormatModifierPropertiesEXT-device-parameter]");
6190         abort(); /* Intentionally fail so user can correct issue. */
6191     }
6192     return disp->GetImageDrmFormatModifierPropertiesEXT(device, image, pProperties);
6193 }
6194 
6195 
6196 // ---- VK_EXT_validation_cache extension trampoline/terminators
6197 
CreateValidationCacheEXT(VkDevice device,const VkValidationCacheCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkValidationCacheEXT * pValidationCache)6198 VKAPI_ATTR VkResult VKAPI_CALL CreateValidationCacheEXT(
6199     VkDevice                                    device,
6200     const VkValidationCacheCreateInfoEXT*       pCreateInfo,
6201     const VkAllocationCallbacks*                pAllocator,
6202     VkValidationCacheEXT*                       pValidationCache) {
6203     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6204     if (NULL == disp) {
6205         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6206                    "vkCreateValidationCacheEXT: Invalid device "
6207                    "[VUID-vkCreateValidationCacheEXT-device-parameter]");
6208         abort(); /* Intentionally fail so user can correct issue. */
6209     }
6210     return disp->CreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
6211 }
6212 
DestroyValidationCacheEXT(VkDevice device,VkValidationCacheEXT validationCache,const VkAllocationCallbacks * pAllocator)6213 VKAPI_ATTR void VKAPI_CALL DestroyValidationCacheEXT(
6214     VkDevice                                    device,
6215     VkValidationCacheEXT                        validationCache,
6216     const VkAllocationCallbacks*                pAllocator) {
6217     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6218     if (NULL == disp) {
6219         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6220                    "vkDestroyValidationCacheEXT: Invalid device "
6221                    "[VUID-vkDestroyValidationCacheEXT-device-parameter]");
6222         abort(); /* Intentionally fail so user can correct issue. */
6223     }
6224     disp->DestroyValidationCacheEXT(device, validationCache, pAllocator);
6225 }
6226 
MergeValidationCachesEXT(VkDevice device,VkValidationCacheEXT dstCache,uint32_t srcCacheCount,const VkValidationCacheEXT * pSrcCaches)6227 VKAPI_ATTR VkResult VKAPI_CALL MergeValidationCachesEXT(
6228     VkDevice                                    device,
6229     VkValidationCacheEXT                        dstCache,
6230     uint32_t                                    srcCacheCount,
6231     const VkValidationCacheEXT*                 pSrcCaches) {
6232     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6233     if (NULL == disp) {
6234         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6235                    "vkMergeValidationCachesEXT: Invalid device "
6236                    "[VUID-vkMergeValidationCachesEXT-device-parameter]");
6237         abort(); /* Intentionally fail so user can correct issue. */
6238     }
6239     return disp->MergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches);
6240 }
6241 
GetValidationCacheDataEXT(VkDevice device,VkValidationCacheEXT validationCache,size_t * pDataSize,void * pData)6242 VKAPI_ATTR VkResult VKAPI_CALL GetValidationCacheDataEXT(
6243     VkDevice                                    device,
6244     VkValidationCacheEXT                        validationCache,
6245     size_t*                                     pDataSize,
6246     void*                                       pData) {
6247     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6248     if (NULL == disp) {
6249         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6250                    "vkGetValidationCacheDataEXT: Invalid device "
6251                    "[VUID-vkGetValidationCacheDataEXT-device-parameter]");
6252         abort(); /* Intentionally fail so user can correct issue. */
6253     }
6254     return disp->GetValidationCacheDataEXT(device, validationCache, pDataSize, pData);
6255 }
6256 
6257 
6258 // ---- VK_NV_shading_rate_image extension trampoline/terminators
6259 
CmdBindShadingRateImageNV(VkCommandBuffer commandBuffer,VkImageView imageView,VkImageLayout imageLayout)6260 VKAPI_ATTR void VKAPI_CALL CmdBindShadingRateImageNV(
6261     VkCommandBuffer                             commandBuffer,
6262     VkImageView                                 imageView,
6263     VkImageLayout                               imageLayout) {
6264     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6265     if (NULL == disp) {
6266         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6267                    "vkCmdBindShadingRateImageNV: Invalid commandBuffer "
6268                    "[VUID-vkCmdBindShadingRateImageNV-commandBuffer-parameter]");
6269         abort(); /* Intentionally fail so user can correct issue. */
6270     }
6271     disp->CmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout);
6272 }
6273 
CmdSetViewportShadingRatePaletteNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkShadingRatePaletteNV * pShadingRatePalettes)6274 VKAPI_ATTR void VKAPI_CALL CmdSetViewportShadingRatePaletteNV(
6275     VkCommandBuffer                             commandBuffer,
6276     uint32_t                                    firstViewport,
6277     uint32_t                                    viewportCount,
6278     const VkShadingRatePaletteNV*               pShadingRatePalettes) {
6279     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6280     if (NULL == disp) {
6281         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6282                    "vkCmdSetViewportShadingRatePaletteNV: Invalid commandBuffer "
6283                    "[VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-parameter]");
6284         abort(); /* Intentionally fail so user can correct issue. */
6285     }
6286     disp->CmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes);
6287 }
6288 
CmdSetCoarseSampleOrderNV(VkCommandBuffer commandBuffer,VkCoarseSampleOrderTypeNV sampleOrderType,uint32_t customSampleOrderCount,const VkCoarseSampleOrderCustomNV * pCustomSampleOrders)6289 VKAPI_ATTR void VKAPI_CALL CmdSetCoarseSampleOrderNV(
6290     VkCommandBuffer                             commandBuffer,
6291     VkCoarseSampleOrderTypeNV                   sampleOrderType,
6292     uint32_t                                    customSampleOrderCount,
6293     const VkCoarseSampleOrderCustomNV*          pCustomSampleOrders) {
6294     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6295     if (NULL == disp) {
6296         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6297                    "vkCmdSetCoarseSampleOrderNV: Invalid commandBuffer "
6298                    "[VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-parameter]");
6299         abort(); /* Intentionally fail so user can correct issue. */
6300     }
6301     disp->CmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders);
6302 }
6303 
6304 
6305 // ---- VK_NV_ray_tracing extension trampoline/terminators
6306 
CreateAccelerationStructureNV(VkDevice device,const VkAccelerationStructureCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkAccelerationStructureNV * pAccelerationStructure)6307 VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureNV(
6308     VkDevice                                    device,
6309     const VkAccelerationStructureCreateInfoNV*  pCreateInfo,
6310     const VkAllocationCallbacks*                pAllocator,
6311     VkAccelerationStructureNV*                  pAccelerationStructure) {
6312     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6313     if (NULL == disp) {
6314         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6315                    "vkCreateAccelerationStructureNV: Invalid device "
6316                    "[VUID-vkCreateAccelerationStructureNV-device-parameter]");
6317         abort(); /* Intentionally fail so user can correct issue. */
6318     }
6319     return disp->CreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure);
6320 }
6321 
DestroyAccelerationStructureNV(VkDevice device,VkAccelerationStructureNV accelerationStructure,const VkAllocationCallbacks * pAllocator)6322 VKAPI_ATTR void VKAPI_CALL DestroyAccelerationStructureNV(
6323     VkDevice                                    device,
6324     VkAccelerationStructureNV                   accelerationStructure,
6325     const VkAllocationCallbacks*                pAllocator) {
6326     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6327     if (NULL == disp) {
6328         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6329                    "vkDestroyAccelerationStructureNV: Invalid device "
6330                    "[VUID-vkDestroyAccelerationStructureNV-device-parameter]");
6331         abort(); /* Intentionally fail so user can correct issue. */
6332     }
6333     disp->DestroyAccelerationStructureNV(device, accelerationStructure, pAllocator);
6334 }
6335 
GetAccelerationStructureMemoryRequirementsNV(VkDevice device,const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo,VkMemoryRequirements2KHR * pMemoryRequirements)6336 VKAPI_ATTR void VKAPI_CALL GetAccelerationStructureMemoryRequirementsNV(
6337     VkDevice                                    device,
6338     const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
6339     VkMemoryRequirements2KHR*                   pMemoryRequirements) {
6340     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6341     if (NULL == disp) {
6342         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6343                    "vkGetAccelerationStructureMemoryRequirementsNV: Invalid device "
6344                    "[VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter]");
6345         abort(); /* Intentionally fail so user can correct issue. */
6346     }
6347     disp->GetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements);
6348 }
6349 
BindAccelerationStructureMemoryNV(VkDevice device,uint32_t bindInfoCount,const VkBindAccelerationStructureMemoryInfoNV * pBindInfos)6350 VKAPI_ATTR VkResult VKAPI_CALL BindAccelerationStructureMemoryNV(
6351     VkDevice                                    device,
6352     uint32_t                                    bindInfoCount,
6353     const VkBindAccelerationStructureMemoryInfoNV* pBindInfos) {
6354     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6355     if (NULL == disp) {
6356         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6357                    "vkBindAccelerationStructureMemoryNV: Invalid device "
6358                    "[VUID-vkBindAccelerationStructureMemoryNV-device-parameter]");
6359         abort(); /* Intentionally fail so user can correct issue. */
6360     }
6361     return disp->BindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos);
6362 }
6363 
CmdBuildAccelerationStructureNV(VkCommandBuffer commandBuffer,const VkAccelerationStructureInfoNV * pInfo,VkBuffer instanceData,VkDeviceSize instanceOffset,VkBool32 update,VkAccelerationStructureNV dst,VkAccelerationStructureNV src,VkBuffer scratch,VkDeviceSize scratchOffset)6364 VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructureNV(
6365     VkCommandBuffer                             commandBuffer,
6366     const VkAccelerationStructureInfoNV*        pInfo,
6367     VkBuffer                                    instanceData,
6368     VkDeviceSize                                instanceOffset,
6369     VkBool32                                    update,
6370     VkAccelerationStructureNV                   dst,
6371     VkAccelerationStructureNV                   src,
6372     VkBuffer                                    scratch,
6373     VkDeviceSize                                scratchOffset) {
6374     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6375     if (NULL == disp) {
6376         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6377                    "vkCmdBuildAccelerationStructureNV: Invalid commandBuffer "
6378                    "[VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter]");
6379         abort(); /* Intentionally fail so user can correct issue. */
6380     }
6381     disp->CmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset);
6382 }
6383 
CmdCopyAccelerationStructureNV(VkCommandBuffer commandBuffer,VkAccelerationStructureNV dst,VkAccelerationStructureNV src,VkCopyAccelerationStructureModeKHR mode)6384 VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureNV(
6385     VkCommandBuffer                             commandBuffer,
6386     VkAccelerationStructureNV                   dst,
6387     VkAccelerationStructureNV                   src,
6388     VkCopyAccelerationStructureModeKHR          mode) {
6389     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6390     if (NULL == disp) {
6391         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6392                    "vkCmdCopyAccelerationStructureNV: Invalid commandBuffer "
6393                    "[VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter]");
6394         abort(); /* Intentionally fail so user can correct issue. */
6395     }
6396     disp->CmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode);
6397 }
6398 
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)6399 VKAPI_ATTR void VKAPI_CALL CmdTraceRaysNV(
6400     VkCommandBuffer                             commandBuffer,
6401     VkBuffer                                    raygenShaderBindingTableBuffer,
6402     VkDeviceSize                                raygenShaderBindingOffset,
6403     VkBuffer                                    missShaderBindingTableBuffer,
6404     VkDeviceSize                                missShaderBindingOffset,
6405     VkDeviceSize                                missShaderBindingStride,
6406     VkBuffer                                    hitShaderBindingTableBuffer,
6407     VkDeviceSize                                hitShaderBindingOffset,
6408     VkDeviceSize                                hitShaderBindingStride,
6409     VkBuffer                                    callableShaderBindingTableBuffer,
6410     VkDeviceSize                                callableShaderBindingOffset,
6411     VkDeviceSize                                callableShaderBindingStride,
6412     uint32_t                                    width,
6413     uint32_t                                    height,
6414     uint32_t                                    depth) {
6415     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6416     if (NULL == disp) {
6417         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6418                    "vkCmdTraceRaysNV: Invalid commandBuffer "
6419                    "[VUID-vkCmdTraceRaysNV-commandBuffer-parameter]");
6420         abort(); /* Intentionally fail so user can correct issue. */
6421     }
6422     disp->CmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth);
6423 }
6424 
CreateRayTracingPipelinesNV(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkRayTracingPipelineCreateInfoNV * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)6425 VKAPI_ATTR VkResult VKAPI_CALL CreateRayTracingPipelinesNV(
6426     VkDevice                                    device,
6427     VkPipelineCache                             pipelineCache,
6428     uint32_t                                    createInfoCount,
6429     const VkRayTracingPipelineCreateInfoNV*     pCreateInfos,
6430     const VkAllocationCallbacks*                pAllocator,
6431     VkPipeline*                                 pPipelines) {
6432     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6433     if (NULL == disp) {
6434         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6435                    "vkCreateRayTracingPipelinesNV: Invalid device "
6436                    "[VUID-vkCreateRayTracingPipelinesNV-device-parameter]");
6437         abort(); /* Intentionally fail so user can correct issue. */
6438     }
6439     return disp->CreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
6440 }
6441 
GetRayTracingShaderGroupHandlesKHR(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)6442 VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingShaderGroupHandlesKHR(
6443     VkDevice                                    device,
6444     VkPipeline                                  pipeline,
6445     uint32_t                                    firstGroup,
6446     uint32_t                                    groupCount,
6447     size_t                                      dataSize,
6448     void*                                       pData) {
6449     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6450     if (NULL == disp) {
6451         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6452                    "vkGetRayTracingShaderGroupHandlesKHR: Invalid device "
6453                    "[VUID-vkGetRayTracingShaderGroupHandlesKHR-device-parameter]");
6454         abort(); /* Intentionally fail so user can correct issue. */
6455     }
6456     return disp->GetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData);
6457 }
6458 
GetRayTracingShaderGroupHandlesNV(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)6459 VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingShaderGroupHandlesNV(
6460     VkDevice                                    device,
6461     VkPipeline                                  pipeline,
6462     uint32_t                                    firstGroup,
6463     uint32_t                                    groupCount,
6464     size_t                                      dataSize,
6465     void*                                       pData) {
6466     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6467     if (NULL == disp) {
6468         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6469                    "vkGetRayTracingShaderGroupHandlesNV: Invalid device "
6470                    "[VUID-vkGetRayTracingShaderGroupHandlesNV-device-parameter]");
6471         abort(); /* Intentionally fail so user can correct issue. */
6472     }
6473     return disp->GetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData);
6474 }
6475 
GetAccelerationStructureHandleNV(VkDevice device,VkAccelerationStructureNV accelerationStructure,size_t dataSize,void * pData)6476 VKAPI_ATTR VkResult VKAPI_CALL GetAccelerationStructureHandleNV(
6477     VkDevice                                    device,
6478     VkAccelerationStructureNV                   accelerationStructure,
6479     size_t                                      dataSize,
6480     void*                                       pData) {
6481     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6482     if (NULL == disp) {
6483         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6484                    "vkGetAccelerationStructureHandleNV: Invalid device "
6485                    "[VUID-vkGetAccelerationStructureHandleNV-device-parameter]");
6486         abort(); /* Intentionally fail so user can correct issue. */
6487     }
6488     return disp->GetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData);
6489 }
6490 
CmdWriteAccelerationStructuresPropertiesNV(VkCommandBuffer commandBuffer,uint32_t accelerationStructureCount,const VkAccelerationStructureNV * pAccelerationStructures,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)6491 VKAPI_ATTR void VKAPI_CALL CmdWriteAccelerationStructuresPropertiesNV(
6492     VkCommandBuffer                             commandBuffer,
6493     uint32_t                                    accelerationStructureCount,
6494     const VkAccelerationStructureNV*            pAccelerationStructures,
6495     VkQueryType                                 queryType,
6496     VkQueryPool                                 queryPool,
6497     uint32_t                                    firstQuery) {
6498     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6499     if (NULL == disp) {
6500         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6501                    "vkCmdWriteAccelerationStructuresPropertiesNV: Invalid commandBuffer "
6502                    "[VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-parameter]");
6503         abort(); /* Intentionally fail so user can correct issue. */
6504     }
6505     disp->CmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery);
6506 }
6507 
CompileDeferredNV(VkDevice device,VkPipeline pipeline,uint32_t shader)6508 VKAPI_ATTR VkResult VKAPI_CALL CompileDeferredNV(
6509     VkDevice                                    device,
6510     VkPipeline                                  pipeline,
6511     uint32_t                                    shader) {
6512     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6513     if (NULL == disp) {
6514         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6515                    "vkCompileDeferredNV: Invalid device "
6516                    "[VUID-vkCompileDeferredNV-device-parameter]");
6517         abort(); /* Intentionally fail so user can correct issue. */
6518     }
6519     return disp->CompileDeferredNV(device, pipeline, shader);
6520 }
6521 
6522 
6523 // ---- VK_EXT_external_memory_host extension trampoline/terminators
6524 
GetMemoryHostPointerPropertiesEXT(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,const void * pHostPointer,VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties)6525 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryHostPointerPropertiesEXT(
6526     VkDevice                                    device,
6527     VkExternalMemoryHandleTypeFlagBits          handleType,
6528     const void*                                 pHostPointer,
6529     VkMemoryHostPointerPropertiesEXT*           pMemoryHostPointerProperties) {
6530     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6531     if (NULL == disp) {
6532         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6533                    "vkGetMemoryHostPointerPropertiesEXT: Invalid device "
6534                    "[VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter]");
6535         abort(); /* Intentionally fail so user can correct issue. */
6536     }
6537     return disp->GetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
6538 }
6539 
6540 
6541 // ---- VK_AMD_buffer_marker extension trampoline/terminators
6542 
CmdWriteBufferMarkerAMD(VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkBuffer dstBuffer,VkDeviceSize dstOffset,uint32_t marker)6543 VKAPI_ATTR void VKAPI_CALL CmdWriteBufferMarkerAMD(
6544     VkCommandBuffer                             commandBuffer,
6545     VkPipelineStageFlagBits                     pipelineStage,
6546     VkBuffer                                    dstBuffer,
6547     VkDeviceSize                                dstOffset,
6548     uint32_t                                    marker) {
6549     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6550     if (NULL == disp) {
6551         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6552                    "vkCmdWriteBufferMarkerAMD: Invalid commandBuffer "
6553                    "[VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-parameter]");
6554         abort(); /* Intentionally fail so user can correct issue. */
6555     }
6556     disp->CmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker);
6557 }
6558 
6559 
6560 // ---- VK_EXT_calibrated_timestamps extension trampoline/terminators
6561 
GetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice physicalDevice,uint32_t * pTimeDomainCount,VkTimeDomainKHR * pTimeDomains)6562 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCalibrateableTimeDomainsEXT(
6563     VkPhysicalDevice                            physicalDevice,
6564     uint32_t*                                   pTimeDomainCount,
6565     VkTimeDomainKHR*                            pTimeDomains) {
6566     const VkLayerInstanceDispatchTable *disp;
6567     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
6568     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
6569         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6570                    "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT: Invalid physicalDevice "
6571                    "[VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-physicalDevice-parameter]");
6572         abort(); /* Intentionally fail so user can correct issue. */
6573     }
6574     disp = loader_get_instance_layer_dispatch(physicalDevice);
6575     return disp->GetPhysicalDeviceCalibrateableTimeDomainsEXT(unwrapped_phys_dev, pTimeDomainCount, pTimeDomains);
6576 }
6577 
terminator_GetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice physicalDevice,uint32_t * pTimeDomainCount,VkTimeDomainKHR * pTimeDomains)6578 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceCalibrateableTimeDomainsEXT(
6579     VkPhysicalDevice                            physicalDevice,
6580     uint32_t*                                   pTimeDomainCount,
6581     VkTimeDomainKHR*                            pTimeDomains) {
6582     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
6583     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
6584     if (NULL == icd_term->dispatch.GetPhysicalDeviceCalibrateableTimeDomainsEXT) {
6585         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
6586                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceCalibrateableTimeDomainsEXT");
6587         abort(); /* Intentionally fail so user can correct issue. */
6588     }
6589     return icd_term->dispatch.GetPhysicalDeviceCalibrateableTimeDomainsEXT(phys_dev_term->phys_dev, pTimeDomainCount, pTimeDomains);
6590 }
6591 
GetCalibratedTimestampsEXT(VkDevice device,uint32_t timestampCount,const VkCalibratedTimestampInfoKHR * pTimestampInfos,uint64_t * pTimestamps,uint64_t * pMaxDeviation)6592 VKAPI_ATTR VkResult VKAPI_CALL GetCalibratedTimestampsEXT(
6593     VkDevice                                    device,
6594     uint32_t                                    timestampCount,
6595     const VkCalibratedTimestampInfoKHR*         pTimestampInfos,
6596     uint64_t*                                   pTimestamps,
6597     uint64_t*                                   pMaxDeviation) {
6598     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6599     if (NULL == disp) {
6600         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6601                    "vkGetCalibratedTimestampsEXT: Invalid device "
6602                    "[VUID-vkGetCalibratedTimestampsEXT-device-parameter]");
6603         abort(); /* Intentionally fail so user can correct issue. */
6604     }
6605     return disp->GetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation);
6606 }
6607 
6608 
6609 // ---- VK_NV_mesh_shader extension trampoline/terminators
6610 
CmdDrawMeshTasksNV(VkCommandBuffer commandBuffer,uint32_t taskCount,uint32_t firstTask)6611 VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksNV(
6612     VkCommandBuffer                             commandBuffer,
6613     uint32_t                                    taskCount,
6614     uint32_t                                    firstTask) {
6615     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6616     if (NULL == disp) {
6617         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6618                    "vkCmdDrawMeshTasksNV: Invalid commandBuffer "
6619                    "[VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter]");
6620         abort(); /* Intentionally fail so user can correct issue. */
6621     }
6622     disp->CmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask);
6623 }
6624 
CmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)6625 VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectNV(
6626     VkCommandBuffer                             commandBuffer,
6627     VkBuffer                                    buffer,
6628     VkDeviceSize                                offset,
6629     uint32_t                                    drawCount,
6630     uint32_t                                    stride) {
6631     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6632     if (NULL == disp) {
6633         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6634                    "vkCmdDrawMeshTasksIndirectNV: Invalid commandBuffer "
6635                    "[VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-parameter]");
6636         abort(); /* Intentionally fail so user can correct issue. */
6637     }
6638     disp->CmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride);
6639 }
6640 
CmdDrawMeshTasksIndirectCountNV(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)6641 VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectCountNV(
6642     VkCommandBuffer                             commandBuffer,
6643     VkBuffer                                    buffer,
6644     VkDeviceSize                                offset,
6645     VkBuffer                                    countBuffer,
6646     VkDeviceSize                                countBufferOffset,
6647     uint32_t                                    maxDrawCount,
6648     uint32_t                                    stride) {
6649     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6650     if (NULL == disp) {
6651         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6652                    "vkCmdDrawMeshTasksIndirectCountNV: Invalid commandBuffer "
6653                    "[VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter]");
6654         abort(); /* Intentionally fail so user can correct issue. */
6655     }
6656     disp->CmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
6657 }
6658 
6659 
6660 // ---- VK_NV_scissor_exclusive extension trampoline/terminators
6661 
CmdSetExclusiveScissorEnableNV(VkCommandBuffer commandBuffer,uint32_t firstExclusiveScissor,uint32_t exclusiveScissorCount,const VkBool32 * pExclusiveScissorEnables)6662 VKAPI_ATTR void VKAPI_CALL CmdSetExclusiveScissorEnableNV(
6663     VkCommandBuffer                             commandBuffer,
6664     uint32_t                                    firstExclusiveScissor,
6665     uint32_t                                    exclusiveScissorCount,
6666     const VkBool32*                             pExclusiveScissorEnables) {
6667     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6668     if (NULL == disp) {
6669         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6670                    "vkCmdSetExclusiveScissorEnableNV: Invalid commandBuffer "
6671                    "[VUID-vkCmdSetExclusiveScissorEnableNV-commandBuffer-parameter]");
6672         abort(); /* Intentionally fail so user can correct issue. */
6673     }
6674     disp->CmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables);
6675 }
6676 
CmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer,uint32_t firstExclusiveScissor,uint32_t exclusiveScissorCount,const VkRect2D * pExclusiveScissors)6677 VKAPI_ATTR void VKAPI_CALL CmdSetExclusiveScissorNV(
6678     VkCommandBuffer                             commandBuffer,
6679     uint32_t                                    firstExclusiveScissor,
6680     uint32_t                                    exclusiveScissorCount,
6681     const VkRect2D*                             pExclusiveScissors) {
6682     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6683     if (NULL == disp) {
6684         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6685                    "vkCmdSetExclusiveScissorNV: Invalid commandBuffer "
6686                    "[VUID-vkCmdSetExclusiveScissorNV-commandBuffer-parameter]");
6687         abort(); /* Intentionally fail so user can correct issue. */
6688     }
6689     disp->CmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors);
6690 }
6691 
6692 
6693 // ---- VK_NV_device_diagnostic_checkpoints extension trampoline/terminators
6694 
CmdSetCheckpointNV(VkCommandBuffer commandBuffer,const void * pCheckpointMarker)6695 VKAPI_ATTR void VKAPI_CALL CmdSetCheckpointNV(
6696     VkCommandBuffer                             commandBuffer,
6697     const void*                                 pCheckpointMarker) {
6698     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6699     if (NULL == disp) {
6700         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6701                    "vkCmdSetCheckpointNV: Invalid commandBuffer "
6702                    "[VUID-vkCmdSetCheckpointNV-commandBuffer-parameter]");
6703         abort(); /* Intentionally fail so user can correct issue. */
6704     }
6705     disp->CmdSetCheckpointNV(commandBuffer, pCheckpointMarker);
6706 }
6707 
GetQueueCheckpointDataNV(VkQueue queue,uint32_t * pCheckpointDataCount,VkCheckpointDataNV * pCheckpointData)6708 VKAPI_ATTR void VKAPI_CALL GetQueueCheckpointDataNV(
6709     VkQueue                                     queue,
6710     uint32_t*                                   pCheckpointDataCount,
6711     VkCheckpointDataNV*                         pCheckpointData) {
6712     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
6713     if (NULL == disp) {
6714         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6715                    "vkGetQueueCheckpointDataNV: Invalid queue "
6716                    "[VUID-vkGetQueueCheckpointDataNV-queue-parameter]");
6717         abort(); /* Intentionally fail so user can correct issue. */
6718     }
6719     disp->GetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData);
6720 }
6721 
6722 
6723 // ---- VK_INTEL_performance_query extension trampoline/terminators
6724 
InitializePerformanceApiINTEL(VkDevice device,const VkInitializePerformanceApiInfoINTEL * pInitializeInfo)6725 VKAPI_ATTR VkResult VKAPI_CALL InitializePerformanceApiINTEL(
6726     VkDevice                                    device,
6727     const VkInitializePerformanceApiInfoINTEL*  pInitializeInfo) {
6728     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6729     if (NULL == disp) {
6730         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6731                    "vkInitializePerformanceApiINTEL: Invalid device "
6732                    "[VUID-vkInitializePerformanceApiINTEL-device-parameter]");
6733         abort(); /* Intentionally fail so user can correct issue. */
6734     }
6735     return disp->InitializePerformanceApiINTEL(device, pInitializeInfo);
6736 }
6737 
UninitializePerformanceApiINTEL(VkDevice device)6738 VKAPI_ATTR void VKAPI_CALL UninitializePerformanceApiINTEL(
6739     VkDevice                                    device) {
6740     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6741     if (NULL == disp) {
6742         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6743                    "vkUninitializePerformanceApiINTEL: Invalid device "
6744                    "[VUID-vkUninitializePerformanceApiINTEL-device-parameter]");
6745         abort(); /* Intentionally fail so user can correct issue. */
6746     }
6747     disp->UninitializePerformanceApiINTEL(device);
6748 }
6749 
CmdSetPerformanceMarkerINTEL(VkCommandBuffer commandBuffer,const VkPerformanceMarkerInfoINTEL * pMarkerInfo)6750 VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceMarkerINTEL(
6751     VkCommandBuffer                             commandBuffer,
6752     const VkPerformanceMarkerInfoINTEL*         pMarkerInfo) {
6753     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6754     if (NULL == disp) {
6755         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6756                    "vkCmdSetPerformanceMarkerINTEL: Invalid commandBuffer "
6757                    "[VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-parameter]");
6758         abort(); /* Intentionally fail so user can correct issue. */
6759     }
6760     return disp->CmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo);
6761 }
6762 
CmdSetPerformanceStreamMarkerINTEL(VkCommandBuffer commandBuffer,const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo)6763 VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceStreamMarkerINTEL(
6764     VkCommandBuffer                             commandBuffer,
6765     const VkPerformanceStreamMarkerInfoINTEL*   pMarkerInfo) {
6766     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6767     if (NULL == disp) {
6768         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6769                    "vkCmdSetPerformanceStreamMarkerINTEL: Invalid commandBuffer "
6770                    "[VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-parameter]");
6771         abort(); /* Intentionally fail so user can correct issue. */
6772     }
6773     return disp->CmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo);
6774 }
6775 
CmdSetPerformanceOverrideINTEL(VkCommandBuffer commandBuffer,const VkPerformanceOverrideInfoINTEL * pOverrideInfo)6776 VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceOverrideINTEL(
6777     VkCommandBuffer                             commandBuffer,
6778     const VkPerformanceOverrideInfoINTEL*       pOverrideInfo) {
6779     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6780     if (NULL == disp) {
6781         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6782                    "vkCmdSetPerformanceOverrideINTEL: Invalid commandBuffer "
6783                    "[VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-parameter]");
6784         abort(); /* Intentionally fail so user can correct issue. */
6785     }
6786     return disp->CmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo);
6787 }
6788 
AcquirePerformanceConfigurationINTEL(VkDevice device,const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo,VkPerformanceConfigurationINTEL * pConfiguration)6789 VKAPI_ATTR VkResult VKAPI_CALL AcquirePerformanceConfigurationINTEL(
6790     VkDevice                                    device,
6791     const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
6792     VkPerformanceConfigurationINTEL*            pConfiguration) {
6793     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6794     if (NULL == disp) {
6795         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6796                    "vkAcquirePerformanceConfigurationINTEL: Invalid device "
6797                    "[VUID-vkAcquirePerformanceConfigurationINTEL-device-parameter]");
6798         abort(); /* Intentionally fail so user can correct issue. */
6799     }
6800     return disp->AcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration);
6801 }
6802 
ReleasePerformanceConfigurationINTEL(VkDevice device,VkPerformanceConfigurationINTEL configuration)6803 VKAPI_ATTR VkResult VKAPI_CALL ReleasePerformanceConfigurationINTEL(
6804     VkDevice                                    device,
6805     VkPerformanceConfigurationINTEL             configuration) {
6806     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6807     if (NULL == disp) {
6808         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6809                    "vkReleasePerformanceConfigurationINTEL: Invalid device "
6810                    "[VUID-vkReleasePerformanceConfigurationINTEL-device-parameter]");
6811         abort(); /* Intentionally fail so user can correct issue. */
6812     }
6813     return disp->ReleasePerformanceConfigurationINTEL(device, configuration);
6814 }
6815 
QueueSetPerformanceConfigurationINTEL(VkQueue queue,VkPerformanceConfigurationINTEL configuration)6816 VKAPI_ATTR VkResult VKAPI_CALL QueueSetPerformanceConfigurationINTEL(
6817     VkQueue                                     queue,
6818     VkPerformanceConfigurationINTEL             configuration) {
6819     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
6820     if (NULL == disp) {
6821         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6822                    "vkQueueSetPerformanceConfigurationINTEL: Invalid queue "
6823                    "[VUID-vkQueueSetPerformanceConfigurationINTEL-queue-parameter]");
6824         abort(); /* Intentionally fail so user can correct issue. */
6825     }
6826     return disp->QueueSetPerformanceConfigurationINTEL(queue, configuration);
6827 }
6828 
GetPerformanceParameterINTEL(VkDevice device,VkPerformanceParameterTypeINTEL parameter,VkPerformanceValueINTEL * pValue)6829 VKAPI_ATTR VkResult VKAPI_CALL GetPerformanceParameterINTEL(
6830     VkDevice                                    device,
6831     VkPerformanceParameterTypeINTEL             parameter,
6832     VkPerformanceValueINTEL*                    pValue) {
6833     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6834     if (NULL == disp) {
6835         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6836                    "vkGetPerformanceParameterINTEL: Invalid device "
6837                    "[VUID-vkGetPerformanceParameterINTEL-device-parameter]");
6838         abort(); /* Intentionally fail so user can correct issue. */
6839     }
6840     return disp->GetPerformanceParameterINTEL(device, parameter, pValue);
6841 }
6842 
6843 
6844 // ---- VK_AMD_display_native_hdr extension trampoline/terminators
6845 
SetLocalDimmingAMD(VkDevice device,VkSwapchainKHR swapChain,VkBool32 localDimmingEnable)6846 VKAPI_ATTR void VKAPI_CALL SetLocalDimmingAMD(
6847     VkDevice                                    device,
6848     VkSwapchainKHR                              swapChain,
6849     VkBool32                                    localDimmingEnable) {
6850     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6851     if (NULL == disp) {
6852         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6853                    "vkSetLocalDimmingAMD: Invalid device "
6854                    "[VUID-vkSetLocalDimmingAMD-device-parameter]");
6855         abort(); /* Intentionally fail so user can correct issue. */
6856     }
6857     disp->SetLocalDimmingAMD(device, swapChain, localDimmingEnable);
6858 }
6859 
6860 
6861 // ---- VK_EXT_buffer_device_address extension trampoline/terminators
6862 
GetBufferDeviceAddressEXT(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)6863 VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressEXT(
6864     VkDevice                                    device,
6865     const VkBufferDeviceAddressInfo*            pInfo) {
6866     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6867     if (NULL == disp) {
6868         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6869                    "vkGetBufferDeviceAddressEXT: Invalid device "
6870                    "[VUID-vkGetBufferDeviceAddressEXT-device-parameter]");
6871         abort(); /* Intentionally fail so user can correct issue. */
6872     }
6873     return disp->GetBufferDeviceAddressEXT(device, pInfo);
6874 }
6875 
6876 
6877 // ---- VK_NV_cooperative_matrix extension trampoline/terminators
6878 
GetPhysicalDeviceCooperativeMatrixPropertiesNV(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkCooperativeMatrixPropertiesNV * pProperties)6879 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixPropertiesNV(
6880     VkPhysicalDevice                            physicalDevice,
6881     uint32_t*                                   pPropertyCount,
6882     VkCooperativeMatrixPropertiesNV*            pProperties) {
6883     const VkLayerInstanceDispatchTable *disp;
6884     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
6885     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
6886         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6887                    "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV: Invalid physicalDevice "
6888                    "[VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-physicalDevice-parameter]");
6889         abort(); /* Intentionally fail so user can correct issue. */
6890     }
6891     disp = loader_get_instance_layer_dispatch(physicalDevice);
6892     return disp->GetPhysicalDeviceCooperativeMatrixPropertiesNV(unwrapped_phys_dev, pPropertyCount, pProperties);
6893 }
6894 
terminator_GetPhysicalDeviceCooperativeMatrixPropertiesNV(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkCooperativeMatrixPropertiesNV * pProperties)6895 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceCooperativeMatrixPropertiesNV(
6896     VkPhysicalDevice                            physicalDevice,
6897     uint32_t*                                   pPropertyCount,
6898     VkCooperativeMatrixPropertiesNV*            pProperties) {
6899     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
6900     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
6901     if (NULL == icd_term->dispatch.GetPhysicalDeviceCooperativeMatrixPropertiesNV) {
6902         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
6903                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceCooperativeMatrixPropertiesNV");
6904         abort(); /* Intentionally fail so user can correct issue. */
6905     }
6906     return icd_term->dispatch.GetPhysicalDeviceCooperativeMatrixPropertiesNV(phys_dev_term->phys_dev, pPropertyCount, pProperties);
6907 }
6908 
6909 
6910 // ---- VK_NV_coverage_reduction_mode extension trampoline/terminators
6911 
GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(VkPhysicalDevice physicalDevice,uint32_t * pCombinationCount,VkFramebufferMixedSamplesCombinationNV * pCombinations)6912 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
6913     VkPhysicalDevice                            physicalDevice,
6914     uint32_t*                                   pCombinationCount,
6915     VkFramebufferMixedSamplesCombinationNV*     pCombinations) {
6916     const VkLayerInstanceDispatchTable *disp;
6917     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
6918     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
6919         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6920                    "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV: Invalid physicalDevice "
6921                    "[VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-physicalDevice-parameter]");
6922         abort(); /* Intentionally fail so user can correct issue. */
6923     }
6924     disp = loader_get_instance_layer_dispatch(physicalDevice);
6925     return disp->GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(unwrapped_phys_dev, pCombinationCount, pCombinations);
6926 }
6927 
terminator_GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(VkPhysicalDevice physicalDevice,uint32_t * pCombinationCount,VkFramebufferMixedSamplesCombinationNV * pCombinations)6928 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
6929     VkPhysicalDevice                            physicalDevice,
6930     uint32_t*                                   pCombinationCount,
6931     VkFramebufferMixedSamplesCombinationNV*     pCombinations) {
6932     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
6933     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
6934     if (NULL == icd_term->dispatch.GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV) {
6935         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
6936                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
6937         abort(); /* Intentionally fail so user can correct issue. */
6938     }
6939     return icd_term->dispatch.GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(phys_dev_term->phys_dev, pCombinationCount, pCombinations);
6940 }
6941 
6942 
6943 // ---- VK_EXT_full_screen_exclusive extension trampoline/terminators
6944 
6945 #if defined(VK_USE_PLATFORM_WIN32_KHR)
AcquireFullScreenExclusiveModeEXT(VkDevice device,VkSwapchainKHR swapchain)6946 VKAPI_ATTR VkResult VKAPI_CALL AcquireFullScreenExclusiveModeEXT(
6947     VkDevice                                    device,
6948     VkSwapchainKHR                              swapchain) {
6949     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6950     if (NULL == disp) {
6951         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6952                    "vkAcquireFullScreenExclusiveModeEXT: Invalid device "
6953                    "[VUID-vkAcquireFullScreenExclusiveModeEXT-device-parameter]");
6954         abort(); /* Intentionally fail so user can correct issue. */
6955     }
6956     return disp->AcquireFullScreenExclusiveModeEXT(device, swapchain);
6957 }
6958 
6959 #endif // VK_USE_PLATFORM_WIN32_KHR
6960 #if defined(VK_USE_PLATFORM_WIN32_KHR)
ReleaseFullScreenExclusiveModeEXT(VkDevice device,VkSwapchainKHR swapchain)6961 VKAPI_ATTR VkResult VKAPI_CALL ReleaseFullScreenExclusiveModeEXT(
6962     VkDevice                                    device,
6963     VkSwapchainKHR                              swapchain) {
6964     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6965     if (NULL == disp) {
6966         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6967                    "vkReleaseFullScreenExclusiveModeEXT: Invalid device "
6968                    "[VUID-vkReleaseFullScreenExclusiveModeEXT-device-parameter]");
6969         abort(); /* Intentionally fail so user can correct issue. */
6970     }
6971     return disp->ReleaseFullScreenExclusiveModeEXT(device, swapchain);
6972 }
6973 
6974 #endif // VK_USE_PLATFORM_WIN32_KHR
6975 
6976 // ---- VK_EXT_line_rasterization extension trampoline/terminators
6977 
CmdSetLineStippleEXT(VkCommandBuffer commandBuffer,uint32_t lineStippleFactor,uint16_t lineStipplePattern)6978 VKAPI_ATTR void VKAPI_CALL CmdSetLineStippleEXT(
6979     VkCommandBuffer                             commandBuffer,
6980     uint32_t                                    lineStippleFactor,
6981     uint16_t                                    lineStipplePattern) {
6982     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6983     if (NULL == disp) {
6984         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6985                    "vkCmdSetLineStippleEXT: Invalid commandBuffer "
6986                    "[VUID-vkCmdSetLineStippleEXT-commandBuffer-parameter]");
6987         abort(); /* Intentionally fail so user can correct issue. */
6988     }
6989     disp->CmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern);
6990 }
6991 
6992 
6993 // ---- VK_EXT_host_query_reset extension trampoline/terminators
6994 
ResetQueryPoolEXT(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)6995 VKAPI_ATTR void VKAPI_CALL ResetQueryPoolEXT(
6996     VkDevice                                    device,
6997     VkQueryPool                                 queryPool,
6998     uint32_t                                    firstQuery,
6999     uint32_t                                    queryCount) {
7000     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7001     if (NULL == disp) {
7002         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7003                    "vkResetQueryPoolEXT: Invalid device "
7004                    "[VUID-vkResetQueryPoolEXT-device-parameter]");
7005         abort(); /* Intentionally fail so user can correct issue. */
7006     }
7007     disp->ResetQueryPoolEXT(device, queryPool, firstQuery, queryCount);
7008 }
7009 
7010 
7011 // ---- VK_EXT_extended_dynamic_state extension trampoline/terminators
7012 
CmdSetCullModeEXT(VkCommandBuffer commandBuffer,VkCullModeFlags cullMode)7013 VKAPI_ATTR void VKAPI_CALL CmdSetCullModeEXT(
7014     VkCommandBuffer                             commandBuffer,
7015     VkCullModeFlags                             cullMode) {
7016     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7017     if (NULL == disp) {
7018         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7019                    "vkCmdSetCullModeEXT: Invalid commandBuffer "
7020                    "[VUID-vkCmdSetCullModeEXT-commandBuffer-parameter]");
7021         abort(); /* Intentionally fail so user can correct issue. */
7022     }
7023     disp->CmdSetCullModeEXT(commandBuffer, cullMode);
7024 }
7025 
CmdSetFrontFaceEXT(VkCommandBuffer commandBuffer,VkFrontFace frontFace)7026 VKAPI_ATTR void VKAPI_CALL CmdSetFrontFaceEXT(
7027     VkCommandBuffer                             commandBuffer,
7028     VkFrontFace                                 frontFace) {
7029     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7030     if (NULL == disp) {
7031         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7032                    "vkCmdSetFrontFaceEXT: Invalid commandBuffer "
7033                    "[VUID-vkCmdSetFrontFaceEXT-commandBuffer-parameter]");
7034         abort(); /* Intentionally fail so user can correct issue. */
7035     }
7036     disp->CmdSetFrontFaceEXT(commandBuffer, frontFace);
7037 }
7038 
CmdSetPrimitiveTopologyEXT(VkCommandBuffer commandBuffer,VkPrimitiveTopology primitiveTopology)7039 VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveTopologyEXT(
7040     VkCommandBuffer                             commandBuffer,
7041     VkPrimitiveTopology                         primitiveTopology) {
7042     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7043     if (NULL == disp) {
7044         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7045                    "vkCmdSetPrimitiveTopologyEXT: Invalid commandBuffer "
7046                    "[VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-parameter]");
7047         abort(); /* Intentionally fail so user can correct issue. */
7048     }
7049     disp->CmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology);
7050 }
7051 
CmdSetViewportWithCountEXT(VkCommandBuffer commandBuffer,uint32_t viewportCount,const VkViewport * pViewports)7052 VKAPI_ATTR void VKAPI_CALL CmdSetViewportWithCountEXT(
7053     VkCommandBuffer                             commandBuffer,
7054     uint32_t                                    viewportCount,
7055     const VkViewport*                           pViewports) {
7056     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7057     if (NULL == disp) {
7058         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7059                    "vkCmdSetViewportWithCountEXT: Invalid commandBuffer "
7060                    "[VUID-vkCmdSetViewportWithCountEXT-commandBuffer-parameter]");
7061         abort(); /* Intentionally fail so user can correct issue. */
7062     }
7063     disp->CmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports);
7064 }
7065 
CmdSetScissorWithCountEXT(VkCommandBuffer commandBuffer,uint32_t scissorCount,const VkRect2D * pScissors)7066 VKAPI_ATTR void VKAPI_CALL CmdSetScissorWithCountEXT(
7067     VkCommandBuffer                             commandBuffer,
7068     uint32_t                                    scissorCount,
7069     const VkRect2D*                             pScissors) {
7070     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7071     if (NULL == disp) {
7072         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7073                    "vkCmdSetScissorWithCountEXT: Invalid commandBuffer "
7074                    "[VUID-vkCmdSetScissorWithCountEXT-commandBuffer-parameter]");
7075         abort(); /* Intentionally fail so user can correct issue. */
7076     }
7077     disp->CmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors);
7078 }
7079 
CmdBindVertexBuffers2EXT(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes,const VkDeviceSize * pStrides)7080 VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers2EXT(
7081     VkCommandBuffer                             commandBuffer,
7082     uint32_t                                    firstBinding,
7083     uint32_t                                    bindingCount,
7084     const VkBuffer*                             pBuffers,
7085     const VkDeviceSize*                         pOffsets,
7086     const VkDeviceSize*                         pSizes,
7087     const VkDeviceSize*                         pStrides) {
7088     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7089     if (NULL == disp) {
7090         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7091                    "vkCmdBindVertexBuffers2EXT: Invalid commandBuffer "
7092                    "[VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-parameter]");
7093         abort(); /* Intentionally fail so user can correct issue. */
7094     }
7095     disp->CmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides);
7096 }
7097 
CmdSetDepthTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthTestEnable)7098 VKAPI_ATTR void VKAPI_CALL CmdSetDepthTestEnableEXT(
7099     VkCommandBuffer                             commandBuffer,
7100     VkBool32                                    depthTestEnable) {
7101     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7102     if (NULL == disp) {
7103         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7104                    "vkCmdSetDepthTestEnableEXT: Invalid commandBuffer "
7105                    "[VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-parameter]");
7106         abort(); /* Intentionally fail so user can correct issue. */
7107     }
7108     disp->CmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable);
7109 }
7110 
CmdSetDepthWriteEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthWriteEnable)7111 VKAPI_ATTR void VKAPI_CALL CmdSetDepthWriteEnableEXT(
7112     VkCommandBuffer                             commandBuffer,
7113     VkBool32                                    depthWriteEnable) {
7114     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7115     if (NULL == disp) {
7116         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7117                    "vkCmdSetDepthWriteEnableEXT: Invalid commandBuffer "
7118                    "[VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-parameter]");
7119         abort(); /* Intentionally fail so user can correct issue. */
7120     }
7121     disp->CmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable);
7122 }
7123 
CmdSetDepthCompareOpEXT(VkCommandBuffer commandBuffer,VkCompareOp depthCompareOp)7124 VKAPI_ATTR void VKAPI_CALL CmdSetDepthCompareOpEXT(
7125     VkCommandBuffer                             commandBuffer,
7126     VkCompareOp                                 depthCompareOp) {
7127     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7128     if (NULL == disp) {
7129         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7130                    "vkCmdSetDepthCompareOpEXT: Invalid commandBuffer "
7131                    "[VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-parameter]");
7132         abort(); /* Intentionally fail so user can correct issue. */
7133     }
7134     disp->CmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp);
7135 }
7136 
CmdSetDepthBoundsTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthBoundsTestEnable)7137 VKAPI_ATTR void VKAPI_CALL CmdSetDepthBoundsTestEnableEXT(
7138     VkCommandBuffer                             commandBuffer,
7139     VkBool32                                    depthBoundsTestEnable) {
7140     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7141     if (NULL == disp) {
7142         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7143                    "vkCmdSetDepthBoundsTestEnableEXT: Invalid commandBuffer "
7144                    "[VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-parameter]");
7145         abort(); /* Intentionally fail so user can correct issue. */
7146     }
7147     disp->CmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable);
7148 }
7149 
CmdSetStencilTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 stencilTestEnable)7150 VKAPI_ATTR void VKAPI_CALL CmdSetStencilTestEnableEXT(
7151     VkCommandBuffer                             commandBuffer,
7152     VkBool32                                    stencilTestEnable) {
7153     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7154     if (NULL == disp) {
7155         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7156                    "vkCmdSetStencilTestEnableEXT: Invalid commandBuffer "
7157                    "[VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-parameter]");
7158         abort(); /* Intentionally fail so user can correct issue. */
7159     }
7160     disp->CmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable);
7161 }
7162 
CmdSetStencilOpEXT(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,VkStencilOp failOp,VkStencilOp passOp,VkStencilOp depthFailOp,VkCompareOp compareOp)7163 VKAPI_ATTR void VKAPI_CALL CmdSetStencilOpEXT(
7164     VkCommandBuffer                             commandBuffer,
7165     VkStencilFaceFlags                          faceMask,
7166     VkStencilOp                                 failOp,
7167     VkStencilOp                                 passOp,
7168     VkStencilOp                                 depthFailOp,
7169     VkCompareOp                                 compareOp) {
7170     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7171     if (NULL == disp) {
7172         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7173                    "vkCmdSetStencilOpEXT: Invalid commandBuffer "
7174                    "[VUID-vkCmdSetStencilOpEXT-commandBuffer-parameter]");
7175         abort(); /* Intentionally fail so user can correct issue. */
7176     }
7177     disp->CmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp);
7178 }
7179 
7180 
7181 // ---- VK_EXT_host_image_copy extension trampoline/terminators
7182 
CopyMemoryToImageEXT(VkDevice device,const VkCopyMemoryToImageInfoEXT * pCopyMemoryToImageInfo)7183 VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToImageEXT(
7184     VkDevice                                    device,
7185     const VkCopyMemoryToImageInfoEXT*           pCopyMemoryToImageInfo) {
7186     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7187     if (NULL == disp) {
7188         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7189                    "vkCopyMemoryToImageEXT: Invalid device "
7190                    "[VUID-vkCopyMemoryToImageEXT-device-parameter]");
7191         abort(); /* Intentionally fail so user can correct issue. */
7192     }
7193     return disp->CopyMemoryToImageEXT(device, pCopyMemoryToImageInfo);
7194 }
7195 
CopyImageToMemoryEXT(VkDevice device,const VkCopyImageToMemoryInfoEXT * pCopyImageToMemoryInfo)7196 VKAPI_ATTR VkResult VKAPI_CALL CopyImageToMemoryEXT(
7197     VkDevice                                    device,
7198     const VkCopyImageToMemoryInfoEXT*           pCopyImageToMemoryInfo) {
7199     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7200     if (NULL == disp) {
7201         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7202                    "vkCopyImageToMemoryEXT: Invalid device "
7203                    "[VUID-vkCopyImageToMemoryEXT-device-parameter]");
7204         abort(); /* Intentionally fail so user can correct issue. */
7205     }
7206     return disp->CopyImageToMemoryEXT(device, pCopyImageToMemoryInfo);
7207 }
7208 
CopyImageToImageEXT(VkDevice device,const VkCopyImageToImageInfoEXT * pCopyImageToImageInfo)7209 VKAPI_ATTR VkResult VKAPI_CALL CopyImageToImageEXT(
7210     VkDevice                                    device,
7211     const VkCopyImageToImageInfoEXT*            pCopyImageToImageInfo) {
7212     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7213     if (NULL == disp) {
7214         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7215                    "vkCopyImageToImageEXT: Invalid device "
7216                    "[VUID-vkCopyImageToImageEXT-device-parameter]");
7217         abort(); /* Intentionally fail so user can correct issue. */
7218     }
7219     return disp->CopyImageToImageEXT(device, pCopyImageToImageInfo);
7220 }
7221 
TransitionImageLayoutEXT(VkDevice device,uint32_t transitionCount,const VkHostImageLayoutTransitionInfoEXT * pTransitions)7222 VKAPI_ATTR VkResult VKAPI_CALL TransitionImageLayoutEXT(
7223     VkDevice                                    device,
7224     uint32_t                                    transitionCount,
7225     const VkHostImageLayoutTransitionInfoEXT*   pTransitions) {
7226     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7227     if (NULL == disp) {
7228         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7229                    "vkTransitionImageLayoutEXT: Invalid device "
7230                    "[VUID-vkTransitionImageLayoutEXT-device-parameter]");
7231         abort(); /* Intentionally fail so user can correct issue. */
7232     }
7233     return disp->TransitionImageLayoutEXT(device, transitionCount, pTransitions);
7234 }
7235 
GetImageSubresourceLayout2EXT(VkDevice device,VkImage image,const VkImageSubresource2KHR * pSubresource,VkSubresourceLayout2KHR * pLayout)7236 VKAPI_ATTR void VKAPI_CALL GetImageSubresourceLayout2EXT(
7237     VkDevice                                    device,
7238     VkImage                                     image,
7239     const VkImageSubresource2KHR*               pSubresource,
7240     VkSubresourceLayout2KHR*                    pLayout) {
7241     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7242     if (NULL == disp) {
7243         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7244                    "vkGetImageSubresourceLayout2EXT: Invalid device "
7245                    "[VUID-vkGetImageSubresourceLayout2EXT-device-parameter]");
7246         abort(); /* Intentionally fail so user can correct issue. */
7247     }
7248     disp->GetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout);
7249 }
7250 
7251 
7252 // ---- VK_EXT_swapchain_maintenance1 extension trampoline/terminators
7253 
ReleaseSwapchainImagesEXT(VkDevice device,const VkReleaseSwapchainImagesInfoEXT * pReleaseInfo)7254 VKAPI_ATTR VkResult VKAPI_CALL ReleaseSwapchainImagesEXT(
7255     VkDevice                                    device,
7256     const VkReleaseSwapchainImagesInfoEXT*      pReleaseInfo) {
7257     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7258     if (NULL == disp) {
7259         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7260                    "vkReleaseSwapchainImagesEXT: Invalid device "
7261                    "[VUID-vkReleaseSwapchainImagesEXT-device-parameter]");
7262         abort(); /* Intentionally fail so user can correct issue. */
7263     }
7264     return disp->ReleaseSwapchainImagesEXT(device, pReleaseInfo);
7265 }
7266 
7267 
7268 // ---- VK_NV_device_generated_commands extension trampoline/terminators
7269 
GetGeneratedCommandsMemoryRequirementsNV(VkDevice device,const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo,VkMemoryRequirements2 * pMemoryRequirements)7270 VKAPI_ATTR void VKAPI_CALL GetGeneratedCommandsMemoryRequirementsNV(
7271     VkDevice                                    device,
7272     const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
7273     VkMemoryRequirements2*                      pMemoryRequirements) {
7274     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7275     if (NULL == disp) {
7276         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7277                    "vkGetGeneratedCommandsMemoryRequirementsNV: Invalid device "
7278                    "[VUID-vkGetGeneratedCommandsMemoryRequirementsNV-device-parameter]");
7279         abort(); /* Intentionally fail so user can correct issue. */
7280     }
7281     disp->GetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements);
7282 }
7283 
CmdPreprocessGeneratedCommandsNV(VkCommandBuffer commandBuffer,const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo)7284 VKAPI_ATTR void VKAPI_CALL CmdPreprocessGeneratedCommandsNV(
7285     VkCommandBuffer                             commandBuffer,
7286     const VkGeneratedCommandsInfoNV*            pGeneratedCommandsInfo) {
7287     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7288     if (NULL == disp) {
7289         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7290                    "vkCmdPreprocessGeneratedCommandsNV: Invalid commandBuffer "
7291                    "[VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-parameter]");
7292         abort(); /* Intentionally fail so user can correct issue. */
7293     }
7294     disp->CmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo);
7295 }
7296 
CmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffer,VkBool32 isPreprocessed,const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo)7297 VKAPI_ATTR void VKAPI_CALL CmdExecuteGeneratedCommandsNV(
7298     VkCommandBuffer                             commandBuffer,
7299     VkBool32                                    isPreprocessed,
7300     const VkGeneratedCommandsInfoNV*            pGeneratedCommandsInfo) {
7301     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7302     if (NULL == disp) {
7303         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7304                    "vkCmdExecuteGeneratedCommandsNV: Invalid commandBuffer "
7305                    "[VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-parameter]");
7306         abort(); /* Intentionally fail so user can correct issue. */
7307     }
7308     disp->CmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo);
7309 }
7310 
CmdBindPipelineShaderGroupNV(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipeline pipeline,uint32_t groupIndex)7311 VKAPI_ATTR void VKAPI_CALL CmdBindPipelineShaderGroupNV(
7312     VkCommandBuffer                             commandBuffer,
7313     VkPipelineBindPoint                         pipelineBindPoint,
7314     VkPipeline                                  pipeline,
7315     uint32_t                                    groupIndex) {
7316     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7317     if (NULL == disp) {
7318         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7319                    "vkCmdBindPipelineShaderGroupNV: Invalid commandBuffer "
7320                    "[VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-parameter]");
7321         abort(); /* Intentionally fail so user can correct issue. */
7322     }
7323     disp->CmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex);
7324 }
7325 
CreateIndirectCommandsLayoutNV(VkDevice device,const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkIndirectCommandsLayoutNV * pIndirectCommandsLayout)7326 VKAPI_ATTR VkResult VKAPI_CALL CreateIndirectCommandsLayoutNV(
7327     VkDevice                                    device,
7328     const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
7329     const VkAllocationCallbacks*                pAllocator,
7330     VkIndirectCommandsLayoutNV*                 pIndirectCommandsLayout) {
7331     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7332     if (NULL == disp) {
7333         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7334                    "vkCreateIndirectCommandsLayoutNV: Invalid device "
7335                    "[VUID-vkCreateIndirectCommandsLayoutNV-device-parameter]");
7336         abort(); /* Intentionally fail so user can correct issue. */
7337     }
7338     return disp->CreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
7339 }
7340 
DestroyIndirectCommandsLayoutNV(VkDevice device,VkIndirectCommandsLayoutNV indirectCommandsLayout,const VkAllocationCallbacks * pAllocator)7341 VKAPI_ATTR void VKAPI_CALL DestroyIndirectCommandsLayoutNV(
7342     VkDevice                                    device,
7343     VkIndirectCommandsLayoutNV                  indirectCommandsLayout,
7344     const VkAllocationCallbacks*                pAllocator) {
7345     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7346     if (NULL == disp) {
7347         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7348                    "vkDestroyIndirectCommandsLayoutNV: Invalid device "
7349                    "[VUID-vkDestroyIndirectCommandsLayoutNV-device-parameter]");
7350         abort(); /* Intentionally fail so user can correct issue. */
7351     }
7352     disp->DestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator);
7353 }
7354 
7355 
7356 // ---- VK_EXT_depth_bias_control extension trampoline/terminators
7357 
CmdSetDepthBias2EXT(VkCommandBuffer commandBuffer,const VkDepthBiasInfoEXT * pDepthBiasInfo)7358 VKAPI_ATTR void VKAPI_CALL CmdSetDepthBias2EXT(
7359     VkCommandBuffer                             commandBuffer,
7360     const VkDepthBiasInfoEXT*                   pDepthBiasInfo) {
7361     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7362     if (NULL == disp) {
7363         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7364                    "vkCmdSetDepthBias2EXT: Invalid commandBuffer "
7365                    "[VUID-vkCmdSetDepthBias2EXT-commandBuffer-parameter]");
7366         abort(); /* Intentionally fail so user can correct issue. */
7367     }
7368     disp->CmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo);
7369 }
7370 
7371 
7372 // ---- VK_EXT_acquire_drm_display extension trampoline/terminators
7373 
AcquireDrmDisplayEXT(VkPhysicalDevice physicalDevice,int32_t drmFd,VkDisplayKHR display)7374 VKAPI_ATTR VkResult VKAPI_CALL AcquireDrmDisplayEXT(
7375     VkPhysicalDevice                            physicalDevice,
7376     int32_t                                     drmFd,
7377     VkDisplayKHR                                display) {
7378     const VkLayerInstanceDispatchTable *disp;
7379     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
7380     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
7381         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7382                    "vkAcquireDrmDisplayEXT: Invalid physicalDevice "
7383                    "[VUID-vkAcquireDrmDisplayEXT-physicalDevice-parameter]");
7384         abort(); /* Intentionally fail so user can correct issue. */
7385     }
7386     disp = loader_get_instance_layer_dispatch(physicalDevice);
7387     return disp->AcquireDrmDisplayEXT(unwrapped_phys_dev, drmFd, display);
7388 }
7389 
terminator_AcquireDrmDisplayEXT(VkPhysicalDevice physicalDevice,int32_t drmFd,VkDisplayKHR display)7390 VKAPI_ATTR VkResult VKAPI_CALL terminator_AcquireDrmDisplayEXT(
7391     VkPhysicalDevice                            physicalDevice,
7392     int32_t                                     drmFd,
7393     VkDisplayKHR                                display) {
7394     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
7395     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
7396     if (NULL == icd_term->dispatch.AcquireDrmDisplayEXT) {
7397         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
7398                    "ICD associated with VkPhysicalDevice does not support AcquireDrmDisplayEXT");
7399         return VK_ERROR_EXTENSION_NOT_PRESENT;
7400     }
7401     return icd_term->dispatch.AcquireDrmDisplayEXT(phys_dev_term->phys_dev, drmFd, display);
7402 }
7403 
GetDrmDisplayEXT(VkPhysicalDevice physicalDevice,int32_t drmFd,uint32_t connectorId,VkDisplayKHR * display)7404 VKAPI_ATTR VkResult VKAPI_CALL GetDrmDisplayEXT(
7405     VkPhysicalDevice                            physicalDevice,
7406     int32_t                                     drmFd,
7407     uint32_t                                    connectorId,
7408     VkDisplayKHR*                               display) {
7409     const VkLayerInstanceDispatchTable *disp;
7410     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
7411     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
7412         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7413                    "vkGetDrmDisplayEXT: Invalid physicalDevice "
7414                    "[VUID-vkGetDrmDisplayEXT-physicalDevice-parameter]");
7415         abort(); /* Intentionally fail so user can correct issue. */
7416     }
7417     disp = loader_get_instance_layer_dispatch(physicalDevice);
7418     return disp->GetDrmDisplayEXT(unwrapped_phys_dev, drmFd, connectorId, display);
7419 }
7420 
terminator_GetDrmDisplayEXT(VkPhysicalDevice physicalDevice,int32_t drmFd,uint32_t connectorId,VkDisplayKHR * display)7421 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDrmDisplayEXT(
7422     VkPhysicalDevice                            physicalDevice,
7423     int32_t                                     drmFd,
7424     uint32_t                                    connectorId,
7425     VkDisplayKHR*                               display) {
7426     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
7427     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
7428     if (NULL == icd_term->dispatch.GetDrmDisplayEXT) {
7429         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
7430                    "ICD associated with VkPhysicalDevice does not support GetDrmDisplayEXT");
7431         return VK_ERROR_EXTENSION_NOT_PRESENT;
7432     }
7433     return icd_term->dispatch.GetDrmDisplayEXT(phys_dev_term->phys_dev, drmFd, connectorId, display);
7434 }
7435 
7436 
7437 // ---- VK_EXT_private_data extension trampoline/terminators
7438 
CreatePrivateDataSlotEXT(VkDevice device,const VkPrivateDataSlotCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPrivateDataSlot * pPrivateDataSlot)7439 VKAPI_ATTR VkResult VKAPI_CALL CreatePrivateDataSlotEXT(
7440     VkDevice                                    device,
7441     const VkPrivateDataSlotCreateInfo*          pCreateInfo,
7442     const VkAllocationCallbacks*                pAllocator,
7443     VkPrivateDataSlot*                          pPrivateDataSlot) {
7444     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7445     if (NULL == disp) {
7446         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7447                    "vkCreatePrivateDataSlotEXT: Invalid device "
7448                    "[VUID-vkCreatePrivateDataSlotEXT-device-parameter]");
7449         abort(); /* Intentionally fail so user can correct issue. */
7450     }
7451     return disp->CreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot);
7452 }
7453 
DestroyPrivateDataSlotEXT(VkDevice device,VkPrivateDataSlot privateDataSlot,const VkAllocationCallbacks * pAllocator)7454 VKAPI_ATTR void VKAPI_CALL DestroyPrivateDataSlotEXT(
7455     VkDevice                                    device,
7456     VkPrivateDataSlot                           privateDataSlot,
7457     const VkAllocationCallbacks*                pAllocator) {
7458     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7459     if (NULL == disp) {
7460         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7461                    "vkDestroyPrivateDataSlotEXT: Invalid device "
7462                    "[VUID-vkDestroyPrivateDataSlotEXT-device-parameter]");
7463         abort(); /* Intentionally fail so user can correct issue. */
7464     }
7465     disp->DestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator);
7466 }
7467 
SetPrivateDataEXT(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t data)7468 VKAPI_ATTR VkResult VKAPI_CALL SetPrivateDataEXT(
7469     VkDevice                                    device,
7470     VkObjectType                                objectType,
7471     uint64_t                                    objectHandle,
7472     VkPrivateDataSlot                           privateDataSlot,
7473     uint64_t                                    data) {
7474     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7475     if (NULL == disp) {
7476         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7477                    "vkSetPrivateDataEXT: Invalid device "
7478                    "[VUID-vkSetPrivateDataEXT-device-parameter]");
7479         abort(); /* Intentionally fail so user can correct issue. */
7480     }
7481     return disp->SetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data);
7482 }
7483 
GetPrivateDataEXT(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t * pData)7484 VKAPI_ATTR void VKAPI_CALL GetPrivateDataEXT(
7485     VkDevice                                    device,
7486     VkObjectType                                objectType,
7487     uint64_t                                    objectHandle,
7488     VkPrivateDataSlot                           privateDataSlot,
7489     uint64_t*                                   pData) {
7490     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7491     if (NULL == disp) {
7492         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7493                    "vkGetPrivateDataEXT: Invalid device "
7494                    "[VUID-vkGetPrivateDataEXT-device-parameter]");
7495         abort(); /* Intentionally fail so user can correct issue. */
7496     }
7497     disp->GetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData);
7498 }
7499 
7500 
7501 // ---- VK_NV_cuda_kernel_launch extension trampoline/terminators
7502 
CreateCudaModuleNV(VkDevice device,const VkCudaModuleCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCudaModuleNV * pModule)7503 VKAPI_ATTR VkResult VKAPI_CALL CreateCudaModuleNV(
7504     VkDevice                                    device,
7505     const VkCudaModuleCreateInfoNV*             pCreateInfo,
7506     const VkAllocationCallbacks*                pAllocator,
7507     VkCudaModuleNV*                             pModule) {
7508     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7509     if (NULL == disp) {
7510         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7511                    "vkCreateCudaModuleNV: Invalid device "
7512                    "[VUID-vkCreateCudaModuleNV-device-parameter]");
7513         abort(); /* Intentionally fail so user can correct issue. */
7514     }
7515     return disp->CreateCudaModuleNV(device, pCreateInfo, pAllocator, pModule);
7516 }
7517 
GetCudaModuleCacheNV(VkDevice device,VkCudaModuleNV module,size_t * pCacheSize,void * pCacheData)7518 VKAPI_ATTR VkResult VKAPI_CALL GetCudaModuleCacheNV(
7519     VkDevice                                    device,
7520     VkCudaModuleNV                              module,
7521     size_t*                                     pCacheSize,
7522     void*                                       pCacheData) {
7523     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7524     if (NULL == disp) {
7525         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7526                    "vkGetCudaModuleCacheNV: Invalid device "
7527                    "[VUID-vkGetCudaModuleCacheNV-device-parameter]");
7528         abort(); /* Intentionally fail so user can correct issue. */
7529     }
7530     return disp->GetCudaModuleCacheNV(device, module, pCacheSize, pCacheData);
7531 }
7532 
CreateCudaFunctionNV(VkDevice device,const VkCudaFunctionCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCudaFunctionNV * pFunction)7533 VKAPI_ATTR VkResult VKAPI_CALL CreateCudaFunctionNV(
7534     VkDevice                                    device,
7535     const VkCudaFunctionCreateInfoNV*           pCreateInfo,
7536     const VkAllocationCallbacks*                pAllocator,
7537     VkCudaFunctionNV*                           pFunction) {
7538     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7539     if (NULL == disp) {
7540         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7541                    "vkCreateCudaFunctionNV: Invalid device "
7542                    "[VUID-vkCreateCudaFunctionNV-device-parameter]");
7543         abort(); /* Intentionally fail so user can correct issue. */
7544     }
7545     return disp->CreateCudaFunctionNV(device, pCreateInfo, pAllocator, pFunction);
7546 }
7547 
DestroyCudaModuleNV(VkDevice device,VkCudaModuleNV module,const VkAllocationCallbacks * pAllocator)7548 VKAPI_ATTR void VKAPI_CALL DestroyCudaModuleNV(
7549     VkDevice                                    device,
7550     VkCudaModuleNV                              module,
7551     const VkAllocationCallbacks*                pAllocator) {
7552     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7553     if (NULL == disp) {
7554         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7555                    "vkDestroyCudaModuleNV: Invalid device "
7556                    "[VUID-vkDestroyCudaModuleNV-device-parameter]");
7557         abort(); /* Intentionally fail so user can correct issue. */
7558     }
7559     disp->DestroyCudaModuleNV(device, module, pAllocator);
7560 }
7561 
DestroyCudaFunctionNV(VkDevice device,VkCudaFunctionNV function,const VkAllocationCallbacks * pAllocator)7562 VKAPI_ATTR void VKAPI_CALL DestroyCudaFunctionNV(
7563     VkDevice                                    device,
7564     VkCudaFunctionNV                            function,
7565     const VkAllocationCallbacks*                pAllocator) {
7566     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7567     if (NULL == disp) {
7568         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7569                    "vkDestroyCudaFunctionNV: Invalid device "
7570                    "[VUID-vkDestroyCudaFunctionNV-device-parameter]");
7571         abort(); /* Intentionally fail so user can correct issue. */
7572     }
7573     disp->DestroyCudaFunctionNV(device, function, pAllocator);
7574 }
7575 
CmdCudaLaunchKernelNV(VkCommandBuffer commandBuffer,const VkCudaLaunchInfoNV * pLaunchInfo)7576 VKAPI_ATTR void VKAPI_CALL CmdCudaLaunchKernelNV(
7577     VkCommandBuffer                             commandBuffer,
7578     const VkCudaLaunchInfoNV*                   pLaunchInfo) {
7579     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7580     if (NULL == disp) {
7581         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7582                    "vkCmdCudaLaunchKernelNV: Invalid commandBuffer "
7583                    "[VUID-vkCmdCudaLaunchKernelNV-commandBuffer-parameter]");
7584         abort(); /* Intentionally fail so user can correct issue. */
7585     }
7586     disp->CmdCudaLaunchKernelNV(commandBuffer, pLaunchInfo);
7587 }
7588 
7589 
7590 // ---- VK_EXT_metal_objects extension trampoline/terminators
7591 
7592 #if defined(VK_USE_PLATFORM_METAL_EXT)
ExportMetalObjectsEXT(VkDevice device,VkExportMetalObjectsInfoEXT * pMetalObjectsInfo)7593 VKAPI_ATTR void VKAPI_CALL ExportMetalObjectsEXT(
7594     VkDevice                                    device,
7595     VkExportMetalObjectsInfoEXT*                pMetalObjectsInfo) {
7596     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7597     if (NULL == disp) {
7598         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7599                    "vkExportMetalObjectsEXT: Invalid device "
7600                    "[VUID-vkExportMetalObjectsEXT-device-parameter]");
7601         abort(); /* Intentionally fail so user can correct issue. */
7602     }
7603     disp->ExportMetalObjectsEXT(device, pMetalObjectsInfo);
7604 }
7605 
7606 #endif // VK_USE_PLATFORM_METAL_EXT
7607 
7608 // ---- VK_EXT_descriptor_buffer extension trampoline/terminators
7609 
GetDescriptorSetLayoutSizeEXT(VkDevice device,VkDescriptorSetLayout layout,VkDeviceSize * pLayoutSizeInBytes)7610 VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSizeEXT(
7611     VkDevice                                    device,
7612     VkDescriptorSetLayout                       layout,
7613     VkDeviceSize*                               pLayoutSizeInBytes) {
7614     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7615     if (NULL == disp) {
7616         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7617                    "vkGetDescriptorSetLayoutSizeEXT: Invalid device "
7618                    "[VUID-vkGetDescriptorSetLayoutSizeEXT-device-parameter]");
7619         abort(); /* Intentionally fail so user can correct issue. */
7620     }
7621     disp->GetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes);
7622 }
7623 
GetDescriptorSetLayoutBindingOffsetEXT(VkDevice device,VkDescriptorSetLayout layout,uint32_t binding,VkDeviceSize * pOffset)7624 VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutBindingOffsetEXT(
7625     VkDevice                                    device,
7626     VkDescriptorSetLayout                       layout,
7627     uint32_t                                    binding,
7628     VkDeviceSize*                               pOffset) {
7629     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7630     if (NULL == disp) {
7631         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7632                    "vkGetDescriptorSetLayoutBindingOffsetEXT: Invalid device "
7633                    "[VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-device-parameter]");
7634         abort(); /* Intentionally fail so user can correct issue. */
7635     }
7636     disp->GetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset);
7637 }
7638 
GetDescriptorEXT(VkDevice device,const VkDescriptorGetInfoEXT * pDescriptorInfo,size_t dataSize,void * pDescriptor)7639 VKAPI_ATTR void VKAPI_CALL GetDescriptorEXT(
7640     VkDevice                                    device,
7641     const VkDescriptorGetInfoEXT*               pDescriptorInfo,
7642     size_t                                      dataSize,
7643     void*                                       pDescriptor) {
7644     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7645     if (NULL == disp) {
7646         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7647                    "vkGetDescriptorEXT: Invalid device "
7648                    "[VUID-vkGetDescriptorEXT-device-parameter]");
7649         abort(); /* Intentionally fail so user can correct issue. */
7650     }
7651     disp->GetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor);
7652 }
7653 
CmdBindDescriptorBuffersEXT(VkCommandBuffer commandBuffer,uint32_t bufferCount,const VkDescriptorBufferBindingInfoEXT * pBindingInfos)7654 VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorBuffersEXT(
7655     VkCommandBuffer                             commandBuffer,
7656     uint32_t                                    bufferCount,
7657     const VkDescriptorBufferBindingInfoEXT*     pBindingInfos) {
7658     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7659     if (NULL == disp) {
7660         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7661                    "vkCmdBindDescriptorBuffersEXT: Invalid commandBuffer "
7662                    "[VUID-vkCmdBindDescriptorBuffersEXT-commandBuffer-parameter]");
7663         abort(); /* Intentionally fail so user can correct issue. */
7664     }
7665     disp->CmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos);
7666 }
7667 
CmdSetDescriptorBufferOffsetsEXT(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t firstSet,uint32_t setCount,const uint32_t * pBufferIndices,const VkDeviceSize * pOffsets)7668 VKAPI_ATTR void VKAPI_CALL CmdSetDescriptorBufferOffsetsEXT(
7669     VkCommandBuffer                             commandBuffer,
7670     VkPipelineBindPoint                         pipelineBindPoint,
7671     VkPipelineLayout                            layout,
7672     uint32_t                                    firstSet,
7673     uint32_t                                    setCount,
7674     const uint32_t*                             pBufferIndices,
7675     const VkDeviceSize*                         pOffsets) {
7676     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7677     if (NULL == disp) {
7678         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7679                    "vkCmdSetDescriptorBufferOffsetsEXT: Invalid commandBuffer "
7680                    "[VUID-vkCmdSetDescriptorBufferOffsetsEXT-commandBuffer-parameter]");
7681         abort(); /* Intentionally fail so user can correct issue. */
7682     }
7683     disp->CmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets);
7684 }
7685 
CmdBindDescriptorBufferEmbeddedSamplersEXT(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t set)7686 VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorBufferEmbeddedSamplersEXT(
7687     VkCommandBuffer                             commandBuffer,
7688     VkPipelineBindPoint                         pipelineBindPoint,
7689     VkPipelineLayout                            layout,
7690     uint32_t                                    set) {
7691     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7692     if (NULL == disp) {
7693         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7694                    "vkCmdBindDescriptorBufferEmbeddedSamplersEXT: Invalid commandBuffer "
7695                    "[VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-commandBuffer-parameter]");
7696         abort(); /* Intentionally fail so user can correct issue. */
7697     }
7698     disp->CmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set);
7699 }
7700 
GetBufferOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkBufferCaptureDescriptorDataInfoEXT * pInfo,void * pData)7701 VKAPI_ATTR VkResult VKAPI_CALL GetBufferOpaqueCaptureDescriptorDataEXT(
7702     VkDevice                                    device,
7703     const VkBufferCaptureDescriptorDataInfoEXT* pInfo,
7704     void*                                       pData) {
7705     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7706     if (NULL == disp) {
7707         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7708                    "vkGetBufferOpaqueCaptureDescriptorDataEXT: Invalid device "
7709                    "[VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-device-parameter]");
7710         abort(); /* Intentionally fail so user can correct issue. */
7711     }
7712     return disp->GetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData);
7713 }
7714 
GetImageOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkImageCaptureDescriptorDataInfoEXT * pInfo,void * pData)7715 VKAPI_ATTR VkResult VKAPI_CALL GetImageOpaqueCaptureDescriptorDataEXT(
7716     VkDevice                                    device,
7717     const VkImageCaptureDescriptorDataInfoEXT*  pInfo,
7718     void*                                       pData) {
7719     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7720     if (NULL == disp) {
7721         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7722                    "vkGetImageOpaqueCaptureDescriptorDataEXT: Invalid device "
7723                    "[VUID-vkGetImageOpaqueCaptureDescriptorDataEXT-device-parameter]");
7724         abort(); /* Intentionally fail so user can correct issue. */
7725     }
7726     return disp->GetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData);
7727 }
7728 
GetImageViewOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkImageViewCaptureDescriptorDataInfoEXT * pInfo,void * pData)7729 VKAPI_ATTR VkResult VKAPI_CALL GetImageViewOpaqueCaptureDescriptorDataEXT(
7730     VkDevice                                    device,
7731     const VkImageViewCaptureDescriptorDataInfoEXT* pInfo,
7732     void*                                       pData) {
7733     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7734     if (NULL == disp) {
7735         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7736                    "vkGetImageViewOpaqueCaptureDescriptorDataEXT: Invalid device "
7737                    "[VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-device-parameter]");
7738         abort(); /* Intentionally fail so user can correct issue. */
7739     }
7740     return disp->GetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData);
7741 }
7742 
GetSamplerOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkSamplerCaptureDescriptorDataInfoEXT * pInfo,void * pData)7743 VKAPI_ATTR VkResult VKAPI_CALL GetSamplerOpaqueCaptureDescriptorDataEXT(
7744     VkDevice                                    device,
7745     const VkSamplerCaptureDescriptorDataInfoEXT* pInfo,
7746     void*                                       pData) {
7747     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7748     if (NULL == disp) {
7749         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7750                    "vkGetSamplerOpaqueCaptureDescriptorDataEXT: Invalid device "
7751                    "[VUID-vkGetSamplerOpaqueCaptureDescriptorDataEXT-device-parameter]");
7752         abort(); /* Intentionally fail so user can correct issue. */
7753     }
7754     return disp->GetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData);
7755 }
7756 
GetAccelerationStructureOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo,void * pData)7757 VKAPI_ATTR VkResult VKAPI_CALL GetAccelerationStructureOpaqueCaptureDescriptorDataEXT(
7758     VkDevice                                    device,
7759     const VkAccelerationStructureCaptureDescriptorDataInfoEXT* pInfo,
7760     void*                                       pData) {
7761     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7762     if (NULL == disp) {
7763         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7764                    "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT: Invalid device "
7765                    "[VUID-vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT-device-parameter]");
7766         abort(); /* Intentionally fail so user can correct issue. */
7767     }
7768     return disp->GetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData);
7769 }
7770 
7771 
7772 // ---- VK_NV_fragment_shading_rate_enums extension trampoline/terminators
7773 
CmdSetFragmentShadingRateEnumNV(VkCommandBuffer commandBuffer,VkFragmentShadingRateNV shadingRate,const VkFragmentShadingRateCombinerOpKHR combinerOps[2])7774 VKAPI_ATTR void VKAPI_CALL CmdSetFragmentShadingRateEnumNV(
7775     VkCommandBuffer                             commandBuffer,
7776     VkFragmentShadingRateNV                     shadingRate,
7777     const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]) {
7778     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7779     if (NULL == disp) {
7780         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7781                    "vkCmdSetFragmentShadingRateEnumNV: Invalid commandBuffer "
7782                    "[VUID-vkCmdSetFragmentShadingRateEnumNV-commandBuffer-parameter]");
7783         abort(); /* Intentionally fail so user can correct issue. */
7784     }
7785     disp->CmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps);
7786 }
7787 
7788 
7789 // ---- VK_EXT_device_fault extension trampoline/terminators
7790 
GetDeviceFaultInfoEXT(VkDevice device,VkDeviceFaultCountsEXT * pFaultCounts,VkDeviceFaultInfoEXT * pFaultInfo)7791 VKAPI_ATTR VkResult VKAPI_CALL GetDeviceFaultInfoEXT(
7792     VkDevice                                    device,
7793     VkDeviceFaultCountsEXT*                     pFaultCounts,
7794     VkDeviceFaultInfoEXT*                       pFaultInfo) {
7795     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7796     if (NULL == disp) {
7797         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7798                    "vkGetDeviceFaultInfoEXT: Invalid device "
7799                    "[VUID-vkGetDeviceFaultInfoEXT-device-parameter]");
7800         abort(); /* Intentionally fail so user can correct issue. */
7801     }
7802     return disp->GetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo);
7803 }
7804 
7805 
7806 // ---- VK_NV_acquire_winrt_display extension trampoline/terminators
7807 
7808 #if defined(VK_USE_PLATFORM_WIN32_KHR)
AcquireWinrtDisplayNV(VkPhysicalDevice physicalDevice,VkDisplayKHR display)7809 VKAPI_ATTR VkResult VKAPI_CALL AcquireWinrtDisplayNV(
7810     VkPhysicalDevice                            physicalDevice,
7811     VkDisplayKHR                                display) {
7812     const VkLayerInstanceDispatchTable *disp;
7813     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
7814     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
7815         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7816                    "vkAcquireWinrtDisplayNV: Invalid physicalDevice "
7817                    "[VUID-vkAcquireWinrtDisplayNV-physicalDevice-parameter]");
7818         abort(); /* Intentionally fail so user can correct issue. */
7819     }
7820     disp = loader_get_instance_layer_dispatch(physicalDevice);
7821     return disp->AcquireWinrtDisplayNV(unwrapped_phys_dev, display);
7822 }
7823 
terminator_AcquireWinrtDisplayNV(VkPhysicalDevice physicalDevice,VkDisplayKHR display)7824 VKAPI_ATTR VkResult VKAPI_CALL terminator_AcquireWinrtDisplayNV(
7825     VkPhysicalDevice                            physicalDevice,
7826     VkDisplayKHR                                display) {
7827     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
7828     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
7829     if (NULL == icd_term->dispatch.AcquireWinrtDisplayNV) {
7830         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
7831                    "ICD associated with VkPhysicalDevice does not support AcquireWinrtDisplayNV");
7832         abort(); /* Intentionally fail so user can correct issue. */
7833     }
7834     return icd_term->dispatch.AcquireWinrtDisplayNV(phys_dev_term->phys_dev, display);
7835 }
7836 
7837 #endif // VK_USE_PLATFORM_WIN32_KHR
7838 #if defined(VK_USE_PLATFORM_WIN32_KHR)
GetWinrtDisplayNV(VkPhysicalDevice physicalDevice,uint32_t deviceRelativeId,VkDisplayKHR * pDisplay)7839 VKAPI_ATTR VkResult VKAPI_CALL GetWinrtDisplayNV(
7840     VkPhysicalDevice                            physicalDevice,
7841     uint32_t                                    deviceRelativeId,
7842     VkDisplayKHR*                               pDisplay) {
7843     const VkLayerInstanceDispatchTable *disp;
7844     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
7845     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
7846         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7847                    "vkGetWinrtDisplayNV: Invalid physicalDevice "
7848                    "[VUID-vkGetWinrtDisplayNV-physicalDevice-parameter]");
7849         abort(); /* Intentionally fail so user can correct issue. */
7850     }
7851     disp = loader_get_instance_layer_dispatch(physicalDevice);
7852     return disp->GetWinrtDisplayNV(unwrapped_phys_dev, deviceRelativeId, pDisplay);
7853 }
7854 
terminator_GetWinrtDisplayNV(VkPhysicalDevice physicalDevice,uint32_t deviceRelativeId,VkDisplayKHR * pDisplay)7855 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetWinrtDisplayNV(
7856     VkPhysicalDevice                            physicalDevice,
7857     uint32_t                                    deviceRelativeId,
7858     VkDisplayKHR*                               pDisplay) {
7859     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
7860     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
7861     if (NULL == icd_term->dispatch.GetWinrtDisplayNV) {
7862         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
7863                    "ICD associated with VkPhysicalDevice does not support GetWinrtDisplayNV");
7864         abort(); /* Intentionally fail so user can correct issue. */
7865     }
7866     return icd_term->dispatch.GetWinrtDisplayNV(phys_dev_term->phys_dev, deviceRelativeId, pDisplay);
7867 }
7868 
7869 #endif // VK_USE_PLATFORM_WIN32_KHR
7870 
7871 // ---- VK_EXT_vertex_input_dynamic_state extension trampoline/terminators
7872 
CmdSetVertexInputEXT(VkCommandBuffer commandBuffer,uint32_t vertexBindingDescriptionCount,const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions,uint32_t vertexAttributeDescriptionCount,const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions)7873 VKAPI_ATTR void VKAPI_CALL CmdSetVertexInputEXT(
7874     VkCommandBuffer                             commandBuffer,
7875     uint32_t                                    vertexBindingDescriptionCount,
7876     const VkVertexInputBindingDescription2EXT*  pVertexBindingDescriptions,
7877     uint32_t                                    vertexAttributeDescriptionCount,
7878     const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions) {
7879     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7880     if (NULL == disp) {
7881         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7882                    "vkCmdSetVertexInputEXT: Invalid commandBuffer "
7883                    "[VUID-vkCmdSetVertexInputEXT-commandBuffer-parameter]");
7884         abort(); /* Intentionally fail so user can correct issue. */
7885     }
7886     disp->CmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions);
7887 }
7888 
7889 
7890 // ---- VK_FUCHSIA_external_memory extension trampoline/terminators
7891 
7892 #if defined(VK_USE_PLATFORM_FUCHSIA)
GetMemoryZirconHandleFUCHSIA(VkDevice device,const VkMemoryGetZirconHandleInfoFUCHSIA * pGetZirconHandleInfo,zx_handle_t * pZirconHandle)7893 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryZirconHandleFUCHSIA(
7894     VkDevice                                    device,
7895     const VkMemoryGetZirconHandleInfoFUCHSIA*   pGetZirconHandleInfo,
7896     zx_handle_t*                                pZirconHandle) {
7897     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7898     if (NULL == disp) {
7899         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7900                    "vkGetMemoryZirconHandleFUCHSIA: Invalid device "
7901                    "[VUID-vkGetMemoryZirconHandleFUCHSIA-device-parameter]");
7902         abort(); /* Intentionally fail so user can correct issue. */
7903     }
7904     return disp->GetMemoryZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle);
7905 }
7906 
7907 #endif // VK_USE_PLATFORM_FUCHSIA
7908 #if defined(VK_USE_PLATFORM_FUCHSIA)
GetMemoryZirconHandlePropertiesFUCHSIA(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,zx_handle_t zirconHandle,VkMemoryZirconHandlePropertiesFUCHSIA * pMemoryZirconHandleProperties)7909 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryZirconHandlePropertiesFUCHSIA(
7910     VkDevice                                    device,
7911     VkExternalMemoryHandleTypeFlagBits          handleType,
7912     zx_handle_t                                 zirconHandle,
7913     VkMemoryZirconHandlePropertiesFUCHSIA*      pMemoryZirconHandleProperties) {
7914     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7915     if (NULL == disp) {
7916         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7917                    "vkGetMemoryZirconHandlePropertiesFUCHSIA: Invalid device "
7918                    "[VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-device-parameter]");
7919         abort(); /* Intentionally fail so user can correct issue. */
7920     }
7921     return disp->GetMemoryZirconHandlePropertiesFUCHSIA(device, handleType, zirconHandle, pMemoryZirconHandleProperties);
7922 }
7923 
7924 #endif // VK_USE_PLATFORM_FUCHSIA
7925 
7926 // ---- VK_FUCHSIA_external_semaphore extension trampoline/terminators
7927 
7928 #if defined(VK_USE_PLATFORM_FUCHSIA)
ImportSemaphoreZirconHandleFUCHSIA(VkDevice device,const VkImportSemaphoreZirconHandleInfoFUCHSIA * pImportSemaphoreZirconHandleInfo)7929 VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreZirconHandleFUCHSIA(
7930     VkDevice                                    device,
7931     const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo) {
7932     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7933     if (NULL == disp) {
7934         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7935                    "vkImportSemaphoreZirconHandleFUCHSIA: Invalid device "
7936                    "[VUID-vkImportSemaphoreZirconHandleFUCHSIA-device-parameter]");
7937         abort(); /* Intentionally fail so user can correct issue. */
7938     }
7939     return disp->ImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo);
7940 }
7941 
7942 #endif // VK_USE_PLATFORM_FUCHSIA
7943 #if defined(VK_USE_PLATFORM_FUCHSIA)
GetSemaphoreZirconHandleFUCHSIA(VkDevice device,const VkSemaphoreGetZirconHandleInfoFUCHSIA * pGetZirconHandleInfo,zx_handle_t * pZirconHandle)7944 VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreZirconHandleFUCHSIA(
7945     VkDevice                                    device,
7946     const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
7947     zx_handle_t*                                pZirconHandle) {
7948     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7949     if (NULL == disp) {
7950         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7951                    "vkGetSemaphoreZirconHandleFUCHSIA: Invalid device "
7952                    "[VUID-vkGetSemaphoreZirconHandleFUCHSIA-device-parameter]");
7953         abort(); /* Intentionally fail so user can correct issue. */
7954     }
7955     return disp->GetSemaphoreZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle);
7956 }
7957 
7958 #endif // VK_USE_PLATFORM_FUCHSIA
7959 
7960 // ---- VK_FUCHSIA_buffer_collection extension trampoline/terminators
7961 
7962 #if defined(VK_USE_PLATFORM_FUCHSIA)
CreateBufferCollectionFUCHSIA(VkDevice device,const VkBufferCollectionCreateInfoFUCHSIA * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBufferCollectionFUCHSIA * pCollection)7963 VKAPI_ATTR VkResult VKAPI_CALL CreateBufferCollectionFUCHSIA(
7964     VkDevice                                    device,
7965     const VkBufferCollectionCreateInfoFUCHSIA*  pCreateInfo,
7966     const VkAllocationCallbacks*                pAllocator,
7967     VkBufferCollectionFUCHSIA*                  pCollection) {
7968     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7969     if (NULL == disp) {
7970         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7971                    "vkCreateBufferCollectionFUCHSIA: Invalid device "
7972                    "[VUID-vkCreateBufferCollectionFUCHSIA-device-parameter]");
7973         abort(); /* Intentionally fail so user can correct issue. */
7974     }
7975     return disp->CreateBufferCollectionFUCHSIA(device, pCreateInfo, pAllocator, pCollection);
7976 }
7977 
7978 #endif // VK_USE_PLATFORM_FUCHSIA
7979 #if defined(VK_USE_PLATFORM_FUCHSIA)
SetBufferCollectionImageConstraintsFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,const VkImageConstraintsInfoFUCHSIA * pImageConstraintsInfo)7980 VKAPI_ATTR VkResult VKAPI_CALL SetBufferCollectionImageConstraintsFUCHSIA(
7981     VkDevice                                    device,
7982     VkBufferCollectionFUCHSIA                   collection,
7983     const VkImageConstraintsInfoFUCHSIA*        pImageConstraintsInfo) {
7984     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7985     if (NULL == disp) {
7986         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7987                    "vkSetBufferCollectionImageConstraintsFUCHSIA: Invalid device "
7988                    "[VUID-vkSetBufferCollectionImageConstraintsFUCHSIA-device-parameter]");
7989         abort(); /* Intentionally fail so user can correct issue. */
7990     }
7991     return disp->SetBufferCollectionImageConstraintsFUCHSIA(device, collection, pImageConstraintsInfo);
7992 }
7993 
7994 #endif // VK_USE_PLATFORM_FUCHSIA
7995 #if defined(VK_USE_PLATFORM_FUCHSIA)
SetBufferCollectionBufferConstraintsFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,const VkBufferConstraintsInfoFUCHSIA * pBufferConstraintsInfo)7996 VKAPI_ATTR VkResult VKAPI_CALL SetBufferCollectionBufferConstraintsFUCHSIA(
7997     VkDevice                                    device,
7998     VkBufferCollectionFUCHSIA                   collection,
7999     const VkBufferConstraintsInfoFUCHSIA*       pBufferConstraintsInfo) {
8000     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8001     if (NULL == disp) {
8002         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8003                    "vkSetBufferCollectionBufferConstraintsFUCHSIA: Invalid device "
8004                    "[VUID-vkSetBufferCollectionBufferConstraintsFUCHSIA-device-parameter]");
8005         abort(); /* Intentionally fail so user can correct issue. */
8006     }
8007     return disp->SetBufferCollectionBufferConstraintsFUCHSIA(device, collection, pBufferConstraintsInfo);
8008 }
8009 
8010 #endif // VK_USE_PLATFORM_FUCHSIA
8011 #if defined(VK_USE_PLATFORM_FUCHSIA)
DestroyBufferCollectionFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,const VkAllocationCallbacks * pAllocator)8012 VKAPI_ATTR void VKAPI_CALL DestroyBufferCollectionFUCHSIA(
8013     VkDevice                                    device,
8014     VkBufferCollectionFUCHSIA                   collection,
8015     const VkAllocationCallbacks*                pAllocator) {
8016     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8017     if (NULL == disp) {
8018         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8019                    "vkDestroyBufferCollectionFUCHSIA: Invalid device "
8020                    "[VUID-vkDestroyBufferCollectionFUCHSIA-device-parameter]");
8021         abort(); /* Intentionally fail so user can correct issue. */
8022     }
8023     disp->DestroyBufferCollectionFUCHSIA(device, collection, pAllocator);
8024 }
8025 
8026 #endif // VK_USE_PLATFORM_FUCHSIA
8027 #if defined(VK_USE_PLATFORM_FUCHSIA)
GetBufferCollectionPropertiesFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,VkBufferCollectionPropertiesFUCHSIA * pProperties)8028 VKAPI_ATTR VkResult VKAPI_CALL GetBufferCollectionPropertiesFUCHSIA(
8029     VkDevice                                    device,
8030     VkBufferCollectionFUCHSIA                   collection,
8031     VkBufferCollectionPropertiesFUCHSIA*        pProperties) {
8032     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8033     if (NULL == disp) {
8034         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8035                    "vkGetBufferCollectionPropertiesFUCHSIA: Invalid device "
8036                    "[VUID-vkGetBufferCollectionPropertiesFUCHSIA-device-parameter]");
8037         abort(); /* Intentionally fail so user can correct issue. */
8038     }
8039     return disp->GetBufferCollectionPropertiesFUCHSIA(device, collection, pProperties);
8040 }
8041 
8042 #endif // VK_USE_PLATFORM_FUCHSIA
8043 
8044 // ---- VK_HUAWEI_subpass_shading extension trampoline/terminators
8045 
GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(VkDevice device,VkRenderPass renderpass,VkExtent2D * pMaxWorkgroupSize)8046 VKAPI_ATTR VkResult VKAPI_CALL GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
8047     VkDevice                                    device,
8048     VkRenderPass                                renderpass,
8049     VkExtent2D*                                 pMaxWorkgroupSize) {
8050     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8051     if (NULL == disp) {
8052         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8053                    "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI: Invalid device "
8054                    "[VUID-vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI-device-parameter]");
8055         abort(); /* Intentionally fail so user can correct issue. */
8056     }
8057     return disp->GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize);
8058 }
8059 
CmdSubpassShadingHUAWEI(VkCommandBuffer commandBuffer)8060 VKAPI_ATTR void VKAPI_CALL CmdSubpassShadingHUAWEI(
8061     VkCommandBuffer                             commandBuffer) {
8062     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8063     if (NULL == disp) {
8064         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8065                    "vkCmdSubpassShadingHUAWEI: Invalid commandBuffer "
8066                    "[VUID-vkCmdSubpassShadingHUAWEI-commandBuffer-parameter]");
8067         abort(); /* Intentionally fail so user can correct issue. */
8068     }
8069     disp->CmdSubpassShadingHUAWEI(commandBuffer);
8070 }
8071 
8072 
8073 // ---- VK_HUAWEI_invocation_mask extension trampoline/terminators
8074 
CmdBindInvocationMaskHUAWEI(VkCommandBuffer commandBuffer,VkImageView imageView,VkImageLayout imageLayout)8075 VKAPI_ATTR void VKAPI_CALL CmdBindInvocationMaskHUAWEI(
8076     VkCommandBuffer                             commandBuffer,
8077     VkImageView                                 imageView,
8078     VkImageLayout                               imageLayout) {
8079     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8080     if (NULL == disp) {
8081         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8082                    "vkCmdBindInvocationMaskHUAWEI: Invalid commandBuffer "
8083                    "[VUID-vkCmdBindInvocationMaskHUAWEI-commandBuffer-parameter]");
8084         abort(); /* Intentionally fail so user can correct issue. */
8085     }
8086     disp->CmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout);
8087 }
8088 
8089 
8090 // ---- VK_NV_external_memory_rdma extension trampoline/terminators
8091 
GetMemoryRemoteAddressNV(VkDevice device,const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo,VkRemoteAddressNV * pAddress)8092 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryRemoteAddressNV(
8093     VkDevice                                    device,
8094     const VkMemoryGetRemoteAddressInfoNV*       pMemoryGetRemoteAddressInfo,
8095     VkRemoteAddressNV*                          pAddress) {
8096     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8097     if (NULL == disp) {
8098         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8099                    "vkGetMemoryRemoteAddressNV: Invalid device "
8100                    "[VUID-vkGetMemoryRemoteAddressNV-device-parameter]");
8101         abort(); /* Intentionally fail so user can correct issue. */
8102     }
8103     return disp->GetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress);
8104 }
8105 
8106 
8107 // ---- VK_EXT_pipeline_properties extension trampoline/terminators
8108 
GetPipelinePropertiesEXT(VkDevice device,const VkPipelineInfoEXT * pPipelineInfo,VkBaseOutStructure * pPipelineProperties)8109 VKAPI_ATTR VkResult VKAPI_CALL GetPipelinePropertiesEXT(
8110     VkDevice                                    device,
8111     const VkPipelineInfoEXT*                    pPipelineInfo,
8112     VkBaseOutStructure*                         pPipelineProperties) {
8113     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8114     if (NULL == disp) {
8115         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8116                    "vkGetPipelinePropertiesEXT: Invalid device "
8117                    "[VUID-vkGetPipelinePropertiesEXT-device-parameter]");
8118         abort(); /* Intentionally fail so user can correct issue. */
8119     }
8120     return disp->GetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties);
8121 }
8122 
8123 
8124 // ---- VK_EXT_extended_dynamic_state2 extension trampoline/terminators
8125 
CmdSetPatchControlPointsEXT(VkCommandBuffer commandBuffer,uint32_t patchControlPoints)8126 VKAPI_ATTR void VKAPI_CALL CmdSetPatchControlPointsEXT(
8127     VkCommandBuffer                             commandBuffer,
8128     uint32_t                                    patchControlPoints) {
8129     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8130     if (NULL == disp) {
8131         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8132                    "vkCmdSetPatchControlPointsEXT: Invalid commandBuffer "
8133                    "[VUID-vkCmdSetPatchControlPointsEXT-commandBuffer-parameter]");
8134         abort(); /* Intentionally fail so user can correct issue. */
8135     }
8136     disp->CmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints);
8137 }
8138 
CmdSetRasterizerDiscardEnableEXT(VkCommandBuffer commandBuffer,VkBool32 rasterizerDiscardEnable)8139 VKAPI_ATTR void VKAPI_CALL CmdSetRasterizerDiscardEnableEXT(
8140     VkCommandBuffer                             commandBuffer,
8141     VkBool32                                    rasterizerDiscardEnable) {
8142     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8143     if (NULL == disp) {
8144         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8145                    "vkCmdSetRasterizerDiscardEnableEXT: Invalid commandBuffer "
8146                    "[VUID-vkCmdSetRasterizerDiscardEnableEXT-commandBuffer-parameter]");
8147         abort(); /* Intentionally fail so user can correct issue. */
8148     }
8149     disp->CmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable);
8150 }
8151 
CmdSetDepthBiasEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthBiasEnable)8152 VKAPI_ATTR void VKAPI_CALL CmdSetDepthBiasEnableEXT(
8153     VkCommandBuffer                             commandBuffer,
8154     VkBool32                                    depthBiasEnable) {
8155     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8156     if (NULL == disp) {
8157         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8158                    "vkCmdSetDepthBiasEnableEXT: Invalid commandBuffer "
8159                    "[VUID-vkCmdSetDepthBiasEnableEXT-commandBuffer-parameter]");
8160         abort(); /* Intentionally fail so user can correct issue. */
8161     }
8162     disp->CmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable);
8163 }
8164 
CmdSetLogicOpEXT(VkCommandBuffer commandBuffer,VkLogicOp logicOp)8165 VKAPI_ATTR void VKAPI_CALL CmdSetLogicOpEXT(
8166     VkCommandBuffer                             commandBuffer,
8167     VkLogicOp                                   logicOp) {
8168     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8169     if (NULL == disp) {
8170         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8171                    "vkCmdSetLogicOpEXT: Invalid commandBuffer "
8172                    "[VUID-vkCmdSetLogicOpEXT-commandBuffer-parameter]");
8173         abort(); /* Intentionally fail so user can correct issue. */
8174     }
8175     disp->CmdSetLogicOpEXT(commandBuffer, logicOp);
8176 }
8177 
CmdSetPrimitiveRestartEnableEXT(VkCommandBuffer commandBuffer,VkBool32 primitiveRestartEnable)8178 VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveRestartEnableEXT(
8179     VkCommandBuffer                             commandBuffer,
8180     VkBool32                                    primitiveRestartEnable) {
8181     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8182     if (NULL == disp) {
8183         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8184                    "vkCmdSetPrimitiveRestartEnableEXT: Invalid commandBuffer "
8185                    "[VUID-vkCmdSetPrimitiveRestartEnableEXT-commandBuffer-parameter]");
8186         abort(); /* Intentionally fail so user can correct issue. */
8187     }
8188     disp->CmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable);
8189 }
8190 
8191 
8192 // ---- VK_EXT_color_write_enable extension trampoline/terminators
8193 
CmdSetColorWriteEnableEXT(VkCommandBuffer commandBuffer,uint32_t attachmentCount,const VkBool32 * pColorWriteEnables)8194 VKAPI_ATTR void                                    VKAPI_CALL CmdSetColorWriteEnableEXT(
8195     VkCommandBuffer                             commandBuffer,
8196     uint32_t                                    attachmentCount,
8197     const VkBool32*                             pColorWriteEnables) {
8198     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8199     if (NULL == disp) {
8200         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8201                    "vkCmdSetColorWriteEnableEXT: Invalid commandBuffer "
8202                    "[VUID-vkCmdSetColorWriteEnableEXT-commandBuffer-parameter]");
8203         abort(); /* Intentionally fail so user can correct issue. */
8204     }
8205     disp->CmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables);
8206 }
8207 
8208 
8209 // ---- VK_EXT_multi_draw extension trampoline/terminators
8210 
CmdDrawMultiEXT(VkCommandBuffer commandBuffer,uint32_t drawCount,const VkMultiDrawInfoEXT * pVertexInfo,uint32_t instanceCount,uint32_t firstInstance,uint32_t stride)8211 VKAPI_ATTR void VKAPI_CALL CmdDrawMultiEXT(
8212     VkCommandBuffer                             commandBuffer,
8213     uint32_t                                    drawCount,
8214     const VkMultiDrawInfoEXT*                   pVertexInfo,
8215     uint32_t                                    instanceCount,
8216     uint32_t                                    firstInstance,
8217     uint32_t                                    stride) {
8218     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8219     if (NULL == disp) {
8220         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8221                    "vkCmdDrawMultiEXT: Invalid commandBuffer "
8222                    "[VUID-vkCmdDrawMultiEXT-commandBuffer-parameter]");
8223         abort(); /* Intentionally fail so user can correct issue. */
8224     }
8225     disp->CmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride);
8226 }
8227 
CmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer,uint32_t drawCount,const VkMultiDrawIndexedInfoEXT * pIndexInfo,uint32_t instanceCount,uint32_t firstInstance,uint32_t stride,const int32_t * pVertexOffset)8228 VKAPI_ATTR void VKAPI_CALL CmdDrawMultiIndexedEXT(
8229     VkCommandBuffer                             commandBuffer,
8230     uint32_t                                    drawCount,
8231     const VkMultiDrawIndexedInfoEXT*            pIndexInfo,
8232     uint32_t                                    instanceCount,
8233     uint32_t                                    firstInstance,
8234     uint32_t                                    stride,
8235     const int32_t*                              pVertexOffset) {
8236     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8237     if (NULL == disp) {
8238         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8239                    "vkCmdDrawMultiIndexedEXT: Invalid commandBuffer "
8240                    "[VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-parameter]");
8241         abort(); /* Intentionally fail so user can correct issue. */
8242     }
8243     disp->CmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset);
8244 }
8245 
8246 
8247 // ---- VK_EXT_opacity_micromap extension trampoline/terminators
8248 
CreateMicromapEXT(VkDevice device,const VkMicromapCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkMicromapEXT * pMicromap)8249 VKAPI_ATTR VkResult VKAPI_CALL CreateMicromapEXT(
8250     VkDevice                                    device,
8251     const VkMicromapCreateInfoEXT*              pCreateInfo,
8252     const VkAllocationCallbacks*                pAllocator,
8253     VkMicromapEXT*                              pMicromap) {
8254     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8255     if (NULL == disp) {
8256         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8257                    "vkCreateMicromapEXT: Invalid device "
8258                    "[VUID-vkCreateMicromapEXT-device-parameter]");
8259         abort(); /* Intentionally fail so user can correct issue. */
8260     }
8261     return disp->CreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap);
8262 }
8263 
DestroyMicromapEXT(VkDevice device,VkMicromapEXT micromap,const VkAllocationCallbacks * pAllocator)8264 VKAPI_ATTR void VKAPI_CALL DestroyMicromapEXT(
8265     VkDevice                                    device,
8266     VkMicromapEXT                               micromap,
8267     const VkAllocationCallbacks*                pAllocator) {
8268     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8269     if (NULL == disp) {
8270         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8271                    "vkDestroyMicromapEXT: Invalid device "
8272                    "[VUID-vkDestroyMicromapEXT-device-parameter]");
8273         abort(); /* Intentionally fail so user can correct issue. */
8274     }
8275     disp->DestroyMicromapEXT(device, micromap, pAllocator);
8276 }
8277 
CmdBuildMicromapsEXT(VkCommandBuffer commandBuffer,uint32_t infoCount,const VkMicromapBuildInfoEXT * pInfos)8278 VKAPI_ATTR void VKAPI_CALL CmdBuildMicromapsEXT(
8279     VkCommandBuffer                             commandBuffer,
8280     uint32_t                                    infoCount,
8281     const VkMicromapBuildInfoEXT*               pInfos) {
8282     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8283     if (NULL == disp) {
8284         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8285                    "vkCmdBuildMicromapsEXT: Invalid commandBuffer "
8286                    "[VUID-vkCmdBuildMicromapsEXT-commandBuffer-parameter]");
8287         abort(); /* Intentionally fail so user can correct issue. */
8288     }
8289     disp->CmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos);
8290 }
8291 
BuildMicromapsEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,uint32_t infoCount,const VkMicromapBuildInfoEXT * pInfos)8292 VKAPI_ATTR VkResult VKAPI_CALL BuildMicromapsEXT(
8293     VkDevice                                    device,
8294     VkDeferredOperationKHR                      deferredOperation,
8295     uint32_t                                    infoCount,
8296     const VkMicromapBuildInfoEXT*               pInfos) {
8297     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8298     if (NULL == disp) {
8299         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8300                    "vkBuildMicromapsEXT: Invalid device "
8301                    "[VUID-vkBuildMicromapsEXT-device-parameter]");
8302         abort(); /* Intentionally fail so user can correct issue. */
8303     }
8304     return disp->BuildMicromapsEXT(device, deferredOperation, infoCount, pInfos);
8305 }
8306 
CopyMicromapEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMicromapInfoEXT * pInfo)8307 VKAPI_ATTR VkResult VKAPI_CALL CopyMicromapEXT(
8308     VkDevice                                    device,
8309     VkDeferredOperationKHR                      deferredOperation,
8310     const VkCopyMicromapInfoEXT*                pInfo) {
8311     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8312     if (NULL == disp) {
8313         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8314                    "vkCopyMicromapEXT: Invalid device "
8315                    "[VUID-vkCopyMicromapEXT-device-parameter]");
8316         abort(); /* Intentionally fail so user can correct issue. */
8317     }
8318     return disp->CopyMicromapEXT(device, deferredOperation, pInfo);
8319 }
8320 
CopyMicromapToMemoryEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMicromapToMemoryInfoEXT * pInfo)8321 VKAPI_ATTR VkResult VKAPI_CALL CopyMicromapToMemoryEXT(
8322     VkDevice                                    device,
8323     VkDeferredOperationKHR                      deferredOperation,
8324     const VkCopyMicromapToMemoryInfoEXT*        pInfo) {
8325     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8326     if (NULL == disp) {
8327         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8328                    "vkCopyMicromapToMemoryEXT: Invalid device "
8329                    "[VUID-vkCopyMicromapToMemoryEXT-device-parameter]");
8330         abort(); /* Intentionally fail so user can correct issue. */
8331     }
8332     return disp->CopyMicromapToMemoryEXT(device, deferredOperation, pInfo);
8333 }
8334 
CopyMemoryToMicromapEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMemoryToMicromapInfoEXT * pInfo)8335 VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToMicromapEXT(
8336     VkDevice                                    device,
8337     VkDeferredOperationKHR                      deferredOperation,
8338     const VkCopyMemoryToMicromapInfoEXT*        pInfo) {
8339     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8340     if (NULL == disp) {
8341         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8342                    "vkCopyMemoryToMicromapEXT: Invalid device "
8343                    "[VUID-vkCopyMemoryToMicromapEXT-device-parameter]");
8344         abort(); /* Intentionally fail so user can correct issue. */
8345     }
8346     return disp->CopyMemoryToMicromapEXT(device, deferredOperation, pInfo);
8347 }
8348 
WriteMicromapsPropertiesEXT(VkDevice device,uint32_t micromapCount,const VkMicromapEXT * pMicromaps,VkQueryType queryType,size_t dataSize,void * pData,size_t stride)8349 VKAPI_ATTR VkResult VKAPI_CALL WriteMicromapsPropertiesEXT(
8350     VkDevice                                    device,
8351     uint32_t                                    micromapCount,
8352     const VkMicromapEXT*                        pMicromaps,
8353     VkQueryType                                 queryType,
8354     size_t                                      dataSize,
8355     void*                                       pData,
8356     size_t                                      stride) {
8357     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8358     if (NULL == disp) {
8359         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8360                    "vkWriteMicromapsPropertiesEXT: Invalid device "
8361                    "[VUID-vkWriteMicromapsPropertiesEXT-device-parameter]");
8362         abort(); /* Intentionally fail so user can correct issue. */
8363     }
8364     return disp->WriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride);
8365 }
8366 
CmdCopyMicromapEXT(VkCommandBuffer commandBuffer,const VkCopyMicromapInfoEXT * pInfo)8367 VKAPI_ATTR void VKAPI_CALL CmdCopyMicromapEXT(
8368     VkCommandBuffer                             commandBuffer,
8369     const VkCopyMicromapInfoEXT*                pInfo) {
8370     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8371     if (NULL == disp) {
8372         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8373                    "vkCmdCopyMicromapEXT: Invalid commandBuffer "
8374                    "[VUID-vkCmdCopyMicromapEXT-commandBuffer-parameter]");
8375         abort(); /* Intentionally fail so user can correct issue. */
8376     }
8377     disp->CmdCopyMicromapEXT(commandBuffer, pInfo);
8378 }
8379 
CmdCopyMicromapToMemoryEXT(VkCommandBuffer commandBuffer,const VkCopyMicromapToMemoryInfoEXT * pInfo)8380 VKAPI_ATTR void VKAPI_CALL CmdCopyMicromapToMemoryEXT(
8381     VkCommandBuffer                             commandBuffer,
8382     const VkCopyMicromapToMemoryInfoEXT*        pInfo) {
8383     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8384     if (NULL == disp) {
8385         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8386                    "vkCmdCopyMicromapToMemoryEXT: Invalid commandBuffer "
8387                    "[VUID-vkCmdCopyMicromapToMemoryEXT-commandBuffer-parameter]");
8388         abort(); /* Intentionally fail so user can correct issue. */
8389     }
8390     disp->CmdCopyMicromapToMemoryEXT(commandBuffer, pInfo);
8391 }
8392 
CmdCopyMemoryToMicromapEXT(VkCommandBuffer commandBuffer,const VkCopyMemoryToMicromapInfoEXT * pInfo)8393 VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryToMicromapEXT(
8394     VkCommandBuffer                             commandBuffer,
8395     const VkCopyMemoryToMicromapInfoEXT*        pInfo) {
8396     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8397     if (NULL == disp) {
8398         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8399                    "vkCmdCopyMemoryToMicromapEXT: Invalid commandBuffer "
8400                    "[VUID-vkCmdCopyMemoryToMicromapEXT-commandBuffer-parameter]");
8401         abort(); /* Intentionally fail so user can correct issue. */
8402     }
8403     disp->CmdCopyMemoryToMicromapEXT(commandBuffer, pInfo);
8404 }
8405 
CmdWriteMicromapsPropertiesEXT(VkCommandBuffer commandBuffer,uint32_t micromapCount,const VkMicromapEXT * pMicromaps,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)8406 VKAPI_ATTR void VKAPI_CALL CmdWriteMicromapsPropertiesEXT(
8407     VkCommandBuffer                             commandBuffer,
8408     uint32_t                                    micromapCount,
8409     const VkMicromapEXT*                        pMicromaps,
8410     VkQueryType                                 queryType,
8411     VkQueryPool                                 queryPool,
8412     uint32_t                                    firstQuery) {
8413     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8414     if (NULL == disp) {
8415         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8416                    "vkCmdWriteMicromapsPropertiesEXT: Invalid commandBuffer "
8417                    "[VUID-vkCmdWriteMicromapsPropertiesEXT-commandBuffer-parameter]");
8418         abort(); /* Intentionally fail so user can correct issue. */
8419     }
8420     disp->CmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery);
8421 }
8422 
GetDeviceMicromapCompatibilityEXT(VkDevice device,const VkMicromapVersionInfoEXT * pVersionInfo,VkAccelerationStructureCompatibilityKHR * pCompatibility)8423 VKAPI_ATTR void VKAPI_CALL GetDeviceMicromapCompatibilityEXT(
8424     VkDevice                                    device,
8425     const VkMicromapVersionInfoEXT*             pVersionInfo,
8426     VkAccelerationStructureCompatibilityKHR*    pCompatibility) {
8427     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8428     if (NULL == disp) {
8429         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8430                    "vkGetDeviceMicromapCompatibilityEXT: Invalid device "
8431                    "[VUID-vkGetDeviceMicromapCompatibilityEXT-device-parameter]");
8432         abort(); /* Intentionally fail so user can correct issue. */
8433     }
8434     disp->GetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility);
8435 }
8436 
GetMicromapBuildSizesEXT(VkDevice device,VkAccelerationStructureBuildTypeKHR buildType,const VkMicromapBuildInfoEXT * pBuildInfo,VkMicromapBuildSizesInfoEXT * pSizeInfo)8437 VKAPI_ATTR void VKAPI_CALL GetMicromapBuildSizesEXT(
8438     VkDevice                                    device,
8439     VkAccelerationStructureBuildTypeKHR         buildType,
8440     const VkMicromapBuildInfoEXT*               pBuildInfo,
8441     VkMicromapBuildSizesInfoEXT*                pSizeInfo) {
8442     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8443     if (NULL == disp) {
8444         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8445                    "vkGetMicromapBuildSizesEXT: Invalid device "
8446                    "[VUID-vkGetMicromapBuildSizesEXT-device-parameter]");
8447         abort(); /* Intentionally fail so user can correct issue. */
8448     }
8449     disp->GetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo);
8450 }
8451 
8452 
8453 // ---- VK_HUAWEI_cluster_culling_shader extension trampoline/terminators
8454 
CmdDrawClusterHUAWEI(VkCommandBuffer commandBuffer,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)8455 VKAPI_ATTR void VKAPI_CALL CmdDrawClusterHUAWEI(
8456     VkCommandBuffer                             commandBuffer,
8457     uint32_t                                    groupCountX,
8458     uint32_t                                    groupCountY,
8459     uint32_t                                    groupCountZ) {
8460     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8461     if (NULL == disp) {
8462         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8463                    "vkCmdDrawClusterHUAWEI: Invalid commandBuffer "
8464                    "[VUID-vkCmdDrawClusterHUAWEI-commandBuffer-parameter]");
8465         abort(); /* Intentionally fail so user can correct issue. */
8466     }
8467     disp->CmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ);
8468 }
8469 
CmdDrawClusterIndirectHUAWEI(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset)8470 VKAPI_ATTR void VKAPI_CALL CmdDrawClusterIndirectHUAWEI(
8471     VkCommandBuffer                             commandBuffer,
8472     VkBuffer                                    buffer,
8473     VkDeviceSize                                offset) {
8474     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8475     if (NULL == disp) {
8476         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8477                    "vkCmdDrawClusterIndirectHUAWEI: Invalid commandBuffer "
8478                    "[VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-parameter]");
8479         abort(); /* Intentionally fail so user can correct issue. */
8480     }
8481     disp->CmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset);
8482 }
8483 
8484 
8485 // ---- VK_EXT_pageable_device_local_memory extension trampoline/terminators
8486 
SetDeviceMemoryPriorityEXT(VkDevice device,VkDeviceMemory memory,float priority)8487 VKAPI_ATTR void VKAPI_CALL SetDeviceMemoryPriorityEXT(
8488     VkDevice                                    device,
8489     VkDeviceMemory                              memory,
8490     float                                       priority) {
8491     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8492     if (NULL == disp) {
8493         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8494                    "vkSetDeviceMemoryPriorityEXT: Invalid device "
8495                    "[VUID-vkSetDeviceMemoryPriorityEXT-device-parameter]");
8496         abort(); /* Intentionally fail so user can correct issue. */
8497     }
8498     disp->SetDeviceMemoryPriorityEXT(device, memory, priority);
8499 }
8500 
8501 
8502 // ---- VK_VALVE_descriptor_set_host_mapping extension trampoline/terminators
8503 
GetDescriptorSetLayoutHostMappingInfoVALVE(VkDevice device,const VkDescriptorSetBindingReferenceVALVE * pBindingReference,VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping)8504 VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutHostMappingInfoVALVE(
8505     VkDevice                                    device,
8506     const VkDescriptorSetBindingReferenceVALVE* pBindingReference,
8507     VkDescriptorSetLayoutHostMappingInfoVALVE*  pHostMapping) {
8508     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8509     if (NULL == disp) {
8510         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8511                    "vkGetDescriptorSetLayoutHostMappingInfoVALVE: Invalid device "
8512                    "[VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-device-parameter]");
8513         abort(); /* Intentionally fail so user can correct issue. */
8514     }
8515     disp->GetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping);
8516 }
8517 
GetDescriptorSetHostMappingVALVE(VkDevice device,VkDescriptorSet descriptorSet,void ** ppData)8518 VKAPI_ATTR void VKAPI_CALL GetDescriptorSetHostMappingVALVE(
8519     VkDevice                                    device,
8520     VkDescriptorSet                             descriptorSet,
8521     void**                                      ppData) {
8522     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8523     if (NULL == disp) {
8524         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8525                    "vkGetDescriptorSetHostMappingVALVE: Invalid device "
8526                    "[VUID-vkGetDescriptorSetHostMappingVALVE-device-parameter]");
8527         abort(); /* Intentionally fail so user can correct issue. */
8528     }
8529     disp->GetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData);
8530 }
8531 
8532 
8533 // ---- VK_NV_copy_memory_indirect extension trampoline/terminators
8534 
CmdCopyMemoryIndirectNV(VkCommandBuffer commandBuffer,VkDeviceAddress copyBufferAddress,uint32_t copyCount,uint32_t stride)8535 VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryIndirectNV(
8536     VkCommandBuffer                             commandBuffer,
8537     VkDeviceAddress                             copyBufferAddress,
8538     uint32_t                                    copyCount,
8539     uint32_t                                    stride) {
8540     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8541     if (NULL == disp) {
8542         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8543                    "vkCmdCopyMemoryIndirectNV: Invalid commandBuffer "
8544                    "[VUID-vkCmdCopyMemoryIndirectNV-commandBuffer-parameter]");
8545         abort(); /* Intentionally fail so user can correct issue. */
8546     }
8547     disp->CmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride);
8548 }
8549 
CmdCopyMemoryToImageIndirectNV(VkCommandBuffer commandBuffer,VkDeviceAddress copyBufferAddress,uint32_t copyCount,uint32_t stride,VkImage dstImage,VkImageLayout dstImageLayout,const VkImageSubresourceLayers * pImageSubresources)8550 VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryToImageIndirectNV(
8551     VkCommandBuffer                             commandBuffer,
8552     VkDeviceAddress                             copyBufferAddress,
8553     uint32_t                                    copyCount,
8554     uint32_t                                    stride,
8555     VkImage                                     dstImage,
8556     VkImageLayout                               dstImageLayout,
8557     const VkImageSubresourceLayers*             pImageSubresources) {
8558     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8559     if (NULL == disp) {
8560         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8561                    "vkCmdCopyMemoryToImageIndirectNV: Invalid commandBuffer "
8562                    "[VUID-vkCmdCopyMemoryToImageIndirectNV-commandBuffer-parameter]");
8563         abort(); /* Intentionally fail so user can correct issue. */
8564     }
8565     disp->CmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources);
8566 }
8567 
8568 
8569 // ---- VK_NV_memory_decompression extension trampoline/terminators
8570 
CmdDecompressMemoryNV(VkCommandBuffer commandBuffer,uint32_t decompressRegionCount,const VkDecompressMemoryRegionNV * pDecompressMemoryRegions)8571 VKAPI_ATTR void VKAPI_CALL CmdDecompressMemoryNV(
8572     VkCommandBuffer                             commandBuffer,
8573     uint32_t                                    decompressRegionCount,
8574     const VkDecompressMemoryRegionNV*           pDecompressMemoryRegions) {
8575     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8576     if (NULL == disp) {
8577         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8578                    "vkCmdDecompressMemoryNV: Invalid commandBuffer "
8579                    "[VUID-vkCmdDecompressMemoryNV-commandBuffer-parameter]");
8580         abort(); /* Intentionally fail so user can correct issue. */
8581     }
8582     disp->CmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions);
8583 }
8584 
CmdDecompressMemoryIndirectCountNV(VkCommandBuffer commandBuffer,VkDeviceAddress indirectCommandsAddress,VkDeviceAddress indirectCommandsCountAddress,uint32_t stride)8585 VKAPI_ATTR void VKAPI_CALL CmdDecompressMemoryIndirectCountNV(
8586     VkCommandBuffer                             commandBuffer,
8587     VkDeviceAddress                             indirectCommandsAddress,
8588     VkDeviceAddress                             indirectCommandsCountAddress,
8589     uint32_t                                    stride) {
8590     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8591     if (NULL == disp) {
8592         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8593                    "vkCmdDecompressMemoryIndirectCountNV: Invalid commandBuffer "
8594                    "[VUID-vkCmdDecompressMemoryIndirectCountNV-commandBuffer-parameter]");
8595         abort(); /* Intentionally fail so user can correct issue. */
8596     }
8597     disp->CmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride);
8598 }
8599 
8600 
8601 // ---- VK_NV_device_generated_commands_compute extension trampoline/terminators
8602 
GetPipelineIndirectMemoryRequirementsNV(VkDevice device,const VkComputePipelineCreateInfo * pCreateInfo,VkMemoryRequirements2 * pMemoryRequirements)8603 VKAPI_ATTR void VKAPI_CALL GetPipelineIndirectMemoryRequirementsNV(
8604     VkDevice                                    device,
8605     const VkComputePipelineCreateInfo*          pCreateInfo,
8606     VkMemoryRequirements2*                      pMemoryRequirements) {
8607     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8608     if (NULL == disp) {
8609         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8610                    "vkGetPipelineIndirectMemoryRequirementsNV: Invalid device "
8611                    "[VUID-vkGetPipelineIndirectMemoryRequirementsNV-device-parameter]");
8612         abort(); /* Intentionally fail so user can correct issue. */
8613     }
8614     disp->GetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements);
8615 }
8616 
CmdUpdatePipelineIndirectBufferNV(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipeline pipeline)8617 VKAPI_ATTR void VKAPI_CALL CmdUpdatePipelineIndirectBufferNV(
8618     VkCommandBuffer                             commandBuffer,
8619     VkPipelineBindPoint                         pipelineBindPoint,
8620     VkPipeline                                  pipeline) {
8621     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8622     if (NULL == disp) {
8623         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8624                    "vkCmdUpdatePipelineIndirectBufferNV: Invalid commandBuffer "
8625                    "[VUID-vkCmdUpdatePipelineIndirectBufferNV-commandBuffer-parameter]");
8626         abort(); /* Intentionally fail so user can correct issue. */
8627     }
8628     disp->CmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline);
8629 }
8630 
GetPipelineIndirectDeviceAddressNV(VkDevice device,const VkPipelineIndirectDeviceAddressInfoNV * pInfo)8631 VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetPipelineIndirectDeviceAddressNV(
8632     VkDevice                                    device,
8633     const VkPipelineIndirectDeviceAddressInfoNV* pInfo) {
8634     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8635     if (NULL == disp) {
8636         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8637                    "vkGetPipelineIndirectDeviceAddressNV: Invalid device "
8638                    "[VUID-vkGetPipelineIndirectDeviceAddressNV-device-parameter]");
8639         abort(); /* Intentionally fail so user can correct issue. */
8640     }
8641     return disp->GetPipelineIndirectDeviceAddressNV(device, pInfo);
8642 }
8643 
8644 
8645 // ---- VK_EXT_extended_dynamic_state3 extension trampoline/terminators
8646 
CmdSetTessellationDomainOriginEXT(VkCommandBuffer commandBuffer,VkTessellationDomainOrigin domainOrigin)8647 VKAPI_ATTR void VKAPI_CALL CmdSetTessellationDomainOriginEXT(
8648     VkCommandBuffer                             commandBuffer,
8649     VkTessellationDomainOrigin                  domainOrigin) {
8650     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8651     if (NULL == disp) {
8652         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8653                    "vkCmdSetTessellationDomainOriginEXT: Invalid commandBuffer "
8654                    "[VUID-vkCmdSetTessellationDomainOriginEXT-commandBuffer-parameter]");
8655         abort(); /* Intentionally fail so user can correct issue. */
8656     }
8657     disp->CmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin);
8658 }
8659 
CmdSetDepthClampEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthClampEnable)8660 VKAPI_ATTR void VKAPI_CALL CmdSetDepthClampEnableEXT(
8661     VkCommandBuffer                             commandBuffer,
8662     VkBool32                                    depthClampEnable) {
8663     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8664     if (NULL == disp) {
8665         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8666                    "vkCmdSetDepthClampEnableEXT: Invalid commandBuffer "
8667                    "[VUID-vkCmdSetDepthClampEnableEXT-commandBuffer-parameter]");
8668         abort(); /* Intentionally fail so user can correct issue. */
8669     }
8670     disp->CmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable);
8671 }
8672 
CmdSetPolygonModeEXT(VkCommandBuffer commandBuffer,VkPolygonMode polygonMode)8673 VKAPI_ATTR void VKAPI_CALL CmdSetPolygonModeEXT(
8674     VkCommandBuffer                             commandBuffer,
8675     VkPolygonMode                               polygonMode) {
8676     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8677     if (NULL == disp) {
8678         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8679                    "vkCmdSetPolygonModeEXT: Invalid commandBuffer "
8680                    "[VUID-vkCmdSetPolygonModeEXT-commandBuffer-parameter]");
8681         abort(); /* Intentionally fail so user can correct issue. */
8682     }
8683     disp->CmdSetPolygonModeEXT(commandBuffer, polygonMode);
8684 }
8685 
CmdSetRasterizationSamplesEXT(VkCommandBuffer commandBuffer,VkSampleCountFlagBits rasterizationSamples)8686 VKAPI_ATTR void VKAPI_CALL CmdSetRasterizationSamplesEXT(
8687     VkCommandBuffer                             commandBuffer,
8688     VkSampleCountFlagBits                       rasterizationSamples) {
8689     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8690     if (NULL == disp) {
8691         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8692                    "vkCmdSetRasterizationSamplesEXT: Invalid commandBuffer "
8693                    "[VUID-vkCmdSetRasterizationSamplesEXT-commandBuffer-parameter]");
8694         abort(); /* Intentionally fail so user can correct issue. */
8695     }
8696     disp->CmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples);
8697 }
8698 
CmdSetSampleMaskEXT(VkCommandBuffer commandBuffer,VkSampleCountFlagBits samples,const VkSampleMask * pSampleMask)8699 VKAPI_ATTR void VKAPI_CALL CmdSetSampleMaskEXT(
8700     VkCommandBuffer                             commandBuffer,
8701     VkSampleCountFlagBits                       samples,
8702     const VkSampleMask*                         pSampleMask) {
8703     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8704     if (NULL == disp) {
8705         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8706                    "vkCmdSetSampleMaskEXT: Invalid commandBuffer "
8707                    "[VUID-vkCmdSetSampleMaskEXT-commandBuffer-parameter]");
8708         abort(); /* Intentionally fail so user can correct issue. */
8709     }
8710     disp->CmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask);
8711 }
8712 
CmdSetAlphaToCoverageEnableEXT(VkCommandBuffer commandBuffer,VkBool32 alphaToCoverageEnable)8713 VKAPI_ATTR void VKAPI_CALL CmdSetAlphaToCoverageEnableEXT(
8714     VkCommandBuffer                             commandBuffer,
8715     VkBool32                                    alphaToCoverageEnable) {
8716     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8717     if (NULL == disp) {
8718         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8719                    "vkCmdSetAlphaToCoverageEnableEXT: Invalid commandBuffer "
8720                    "[VUID-vkCmdSetAlphaToCoverageEnableEXT-commandBuffer-parameter]");
8721         abort(); /* Intentionally fail so user can correct issue. */
8722     }
8723     disp->CmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable);
8724 }
8725 
CmdSetAlphaToOneEnableEXT(VkCommandBuffer commandBuffer,VkBool32 alphaToOneEnable)8726 VKAPI_ATTR void VKAPI_CALL CmdSetAlphaToOneEnableEXT(
8727     VkCommandBuffer                             commandBuffer,
8728     VkBool32                                    alphaToOneEnable) {
8729     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8730     if (NULL == disp) {
8731         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8732                    "vkCmdSetAlphaToOneEnableEXT: Invalid commandBuffer "
8733                    "[VUID-vkCmdSetAlphaToOneEnableEXT-commandBuffer-parameter]");
8734         abort(); /* Intentionally fail so user can correct issue. */
8735     }
8736     disp->CmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable);
8737 }
8738 
CmdSetLogicOpEnableEXT(VkCommandBuffer commandBuffer,VkBool32 logicOpEnable)8739 VKAPI_ATTR void VKAPI_CALL CmdSetLogicOpEnableEXT(
8740     VkCommandBuffer                             commandBuffer,
8741     VkBool32                                    logicOpEnable) {
8742     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8743     if (NULL == disp) {
8744         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8745                    "vkCmdSetLogicOpEnableEXT: Invalid commandBuffer "
8746                    "[VUID-vkCmdSetLogicOpEnableEXT-commandBuffer-parameter]");
8747         abort(); /* Intentionally fail so user can correct issue. */
8748     }
8749     disp->CmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable);
8750 }
8751 
CmdSetColorBlendEnableEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkBool32 * pColorBlendEnables)8752 VKAPI_ATTR void VKAPI_CALL CmdSetColorBlendEnableEXT(
8753     VkCommandBuffer                             commandBuffer,
8754     uint32_t                                    firstAttachment,
8755     uint32_t                                    attachmentCount,
8756     const VkBool32*                             pColorBlendEnables) {
8757     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8758     if (NULL == disp) {
8759         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8760                    "vkCmdSetColorBlendEnableEXT: Invalid commandBuffer "
8761                    "[VUID-vkCmdSetColorBlendEnableEXT-commandBuffer-parameter]");
8762         abort(); /* Intentionally fail so user can correct issue. */
8763     }
8764     disp->CmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables);
8765 }
8766 
CmdSetColorBlendEquationEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkColorBlendEquationEXT * pColorBlendEquations)8767 VKAPI_ATTR void VKAPI_CALL CmdSetColorBlendEquationEXT(
8768     VkCommandBuffer                             commandBuffer,
8769     uint32_t                                    firstAttachment,
8770     uint32_t                                    attachmentCount,
8771     const VkColorBlendEquationEXT*              pColorBlendEquations) {
8772     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8773     if (NULL == disp) {
8774         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8775                    "vkCmdSetColorBlendEquationEXT: Invalid commandBuffer "
8776                    "[VUID-vkCmdSetColorBlendEquationEXT-commandBuffer-parameter]");
8777         abort(); /* Intentionally fail so user can correct issue. */
8778     }
8779     disp->CmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations);
8780 }
8781 
CmdSetColorWriteMaskEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkColorComponentFlags * pColorWriteMasks)8782 VKAPI_ATTR void VKAPI_CALL CmdSetColorWriteMaskEXT(
8783     VkCommandBuffer                             commandBuffer,
8784     uint32_t                                    firstAttachment,
8785     uint32_t                                    attachmentCount,
8786     const VkColorComponentFlags*                pColorWriteMasks) {
8787     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8788     if (NULL == disp) {
8789         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8790                    "vkCmdSetColorWriteMaskEXT: Invalid commandBuffer "
8791                    "[VUID-vkCmdSetColorWriteMaskEXT-commandBuffer-parameter]");
8792         abort(); /* Intentionally fail so user can correct issue. */
8793     }
8794     disp->CmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks);
8795 }
8796 
CmdSetRasterizationStreamEXT(VkCommandBuffer commandBuffer,uint32_t rasterizationStream)8797 VKAPI_ATTR void VKAPI_CALL CmdSetRasterizationStreamEXT(
8798     VkCommandBuffer                             commandBuffer,
8799     uint32_t                                    rasterizationStream) {
8800     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8801     if (NULL == disp) {
8802         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8803                    "vkCmdSetRasterizationStreamEXT: Invalid commandBuffer "
8804                    "[VUID-vkCmdSetRasterizationStreamEXT-commandBuffer-parameter]");
8805         abort(); /* Intentionally fail so user can correct issue. */
8806     }
8807     disp->CmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream);
8808 }
8809 
CmdSetConservativeRasterizationModeEXT(VkCommandBuffer commandBuffer,VkConservativeRasterizationModeEXT conservativeRasterizationMode)8810 VKAPI_ATTR void VKAPI_CALL CmdSetConservativeRasterizationModeEXT(
8811     VkCommandBuffer                             commandBuffer,
8812     VkConservativeRasterizationModeEXT          conservativeRasterizationMode) {
8813     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8814     if (NULL == disp) {
8815         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8816                    "vkCmdSetConservativeRasterizationModeEXT: Invalid commandBuffer "
8817                    "[VUID-vkCmdSetConservativeRasterizationModeEXT-commandBuffer-parameter]");
8818         abort(); /* Intentionally fail so user can correct issue. */
8819     }
8820     disp->CmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode);
8821 }
8822 
CmdSetExtraPrimitiveOverestimationSizeEXT(VkCommandBuffer commandBuffer,float extraPrimitiveOverestimationSize)8823 VKAPI_ATTR void VKAPI_CALL CmdSetExtraPrimitiveOverestimationSizeEXT(
8824     VkCommandBuffer                             commandBuffer,
8825     float                                       extraPrimitiveOverestimationSize) {
8826     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8827     if (NULL == disp) {
8828         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8829                    "vkCmdSetExtraPrimitiveOverestimationSizeEXT: Invalid commandBuffer "
8830                    "[VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-commandBuffer-parameter]");
8831         abort(); /* Intentionally fail so user can correct issue. */
8832     }
8833     disp->CmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize);
8834 }
8835 
CmdSetDepthClipEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthClipEnable)8836 VKAPI_ATTR void VKAPI_CALL CmdSetDepthClipEnableEXT(
8837     VkCommandBuffer                             commandBuffer,
8838     VkBool32                                    depthClipEnable) {
8839     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8840     if (NULL == disp) {
8841         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8842                    "vkCmdSetDepthClipEnableEXT: Invalid commandBuffer "
8843                    "[VUID-vkCmdSetDepthClipEnableEXT-commandBuffer-parameter]");
8844         abort(); /* Intentionally fail so user can correct issue. */
8845     }
8846     disp->CmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable);
8847 }
8848 
CmdSetSampleLocationsEnableEXT(VkCommandBuffer commandBuffer,VkBool32 sampleLocationsEnable)8849 VKAPI_ATTR void VKAPI_CALL CmdSetSampleLocationsEnableEXT(
8850     VkCommandBuffer                             commandBuffer,
8851     VkBool32                                    sampleLocationsEnable) {
8852     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8853     if (NULL == disp) {
8854         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8855                    "vkCmdSetSampleLocationsEnableEXT: Invalid commandBuffer "
8856                    "[VUID-vkCmdSetSampleLocationsEnableEXT-commandBuffer-parameter]");
8857         abort(); /* Intentionally fail so user can correct issue. */
8858     }
8859     disp->CmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable);
8860 }
8861 
CmdSetColorBlendAdvancedEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkColorBlendAdvancedEXT * pColorBlendAdvanced)8862 VKAPI_ATTR void VKAPI_CALL CmdSetColorBlendAdvancedEXT(
8863     VkCommandBuffer                             commandBuffer,
8864     uint32_t                                    firstAttachment,
8865     uint32_t                                    attachmentCount,
8866     const VkColorBlendAdvancedEXT*              pColorBlendAdvanced) {
8867     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8868     if (NULL == disp) {
8869         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8870                    "vkCmdSetColorBlendAdvancedEXT: Invalid commandBuffer "
8871                    "[VUID-vkCmdSetColorBlendAdvancedEXT-commandBuffer-parameter]");
8872         abort(); /* Intentionally fail so user can correct issue. */
8873     }
8874     disp->CmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced);
8875 }
8876 
CmdSetProvokingVertexModeEXT(VkCommandBuffer commandBuffer,VkProvokingVertexModeEXT provokingVertexMode)8877 VKAPI_ATTR void VKAPI_CALL CmdSetProvokingVertexModeEXT(
8878     VkCommandBuffer                             commandBuffer,
8879     VkProvokingVertexModeEXT                    provokingVertexMode) {
8880     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8881     if (NULL == disp) {
8882         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8883                    "vkCmdSetProvokingVertexModeEXT: Invalid commandBuffer "
8884                    "[VUID-vkCmdSetProvokingVertexModeEXT-commandBuffer-parameter]");
8885         abort(); /* Intentionally fail so user can correct issue. */
8886     }
8887     disp->CmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode);
8888 }
8889 
CmdSetLineRasterizationModeEXT(VkCommandBuffer commandBuffer,VkLineRasterizationModeEXT lineRasterizationMode)8890 VKAPI_ATTR void VKAPI_CALL CmdSetLineRasterizationModeEXT(
8891     VkCommandBuffer                             commandBuffer,
8892     VkLineRasterizationModeEXT                  lineRasterizationMode) {
8893     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8894     if (NULL == disp) {
8895         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8896                    "vkCmdSetLineRasterizationModeEXT: Invalid commandBuffer "
8897                    "[VUID-vkCmdSetLineRasterizationModeEXT-commandBuffer-parameter]");
8898         abort(); /* Intentionally fail so user can correct issue. */
8899     }
8900     disp->CmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode);
8901 }
8902 
CmdSetLineStippleEnableEXT(VkCommandBuffer commandBuffer,VkBool32 stippledLineEnable)8903 VKAPI_ATTR void VKAPI_CALL CmdSetLineStippleEnableEXT(
8904     VkCommandBuffer                             commandBuffer,
8905     VkBool32                                    stippledLineEnable) {
8906     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8907     if (NULL == disp) {
8908         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8909                    "vkCmdSetLineStippleEnableEXT: Invalid commandBuffer "
8910                    "[VUID-vkCmdSetLineStippleEnableEXT-commandBuffer-parameter]");
8911         abort(); /* Intentionally fail so user can correct issue. */
8912     }
8913     disp->CmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable);
8914 }
8915 
CmdSetDepthClipNegativeOneToOneEXT(VkCommandBuffer commandBuffer,VkBool32 negativeOneToOne)8916 VKAPI_ATTR void VKAPI_CALL CmdSetDepthClipNegativeOneToOneEXT(
8917     VkCommandBuffer                             commandBuffer,
8918     VkBool32                                    negativeOneToOne) {
8919     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8920     if (NULL == disp) {
8921         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8922                    "vkCmdSetDepthClipNegativeOneToOneEXT: Invalid commandBuffer "
8923                    "[VUID-vkCmdSetDepthClipNegativeOneToOneEXT-commandBuffer-parameter]");
8924         abort(); /* Intentionally fail so user can correct issue. */
8925     }
8926     disp->CmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne);
8927 }
8928 
CmdSetViewportWScalingEnableNV(VkCommandBuffer commandBuffer,VkBool32 viewportWScalingEnable)8929 VKAPI_ATTR void VKAPI_CALL CmdSetViewportWScalingEnableNV(
8930     VkCommandBuffer                             commandBuffer,
8931     VkBool32                                    viewportWScalingEnable) {
8932     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8933     if (NULL == disp) {
8934         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8935                    "vkCmdSetViewportWScalingEnableNV: Invalid commandBuffer "
8936                    "[VUID-vkCmdSetViewportWScalingEnableNV-commandBuffer-parameter]");
8937         abort(); /* Intentionally fail so user can correct issue. */
8938     }
8939     disp->CmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable);
8940 }
8941 
CmdSetViewportSwizzleNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewportSwizzleNV * pViewportSwizzles)8942 VKAPI_ATTR void VKAPI_CALL CmdSetViewportSwizzleNV(
8943     VkCommandBuffer                             commandBuffer,
8944     uint32_t                                    firstViewport,
8945     uint32_t                                    viewportCount,
8946     const VkViewportSwizzleNV*                  pViewportSwizzles) {
8947     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8948     if (NULL == disp) {
8949         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8950                    "vkCmdSetViewportSwizzleNV: Invalid commandBuffer "
8951                    "[VUID-vkCmdSetViewportSwizzleNV-commandBuffer-parameter]");
8952         abort(); /* Intentionally fail so user can correct issue. */
8953     }
8954     disp->CmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles);
8955 }
8956 
CmdSetCoverageToColorEnableNV(VkCommandBuffer commandBuffer,VkBool32 coverageToColorEnable)8957 VKAPI_ATTR void VKAPI_CALL CmdSetCoverageToColorEnableNV(
8958     VkCommandBuffer                             commandBuffer,
8959     VkBool32                                    coverageToColorEnable) {
8960     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8961     if (NULL == disp) {
8962         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8963                    "vkCmdSetCoverageToColorEnableNV: Invalid commandBuffer "
8964                    "[VUID-vkCmdSetCoverageToColorEnableNV-commandBuffer-parameter]");
8965         abort(); /* Intentionally fail so user can correct issue. */
8966     }
8967     disp->CmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable);
8968 }
8969 
CmdSetCoverageToColorLocationNV(VkCommandBuffer commandBuffer,uint32_t coverageToColorLocation)8970 VKAPI_ATTR void VKAPI_CALL CmdSetCoverageToColorLocationNV(
8971     VkCommandBuffer                             commandBuffer,
8972     uint32_t                                    coverageToColorLocation) {
8973     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8974     if (NULL == disp) {
8975         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8976                    "vkCmdSetCoverageToColorLocationNV: Invalid commandBuffer "
8977                    "[VUID-vkCmdSetCoverageToColorLocationNV-commandBuffer-parameter]");
8978         abort(); /* Intentionally fail so user can correct issue. */
8979     }
8980     disp->CmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation);
8981 }
8982 
CmdSetCoverageModulationModeNV(VkCommandBuffer commandBuffer,VkCoverageModulationModeNV coverageModulationMode)8983 VKAPI_ATTR void VKAPI_CALL CmdSetCoverageModulationModeNV(
8984     VkCommandBuffer                             commandBuffer,
8985     VkCoverageModulationModeNV                  coverageModulationMode) {
8986     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8987     if (NULL == disp) {
8988         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8989                    "vkCmdSetCoverageModulationModeNV: Invalid commandBuffer "
8990                    "[VUID-vkCmdSetCoverageModulationModeNV-commandBuffer-parameter]");
8991         abort(); /* Intentionally fail so user can correct issue. */
8992     }
8993     disp->CmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode);
8994 }
8995 
CmdSetCoverageModulationTableEnableNV(VkCommandBuffer commandBuffer,VkBool32 coverageModulationTableEnable)8996 VKAPI_ATTR void VKAPI_CALL CmdSetCoverageModulationTableEnableNV(
8997     VkCommandBuffer                             commandBuffer,
8998     VkBool32                                    coverageModulationTableEnable) {
8999     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9000     if (NULL == disp) {
9001         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9002                    "vkCmdSetCoverageModulationTableEnableNV: Invalid commandBuffer "
9003                    "[VUID-vkCmdSetCoverageModulationTableEnableNV-commandBuffer-parameter]");
9004         abort(); /* Intentionally fail so user can correct issue. */
9005     }
9006     disp->CmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable);
9007 }
9008 
CmdSetCoverageModulationTableNV(VkCommandBuffer commandBuffer,uint32_t coverageModulationTableCount,const float * pCoverageModulationTable)9009 VKAPI_ATTR void VKAPI_CALL CmdSetCoverageModulationTableNV(
9010     VkCommandBuffer                             commandBuffer,
9011     uint32_t                                    coverageModulationTableCount,
9012     const float*                                pCoverageModulationTable) {
9013     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9014     if (NULL == disp) {
9015         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9016                    "vkCmdSetCoverageModulationTableNV: Invalid commandBuffer "
9017                    "[VUID-vkCmdSetCoverageModulationTableNV-commandBuffer-parameter]");
9018         abort(); /* Intentionally fail so user can correct issue. */
9019     }
9020     disp->CmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable);
9021 }
9022 
CmdSetShadingRateImageEnableNV(VkCommandBuffer commandBuffer,VkBool32 shadingRateImageEnable)9023 VKAPI_ATTR void VKAPI_CALL CmdSetShadingRateImageEnableNV(
9024     VkCommandBuffer                             commandBuffer,
9025     VkBool32                                    shadingRateImageEnable) {
9026     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9027     if (NULL == disp) {
9028         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9029                    "vkCmdSetShadingRateImageEnableNV: Invalid commandBuffer "
9030                    "[VUID-vkCmdSetShadingRateImageEnableNV-commandBuffer-parameter]");
9031         abort(); /* Intentionally fail so user can correct issue. */
9032     }
9033     disp->CmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable);
9034 }
9035 
CmdSetRepresentativeFragmentTestEnableNV(VkCommandBuffer commandBuffer,VkBool32 representativeFragmentTestEnable)9036 VKAPI_ATTR void VKAPI_CALL CmdSetRepresentativeFragmentTestEnableNV(
9037     VkCommandBuffer                             commandBuffer,
9038     VkBool32                                    representativeFragmentTestEnable) {
9039     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9040     if (NULL == disp) {
9041         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9042                    "vkCmdSetRepresentativeFragmentTestEnableNV: Invalid commandBuffer "
9043                    "[VUID-vkCmdSetRepresentativeFragmentTestEnableNV-commandBuffer-parameter]");
9044         abort(); /* Intentionally fail so user can correct issue. */
9045     }
9046     disp->CmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable);
9047 }
9048 
CmdSetCoverageReductionModeNV(VkCommandBuffer commandBuffer,VkCoverageReductionModeNV coverageReductionMode)9049 VKAPI_ATTR void VKAPI_CALL CmdSetCoverageReductionModeNV(
9050     VkCommandBuffer                             commandBuffer,
9051     VkCoverageReductionModeNV                   coverageReductionMode) {
9052     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9053     if (NULL == disp) {
9054         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9055                    "vkCmdSetCoverageReductionModeNV: Invalid commandBuffer "
9056                    "[VUID-vkCmdSetCoverageReductionModeNV-commandBuffer-parameter]");
9057         abort(); /* Intentionally fail so user can correct issue. */
9058     }
9059     disp->CmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode);
9060 }
9061 
9062 
9063 // ---- VK_EXT_shader_module_identifier extension trampoline/terminators
9064 
GetShaderModuleIdentifierEXT(VkDevice device,VkShaderModule shaderModule,VkShaderModuleIdentifierEXT * pIdentifier)9065 VKAPI_ATTR void VKAPI_CALL GetShaderModuleIdentifierEXT(
9066     VkDevice                                    device,
9067     VkShaderModule                              shaderModule,
9068     VkShaderModuleIdentifierEXT*                pIdentifier) {
9069     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9070     if (NULL == disp) {
9071         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9072                    "vkGetShaderModuleIdentifierEXT: Invalid device "
9073                    "[VUID-vkGetShaderModuleIdentifierEXT-device-parameter]");
9074         abort(); /* Intentionally fail so user can correct issue. */
9075     }
9076     disp->GetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier);
9077 }
9078 
GetShaderModuleCreateInfoIdentifierEXT(VkDevice device,const VkShaderModuleCreateInfo * pCreateInfo,VkShaderModuleIdentifierEXT * pIdentifier)9079 VKAPI_ATTR void VKAPI_CALL GetShaderModuleCreateInfoIdentifierEXT(
9080     VkDevice                                    device,
9081     const VkShaderModuleCreateInfo*             pCreateInfo,
9082     VkShaderModuleIdentifierEXT*                pIdentifier) {
9083     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9084     if (NULL == disp) {
9085         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9086                    "vkGetShaderModuleCreateInfoIdentifierEXT: Invalid device "
9087                    "[VUID-vkGetShaderModuleCreateInfoIdentifierEXT-device-parameter]");
9088         abort(); /* Intentionally fail so user can correct issue. */
9089     }
9090     disp->GetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier);
9091 }
9092 
9093 
9094 // ---- VK_NV_optical_flow extension trampoline/terminators
9095 
GetPhysicalDeviceOpticalFlowImageFormatsNV(VkPhysicalDevice physicalDevice,const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo,uint32_t * pFormatCount,VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties)9096 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceOpticalFlowImageFormatsNV(
9097     VkPhysicalDevice                            physicalDevice,
9098     const VkOpticalFlowImageFormatInfoNV*       pOpticalFlowImageFormatInfo,
9099     uint32_t*                                   pFormatCount,
9100     VkOpticalFlowImageFormatPropertiesNV*       pImageFormatProperties) {
9101     const VkLayerInstanceDispatchTable *disp;
9102     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
9103     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
9104         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9105                    "vkGetPhysicalDeviceOpticalFlowImageFormatsNV: Invalid physicalDevice "
9106                    "[VUID-vkGetPhysicalDeviceOpticalFlowImageFormatsNV-physicalDevice-parameter]");
9107         abort(); /* Intentionally fail so user can correct issue. */
9108     }
9109     disp = loader_get_instance_layer_dispatch(physicalDevice);
9110     return disp->GetPhysicalDeviceOpticalFlowImageFormatsNV(unwrapped_phys_dev, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties);
9111 }
9112 
terminator_GetPhysicalDeviceOpticalFlowImageFormatsNV(VkPhysicalDevice physicalDevice,const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo,uint32_t * pFormatCount,VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties)9113 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceOpticalFlowImageFormatsNV(
9114     VkPhysicalDevice                            physicalDevice,
9115     const VkOpticalFlowImageFormatInfoNV*       pOpticalFlowImageFormatInfo,
9116     uint32_t*                                   pFormatCount,
9117     VkOpticalFlowImageFormatPropertiesNV*       pImageFormatProperties) {
9118     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
9119     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
9120     if (NULL == icd_term->dispatch.GetPhysicalDeviceOpticalFlowImageFormatsNV) {
9121         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
9122                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceOpticalFlowImageFormatsNV");
9123         abort(); /* Intentionally fail so user can correct issue. */
9124     }
9125     return icd_term->dispatch.GetPhysicalDeviceOpticalFlowImageFormatsNV(phys_dev_term->phys_dev, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties);
9126 }
9127 
CreateOpticalFlowSessionNV(VkDevice device,const VkOpticalFlowSessionCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkOpticalFlowSessionNV * pSession)9128 VKAPI_ATTR VkResult VKAPI_CALL CreateOpticalFlowSessionNV(
9129     VkDevice                                    device,
9130     const VkOpticalFlowSessionCreateInfoNV*     pCreateInfo,
9131     const VkAllocationCallbacks*                pAllocator,
9132     VkOpticalFlowSessionNV*                     pSession) {
9133     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9134     if (NULL == disp) {
9135         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9136                    "vkCreateOpticalFlowSessionNV: Invalid device "
9137                    "[VUID-vkCreateOpticalFlowSessionNV-device-parameter]");
9138         abort(); /* Intentionally fail so user can correct issue. */
9139     }
9140     return disp->CreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession);
9141 }
9142 
DestroyOpticalFlowSessionNV(VkDevice device,VkOpticalFlowSessionNV session,const VkAllocationCallbacks * pAllocator)9143 VKAPI_ATTR void VKAPI_CALL DestroyOpticalFlowSessionNV(
9144     VkDevice                                    device,
9145     VkOpticalFlowSessionNV                      session,
9146     const VkAllocationCallbacks*                pAllocator) {
9147     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9148     if (NULL == disp) {
9149         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9150                    "vkDestroyOpticalFlowSessionNV: Invalid device "
9151                    "[VUID-vkDestroyOpticalFlowSessionNV-device-parameter]");
9152         abort(); /* Intentionally fail so user can correct issue. */
9153     }
9154     disp->DestroyOpticalFlowSessionNV(device, session, pAllocator);
9155 }
9156 
BindOpticalFlowSessionImageNV(VkDevice device,VkOpticalFlowSessionNV session,VkOpticalFlowSessionBindingPointNV bindingPoint,VkImageView view,VkImageLayout layout)9157 VKAPI_ATTR VkResult VKAPI_CALL BindOpticalFlowSessionImageNV(
9158     VkDevice                                    device,
9159     VkOpticalFlowSessionNV                      session,
9160     VkOpticalFlowSessionBindingPointNV          bindingPoint,
9161     VkImageView                                 view,
9162     VkImageLayout                               layout) {
9163     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9164     if (NULL == disp) {
9165         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9166                    "vkBindOpticalFlowSessionImageNV: Invalid device "
9167                    "[VUID-vkBindOpticalFlowSessionImageNV-device-parameter]");
9168         abort(); /* Intentionally fail so user can correct issue. */
9169     }
9170     return disp->BindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout);
9171 }
9172 
CmdOpticalFlowExecuteNV(VkCommandBuffer commandBuffer,VkOpticalFlowSessionNV session,const VkOpticalFlowExecuteInfoNV * pExecuteInfo)9173 VKAPI_ATTR void VKAPI_CALL CmdOpticalFlowExecuteNV(
9174     VkCommandBuffer                             commandBuffer,
9175     VkOpticalFlowSessionNV                      session,
9176     const VkOpticalFlowExecuteInfoNV*           pExecuteInfo) {
9177     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9178     if (NULL == disp) {
9179         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9180                    "vkCmdOpticalFlowExecuteNV: Invalid commandBuffer "
9181                    "[VUID-vkCmdOpticalFlowExecuteNV-commandBuffer-parameter]");
9182         abort(); /* Intentionally fail so user can correct issue. */
9183     }
9184     disp->CmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo);
9185 }
9186 
9187 
9188 // ---- VK_EXT_shader_object extension trampoline/terminators
9189 
CreateShadersEXT(VkDevice device,uint32_t createInfoCount,const VkShaderCreateInfoEXT * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkShaderEXT * pShaders)9190 VKAPI_ATTR VkResult VKAPI_CALL CreateShadersEXT(
9191     VkDevice                                    device,
9192     uint32_t                                    createInfoCount,
9193     const VkShaderCreateInfoEXT*                pCreateInfos,
9194     const VkAllocationCallbacks*                pAllocator,
9195     VkShaderEXT*                                pShaders) {
9196     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9197     if (NULL == disp) {
9198         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9199                    "vkCreateShadersEXT: Invalid device "
9200                    "[VUID-vkCreateShadersEXT-device-parameter]");
9201         abort(); /* Intentionally fail so user can correct issue. */
9202     }
9203     return disp->CreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders);
9204 }
9205 
DestroyShaderEXT(VkDevice device,VkShaderEXT shader,const VkAllocationCallbacks * pAllocator)9206 VKAPI_ATTR void VKAPI_CALL DestroyShaderEXT(
9207     VkDevice                                    device,
9208     VkShaderEXT                                 shader,
9209     const VkAllocationCallbacks*                pAllocator) {
9210     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9211     if (NULL == disp) {
9212         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9213                    "vkDestroyShaderEXT: Invalid device "
9214                    "[VUID-vkDestroyShaderEXT-device-parameter]");
9215         abort(); /* Intentionally fail so user can correct issue. */
9216     }
9217     disp->DestroyShaderEXT(device, shader, pAllocator);
9218 }
9219 
GetShaderBinaryDataEXT(VkDevice device,VkShaderEXT shader,size_t * pDataSize,void * pData)9220 VKAPI_ATTR VkResult VKAPI_CALL GetShaderBinaryDataEXT(
9221     VkDevice                                    device,
9222     VkShaderEXT                                 shader,
9223     size_t*                                     pDataSize,
9224     void*                                       pData) {
9225     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9226     if (NULL == disp) {
9227         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9228                    "vkGetShaderBinaryDataEXT: Invalid device "
9229                    "[VUID-vkGetShaderBinaryDataEXT-device-parameter]");
9230         abort(); /* Intentionally fail so user can correct issue. */
9231     }
9232     return disp->GetShaderBinaryDataEXT(device, shader, pDataSize, pData);
9233 }
9234 
CmdBindShadersEXT(VkCommandBuffer commandBuffer,uint32_t stageCount,const VkShaderStageFlagBits * pStages,const VkShaderEXT * pShaders)9235 VKAPI_ATTR void VKAPI_CALL CmdBindShadersEXT(
9236     VkCommandBuffer                             commandBuffer,
9237     uint32_t                                    stageCount,
9238     const VkShaderStageFlagBits*                pStages,
9239     const VkShaderEXT*                          pShaders) {
9240     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9241     if (NULL == disp) {
9242         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9243                    "vkCmdBindShadersEXT: Invalid commandBuffer "
9244                    "[VUID-vkCmdBindShadersEXT-commandBuffer-parameter]");
9245         abort(); /* Intentionally fail so user can correct issue. */
9246     }
9247     disp->CmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders);
9248 }
9249 
9250 
9251 // ---- VK_QCOM_tile_properties extension trampoline/terminators
9252 
GetFramebufferTilePropertiesQCOM(VkDevice device,VkFramebuffer framebuffer,uint32_t * pPropertiesCount,VkTilePropertiesQCOM * pProperties)9253 VKAPI_ATTR VkResult VKAPI_CALL GetFramebufferTilePropertiesQCOM(
9254     VkDevice                                    device,
9255     VkFramebuffer                               framebuffer,
9256     uint32_t*                                   pPropertiesCount,
9257     VkTilePropertiesQCOM*                       pProperties) {
9258     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9259     if (NULL == disp) {
9260         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9261                    "vkGetFramebufferTilePropertiesQCOM: Invalid device "
9262                    "[VUID-vkGetFramebufferTilePropertiesQCOM-device-parameter]");
9263         abort(); /* Intentionally fail so user can correct issue. */
9264     }
9265     return disp->GetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties);
9266 }
9267 
GetDynamicRenderingTilePropertiesQCOM(VkDevice device,const VkRenderingInfo * pRenderingInfo,VkTilePropertiesQCOM * pProperties)9268 VKAPI_ATTR VkResult VKAPI_CALL GetDynamicRenderingTilePropertiesQCOM(
9269     VkDevice                                    device,
9270     const VkRenderingInfo*                      pRenderingInfo,
9271     VkTilePropertiesQCOM*                       pProperties) {
9272     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9273     if (NULL == disp) {
9274         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9275                    "vkGetDynamicRenderingTilePropertiesQCOM: Invalid device "
9276                    "[VUID-vkGetDynamicRenderingTilePropertiesQCOM-device-parameter]");
9277         abort(); /* Intentionally fail so user can correct issue. */
9278     }
9279     return disp->GetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties);
9280 }
9281 
9282 
9283 // ---- VK_NV_low_latency2 extension trampoline/terminators
9284 
SetLatencySleepModeNV(VkDevice device,VkSwapchainKHR swapchain,const VkLatencySleepModeInfoNV * pSleepModeInfo)9285 VKAPI_ATTR VkResult VKAPI_CALL SetLatencySleepModeNV(
9286     VkDevice                                    device,
9287     VkSwapchainKHR                              swapchain,
9288     const VkLatencySleepModeInfoNV*             pSleepModeInfo) {
9289     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9290     if (NULL == disp) {
9291         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9292                    "vkSetLatencySleepModeNV: Invalid device "
9293                    "[VUID-vkSetLatencySleepModeNV-device-parameter]");
9294         abort(); /* Intentionally fail so user can correct issue. */
9295     }
9296     return disp->SetLatencySleepModeNV(device, swapchain, pSleepModeInfo);
9297 }
9298 
LatencySleepNV(VkDevice device,VkSwapchainKHR swapchain,const VkLatencySleepInfoNV * pSleepInfo)9299 VKAPI_ATTR VkResult VKAPI_CALL LatencySleepNV(
9300     VkDevice                                    device,
9301     VkSwapchainKHR                              swapchain,
9302     const VkLatencySleepInfoNV*                 pSleepInfo) {
9303     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9304     if (NULL == disp) {
9305         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9306                    "vkLatencySleepNV: Invalid device "
9307                    "[VUID-vkLatencySleepNV-device-parameter]");
9308         abort(); /* Intentionally fail so user can correct issue. */
9309     }
9310     return disp->LatencySleepNV(device, swapchain, pSleepInfo);
9311 }
9312 
SetLatencyMarkerNV(VkDevice device,VkSwapchainKHR swapchain,const VkSetLatencyMarkerInfoNV * pLatencyMarkerInfo)9313 VKAPI_ATTR void VKAPI_CALL SetLatencyMarkerNV(
9314     VkDevice                                    device,
9315     VkSwapchainKHR                              swapchain,
9316     const VkSetLatencyMarkerInfoNV*             pLatencyMarkerInfo) {
9317     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9318     if (NULL == disp) {
9319         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9320                    "vkSetLatencyMarkerNV: Invalid device "
9321                    "[VUID-vkSetLatencyMarkerNV-device-parameter]");
9322         abort(); /* Intentionally fail so user can correct issue. */
9323     }
9324     disp->SetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo);
9325 }
9326 
GetLatencyTimingsNV(VkDevice device,VkSwapchainKHR swapchain,VkGetLatencyMarkerInfoNV * pLatencyMarkerInfo)9327 VKAPI_ATTR void VKAPI_CALL GetLatencyTimingsNV(
9328     VkDevice                                    device,
9329     VkSwapchainKHR                              swapchain,
9330     VkGetLatencyMarkerInfoNV*                   pLatencyMarkerInfo) {
9331     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9332     if (NULL == disp) {
9333         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9334                    "vkGetLatencyTimingsNV: Invalid device "
9335                    "[VUID-vkGetLatencyTimingsNV-device-parameter]");
9336         abort(); /* Intentionally fail so user can correct issue. */
9337     }
9338     disp->GetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo);
9339 }
9340 
QueueNotifyOutOfBandNV(VkQueue queue,const VkOutOfBandQueueTypeInfoNV * pQueueTypeInfo)9341 VKAPI_ATTR void VKAPI_CALL QueueNotifyOutOfBandNV(
9342     VkQueue                                     queue,
9343     const VkOutOfBandQueueTypeInfoNV*           pQueueTypeInfo) {
9344     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
9345     if (NULL == disp) {
9346         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9347                    "vkQueueNotifyOutOfBandNV: Invalid queue "
9348                    "[VUID-vkQueueNotifyOutOfBandNV-queue-parameter]");
9349         abort(); /* Intentionally fail so user can correct issue. */
9350     }
9351     disp->QueueNotifyOutOfBandNV(queue, pQueueTypeInfo);
9352 }
9353 
9354 
9355 // ---- VK_EXT_attachment_feedback_loop_dynamic_state extension trampoline/terminators
9356 
CmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer,VkImageAspectFlags aspectMask)9357 VKAPI_ATTR void VKAPI_CALL CmdSetAttachmentFeedbackLoopEnableEXT(
9358     VkCommandBuffer                             commandBuffer,
9359     VkImageAspectFlags                          aspectMask) {
9360     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9361     if (NULL == disp) {
9362         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9363                    "vkCmdSetAttachmentFeedbackLoopEnableEXT: Invalid commandBuffer "
9364                    "[VUID-vkCmdSetAttachmentFeedbackLoopEnableEXT-commandBuffer-parameter]");
9365         abort(); /* Intentionally fail so user can correct issue. */
9366     }
9367     disp->CmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask);
9368 }
9369 
9370 
9371 // ---- VK_QNX_external_memory_screen_buffer extension trampoline/terminators
9372 
9373 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
GetScreenBufferPropertiesQNX(VkDevice device,const struct _screen_buffer * buffer,VkScreenBufferPropertiesQNX * pProperties)9374 VKAPI_ATTR VkResult VKAPI_CALL GetScreenBufferPropertiesQNX(
9375     VkDevice                                    device,
9376     const struct _screen_buffer*                buffer,
9377     VkScreenBufferPropertiesQNX*                pProperties) {
9378     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9379     if (NULL == disp) {
9380         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9381                    "vkGetScreenBufferPropertiesQNX: Invalid device "
9382                    "[VUID-vkGetScreenBufferPropertiesQNX-device-parameter]");
9383         abort(); /* Intentionally fail so user can correct issue. */
9384     }
9385     return disp->GetScreenBufferPropertiesQNX(device, buffer, pProperties);
9386 }
9387 
9388 #endif // VK_USE_PLATFORM_SCREEN_QNX
9389 
9390 // ---- VK_KHR_acceleration_structure extension trampoline/terminators
9391 
CreateAccelerationStructureKHR(VkDevice device,const VkAccelerationStructureCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkAccelerationStructureKHR * pAccelerationStructure)9392 VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureKHR(
9393     VkDevice                                    device,
9394     const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
9395     const VkAllocationCallbacks*                pAllocator,
9396     VkAccelerationStructureKHR*                 pAccelerationStructure) {
9397     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9398     if (NULL == disp) {
9399         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9400                    "vkCreateAccelerationStructureKHR: Invalid device "
9401                    "[VUID-vkCreateAccelerationStructureKHR-device-parameter]");
9402         abort(); /* Intentionally fail so user can correct issue. */
9403     }
9404     return disp->CreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure);
9405 }
9406 
DestroyAccelerationStructureKHR(VkDevice device,VkAccelerationStructureKHR accelerationStructure,const VkAllocationCallbacks * pAllocator)9407 VKAPI_ATTR void VKAPI_CALL DestroyAccelerationStructureKHR(
9408     VkDevice                                    device,
9409     VkAccelerationStructureKHR                  accelerationStructure,
9410     const VkAllocationCallbacks*                pAllocator) {
9411     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9412     if (NULL == disp) {
9413         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9414                    "vkDestroyAccelerationStructureKHR: Invalid device "
9415                    "[VUID-vkDestroyAccelerationStructureKHR-device-parameter]");
9416         abort(); /* Intentionally fail so user can correct issue. */
9417     }
9418     disp->DestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator);
9419 }
9420 
CmdBuildAccelerationStructuresKHR(VkCommandBuffer commandBuffer,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos)9421 VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructuresKHR(
9422     VkCommandBuffer                             commandBuffer,
9423     uint32_t                                    infoCount,
9424     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
9425     const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) {
9426     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9427     if (NULL == disp) {
9428         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9429                    "vkCmdBuildAccelerationStructuresKHR: Invalid commandBuffer "
9430                    "[VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-parameter]");
9431         abort(); /* Intentionally fail so user can correct issue. */
9432     }
9433     disp->CmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos);
9434 }
9435 
CmdBuildAccelerationStructuresIndirectKHR(VkCommandBuffer commandBuffer,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkDeviceAddress * pIndirectDeviceAddresses,const uint32_t * pIndirectStrides,const uint32_t * const * ppMaxPrimitiveCounts)9436 VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructuresIndirectKHR(
9437     VkCommandBuffer                             commandBuffer,
9438     uint32_t                                    infoCount,
9439     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
9440     const VkDeviceAddress*                      pIndirectDeviceAddresses,
9441     const uint32_t*                             pIndirectStrides,
9442     const uint32_t* const*                      ppMaxPrimitiveCounts) {
9443     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9444     if (NULL == disp) {
9445         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9446                    "vkCmdBuildAccelerationStructuresIndirectKHR: Invalid commandBuffer "
9447                    "[VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-parameter]");
9448         abort(); /* Intentionally fail so user can correct issue. */
9449     }
9450     disp->CmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts);
9451 }
9452 
BuildAccelerationStructuresKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos)9453 VKAPI_ATTR VkResult VKAPI_CALL BuildAccelerationStructuresKHR(
9454     VkDevice                                    device,
9455     VkDeferredOperationKHR                      deferredOperation,
9456     uint32_t                                    infoCount,
9457     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
9458     const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) {
9459     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9460     if (NULL == disp) {
9461         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9462                    "vkBuildAccelerationStructuresKHR: Invalid device "
9463                    "[VUID-vkBuildAccelerationStructuresKHR-device-parameter]");
9464         abort(); /* Intentionally fail so user can correct issue. */
9465     }
9466     return disp->BuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos);
9467 }
9468 
CopyAccelerationStructureKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyAccelerationStructureInfoKHR * pInfo)9469 VKAPI_ATTR VkResult VKAPI_CALL CopyAccelerationStructureKHR(
9470     VkDevice                                    device,
9471     VkDeferredOperationKHR                      deferredOperation,
9472     const VkCopyAccelerationStructureInfoKHR*   pInfo) {
9473     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9474     if (NULL == disp) {
9475         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9476                    "vkCopyAccelerationStructureKHR: Invalid device "
9477                    "[VUID-vkCopyAccelerationStructureKHR-device-parameter]");
9478         abort(); /* Intentionally fail so user can correct issue. */
9479     }
9480     return disp->CopyAccelerationStructureKHR(device, deferredOperation, pInfo);
9481 }
9482 
CopyAccelerationStructureToMemoryKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo)9483 VKAPI_ATTR VkResult VKAPI_CALL CopyAccelerationStructureToMemoryKHR(
9484     VkDevice                                    device,
9485     VkDeferredOperationKHR                      deferredOperation,
9486     const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) {
9487     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9488     if (NULL == disp) {
9489         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9490                    "vkCopyAccelerationStructureToMemoryKHR: Invalid device "
9491                    "[VUID-vkCopyAccelerationStructureToMemoryKHR-device-parameter]");
9492         abort(); /* Intentionally fail so user can correct issue. */
9493     }
9494     return disp->CopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo);
9495 }
9496 
CopyMemoryToAccelerationStructureKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo)9497 VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToAccelerationStructureKHR(
9498     VkDevice                                    device,
9499     VkDeferredOperationKHR                      deferredOperation,
9500     const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) {
9501     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9502     if (NULL == disp) {
9503         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9504                    "vkCopyMemoryToAccelerationStructureKHR: Invalid device "
9505                    "[VUID-vkCopyMemoryToAccelerationStructureKHR-device-parameter]");
9506         abort(); /* Intentionally fail so user can correct issue. */
9507     }
9508     return disp->CopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo);
9509 }
9510 
WriteAccelerationStructuresPropertiesKHR(VkDevice device,uint32_t accelerationStructureCount,const VkAccelerationStructureKHR * pAccelerationStructures,VkQueryType queryType,size_t dataSize,void * pData,size_t stride)9511 VKAPI_ATTR VkResult VKAPI_CALL WriteAccelerationStructuresPropertiesKHR(
9512     VkDevice                                    device,
9513     uint32_t                                    accelerationStructureCount,
9514     const VkAccelerationStructureKHR*           pAccelerationStructures,
9515     VkQueryType                                 queryType,
9516     size_t                                      dataSize,
9517     void*                                       pData,
9518     size_t                                      stride) {
9519     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9520     if (NULL == disp) {
9521         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9522                    "vkWriteAccelerationStructuresPropertiesKHR: Invalid device "
9523                    "[VUID-vkWriteAccelerationStructuresPropertiesKHR-device-parameter]");
9524         abort(); /* Intentionally fail so user can correct issue. */
9525     }
9526     return disp->WriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride);
9527 }
9528 
CmdCopyAccelerationStructureKHR(VkCommandBuffer commandBuffer,const VkCopyAccelerationStructureInfoKHR * pInfo)9529 VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureKHR(
9530     VkCommandBuffer                             commandBuffer,
9531     const VkCopyAccelerationStructureInfoKHR*   pInfo) {
9532     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9533     if (NULL == disp) {
9534         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9535                    "vkCmdCopyAccelerationStructureKHR: Invalid commandBuffer "
9536                    "[VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-parameter]");
9537         abort(); /* Intentionally fail so user can correct issue. */
9538     }
9539     disp->CmdCopyAccelerationStructureKHR(commandBuffer, pInfo);
9540 }
9541 
CmdCopyAccelerationStructureToMemoryKHR(VkCommandBuffer commandBuffer,const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo)9542 VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureToMemoryKHR(
9543     VkCommandBuffer                             commandBuffer,
9544     const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) {
9545     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9546     if (NULL == disp) {
9547         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9548                    "vkCmdCopyAccelerationStructureToMemoryKHR: Invalid commandBuffer "
9549                    "[VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-parameter]");
9550         abort(); /* Intentionally fail so user can correct issue. */
9551     }
9552     disp->CmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo);
9553 }
9554 
CmdCopyMemoryToAccelerationStructureKHR(VkCommandBuffer commandBuffer,const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo)9555 VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryToAccelerationStructureKHR(
9556     VkCommandBuffer                             commandBuffer,
9557     const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) {
9558     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9559     if (NULL == disp) {
9560         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9561                    "vkCmdCopyMemoryToAccelerationStructureKHR: Invalid commandBuffer "
9562                    "[VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-parameter]");
9563         abort(); /* Intentionally fail so user can correct issue. */
9564     }
9565     disp->CmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo);
9566 }
9567 
GetAccelerationStructureDeviceAddressKHR(VkDevice device,const VkAccelerationStructureDeviceAddressInfoKHR * pInfo)9568 VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetAccelerationStructureDeviceAddressKHR(
9569     VkDevice                                    device,
9570     const VkAccelerationStructureDeviceAddressInfoKHR* pInfo) {
9571     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9572     if (NULL == disp) {
9573         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9574                    "vkGetAccelerationStructureDeviceAddressKHR: Invalid device "
9575                    "[VUID-vkGetAccelerationStructureDeviceAddressKHR-device-parameter]");
9576         abort(); /* Intentionally fail so user can correct issue. */
9577     }
9578     return disp->GetAccelerationStructureDeviceAddressKHR(device, pInfo);
9579 }
9580 
CmdWriteAccelerationStructuresPropertiesKHR(VkCommandBuffer commandBuffer,uint32_t accelerationStructureCount,const VkAccelerationStructureKHR * pAccelerationStructures,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)9581 VKAPI_ATTR void VKAPI_CALL CmdWriteAccelerationStructuresPropertiesKHR(
9582     VkCommandBuffer                             commandBuffer,
9583     uint32_t                                    accelerationStructureCount,
9584     const VkAccelerationStructureKHR*           pAccelerationStructures,
9585     VkQueryType                                 queryType,
9586     VkQueryPool                                 queryPool,
9587     uint32_t                                    firstQuery) {
9588     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9589     if (NULL == disp) {
9590         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9591                    "vkCmdWriteAccelerationStructuresPropertiesKHR: Invalid commandBuffer "
9592                    "[VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-parameter]");
9593         abort(); /* Intentionally fail so user can correct issue. */
9594     }
9595     disp->CmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery);
9596 }
9597 
GetDeviceAccelerationStructureCompatibilityKHR(VkDevice device,const VkAccelerationStructureVersionInfoKHR * pVersionInfo,VkAccelerationStructureCompatibilityKHR * pCompatibility)9598 VKAPI_ATTR void VKAPI_CALL GetDeviceAccelerationStructureCompatibilityKHR(
9599     VkDevice                                    device,
9600     const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
9601     VkAccelerationStructureCompatibilityKHR*    pCompatibility) {
9602     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9603     if (NULL == disp) {
9604         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9605                    "vkGetDeviceAccelerationStructureCompatibilityKHR: Invalid device "
9606                    "[VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-device-parameter]");
9607         abort(); /* Intentionally fail so user can correct issue. */
9608     }
9609     disp->GetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility);
9610 }
9611 
GetAccelerationStructureBuildSizesKHR(VkDevice device,VkAccelerationStructureBuildTypeKHR buildType,const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo,const uint32_t * pMaxPrimitiveCounts,VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo)9612 VKAPI_ATTR void VKAPI_CALL GetAccelerationStructureBuildSizesKHR(
9613     VkDevice                                    device,
9614     VkAccelerationStructureBuildTypeKHR         buildType,
9615     const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
9616     const uint32_t*                             pMaxPrimitiveCounts,
9617     VkAccelerationStructureBuildSizesInfoKHR*   pSizeInfo) {
9618     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9619     if (NULL == disp) {
9620         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9621                    "vkGetAccelerationStructureBuildSizesKHR: Invalid device "
9622                    "[VUID-vkGetAccelerationStructureBuildSizesKHR-device-parameter]");
9623         abort(); /* Intentionally fail so user can correct issue. */
9624     }
9625     disp->GetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo);
9626 }
9627 
9628 
9629 // ---- VK_KHR_ray_tracing_pipeline extension trampoline/terminators
9630 
CmdTraceRaysKHR(VkCommandBuffer commandBuffer,const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable,uint32_t width,uint32_t height,uint32_t depth)9631 VKAPI_ATTR void VKAPI_CALL CmdTraceRaysKHR(
9632     VkCommandBuffer                             commandBuffer,
9633     const VkStridedDeviceAddressRegionKHR*      pRaygenShaderBindingTable,
9634     const VkStridedDeviceAddressRegionKHR*      pMissShaderBindingTable,
9635     const VkStridedDeviceAddressRegionKHR*      pHitShaderBindingTable,
9636     const VkStridedDeviceAddressRegionKHR*      pCallableShaderBindingTable,
9637     uint32_t                                    width,
9638     uint32_t                                    height,
9639     uint32_t                                    depth) {
9640     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9641     if (NULL == disp) {
9642         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9643                    "vkCmdTraceRaysKHR: Invalid commandBuffer "
9644                    "[VUID-vkCmdTraceRaysKHR-commandBuffer-parameter]");
9645         abort(); /* Intentionally fail so user can correct issue. */
9646     }
9647     disp->CmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth);
9648 }
9649 
CreateRayTracingPipelinesKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkRayTracingPipelineCreateInfoKHR * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)9650 VKAPI_ATTR VkResult VKAPI_CALL CreateRayTracingPipelinesKHR(
9651     VkDevice                                    device,
9652     VkDeferredOperationKHR                      deferredOperation,
9653     VkPipelineCache                             pipelineCache,
9654     uint32_t                                    createInfoCount,
9655     const VkRayTracingPipelineCreateInfoKHR*    pCreateInfos,
9656     const VkAllocationCallbacks*                pAllocator,
9657     VkPipeline*                                 pPipelines) {
9658     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9659     if (NULL == disp) {
9660         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9661                    "vkCreateRayTracingPipelinesKHR: Invalid device "
9662                    "[VUID-vkCreateRayTracingPipelinesKHR-device-parameter]");
9663         abort(); /* Intentionally fail so user can correct issue. */
9664     }
9665     return disp->CreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
9666 }
9667 
GetRayTracingCaptureReplayShaderGroupHandlesKHR(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)9668 VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingCaptureReplayShaderGroupHandlesKHR(
9669     VkDevice                                    device,
9670     VkPipeline                                  pipeline,
9671     uint32_t                                    firstGroup,
9672     uint32_t                                    groupCount,
9673     size_t                                      dataSize,
9674     void*                                       pData) {
9675     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9676     if (NULL == disp) {
9677         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9678                    "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR: Invalid device "
9679                    "[VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-device-parameter]");
9680         abort(); /* Intentionally fail so user can correct issue. */
9681     }
9682     return disp->GetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData);
9683 }
9684 
CmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer,const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable,VkDeviceAddress indirectDeviceAddress)9685 VKAPI_ATTR void VKAPI_CALL CmdTraceRaysIndirectKHR(
9686     VkCommandBuffer                             commandBuffer,
9687     const VkStridedDeviceAddressRegionKHR*      pRaygenShaderBindingTable,
9688     const VkStridedDeviceAddressRegionKHR*      pMissShaderBindingTable,
9689     const VkStridedDeviceAddressRegionKHR*      pHitShaderBindingTable,
9690     const VkStridedDeviceAddressRegionKHR*      pCallableShaderBindingTable,
9691     VkDeviceAddress                             indirectDeviceAddress) {
9692     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9693     if (NULL == disp) {
9694         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9695                    "vkCmdTraceRaysIndirectKHR: Invalid commandBuffer "
9696                    "[VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-parameter]");
9697         abort(); /* Intentionally fail so user can correct issue. */
9698     }
9699     disp->CmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress);
9700 }
9701 
GetRayTracingShaderGroupStackSizeKHR(VkDevice device,VkPipeline pipeline,uint32_t group,VkShaderGroupShaderKHR groupShader)9702 VKAPI_ATTR VkDeviceSize VKAPI_CALL GetRayTracingShaderGroupStackSizeKHR(
9703     VkDevice                                    device,
9704     VkPipeline                                  pipeline,
9705     uint32_t                                    group,
9706     VkShaderGroupShaderKHR                      groupShader) {
9707     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9708     if (NULL == disp) {
9709         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9710                    "vkGetRayTracingShaderGroupStackSizeKHR: Invalid device "
9711                    "[VUID-vkGetRayTracingShaderGroupStackSizeKHR-device-parameter]");
9712         abort(); /* Intentionally fail so user can correct issue. */
9713     }
9714     return disp->GetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader);
9715 }
9716 
CmdSetRayTracingPipelineStackSizeKHR(VkCommandBuffer commandBuffer,uint32_t pipelineStackSize)9717 VKAPI_ATTR void VKAPI_CALL CmdSetRayTracingPipelineStackSizeKHR(
9718     VkCommandBuffer                             commandBuffer,
9719     uint32_t                                    pipelineStackSize) {
9720     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9721     if (NULL == disp) {
9722         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9723                    "vkCmdSetRayTracingPipelineStackSizeKHR: Invalid commandBuffer "
9724                    "[VUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-parameter]");
9725         abort(); /* Intentionally fail so user can correct issue. */
9726     }
9727     disp->CmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize);
9728 }
9729 
9730 
9731 // ---- VK_EXT_mesh_shader extension trampoline/terminators
9732 
CmdDrawMeshTasksEXT(VkCommandBuffer commandBuffer,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)9733 VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksEXT(
9734     VkCommandBuffer                             commandBuffer,
9735     uint32_t                                    groupCountX,
9736     uint32_t                                    groupCountY,
9737     uint32_t                                    groupCountZ) {
9738     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9739     if (NULL == disp) {
9740         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9741                    "vkCmdDrawMeshTasksEXT: Invalid commandBuffer "
9742                    "[VUID-vkCmdDrawMeshTasksEXT-commandBuffer-parameter]");
9743         abort(); /* Intentionally fail so user can correct issue. */
9744     }
9745     disp->CmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ);
9746 }
9747 
CmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)9748 VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectEXT(
9749     VkCommandBuffer                             commandBuffer,
9750     VkBuffer                                    buffer,
9751     VkDeviceSize                                offset,
9752     uint32_t                                    drawCount,
9753     uint32_t                                    stride) {
9754     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9755     if (NULL == disp) {
9756         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9757                    "vkCmdDrawMeshTasksIndirectEXT: Invalid commandBuffer "
9758                    "[VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-parameter]");
9759         abort(); /* Intentionally fail so user can correct issue. */
9760     }
9761     disp->CmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride);
9762 }
9763 
CmdDrawMeshTasksIndirectCountEXT(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)9764 VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectCountEXT(
9765     VkCommandBuffer                             commandBuffer,
9766     VkBuffer                                    buffer,
9767     VkDeviceSize                                offset,
9768     VkBuffer                                    countBuffer,
9769     VkDeviceSize                                countBufferOffset,
9770     uint32_t                                    maxDrawCount,
9771     uint32_t                                    stride) {
9772     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9773     if (NULL == disp) {
9774         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9775                    "vkCmdDrawMeshTasksIndirectCountEXT: Invalid commandBuffer "
9776                    "[VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-parameter]");
9777         abort(); /* Intentionally fail so user can correct issue. */
9778     }
9779     disp->CmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
9780 }
9781 
9782 // ---- VK_OHOS_native_buffer extension trampoline/terminators
9783 
9784 #ifdef VK_USE_PLATFORM_OHOS
GetSwapchainGrallocUsageOHOS(VkDevice device,VkFormat format,VkImageUsageFlags imageUsage,uint64_t * grallocUsage)9785 VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainGrallocUsageOHOS(
9786     VkDevice                                    device,
9787     VkFormat                                    format,
9788     VkImageUsageFlags                           imageUsage,
9789     uint64_t*                                   grallocUsage) {
9790     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9791     if (NULL == disp) {
9792         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9793                    "vkGetSwapchainGrallocUsageOHOS: Invalid device "
9794                    "[VUID-vkGetSwapchainGrallocUsageOHOS-device-parameter]");
9795         abort(); /* Intentionally fail so user can correct issue. */
9796     }
9797     return disp->GetSwapchainGrallocUsageOHOS(device, format, imageUsage, grallocUsage);
9798 }
9799 
9800 #endif // VK_USE_PLATFORM_OHOS
9801 #ifdef VK_USE_PLATFORM_OHOS
AcquireImageOHOS(VkDevice device,VkImage image,int32_t nativeFenceFd,VkSemaphore semaphore,VkFence fence)9802 VKAPI_ATTR VkResult VKAPI_CALL AcquireImageOHOS(
9803     VkDevice                                    device,
9804     VkImage                                     image,
9805     int32_t                                     nativeFenceFd,
9806     VkSemaphore                                 semaphore,
9807     VkFence                                     fence) {
9808     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9809     if (NULL == disp) {
9810         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9811                    "vkAcquireImageOHOS: Invalid device "
9812                    "[VUID-vkAcquireImageOHOS-device-parameter]");
9813         abort(); /* Intentionally fail so user can correct issue. */
9814     }
9815     return disp->AcquireImageOHOS(device, image, nativeFenceFd, semaphore, fence);
9816 }
9817 
9818 #endif // VK_USE_PLATFORM_OHOS
9819 #ifdef VK_USE_PLATFORM_OHOS
QueueSignalReleaseImageOHOS(VkQueue queue,uint32_t waitSemaphoreCount,const VkSemaphore * pWaitSemaphores,VkImage image,int32_t * pNativeFenceFd)9820 VKAPI_ATTR VkResult VKAPI_CALL QueueSignalReleaseImageOHOS(
9821     VkQueue                                     queue,
9822     uint32_t                                    waitSemaphoreCount,
9823     const VkSemaphore*                          pWaitSemaphores,
9824     VkImage                                     image,
9825     int32_t*                                    pNativeFenceFd) {
9826     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
9827     if (NULL == disp) {
9828         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9829                    "vkQueueSignalReleaseImageOHOS: Invalid queue "
9830                    "[VUID-vkQueueSignalReleaseImageOHOS-queue-parameter]");
9831         abort(); /* Intentionally fail so user can correct issue. */
9832     }
9833     return disp->QueueSignalReleaseImageOHOS(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd);
9834 }
9835 
9836 #endif // VK_USE_PLATFORM_OHOS
9837 
9838 // ---- VK_OHOS_external_memory extension trampoline/terminators
9839 
9840 #ifdef VK_USE_PLATFORM_OHOS
vkGetNativeBufferPropertiesOHOS(VkDevice device,const struct OH_NativeBuffer * buffer,VkNativeBufferPropertiesOHOS * pProperties)9841 VKAPI_ATTR VkResult VKAPI_CALL vkGetNativeBufferPropertiesOHOS(
9842     VkDevice                                    device,
9843     const struct OH_NativeBuffer*               buffer,
9844     VkNativeBufferPropertiesOHOS*               pProperties) {
9845     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9846     if (NULL == disp) {
9847         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9848                    "vkGetNativeBufferPropertiesOHOS: Invalid device "
9849                    "[VUID-vkGetNativeBufferPropertiesOHOS-device-parameter]");
9850         abort(); /* Intentionally fail so user can correct issue. */
9851     }
9852     return disp->GetNativeBufferPropertiesOHOS(device, buffer, pProperties);
9853 }
9854 
9855 #endif // VK_USE_PLATFORM_OHOS
9856 #ifdef VK_USE_PLATFORM_OHOS
vkGetMemoryNativeBufferOHOS(VkDevice device,const VkMemoryGetNativeBufferInfoOHOS * pInfo,struct OH_NativeBuffer ** pBuffer)9857 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryNativeBufferOHOS(
9858     VkDevice                                    device,
9859     const VkMemoryGetNativeBufferInfoOHOS*      pInfo,
9860     struct OH_NativeBuffer**                    pBuffer) {
9861     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9862     if (NULL == disp) {
9863         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9864                    "vkGetMemoryNativeBufferOHOS: Invalid device "
9865                    "[VUID-vkGetMemoryNativeBufferOHOS-device-parameter]");
9866         abort(); /* Intentionally fail so user can correct issue. */
9867     }
9868     return disp->GetMemoryNativeBufferOHOS(device, pInfo, pBuffer);
9869 }
9870 
9871 #endif // VK_USE_PLATFORM_OHOS
9872 
9873 // GPA helpers for extensions
extension_instance_gpa(struct loader_instance * ptr_instance,const char * name,void ** addr)9874 bool extension_instance_gpa(struct loader_instance *ptr_instance, const char *name, void **addr) {
9875     *addr = NULL;
9876 
9877 
9878     // ---- VK_KHR_video_queue extension commands
9879     if (!strcmp("vkGetPhysicalDeviceVideoCapabilitiesKHR", name)) {
9880         *addr = (void *)GetPhysicalDeviceVideoCapabilitiesKHR;
9881         return true;
9882     }
9883     if (!strcmp("vkGetPhysicalDeviceVideoFormatPropertiesKHR", name)) {
9884         *addr = (void *)GetPhysicalDeviceVideoFormatPropertiesKHR;
9885         return true;
9886     }
9887     if (!strcmp("vkCreateVideoSessionKHR", name)) {
9888         *addr = (void *)CreateVideoSessionKHR;
9889         return true;
9890     }
9891     if (!strcmp("vkDestroyVideoSessionKHR", name)) {
9892         *addr = (void *)DestroyVideoSessionKHR;
9893         return true;
9894     }
9895     if (!strcmp("vkGetVideoSessionMemoryRequirementsKHR", name)) {
9896         *addr = (void *)GetVideoSessionMemoryRequirementsKHR;
9897         return true;
9898     }
9899     if (!strcmp("vkBindVideoSessionMemoryKHR", name)) {
9900         *addr = (void *)BindVideoSessionMemoryKHR;
9901         return true;
9902     }
9903     if (!strcmp("vkCreateVideoSessionParametersKHR", name)) {
9904         *addr = (void *)CreateVideoSessionParametersKHR;
9905         return true;
9906     }
9907     if (!strcmp("vkUpdateVideoSessionParametersKHR", name)) {
9908         *addr = (void *)UpdateVideoSessionParametersKHR;
9909         return true;
9910     }
9911     if (!strcmp("vkDestroyVideoSessionParametersKHR", name)) {
9912         *addr = (void *)DestroyVideoSessionParametersKHR;
9913         return true;
9914     }
9915     if (!strcmp("vkCmdBeginVideoCodingKHR", name)) {
9916         *addr = (void *)CmdBeginVideoCodingKHR;
9917         return true;
9918     }
9919     if (!strcmp("vkCmdEndVideoCodingKHR", name)) {
9920         *addr = (void *)CmdEndVideoCodingKHR;
9921         return true;
9922     }
9923     if (!strcmp("vkCmdControlVideoCodingKHR", name)) {
9924         *addr = (void *)CmdControlVideoCodingKHR;
9925         return true;
9926     }
9927 
9928     // ---- VK_KHR_video_decode_queue extension commands
9929     if (!strcmp("vkCmdDecodeVideoKHR", name)) {
9930         *addr = (void *)CmdDecodeVideoKHR;
9931         return true;
9932     }
9933 
9934     // ---- VK_KHR_dynamic_rendering extension commands
9935     if (!strcmp("vkCmdBeginRenderingKHR", name)) {
9936         *addr = (void *)CmdBeginRenderingKHR;
9937         return true;
9938     }
9939     if (!strcmp("vkCmdEndRenderingKHR", name)) {
9940         *addr = (void *)CmdEndRenderingKHR;
9941         return true;
9942     }
9943 
9944     // ---- VK_KHR_get_physical_device_properties2 extension commands
9945     if (!strcmp("vkGetPhysicalDeviceFeatures2KHR", name)) {
9946         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
9947                      ? (void *)vkGetPhysicalDeviceFeatures2
9948                      : NULL;
9949         return true;
9950     }
9951     if (!strcmp("vkGetPhysicalDeviceProperties2KHR", name)) {
9952         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
9953                      ? (void *)vkGetPhysicalDeviceProperties2
9954                      : NULL;
9955         return true;
9956     }
9957     if (!strcmp("vkGetPhysicalDeviceFormatProperties2KHR", name)) {
9958         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
9959                      ? (void *)vkGetPhysicalDeviceFormatProperties2
9960                      : NULL;
9961         return true;
9962     }
9963     if (!strcmp("vkGetPhysicalDeviceImageFormatProperties2KHR", name)) {
9964         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
9965                      ? (void *)vkGetPhysicalDeviceImageFormatProperties2
9966                      : NULL;
9967         return true;
9968     }
9969     if (!strcmp("vkGetPhysicalDeviceQueueFamilyProperties2KHR", name)) {
9970         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
9971                      ? (void *)vkGetPhysicalDeviceQueueFamilyProperties2
9972                      : NULL;
9973         return true;
9974     }
9975     if (!strcmp("vkGetPhysicalDeviceMemoryProperties2KHR", name)) {
9976         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
9977                      ? (void *)vkGetPhysicalDeviceMemoryProperties2
9978                      : NULL;
9979         return true;
9980     }
9981     if (!strcmp("vkGetPhysicalDeviceSparseImageFormatProperties2KHR", name)) {
9982         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
9983                      ? (void *)vkGetPhysicalDeviceSparseImageFormatProperties2
9984                      : NULL;
9985         return true;
9986     }
9987 
9988     // ---- VK_KHR_device_group extension commands
9989     if (!strcmp("vkGetDeviceGroupPeerMemoryFeaturesKHR", name)) {
9990         *addr = (void *)GetDeviceGroupPeerMemoryFeaturesKHR;
9991         return true;
9992     }
9993     if (!strcmp("vkCmdSetDeviceMaskKHR", name)) {
9994         *addr = (void *)CmdSetDeviceMaskKHR;
9995         return true;
9996     }
9997     if (!strcmp("vkCmdDispatchBaseKHR", name)) {
9998         *addr = (void *)CmdDispatchBaseKHR;
9999         return true;
10000     }
10001 
10002     // ---- VK_KHR_maintenance1 extension commands
10003     if (!strcmp("vkTrimCommandPoolKHR", name)) {
10004         *addr = (void *)TrimCommandPoolKHR;
10005         return true;
10006     }
10007 
10008     // ---- VK_KHR_device_group_creation extension commands
10009     if (!strcmp("vkEnumeratePhysicalDeviceGroupsKHR", name)) {
10010         *addr = (ptr_instance->enabled_known_extensions.khr_device_group_creation == 1)
10011                      ? (void *)vkEnumeratePhysicalDeviceGroups
10012                      : NULL;
10013         return true;
10014     }
10015 
10016     // ---- VK_KHR_external_memory_capabilities extension commands
10017     if (!strcmp("vkGetPhysicalDeviceExternalBufferPropertiesKHR", name)) {
10018         *addr = (ptr_instance->enabled_known_extensions.khr_external_memory_capabilities == 1)
10019                      ? (void *)vkGetPhysicalDeviceExternalBufferProperties
10020                      : NULL;
10021         return true;
10022     }
10023 
10024     // ---- VK_KHR_external_memory_win32 extension commands
10025 #if defined(VK_USE_PLATFORM_WIN32_KHR)
10026     if (!strcmp("vkGetMemoryWin32HandleKHR", name)) {
10027         *addr = (void *)GetMemoryWin32HandleKHR;
10028         return true;
10029     }
10030 #endif // VK_USE_PLATFORM_WIN32_KHR
10031 #if defined(VK_USE_PLATFORM_WIN32_KHR)
10032     if (!strcmp("vkGetMemoryWin32HandlePropertiesKHR", name)) {
10033         *addr = (void *)GetMemoryWin32HandlePropertiesKHR;
10034         return true;
10035     }
10036 #endif // VK_USE_PLATFORM_WIN32_KHR
10037 
10038     // ---- VK_KHR_external_memory_fd extension commands
10039     if (!strcmp("vkGetMemoryFdKHR", name)) {
10040         *addr = (void *)GetMemoryFdKHR;
10041         return true;
10042     }
10043     if (!strcmp("vkGetMemoryFdPropertiesKHR", name)) {
10044         *addr = (void *)GetMemoryFdPropertiesKHR;
10045         return true;
10046     }
10047 
10048     // ---- VK_KHR_external_semaphore_capabilities extension commands
10049     if (!strcmp("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR", name)) {
10050         *addr = (ptr_instance->enabled_known_extensions.khr_external_semaphore_capabilities == 1)
10051                      ? (void *)vkGetPhysicalDeviceExternalSemaphoreProperties
10052                      : NULL;
10053         return true;
10054     }
10055 
10056     // ---- VK_KHR_external_semaphore_win32 extension commands
10057 #if defined(VK_USE_PLATFORM_WIN32_KHR)
10058     if (!strcmp("vkImportSemaphoreWin32HandleKHR", name)) {
10059         *addr = (void *)ImportSemaphoreWin32HandleKHR;
10060         return true;
10061     }
10062 #endif // VK_USE_PLATFORM_WIN32_KHR
10063 #if defined(VK_USE_PLATFORM_WIN32_KHR)
10064     if (!strcmp("vkGetSemaphoreWin32HandleKHR", name)) {
10065         *addr = (void *)GetSemaphoreWin32HandleKHR;
10066         return true;
10067     }
10068 #endif // VK_USE_PLATFORM_WIN32_KHR
10069 
10070     // ---- VK_KHR_external_semaphore_fd extension commands
10071     if (!strcmp("vkImportSemaphoreFdKHR", name)) {
10072         *addr = (void *)ImportSemaphoreFdKHR;
10073         return true;
10074     }
10075     if (!strcmp("vkGetSemaphoreFdKHR", name)) {
10076         *addr = (void *)GetSemaphoreFdKHR;
10077         return true;
10078     }
10079 
10080     // ---- VK_KHR_push_descriptor extension commands
10081     if (!strcmp("vkCmdPushDescriptorSetKHR", name)) {
10082         *addr = (void *)CmdPushDescriptorSetKHR;
10083         return true;
10084     }
10085     if (!strcmp("vkCmdPushDescriptorSetWithTemplateKHR", name)) {
10086         *addr = (void *)CmdPushDescriptorSetWithTemplateKHR;
10087         return true;
10088     }
10089 
10090     // ---- VK_KHR_descriptor_update_template extension commands
10091     if (!strcmp("vkCreateDescriptorUpdateTemplateKHR", name)) {
10092         *addr = (void *)CreateDescriptorUpdateTemplateKHR;
10093         return true;
10094     }
10095     if (!strcmp("vkDestroyDescriptorUpdateTemplateKHR", name)) {
10096         *addr = (void *)DestroyDescriptorUpdateTemplateKHR;
10097         return true;
10098     }
10099     if (!strcmp("vkUpdateDescriptorSetWithTemplateKHR", name)) {
10100         *addr = (void *)UpdateDescriptorSetWithTemplateKHR;
10101         return true;
10102     }
10103 
10104     // ---- VK_KHR_create_renderpass2 extension commands
10105     if (!strcmp("vkCreateRenderPass2KHR", name)) {
10106         *addr = (void *)CreateRenderPass2KHR;
10107         return true;
10108     }
10109     if (!strcmp("vkCmdBeginRenderPass2KHR", name)) {
10110         *addr = (void *)CmdBeginRenderPass2KHR;
10111         return true;
10112     }
10113     if (!strcmp("vkCmdNextSubpass2KHR", name)) {
10114         *addr = (void *)CmdNextSubpass2KHR;
10115         return true;
10116     }
10117     if (!strcmp("vkCmdEndRenderPass2KHR", name)) {
10118         *addr = (void *)CmdEndRenderPass2KHR;
10119         return true;
10120     }
10121 
10122     // ---- VK_KHR_shared_presentable_image extension commands
10123     if (!strcmp("vkGetSwapchainStatusKHR", name)) {
10124         *addr = (void *)GetSwapchainStatusKHR;
10125         return true;
10126     }
10127 
10128     // ---- VK_KHR_external_fence_capabilities extension commands
10129     if (!strcmp("vkGetPhysicalDeviceExternalFencePropertiesKHR", name)) {
10130         *addr = (ptr_instance->enabled_known_extensions.khr_external_fence_capabilities == 1)
10131                      ? (void *)vkGetPhysicalDeviceExternalFenceProperties
10132                      : NULL;
10133         return true;
10134     }
10135 
10136     // ---- VK_KHR_external_fence_win32 extension commands
10137 #if defined(VK_USE_PLATFORM_WIN32_KHR)
10138     if (!strcmp("vkImportFenceWin32HandleKHR", name)) {
10139         *addr = (void *)ImportFenceWin32HandleKHR;
10140         return true;
10141     }
10142 #endif // VK_USE_PLATFORM_WIN32_KHR
10143 #if defined(VK_USE_PLATFORM_WIN32_KHR)
10144     if (!strcmp("vkGetFenceWin32HandleKHR", name)) {
10145         *addr = (void *)GetFenceWin32HandleKHR;
10146         return true;
10147     }
10148 #endif // VK_USE_PLATFORM_WIN32_KHR
10149 
10150     // ---- VK_KHR_external_fence_fd extension commands
10151     if (!strcmp("vkImportFenceFdKHR", name)) {
10152         *addr = (void *)ImportFenceFdKHR;
10153         return true;
10154     }
10155     if (!strcmp("vkGetFenceFdKHR", name)) {
10156         *addr = (void *)GetFenceFdKHR;
10157         return true;
10158     }
10159 
10160     // ---- VK_KHR_performance_query extension commands
10161     if (!strcmp("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR", name)) {
10162         *addr = (void *)EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
10163         return true;
10164     }
10165     if (!strcmp("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR", name)) {
10166         *addr = (void *)GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
10167         return true;
10168     }
10169     if (!strcmp("vkAcquireProfilingLockKHR", name)) {
10170         *addr = (void *)AcquireProfilingLockKHR;
10171         return true;
10172     }
10173     if (!strcmp("vkReleaseProfilingLockKHR", name)) {
10174         *addr = (void *)ReleaseProfilingLockKHR;
10175         return true;
10176     }
10177 
10178     // ---- VK_KHR_get_memory_requirements2 extension commands
10179     if (!strcmp("vkGetImageMemoryRequirements2KHR", name)) {
10180         *addr = (void *)GetImageMemoryRequirements2KHR;
10181         return true;
10182     }
10183     if (!strcmp("vkGetBufferMemoryRequirements2KHR", name)) {
10184         *addr = (void *)GetBufferMemoryRequirements2KHR;
10185         return true;
10186     }
10187     if (!strcmp("vkGetImageSparseMemoryRequirements2KHR", name)) {
10188         *addr = (void *)GetImageSparseMemoryRequirements2KHR;
10189         return true;
10190     }
10191 
10192     // ---- VK_KHR_sampler_ycbcr_conversion extension commands
10193     if (!strcmp("vkCreateSamplerYcbcrConversionKHR", name)) {
10194         *addr = (void *)CreateSamplerYcbcrConversionKHR;
10195         return true;
10196     }
10197     if (!strcmp("vkDestroySamplerYcbcrConversionKHR", name)) {
10198         *addr = (void *)DestroySamplerYcbcrConversionKHR;
10199         return true;
10200     }
10201 
10202     // ---- VK_KHR_bind_memory2 extension commands
10203     if (!strcmp("vkBindBufferMemory2KHR", name)) {
10204         *addr = (void *)BindBufferMemory2KHR;
10205         return true;
10206     }
10207     if (!strcmp("vkBindImageMemory2KHR", name)) {
10208         *addr = (void *)BindImageMemory2KHR;
10209         return true;
10210     }
10211 
10212     // ---- VK_KHR_maintenance3 extension commands
10213     if (!strcmp("vkGetDescriptorSetLayoutSupportKHR", name)) {
10214         *addr = (void *)GetDescriptorSetLayoutSupportKHR;
10215         return true;
10216     }
10217 
10218     // ---- VK_KHR_draw_indirect_count extension commands
10219     if (!strcmp("vkCmdDrawIndirectCountKHR", name)) {
10220         *addr = (void *)CmdDrawIndirectCountKHR;
10221         return true;
10222     }
10223     if (!strcmp("vkCmdDrawIndexedIndirectCountKHR", name)) {
10224         *addr = (void *)CmdDrawIndexedIndirectCountKHR;
10225         return true;
10226     }
10227 
10228     // ---- VK_KHR_timeline_semaphore extension commands
10229     if (!strcmp("vkGetSemaphoreCounterValueKHR", name)) {
10230         *addr = (void *)GetSemaphoreCounterValueKHR;
10231         return true;
10232     }
10233     if (!strcmp("vkWaitSemaphoresKHR", name)) {
10234         *addr = (void *)WaitSemaphoresKHR;
10235         return true;
10236     }
10237     if (!strcmp("vkSignalSemaphoreKHR", name)) {
10238         *addr = (void *)SignalSemaphoreKHR;
10239         return true;
10240     }
10241 
10242     // ---- VK_KHR_fragment_shading_rate extension commands
10243     if (!strcmp("vkGetPhysicalDeviceFragmentShadingRatesKHR", name)) {
10244         *addr = (void *)GetPhysicalDeviceFragmentShadingRatesKHR;
10245         return true;
10246     }
10247     if (!strcmp("vkCmdSetFragmentShadingRateKHR", name)) {
10248         *addr = (void *)CmdSetFragmentShadingRateKHR;
10249         return true;
10250     }
10251 
10252     // ---- VK_KHR_present_wait extension commands
10253     if (!strcmp("vkWaitForPresentKHR", name)) {
10254         *addr = (void *)WaitForPresentKHR;
10255         return true;
10256     }
10257 
10258     // ---- VK_KHR_buffer_device_address extension commands
10259     if (!strcmp("vkGetBufferDeviceAddressKHR", name)) {
10260         *addr = (void *)GetBufferDeviceAddressKHR;
10261         return true;
10262     }
10263     if (!strcmp("vkGetBufferOpaqueCaptureAddressKHR", name)) {
10264         *addr = (void *)GetBufferOpaqueCaptureAddressKHR;
10265         return true;
10266     }
10267     if (!strcmp("vkGetDeviceMemoryOpaqueCaptureAddressKHR", name)) {
10268         *addr = (void *)GetDeviceMemoryOpaqueCaptureAddressKHR;
10269         return true;
10270     }
10271 
10272     // ---- VK_KHR_deferred_host_operations extension commands
10273     if (!strcmp("vkCreateDeferredOperationKHR", name)) {
10274         *addr = (void *)CreateDeferredOperationKHR;
10275         return true;
10276     }
10277     if (!strcmp("vkDestroyDeferredOperationKHR", name)) {
10278         *addr = (void *)DestroyDeferredOperationKHR;
10279         return true;
10280     }
10281     if (!strcmp("vkGetDeferredOperationMaxConcurrencyKHR", name)) {
10282         *addr = (void *)GetDeferredOperationMaxConcurrencyKHR;
10283         return true;
10284     }
10285     if (!strcmp("vkGetDeferredOperationResultKHR", name)) {
10286         *addr = (void *)GetDeferredOperationResultKHR;
10287         return true;
10288     }
10289     if (!strcmp("vkDeferredOperationJoinKHR", name)) {
10290         *addr = (void *)DeferredOperationJoinKHR;
10291         return true;
10292     }
10293 
10294     // ---- VK_KHR_pipeline_executable_properties extension commands
10295     if (!strcmp("vkGetPipelineExecutablePropertiesKHR", name)) {
10296         *addr = (void *)GetPipelineExecutablePropertiesKHR;
10297         return true;
10298     }
10299     if (!strcmp("vkGetPipelineExecutableStatisticsKHR", name)) {
10300         *addr = (void *)GetPipelineExecutableStatisticsKHR;
10301         return true;
10302     }
10303     if (!strcmp("vkGetPipelineExecutableInternalRepresentationsKHR", name)) {
10304         *addr = (void *)GetPipelineExecutableInternalRepresentationsKHR;
10305         return true;
10306     }
10307 
10308     // ---- VK_KHR_map_memory2 extension commands
10309     if (!strcmp("vkMapMemory2KHR", name)) {
10310         *addr = (void *)MapMemory2KHR;
10311         return true;
10312     }
10313     if (!strcmp("vkUnmapMemory2KHR", name)) {
10314         *addr = (void *)UnmapMemory2KHR;
10315         return true;
10316     }
10317 
10318     // ---- VK_KHR_video_encode_queue extension commands
10319     if (!strcmp("vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR", name)) {
10320         *addr = (void *)GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR;
10321         return true;
10322     }
10323     if (!strcmp("vkGetEncodedVideoSessionParametersKHR", name)) {
10324         *addr = (void *)GetEncodedVideoSessionParametersKHR;
10325         return true;
10326     }
10327     if (!strcmp("vkCmdEncodeVideoKHR", name)) {
10328         *addr = (void *)CmdEncodeVideoKHR;
10329         return true;
10330     }
10331 
10332     // ---- VK_KHR_synchronization2 extension commands
10333     if (!strcmp("vkCmdSetEvent2KHR", name)) {
10334         *addr = (void *)CmdSetEvent2KHR;
10335         return true;
10336     }
10337     if (!strcmp("vkCmdResetEvent2KHR", name)) {
10338         *addr = (void *)CmdResetEvent2KHR;
10339         return true;
10340     }
10341     if (!strcmp("vkCmdWaitEvents2KHR", name)) {
10342         *addr = (void *)CmdWaitEvents2KHR;
10343         return true;
10344     }
10345     if (!strcmp("vkCmdPipelineBarrier2KHR", name)) {
10346         *addr = (void *)CmdPipelineBarrier2KHR;
10347         return true;
10348     }
10349     if (!strcmp("vkCmdWriteTimestamp2KHR", name)) {
10350         *addr = (void *)CmdWriteTimestamp2KHR;
10351         return true;
10352     }
10353     if (!strcmp("vkQueueSubmit2KHR", name)) {
10354         *addr = (void *)QueueSubmit2KHR;
10355         return true;
10356     }
10357     if (!strcmp("vkCmdWriteBufferMarker2AMD", name)) {
10358         *addr = (void *)CmdWriteBufferMarker2AMD;
10359         return true;
10360     }
10361     if (!strcmp("vkGetQueueCheckpointData2NV", name)) {
10362         *addr = (void *)GetQueueCheckpointData2NV;
10363         return true;
10364     }
10365 
10366     // ---- VK_KHR_copy_commands2 extension commands
10367     if (!strcmp("vkCmdCopyBuffer2KHR", name)) {
10368         *addr = (void *)CmdCopyBuffer2KHR;
10369         return true;
10370     }
10371     if (!strcmp("vkCmdCopyImage2KHR", name)) {
10372         *addr = (void *)CmdCopyImage2KHR;
10373         return true;
10374     }
10375     if (!strcmp("vkCmdCopyBufferToImage2KHR", name)) {
10376         *addr = (void *)CmdCopyBufferToImage2KHR;
10377         return true;
10378     }
10379     if (!strcmp("vkCmdCopyImageToBuffer2KHR", name)) {
10380         *addr = (void *)CmdCopyImageToBuffer2KHR;
10381         return true;
10382     }
10383     if (!strcmp("vkCmdBlitImage2KHR", name)) {
10384         *addr = (void *)CmdBlitImage2KHR;
10385         return true;
10386     }
10387     if (!strcmp("vkCmdResolveImage2KHR", name)) {
10388         *addr = (void *)CmdResolveImage2KHR;
10389         return true;
10390     }
10391 
10392     // ---- VK_KHR_ray_tracing_maintenance1 extension commands
10393     if (!strcmp("vkCmdTraceRaysIndirect2KHR", name)) {
10394         *addr = (void *)CmdTraceRaysIndirect2KHR;
10395         return true;
10396     }
10397 
10398     // ---- VK_KHR_maintenance4 extension commands
10399     if (!strcmp("vkGetDeviceBufferMemoryRequirementsKHR", name)) {
10400         *addr = (void *)GetDeviceBufferMemoryRequirementsKHR;
10401         return true;
10402     }
10403     if (!strcmp("vkGetDeviceImageMemoryRequirementsKHR", name)) {
10404         *addr = (void *)GetDeviceImageMemoryRequirementsKHR;
10405         return true;
10406     }
10407     if (!strcmp("vkGetDeviceImageSparseMemoryRequirementsKHR", name)) {
10408         *addr = (void *)GetDeviceImageSparseMemoryRequirementsKHR;
10409         return true;
10410     }
10411 
10412     // ---- VK_KHR_maintenance5 extension commands
10413     if (!strcmp("vkCmdBindIndexBuffer2KHR", name)) {
10414         *addr = (void *)CmdBindIndexBuffer2KHR;
10415         return true;
10416     }
10417     if (!strcmp("vkGetRenderingAreaGranularityKHR", name)) {
10418         *addr = (void *)GetRenderingAreaGranularityKHR;
10419         return true;
10420     }
10421     if (!strcmp("vkGetDeviceImageSubresourceLayoutKHR", name)) {
10422         *addr = (void *)GetDeviceImageSubresourceLayoutKHR;
10423         return true;
10424     }
10425     if (!strcmp("vkGetImageSubresourceLayout2KHR", name)) {
10426         *addr = (void *)GetImageSubresourceLayout2KHR;
10427         return true;
10428     }
10429 
10430     // ---- VK_KHR_cooperative_matrix extension commands
10431     if (!strcmp("vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR", name)) {
10432         *addr = (void *)GetPhysicalDeviceCooperativeMatrixPropertiesKHR;
10433         return true;
10434     }
10435 
10436     // ---- VK_KHR_calibrated_timestamps extension commands
10437     if (!strcmp("vkGetPhysicalDeviceCalibrateableTimeDomainsKHR", name)) {
10438         *addr = (void *)GetPhysicalDeviceCalibrateableTimeDomainsKHR;
10439         return true;
10440     }
10441     if (!strcmp("vkGetCalibratedTimestampsKHR", name)) {
10442         *addr = (void *)GetCalibratedTimestampsKHR;
10443         return true;
10444     }
10445 
10446     // ---- VK_KHR_maintenance6 extension commands
10447     if (!strcmp("vkCmdBindDescriptorSets2KHR", name)) {
10448         *addr = (void *)CmdBindDescriptorSets2KHR;
10449         return true;
10450     }
10451     if (!strcmp("vkCmdPushConstants2KHR", name)) {
10452         *addr = (void *)CmdPushConstants2KHR;
10453         return true;
10454     }
10455     if (!strcmp("vkCmdPushDescriptorSet2KHR", name)) {
10456         *addr = (void *)CmdPushDescriptorSet2KHR;
10457         return true;
10458     }
10459     if (!strcmp("vkCmdPushDescriptorSetWithTemplate2KHR", name)) {
10460         *addr = (void *)CmdPushDescriptorSetWithTemplate2KHR;
10461         return true;
10462     }
10463     if (!strcmp("vkCmdSetDescriptorBufferOffsets2EXT", name)) {
10464         *addr = (void *)CmdSetDescriptorBufferOffsets2EXT;
10465         return true;
10466     }
10467     if (!strcmp("vkCmdBindDescriptorBufferEmbeddedSamplers2EXT", name)) {
10468         *addr = (void *)CmdBindDescriptorBufferEmbeddedSamplers2EXT;
10469         return true;
10470     }
10471 
10472     // ---- VK_EXT_debug_marker extension commands
10473     if (!strcmp("vkDebugMarkerSetObjectTagEXT", name)) {
10474         *addr = (void *)DebugMarkerSetObjectTagEXT;
10475         return true;
10476     }
10477     if (!strcmp("vkDebugMarkerSetObjectNameEXT", name)) {
10478         *addr = (void *)DebugMarkerSetObjectNameEXT;
10479         return true;
10480     }
10481     if (!strcmp("vkCmdDebugMarkerBeginEXT", name)) {
10482         *addr = (void *)CmdDebugMarkerBeginEXT;
10483         return true;
10484     }
10485     if (!strcmp("vkCmdDebugMarkerEndEXT", name)) {
10486         *addr = (void *)CmdDebugMarkerEndEXT;
10487         return true;
10488     }
10489     if (!strcmp("vkCmdDebugMarkerInsertEXT", name)) {
10490         *addr = (void *)CmdDebugMarkerInsertEXT;
10491         return true;
10492     }
10493 
10494     // ---- VK_EXT_transform_feedback extension commands
10495     if (!strcmp("vkCmdBindTransformFeedbackBuffersEXT", name)) {
10496         *addr = (void *)CmdBindTransformFeedbackBuffersEXT;
10497         return true;
10498     }
10499     if (!strcmp("vkCmdBeginTransformFeedbackEXT", name)) {
10500         *addr = (void *)CmdBeginTransformFeedbackEXT;
10501         return true;
10502     }
10503     if (!strcmp("vkCmdEndTransformFeedbackEXT", name)) {
10504         *addr = (void *)CmdEndTransformFeedbackEXT;
10505         return true;
10506     }
10507     if (!strcmp("vkCmdBeginQueryIndexedEXT", name)) {
10508         *addr = (void *)CmdBeginQueryIndexedEXT;
10509         return true;
10510     }
10511     if (!strcmp("vkCmdEndQueryIndexedEXT", name)) {
10512         *addr = (void *)CmdEndQueryIndexedEXT;
10513         return true;
10514     }
10515     if (!strcmp("vkCmdDrawIndirectByteCountEXT", name)) {
10516         *addr = (void *)CmdDrawIndirectByteCountEXT;
10517         return true;
10518     }
10519 
10520     // ---- VK_NVX_binary_import extension commands
10521     if (!strcmp("vkCreateCuModuleNVX", name)) {
10522         *addr = (void *)CreateCuModuleNVX;
10523         return true;
10524     }
10525     if (!strcmp("vkCreateCuFunctionNVX", name)) {
10526         *addr = (void *)CreateCuFunctionNVX;
10527         return true;
10528     }
10529     if (!strcmp("vkDestroyCuModuleNVX", name)) {
10530         *addr = (void *)DestroyCuModuleNVX;
10531         return true;
10532     }
10533     if (!strcmp("vkDestroyCuFunctionNVX", name)) {
10534         *addr = (void *)DestroyCuFunctionNVX;
10535         return true;
10536     }
10537     if (!strcmp("vkCmdCuLaunchKernelNVX", name)) {
10538         *addr = (void *)CmdCuLaunchKernelNVX;
10539         return true;
10540     }
10541 
10542     // ---- VK_NVX_image_view_handle extension commands
10543     if (!strcmp("vkGetImageViewHandleNVX", name)) {
10544         *addr = (void *)GetImageViewHandleNVX;
10545         return true;
10546     }
10547     if (!strcmp("vkGetImageViewAddressNVX", name)) {
10548         *addr = (void *)GetImageViewAddressNVX;
10549         return true;
10550     }
10551 
10552     // ---- VK_AMD_draw_indirect_count extension commands
10553     if (!strcmp("vkCmdDrawIndirectCountAMD", name)) {
10554         *addr = (void *)CmdDrawIndirectCountAMD;
10555         return true;
10556     }
10557     if (!strcmp("vkCmdDrawIndexedIndirectCountAMD", name)) {
10558         *addr = (void *)CmdDrawIndexedIndirectCountAMD;
10559         return true;
10560     }
10561 
10562     // ---- VK_AMD_shader_info extension commands
10563     if (!strcmp("vkGetShaderInfoAMD", name)) {
10564         *addr = (void *)GetShaderInfoAMD;
10565         return true;
10566     }
10567 
10568     // ---- VK_NV_external_memory_capabilities extension commands
10569     if (!strcmp("vkGetPhysicalDeviceExternalImageFormatPropertiesNV", name)) {
10570         *addr = (ptr_instance->enabled_known_extensions.nv_external_memory_capabilities == 1)
10571                      ? (void *)GetPhysicalDeviceExternalImageFormatPropertiesNV
10572                      : NULL;
10573         return true;
10574     }
10575 
10576     // ---- VK_NV_external_memory_win32 extension commands
10577 #if defined(VK_USE_PLATFORM_WIN32_KHR)
10578     if (!strcmp("vkGetMemoryWin32HandleNV", name)) {
10579         *addr = (void *)GetMemoryWin32HandleNV;
10580         return true;
10581     }
10582 #endif // VK_USE_PLATFORM_WIN32_KHR
10583 
10584     // ---- VK_EXT_conditional_rendering extension commands
10585     if (!strcmp("vkCmdBeginConditionalRenderingEXT", name)) {
10586         *addr = (void *)CmdBeginConditionalRenderingEXT;
10587         return true;
10588     }
10589     if (!strcmp("vkCmdEndConditionalRenderingEXT", name)) {
10590         *addr = (void *)CmdEndConditionalRenderingEXT;
10591         return true;
10592     }
10593 
10594     // ---- VK_NV_clip_space_w_scaling extension commands
10595     if (!strcmp("vkCmdSetViewportWScalingNV", name)) {
10596         *addr = (void *)CmdSetViewportWScalingNV;
10597         return true;
10598     }
10599 
10600     // ---- VK_EXT_direct_mode_display extension commands
10601     if (!strcmp("vkReleaseDisplayEXT", name)) {
10602         *addr = (ptr_instance->enabled_known_extensions.ext_direct_mode_display == 1)
10603                      ? (void *)ReleaseDisplayEXT
10604                      : NULL;
10605         return true;
10606     }
10607 
10608     // ---- VK_EXT_acquire_xlib_display extension commands
10609 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
10610     if (!strcmp("vkAcquireXlibDisplayEXT", name)) {
10611         *addr = (ptr_instance->enabled_known_extensions.ext_acquire_xlib_display == 1)
10612                      ? (void *)AcquireXlibDisplayEXT
10613                      : NULL;
10614         return true;
10615     }
10616 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
10617 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
10618     if (!strcmp("vkGetRandROutputDisplayEXT", name)) {
10619         *addr = (ptr_instance->enabled_known_extensions.ext_acquire_xlib_display == 1)
10620                      ? (void *)GetRandROutputDisplayEXT
10621                      : NULL;
10622         return true;
10623     }
10624 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
10625 
10626     // ---- VK_EXT_display_surface_counter extension commands
10627     if (!strcmp("vkGetPhysicalDeviceSurfaceCapabilities2EXT", name)) {
10628         *addr = (ptr_instance->enabled_known_extensions.ext_display_surface_counter == 1)
10629                      ? (void *)GetPhysicalDeviceSurfaceCapabilities2EXT
10630                      : NULL;
10631         return true;
10632     }
10633 
10634     // ---- VK_EXT_display_control extension commands
10635     if (!strcmp("vkDisplayPowerControlEXT", name)) {
10636         *addr = (void *)DisplayPowerControlEXT;
10637         return true;
10638     }
10639     if (!strcmp("vkRegisterDeviceEventEXT", name)) {
10640         *addr = (void *)RegisterDeviceEventEXT;
10641         return true;
10642     }
10643     if (!strcmp("vkRegisterDisplayEventEXT", name)) {
10644         *addr = (void *)RegisterDisplayEventEXT;
10645         return true;
10646     }
10647     if (!strcmp("vkGetSwapchainCounterEXT", name)) {
10648         *addr = (void *)GetSwapchainCounterEXT;
10649         return true;
10650     }
10651 
10652     // ---- VK_GOOGLE_display_timing extension commands
10653     if (!strcmp("vkGetRefreshCycleDurationGOOGLE", name)) {
10654         *addr = (void *)GetRefreshCycleDurationGOOGLE;
10655         return true;
10656     }
10657     if (!strcmp("vkGetPastPresentationTimingGOOGLE", name)) {
10658         *addr = (void *)GetPastPresentationTimingGOOGLE;
10659         return true;
10660     }
10661 
10662     // ---- VK_EXT_discard_rectangles extension commands
10663     if (!strcmp("vkCmdSetDiscardRectangleEXT", name)) {
10664         *addr = (void *)CmdSetDiscardRectangleEXT;
10665         return true;
10666     }
10667     if (!strcmp("vkCmdSetDiscardRectangleEnableEXT", name)) {
10668         *addr = (void *)CmdSetDiscardRectangleEnableEXT;
10669         return true;
10670     }
10671     if (!strcmp("vkCmdSetDiscardRectangleModeEXT", name)) {
10672         *addr = (void *)CmdSetDiscardRectangleModeEXT;
10673         return true;
10674     }
10675 
10676     // ---- VK_EXT_hdr_metadata extension commands
10677     if (!strcmp("vkSetHdrMetadataEXT", name)) {
10678         *addr = (void *)SetHdrMetadataEXT;
10679         return true;
10680     }
10681 
10682     // ---- VK_EXT_debug_utils extension commands
10683     if (!strcmp("vkSetDebugUtilsObjectNameEXT", name)) {
10684         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
10685                      ? (void *)SetDebugUtilsObjectNameEXT
10686                      : NULL;
10687         return true;
10688     }
10689     if (!strcmp("vkSetDebugUtilsObjectTagEXT", name)) {
10690         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
10691                      ? (void *)SetDebugUtilsObjectTagEXT
10692                      : NULL;
10693         return true;
10694     }
10695     if (!strcmp("vkQueueBeginDebugUtilsLabelEXT", name)) {
10696         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
10697                      ? (void *)QueueBeginDebugUtilsLabelEXT
10698                      : NULL;
10699         return true;
10700     }
10701     if (!strcmp("vkQueueEndDebugUtilsLabelEXT", name)) {
10702         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
10703                      ? (void *)QueueEndDebugUtilsLabelEXT
10704                      : NULL;
10705         return true;
10706     }
10707     if (!strcmp("vkQueueInsertDebugUtilsLabelEXT", name)) {
10708         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
10709                      ? (void *)QueueInsertDebugUtilsLabelEXT
10710                      : NULL;
10711         return true;
10712     }
10713     if (!strcmp("vkCmdBeginDebugUtilsLabelEXT", name)) {
10714         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
10715                      ? (void *)CmdBeginDebugUtilsLabelEXT
10716                      : NULL;
10717         return true;
10718     }
10719     if (!strcmp("vkCmdEndDebugUtilsLabelEXT", name)) {
10720         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
10721                      ? (void *)CmdEndDebugUtilsLabelEXT
10722                      : NULL;
10723         return true;
10724     }
10725     if (!strcmp("vkCmdInsertDebugUtilsLabelEXT", name)) {
10726         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
10727                      ? (void *)CmdInsertDebugUtilsLabelEXT
10728                      : NULL;
10729         return true;
10730     }
10731 
10732     // ---- VK_ANDROID_external_memory_android_hardware_buffer extension commands
10733 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
10734     if (!strcmp("vkGetAndroidHardwareBufferPropertiesANDROID", name)) {
10735         *addr = (void *)GetAndroidHardwareBufferPropertiesANDROID;
10736         return true;
10737     }
10738 #endif // VK_USE_PLATFORM_ANDROID_KHR
10739 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
10740     if (!strcmp("vkGetMemoryAndroidHardwareBufferANDROID", name)) {
10741         *addr = (void *)GetMemoryAndroidHardwareBufferANDROID;
10742         return true;
10743     }
10744 #endif // VK_USE_PLATFORM_ANDROID_KHR
10745 
10746     // ---- VK_AMDX_shader_enqueue extension commands
10747 #if defined(VK_ENABLE_BETA_EXTENSIONS)
10748     if (!strcmp("vkCreateExecutionGraphPipelinesAMDX", name)) {
10749         *addr = (void *)CreateExecutionGraphPipelinesAMDX;
10750         return true;
10751     }
10752 #endif // VK_ENABLE_BETA_EXTENSIONS
10753 #if defined(VK_ENABLE_BETA_EXTENSIONS)
10754     if (!strcmp("vkGetExecutionGraphPipelineScratchSizeAMDX", name)) {
10755         *addr = (void *)GetExecutionGraphPipelineScratchSizeAMDX;
10756         return true;
10757     }
10758 #endif // VK_ENABLE_BETA_EXTENSIONS
10759 #if defined(VK_ENABLE_BETA_EXTENSIONS)
10760     if (!strcmp("vkGetExecutionGraphPipelineNodeIndexAMDX", name)) {
10761         *addr = (void *)GetExecutionGraphPipelineNodeIndexAMDX;
10762         return true;
10763     }
10764 #endif // VK_ENABLE_BETA_EXTENSIONS
10765 #if defined(VK_ENABLE_BETA_EXTENSIONS)
10766     if (!strcmp("vkCmdInitializeGraphScratchMemoryAMDX", name)) {
10767         *addr = (void *)CmdInitializeGraphScratchMemoryAMDX;
10768         return true;
10769     }
10770 #endif // VK_ENABLE_BETA_EXTENSIONS
10771 #if defined(VK_ENABLE_BETA_EXTENSIONS)
10772     if (!strcmp("vkCmdDispatchGraphAMDX", name)) {
10773         *addr = (void *)CmdDispatchGraphAMDX;
10774         return true;
10775     }
10776 #endif // VK_ENABLE_BETA_EXTENSIONS
10777 #if defined(VK_ENABLE_BETA_EXTENSIONS)
10778     if (!strcmp("vkCmdDispatchGraphIndirectAMDX", name)) {
10779         *addr = (void *)CmdDispatchGraphIndirectAMDX;
10780         return true;
10781     }
10782 #endif // VK_ENABLE_BETA_EXTENSIONS
10783 #if defined(VK_ENABLE_BETA_EXTENSIONS)
10784     if (!strcmp("vkCmdDispatchGraphIndirectCountAMDX", name)) {
10785         *addr = (void *)CmdDispatchGraphIndirectCountAMDX;
10786         return true;
10787     }
10788 #endif // VK_ENABLE_BETA_EXTENSIONS
10789 
10790     // ---- VK_EXT_sample_locations extension commands
10791     if (!strcmp("vkCmdSetSampleLocationsEXT", name)) {
10792         *addr = (void *)CmdSetSampleLocationsEXT;
10793         return true;
10794     }
10795     if (!strcmp("vkGetPhysicalDeviceMultisamplePropertiesEXT", name)) {
10796         *addr = (void *)GetPhysicalDeviceMultisamplePropertiesEXT;
10797         return true;
10798     }
10799 
10800     // ---- VK_EXT_image_drm_format_modifier extension commands
10801     if (!strcmp("vkGetImageDrmFormatModifierPropertiesEXT", name)) {
10802         *addr = (void *)GetImageDrmFormatModifierPropertiesEXT;
10803         return true;
10804     }
10805 
10806     // ---- VK_EXT_validation_cache extension commands
10807     if (!strcmp("vkCreateValidationCacheEXT", name)) {
10808         *addr = (void *)CreateValidationCacheEXT;
10809         return true;
10810     }
10811     if (!strcmp("vkDestroyValidationCacheEXT", name)) {
10812         *addr = (void *)DestroyValidationCacheEXT;
10813         return true;
10814     }
10815     if (!strcmp("vkMergeValidationCachesEXT", name)) {
10816         *addr = (void *)MergeValidationCachesEXT;
10817         return true;
10818     }
10819     if (!strcmp("vkGetValidationCacheDataEXT", name)) {
10820         *addr = (void *)GetValidationCacheDataEXT;
10821         return true;
10822     }
10823 
10824     // ---- VK_NV_shading_rate_image extension commands
10825     if (!strcmp("vkCmdBindShadingRateImageNV", name)) {
10826         *addr = (void *)CmdBindShadingRateImageNV;
10827         return true;
10828     }
10829     if (!strcmp("vkCmdSetViewportShadingRatePaletteNV", name)) {
10830         *addr = (void *)CmdSetViewportShadingRatePaletteNV;
10831         return true;
10832     }
10833     if (!strcmp("vkCmdSetCoarseSampleOrderNV", name)) {
10834         *addr = (void *)CmdSetCoarseSampleOrderNV;
10835         return true;
10836     }
10837 
10838     // ---- VK_NV_ray_tracing extension commands
10839     if (!strcmp("vkCreateAccelerationStructureNV", name)) {
10840         *addr = (void *)CreateAccelerationStructureNV;
10841         return true;
10842     }
10843     if (!strcmp("vkDestroyAccelerationStructureNV", name)) {
10844         *addr = (void *)DestroyAccelerationStructureNV;
10845         return true;
10846     }
10847     if (!strcmp("vkGetAccelerationStructureMemoryRequirementsNV", name)) {
10848         *addr = (void *)GetAccelerationStructureMemoryRequirementsNV;
10849         return true;
10850     }
10851     if (!strcmp("vkBindAccelerationStructureMemoryNV", name)) {
10852         *addr = (void *)BindAccelerationStructureMemoryNV;
10853         return true;
10854     }
10855     if (!strcmp("vkCmdBuildAccelerationStructureNV", name)) {
10856         *addr = (void *)CmdBuildAccelerationStructureNV;
10857         return true;
10858     }
10859     if (!strcmp("vkCmdCopyAccelerationStructureNV", name)) {
10860         *addr = (void *)CmdCopyAccelerationStructureNV;
10861         return true;
10862     }
10863     if (!strcmp("vkCmdTraceRaysNV", name)) {
10864         *addr = (void *)CmdTraceRaysNV;
10865         return true;
10866     }
10867     if (!strcmp("vkCreateRayTracingPipelinesNV", name)) {
10868         *addr = (void *)CreateRayTracingPipelinesNV;
10869         return true;
10870     }
10871     if (!strcmp("vkGetRayTracingShaderGroupHandlesKHR", name)) {
10872         *addr = (void *)GetRayTracingShaderGroupHandlesKHR;
10873         return true;
10874     }
10875     if (!strcmp("vkGetRayTracingShaderGroupHandlesNV", name)) {
10876         *addr = (void *)GetRayTracingShaderGroupHandlesNV;
10877         return true;
10878     }
10879     if (!strcmp("vkGetAccelerationStructureHandleNV", name)) {
10880         *addr = (void *)GetAccelerationStructureHandleNV;
10881         return true;
10882     }
10883     if (!strcmp("vkCmdWriteAccelerationStructuresPropertiesNV", name)) {
10884         *addr = (void *)CmdWriteAccelerationStructuresPropertiesNV;
10885         return true;
10886     }
10887     if (!strcmp("vkCompileDeferredNV", name)) {
10888         *addr = (void *)CompileDeferredNV;
10889         return true;
10890     }
10891 
10892     // ---- VK_EXT_external_memory_host extension commands
10893     if (!strcmp("vkGetMemoryHostPointerPropertiesEXT", name)) {
10894         *addr = (void *)GetMemoryHostPointerPropertiesEXT;
10895         return true;
10896     }
10897 
10898     // ---- VK_AMD_buffer_marker extension commands
10899     if (!strcmp("vkCmdWriteBufferMarkerAMD", name)) {
10900         *addr = (void *)CmdWriteBufferMarkerAMD;
10901         return true;
10902     }
10903 
10904     // ---- VK_EXT_calibrated_timestamps extension commands
10905     if (!strcmp("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT", name)) {
10906         *addr = (void *)GetPhysicalDeviceCalibrateableTimeDomainsEXT;
10907         return true;
10908     }
10909     if (!strcmp("vkGetCalibratedTimestampsEXT", name)) {
10910         *addr = (void *)GetCalibratedTimestampsEXT;
10911         return true;
10912     }
10913 
10914     // ---- VK_NV_mesh_shader extension commands
10915     if (!strcmp("vkCmdDrawMeshTasksNV", name)) {
10916         *addr = (void *)CmdDrawMeshTasksNV;
10917         return true;
10918     }
10919     if (!strcmp("vkCmdDrawMeshTasksIndirectNV", name)) {
10920         *addr = (void *)CmdDrawMeshTasksIndirectNV;
10921         return true;
10922     }
10923     if (!strcmp("vkCmdDrawMeshTasksIndirectCountNV", name)) {
10924         *addr = (void *)CmdDrawMeshTasksIndirectCountNV;
10925         return true;
10926     }
10927 
10928     // ---- VK_NV_scissor_exclusive extension commands
10929     if (!strcmp("vkCmdSetExclusiveScissorEnableNV", name)) {
10930         *addr = (void *)CmdSetExclusiveScissorEnableNV;
10931         return true;
10932     }
10933     if (!strcmp("vkCmdSetExclusiveScissorNV", name)) {
10934         *addr = (void *)CmdSetExclusiveScissorNV;
10935         return true;
10936     }
10937 
10938     // ---- VK_NV_device_diagnostic_checkpoints extension commands
10939     if (!strcmp("vkCmdSetCheckpointNV", name)) {
10940         *addr = (void *)CmdSetCheckpointNV;
10941         return true;
10942     }
10943     if (!strcmp("vkGetQueueCheckpointDataNV", name)) {
10944         *addr = (void *)GetQueueCheckpointDataNV;
10945         return true;
10946     }
10947 
10948     // ---- VK_INTEL_performance_query extension commands
10949     if (!strcmp("vkInitializePerformanceApiINTEL", name)) {
10950         *addr = (void *)InitializePerformanceApiINTEL;
10951         return true;
10952     }
10953     if (!strcmp("vkUninitializePerformanceApiINTEL", name)) {
10954         *addr = (void *)UninitializePerformanceApiINTEL;
10955         return true;
10956     }
10957     if (!strcmp("vkCmdSetPerformanceMarkerINTEL", name)) {
10958         *addr = (void *)CmdSetPerformanceMarkerINTEL;
10959         return true;
10960     }
10961     if (!strcmp("vkCmdSetPerformanceStreamMarkerINTEL", name)) {
10962         *addr = (void *)CmdSetPerformanceStreamMarkerINTEL;
10963         return true;
10964     }
10965     if (!strcmp("vkCmdSetPerformanceOverrideINTEL", name)) {
10966         *addr = (void *)CmdSetPerformanceOverrideINTEL;
10967         return true;
10968     }
10969     if (!strcmp("vkAcquirePerformanceConfigurationINTEL", name)) {
10970         *addr = (void *)AcquirePerformanceConfigurationINTEL;
10971         return true;
10972     }
10973     if (!strcmp("vkReleasePerformanceConfigurationINTEL", name)) {
10974         *addr = (void *)ReleasePerformanceConfigurationINTEL;
10975         return true;
10976     }
10977     if (!strcmp("vkQueueSetPerformanceConfigurationINTEL", name)) {
10978         *addr = (void *)QueueSetPerformanceConfigurationINTEL;
10979         return true;
10980     }
10981     if (!strcmp("vkGetPerformanceParameterINTEL", name)) {
10982         *addr = (void *)GetPerformanceParameterINTEL;
10983         return true;
10984     }
10985 
10986     // ---- VK_AMD_display_native_hdr extension commands
10987     if (!strcmp("vkSetLocalDimmingAMD", name)) {
10988         *addr = (void *)SetLocalDimmingAMD;
10989         return true;
10990     }
10991 
10992     // ---- VK_EXT_buffer_device_address extension commands
10993     if (!strcmp("vkGetBufferDeviceAddressEXT", name)) {
10994         *addr = (void *)GetBufferDeviceAddressEXT;
10995         return true;
10996     }
10997 
10998     // ---- VK_EXT_tooling_info extension commands
10999     if (!strcmp("vkGetPhysicalDeviceToolPropertiesEXT", name)) {
11000         *addr = (void *)GetPhysicalDeviceToolPropertiesEXT;
11001         return true;
11002     }
11003 
11004     // ---- VK_NV_cooperative_matrix extension commands
11005     if (!strcmp("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV", name)) {
11006         *addr = (void *)GetPhysicalDeviceCooperativeMatrixPropertiesNV;
11007         return true;
11008     }
11009 
11010     // ---- VK_NV_coverage_reduction_mode extension commands
11011     if (!strcmp("vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", name)) {
11012         *addr = (void *)GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
11013         return true;
11014     }
11015 
11016     // ---- VK_EXT_full_screen_exclusive extension commands
11017 #if defined(VK_USE_PLATFORM_WIN32_KHR)
11018     if (!strcmp("vkGetPhysicalDeviceSurfacePresentModes2EXT", name)) {
11019         *addr = (void *)GetPhysicalDeviceSurfacePresentModes2EXT;
11020         return true;
11021     }
11022 #endif // VK_USE_PLATFORM_WIN32_KHR
11023 #if defined(VK_USE_PLATFORM_WIN32_KHR)
11024     if (!strcmp("vkAcquireFullScreenExclusiveModeEXT", name)) {
11025         *addr = (void *)AcquireFullScreenExclusiveModeEXT;
11026         return true;
11027     }
11028 #endif // VK_USE_PLATFORM_WIN32_KHR
11029 #if defined(VK_USE_PLATFORM_WIN32_KHR)
11030     if (!strcmp("vkReleaseFullScreenExclusiveModeEXT", name)) {
11031         *addr = (void *)ReleaseFullScreenExclusiveModeEXT;
11032         return true;
11033     }
11034 #endif // VK_USE_PLATFORM_WIN32_KHR
11035 #if defined(VK_USE_PLATFORM_WIN32_KHR)
11036     if (!strcmp("vkGetDeviceGroupSurfacePresentModes2EXT", name)) {
11037         *addr = (void *)GetDeviceGroupSurfacePresentModes2EXT;
11038         return true;
11039     }
11040 #endif // VK_USE_PLATFORM_WIN32_KHR
11041 
11042     // ---- VK_EXT_line_rasterization extension commands
11043     if (!strcmp("vkCmdSetLineStippleEXT", name)) {
11044         *addr = (void *)CmdSetLineStippleEXT;
11045         return true;
11046     }
11047 
11048     // ---- VK_EXT_host_query_reset extension commands
11049     if (!strcmp("vkResetQueryPoolEXT", name)) {
11050         *addr = (void *)ResetQueryPoolEXT;
11051         return true;
11052     }
11053 
11054     // ---- VK_EXT_extended_dynamic_state extension commands
11055     if (!strcmp("vkCmdSetCullModeEXT", name)) {
11056         *addr = (void *)CmdSetCullModeEXT;
11057         return true;
11058     }
11059     if (!strcmp("vkCmdSetFrontFaceEXT", name)) {
11060         *addr = (void *)CmdSetFrontFaceEXT;
11061         return true;
11062     }
11063     if (!strcmp("vkCmdSetPrimitiveTopologyEXT", name)) {
11064         *addr = (void *)CmdSetPrimitiveTopologyEXT;
11065         return true;
11066     }
11067     if (!strcmp("vkCmdSetViewportWithCountEXT", name)) {
11068         *addr = (void *)CmdSetViewportWithCountEXT;
11069         return true;
11070     }
11071     if (!strcmp("vkCmdSetScissorWithCountEXT", name)) {
11072         *addr = (void *)CmdSetScissorWithCountEXT;
11073         return true;
11074     }
11075     if (!strcmp("vkCmdBindVertexBuffers2EXT", name)) {
11076         *addr = (void *)CmdBindVertexBuffers2EXT;
11077         return true;
11078     }
11079     if (!strcmp("vkCmdSetDepthTestEnableEXT", name)) {
11080         *addr = (void *)CmdSetDepthTestEnableEXT;
11081         return true;
11082     }
11083     if (!strcmp("vkCmdSetDepthWriteEnableEXT", name)) {
11084         *addr = (void *)CmdSetDepthWriteEnableEXT;
11085         return true;
11086     }
11087     if (!strcmp("vkCmdSetDepthCompareOpEXT", name)) {
11088         *addr = (void *)CmdSetDepthCompareOpEXT;
11089         return true;
11090     }
11091     if (!strcmp("vkCmdSetDepthBoundsTestEnableEXT", name)) {
11092         *addr = (void *)CmdSetDepthBoundsTestEnableEXT;
11093         return true;
11094     }
11095     if (!strcmp("vkCmdSetStencilTestEnableEXT", name)) {
11096         *addr = (void *)CmdSetStencilTestEnableEXT;
11097         return true;
11098     }
11099     if (!strcmp("vkCmdSetStencilOpEXT", name)) {
11100         *addr = (void *)CmdSetStencilOpEXT;
11101         return true;
11102     }
11103 
11104     // ---- VK_EXT_host_image_copy extension commands
11105     if (!strcmp("vkCopyMemoryToImageEXT", name)) {
11106         *addr = (void *)CopyMemoryToImageEXT;
11107         return true;
11108     }
11109     if (!strcmp("vkCopyImageToMemoryEXT", name)) {
11110         *addr = (void *)CopyImageToMemoryEXT;
11111         return true;
11112     }
11113     if (!strcmp("vkCopyImageToImageEXT", name)) {
11114         *addr = (void *)CopyImageToImageEXT;
11115         return true;
11116     }
11117     if (!strcmp("vkTransitionImageLayoutEXT", name)) {
11118         *addr = (void *)TransitionImageLayoutEXT;
11119         return true;
11120     }
11121     if (!strcmp("vkGetImageSubresourceLayout2EXT", name)) {
11122         *addr = (void *)GetImageSubresourceLayout2EXT;
11123         return true;
11124     }
11125 
11126     // ---- VK_EXT_swapchain_maintenance1 extension commands
11127     if (!strcmp("vkReleaseSwapchainImagesEXT", name)) {
11128         *addr = (void *)ReleaseSwapchainImagesEXT;
11129         return true;
11130     }
11131 
11132     // ---- VK_NV_device_generated_commands extension commands
11133     if (!strcmp("vkGetGeneratedCommandsMemoryRequirementsNV", name)) {
11134         *addr = (void *)GetGeneratedCommandsMemoryRequirementsNV;
11135         return true;
11136     }
11137     if (!strcmp("vkCmdPreprocessGeneratedCommandsNV", name)) {
11138         *addr = (void *)CmdPreprocessGeneratedCommandsNV;
11139         return true;
11140     }
11141     if (!strcmp("vkCmdExecuteGeneratedCommandsNV", name)) {
11142         *addr = (void *)CmdExecuteGeneratedCommandsNV;
11143         return true;
11144     }
11145     if (!strcmp("vkCmdBindPipelineShaderGroupNV", name)) {
11146         *addr = (void *)CmdBindPipelineShaderGroupNV;
11147         return true;
11148     }
11149     if (!strcmp("vkCreateIndirectCommandsLayoutNV", name)) {
11150         *addr = (void *)CreateIndirectCommandsLayoutNV;
11151         return true;
11152     }
11153     if (!strcmp("vkDestroyIndirectCommandsLayoutNV", name)) {
11154         *addr = (void *)DestroyIndirectCommandsLayoutNV;
11155         return true;
11156     }
11157 
11158     // ---- VK_EXT_depth_bias_control extension commands
11159     if (!strcmp("vkCmdSetDepthBias2EXT", name)) {
11160         *addr = (void *)CmdSetDepthBias2EXT;
11161         return true;
11162     }
11163 
11164     // ---- VK_EXT_acquire_drm_display extension commands
11165     if (!strcmp("vkAcquireDrmDisplayEXT", name)) {
11166         *addr = (ptr_instance->enabled_known_extensions.ext_acquire_drm_display == 1)
11167                      ? (void *)AcquireDrmDisplayEXT
11168                      : NULL;
11169         return true;
11170     }
11171     if (!strcmp("vkGetDrmDisplayEXT", name)) {
11172         *addr = (ptr_instance->enabled_known_extensions.ext_acquire_drm_display == 1)
11173                      ? (void *)GetDrmDisplayEXT
11174                      : NULL;
11175         return true;
11176     }
11177 
11178     // ---- VK_EXT_private_data extension commands
11179     if (!strcmp("vkCreatePrivateDataSlotEXT", name)) {
11180         *addr = (void *)CreatePrivateDataSlotEXT;
11181         return true;
11182     }
11183     if (!strcmp("vkDestroyPrivateDataSlotEXT", name)) {
11184         *addr = (void *)DestroyPrivateDataSlotEXT;
11185         return true;
11186     }
11187     if (!strcmp("vkSetPrivateDataEXT", name)) {
11188         *addr = (void *)SetPrivateDataEXT;
11189         return true;
11190     }
11191     if (!strcmp("vkGetPrivateDataEXT", name)) {
11192         *addr = (void *)GetPrivateDataEXT;
11193         return true;
11194     }
11195 
11196     // ---- VK_NV_cuda_kernel_launch extension commands
11197     if (!strcmp("vkCreateCudaModuleNV", name)) {
11198         *addr = (void *)CreateCudaModuleNV;
11199         return true;
11200     }
11201     if (!strcmp("vkGetCudaModuleCacheNV", name)) {
11202         *addr = (void *)GetCudaModuleCacheNV;
11203         return true;
11204     }
11205     if (!strcmp("vkCreateCudaFunctionNV", name)) {
11206         *addr = (void *)CreateCudaFunctionNV;
11207         return true;
11208     }
11209     if (!strcmp("vkDestroyCudaModuleNV", name)) {
11210         *addr = (void *)DestroyCudaModuleNV;
11211         return true;
11212     }
11213     if (!strcmp("vkDestroyCudaFunctionNV", name)) {
11214         *addr = (void *)DestroyCudaFunctionNV;
11215         return true;
11216     }
11217     if (!strcmp("vkCmdCudaLaunchKernelNV", name)) {
11218         *addr = (void *)CmdCudaLaunchKernelNV;
11219         return true;
11220     }
11221 
11222     // ---- VK_EXT_metal_objects extension commands
11223 #if defined(VK_USE_PLATFORM_METAL_EXT)
11224     if (!strcmp("vkExportMetalObjectsEXT", name)) {
11225         *addr = (void *)ExportMetalObjectsEXT;
11226         return true;
11227     }
11228 #endif // VK_USE_PLATFORM_METAL_EXT
11229 
11230     // ---- VK_EXT_descriptor_buffer extension commands
11231     if (!strcmp("vkGetDescriptorSetLayoutSizeEXT", name)) {
11232         *addr = (void *)GetDescriptorSetLayoutSizeEXT;
11233         return true;
11234     }
11235     if (!strcmp("vkGetDescriptorSetLayoutBindingOffsetEXT", name)) {
11236         *addr = (void *)GetDescriptorSetLayoutBindingOffsetEXT;
11237         return true;
11238     }
11239     if (!strcmp("vkGetDescriptorEXT", name)) {
11240         *addr = (void *)GetDescriptorEXT;
11241         return true;
11242     }
11243     if (!strcmp("vkCmdBindDescriptorBuffersEXT", name)) {
11244         *addr = (void *)CmdBindDescriptorBuffersEXT;
11245         return true;
11246     }
11247     if (!strcmp("vkCmdSetDescriptorBufferOffsetsEXT", name)) {
11248         *addr = (void *)CmdSetDescriptorBufferOffsetsEXT;
11249         return true;
11250     }
11251     if (!strcmp("vkCmdBindDescriptorBufferEmbeddedSamplersEXT", name)) {
11252         *addr = (void *)CmdBindDescriptorBufferEmbeddedSamplersEXT;
11253         return true;
11254     }
11255     if (!strcmp("vkGetBufferOpaqueCaptureDescriptorDataEXT", name)) {
11256         *addr = (void *)GetBufferOpaqueCaptureDescriptorDataEXT;
11257         return true;
11258     }
11259     if (!strcmp("vkGetImageOpaqueCaptureDescriptorDataEXT", name)) {
11260         *addr = (void *)GetImageOpaqueCaptureDescriptorDataEXT;
11261         return true;
11262     }
11263     if (!strcmp("vkGetImageViewOpaqueCaptureDescriptorDataEXT", name)) {
11264         *addr = (void *)GetImageViewOpaqueCaptureDescriptorDataEXT;
11265         return true;
11266     }
11267     if (!strcmp("vkGetSamplerOpaqueCaptureDescriptorDataEXT", name)) {
11268         *addr = (void *)GetSamplerOpaqueCaptureDescriptorDataEXT;
11269         return true;
11270     }
11271     if (!strcmp("vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT", name)) {
11272         *addr = (void *)GetAccelerationStructureOpaqueCaptureDescriptorDataEXT;
11273         return true;
11274     }
11275 
11276     // ---- VK_NV_fragment_shading_rate_enums extension commands
11277     if (!strcmp("vkCmdSetFragmentShadingRateEnumNV", name)) {
11278         *addr = (void *)CmdSetFragmentShadingRateEnumNV;
11279         return true;
11280     }
11281 
11282     // ---- VK_EXT_device_fault extension commands
11283     if (!strcmp("vkGetDeviceFaultInfoEXT", name)) {
11284         *addr = (void *)GetDeviceFaultInfoEXT;
11285         return true;
11286     }
11287 
11288     // ---- VK_NV_acquire_winrt_display extension commands
11289 #if defined(VK_USE_PLATFORM_WIN32_KHR)
11290     if (!strcmp("vkAcquireWinrtDisplayNV", name)) {
11291         *addr = (void *)AcquireWinrtDisplayNV;
11292         return true;
11293     }
11294 #endif // VK_USE_PLATFORM_WIN32_KHR
11295 #if defined(VK_USE_PLATFORM_WIN32_KHR)
11296     if (!strcmp("vkGetWinrtDisplayNV", name)) {
11297         *addr = (void *)GetWinrtDisplayNV;
11298         return true;
11299     }
11300 #endif // VK_USE_PLATFORM_WIN32_KHR
11301 
11302     // ---- VK_EXT_vertex_input_dynamic_state extension commands
11303     if (!strcmp("vkCmdSetVertexInputEXT", name)) {
11304         *addr = (void *)CmdSetVertexInputEXT;
11305         return true;
11306     }
11307 
11308     // ---- VK_FUCHSIA_external_memory extension commands
11309 #if defined(VK_USE_PLATFORM_FUCHSIA)
11310     if (!strcmp("vkGetMemoryZirconHandleFUCHSIA", name)) {
11311         *addr = (void *)GetMemoryZirconHandleFUCHSIA;
11312         return true;
11313     }
11314 #endif // VK_USE_PLATFORM_FUCHSIA
11315 #if defined(VK_USE_PLATFORM_FUCHSIA)
11316     if (!strcmp("vkGetMemoryZirconHandlePropertiesFUCHSIA", name)) {
11317         *addr = (void *)GetMemoryZirconHandlePropertiesFUCHSIA;
11318         return true;
11319     }
11320 #endif // VK_USE_PLATFORM_FUCHSIA
11321 
11322     // ---- VK_FUCHSIA_external_semaphore extension commands
11323 #if defined(VK_USE_PLATFORM_FUCHSIA)
11324     if (!strcmp("vkImportSemaphoreZirconHandleFUCHSIA", name)) {
11325         *addr = (void *)ImportSemaphoreZirconHandleFUCHSIA;
11326         return true;
11327     }
11328 #endif // VK_USE_PLATFORM_FUCHSIA
11329 #if defined(VK_USE_PLATFORM_FUCHSIA)
11330     if (!strcmp("vkGetSemaphoreZirconHandleFUCHSIA", name)) {
11331         *addr = (void *)GetSemaphoreZirconHandleFUCHSIA;
11332         return true;
11333     }
11334 #endif // VK_USE_PLATFORM_FUCHSIA
11335 
11336     // ---- VK_FUCHSIA_buffer_collection extension commands
11337 #if defined(VK_USE_PLATFORM_FUCHSIA)
11338     if (!strcmp("vkCreateBufferCollectionFUCHSIA", name)) {
11339         *addr = (void *)CreateBufferCollectionFUCHSIA;
11340         return true;
11341     }
11342 #endif // VK_USE_PLATFORM_FUCHSIA
11343 #if defined(VK_USE_PLATFORM_FUCHSIA)
11344     if (!strcmp("vkSetBufferCollectionImageConstraintsFUCHSIA", name)) {
11345         *addr = (void *)SetBufferCollectionImageConstraintsFUCHSIA;
11346         return true;
11347     }
11348 #endif // VK_USE_PLATFORM_FUCHSIA
11349 #if defined(VK_USE_PLATFORM_FUCHSIA)
11350     if (!strcmp("vkSetBufferCollectionBufferConstraintsFUCHSIA", name)) {
11351         *addr = (void *)SetBufferCollectionBufferConstraintsFUCHSIA;
11352         return true;
11353     }
11354 #endif // VK_USE_PLATFORM_FUCHSIA
11355 #if defined(VK_USE_PLATFORM_FUCHSIA)
11356     if (!strcmp("vkDestroyBufferCollectionFUCHSIA", name)) {
11357         *addr = (void *)DestroyBufferCollectionFUCHSIA;
11358         return true;
11359     }
11360 #endif // VK_USE_PLATFORM_FUCHSIA
11361 #if defined(VK_USE_PLATFORM_FUCHSIA)
11362     if (!strcmp("vkGetBufferCollectionPropertiesFUCHSIA", name)) {
11363         *addr = (void *)GetBufferCollectionPropertiesFUCHSIA;
11364         return true;
11365     }
11366 #endif // VK_USE_PLATFORM_FUCHSIA
11367 
11368     // ---- VK_HUAWEI_subpass_shading extension commands
11369     if (!strcmp("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI", name)) {
11370         *addr = (void *)GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
11371         return true;
11372     }
11373     if (!strcmp("vkCmdSubpassShadingHUAWEI", name)) {
11374         *addr = (void *)CmdSubpassShadingHUAWEI;
11375         return true;
11376     }
11377 
11378     // ---- VK_HUAWEI_invocation_mask extension commands
11379     if (!strcmp("vkCmdBindInvocationMaskHUAWEI", name)) {
11380         *addr = (void *)CmdBindInvocationMaskHUAWEI;
11381         return true;
11382     }
11383 
11384     // ---- VK_NV_external_memory_rdma extension commands
11385     if (!strcmp("vkGetMemoryRemoteAddressNV", name)) {
11386         *addr = (void *)GetMemoryRemoteAddressNV;
11387         return true;
11388     }
11389 
11390     // ---- VK_EXT_pipeline_properties extension commands
11391     if (!strcmp("vkGetPipelinePropertiesEXT", name)) {
11392         *addr = (void *)GetPipelinePropertiesEXT;
11393         return true;
11394     }
11395 
11396     // ---- VK_EXT_extended_dynamic_state2 extension commands
11397     if (!strcmp("vkCmdSetPatchControlPointsEXT", name)) {
11398         *addr = (void *)CmdSetPatchControlPointsEXT;
11399         return true;
11400     }
11401     if (!strcmp("vkCmdSetRasterizerDiscardEnableEXT", name)) {
11402         *addr = (void *)CmdSetRasterizerDiscardEnableEXT;
11403         return true;
11404     }
11405     if (!strcmp("vkCmdSetDepthBiasEnableEXT", name)) {
11406         *addr = (void *)CmdSetDepthBiasEnableEXT;
11407         return true;
11408     }
11409     if (!strcmp("vkCmdSetLogicOpEXT", name)) {
11410         *addr = (void *)CmdSetLogicOpEXT;
11411         return true;
11412     }
11413     if (!strcmp("vkCmdSetPrimitiveRestartEnableEXT", name)) {
11414         *addr = (void *)CmdSetPrimitiveRestartEnableEXT;
11415         return true;
11416     }
11417 
11418     // ---- VK_EXT_color_write_enable extension commands
11419     if (!strcmp("vkCmdSetColorWriteEnableEXT", name)) {
11420         *addr = (void *)CmdSetColorWriteEnableEXT;
11421         return true;
11422     }
11423 
11424     // ---- VK_EXT_multi_draw extension commands
11425     if (!strcmp("vkCmdDrawMultiEXT", name)) {
11426         *addr = (void *)CmdDrawMultiEXT;
11427         return true;
11428     }
11429     if (!strcmp("vkCmdDrawMultiIndexedEXT", name)) {
11430         *addr = (void *)CmdDrawMultiIndexedEXT;
11431         return true;
11432     }
11433 
11434     // ---- VK_EXT_opacity_micromap extension commands
11435     if (!strcmp("vkCreateMicromapEXT", name)) {
11436         *addr = (void *)CreateMicromapEXT;
11437         return true;
11438     }
11439     if (!strcmp("vkDestroyMicromapEXT", name)) {
11440         *addr = (void *)DestroyMicromapEXT;
11441         return true;
11442     }
11443     if (!strcmp("vkCmdBuildMicromapsEXT", name)) {
11444         *addr = (void *)CmdBuildMicromapsEXT;
11445         return true;
11446     }
11447     if (!strcmp("vkBuildMicromapsEXT", name)) {
11448         *addr = (void *)BuildMicromapsEXT;
11449         return true;
11450     }
11451     if (!strcmp("vkCopyMicromapEXT", name)) {
11452         *addr = (void *)CopyMicromapEXT;
11453         return true;
11454     }
11455     if (!strcmp("vkCopyMicromapToMemoryEXT", name)) {
11456         *addr = (void *)CopyMicromapToMemoryEXT;
11457         return true;
11458     }
11459     if (!strcmp("vkCopyMemoryToMicromapEXT", name)) {
11460         *addr = (void *)CopyMemoryToMicromapEXT;
11461         return true;
11462     }
11463     if (!strcmp("vkWriteMicromapsPropertiesEXT", name)) {
11464         *addr = (void *)WriteMicromapsPropertiesEXT;
11465         return true;
11466     }
11467     if (!strcmp("vkCmdCopyMicromapEXT", name)) {
11468         *addr = (void *)CmdCopyMicromapEXT;
11469         return true;
11470     }
11471     if (!strcmp("vkCmdCopyMicromapToMemoryEXT", name)) {
11472         *addr = (void *)CmdCopyMicromapToMemoryEXT;
11473         return true;
11474     }
11475     if (!strcmp("vkCmdCopyMemoryToMicromapEXT", name)) {
11476         *addr = (void *)CmdCopyMemoryToMicromapEXT;
11477         return true;
11478     }
11479     if (!strcmp("vkCmdWriteMicromapsPropertiesEXT", name)) {
11480         *addr = (void *)CmdWriteMicromapsPropertiesEXT;
11481         return true;
11482     }
11483     if (!strcmp("vkGetDeviceMicromapCompatibilityEXT", name)) {
11484         *addr = (void *)GetDeviceMicromapCompatibilityEXT;
11485         return true;
11486     }
11487     if (!strcmp("vkGetMicromapBuildSizesEXT", name)) {
11488         *addr = (void *)GetMicromapBuildSizesEXT;
11489         return true;
11490     }
11491 
11492     // ---- VK_HUAWEI_cluster_culling_shader extension commands
11493     if (!strcmp("vkCmdDrawClusterHUAWEI", name)) {
11494         *addr = (void *)CmdDrawClusterHUAWEI;
11495         return true;
11496     }
11497     if (!strcmp("vkCmdDrawClusterIndirectHUAWEI", name)) {
11498         *addr = (void *)CmdDrawClusterIndirectHUAWEI;
11499         return true;
11500     }
11501 
11502     // ---- VK_EXT_pageable_device_local_memory extension commands
11503     if (!strcmp("vkSetDeviceMemoryPriorityEXT", name)) {
11504         *addr = (void *)SetDeviceMemoryPriorityEXT;
11505         return true;
11506     }
11507 
11508     // ---- VK_VALVE_descriptor_set_host_mapping extension commands
11509     if (!strcmp("vkGetDescriptorSetLayoutHostMappingInfoVALVE", name)) {
11510         *addr = (void *)GetDescriptorSetLayoutHostMappingInfoVALVE;
11511         return true;
11512     }
11513     if (!strcmp("vkGetDescriptorSetHostMappingVALVE", name)) {
11514         *addr = (void *)GetDescriptorSetHostMappingVALVE;
11515         return true;
11516     }
11517 
11518     // ---- VK_NV_copy_memory_indirect extension commands
11519     if (!strcmp("vkCmdCopyMemoryIndirectNV", name)) {
11520         *addr = (void *)CmdCopyMemoryIndirectNV;
11521         return true;
11522     }
11523     if (!strcmp("vkCmdCopyMemoryToImageIndirectNV", name)) {
11524         *addr = (void *)CmdCopyMemoryToImageIndirectNV;
11525         return true;
11526     }
11527 
11528     // ---- VK_NV_memory_decompression extension commands
11529     if (!strcmp("vkCmdDecompressMemoryNV", name)) {
11530         *addr = (void *)CmdDecompressMemoryNV;
11531         return true;
11532     }
11533     if (!strcmp("vkCmdDecompressMemoryIndirectCountNV", name)) {
11534         *addr = (void *)CmdDecompressMemoryIndirectCountNV;
11535         return true;
11536     }
11537 
11538     // ---- VK_NV_device_generated_commands_compute extension commands
11539     if (!strcmp("vkGetPipelineIndirectMemoryRequirementsNV", name)) {
11540         *addr = (void *)GetPipelineIndirectMemoryRequirementsNV;
11541         return true;
11542     }
11543     if (!strcmp("vkCmdUpdatePipelineIndirectBufferNV", name)) {
11544         *addr = (void *)CmdUpdatePipelineIndirectBufferNV;
11545         return true;
11546     }
11547     if (!strcmp("vkGetPipelineIndirectDeviceAddressNV", name)) {
11548         *addr = (void *)GetPipelineIndirectDeviceAddressNV;
11549         return true;
11550     }
11551 
11552     // ---- VK_EXT_extended_dynamic_state3 extension commands
11553     if (!strcmp("vkCmdSetTessellationDomainOriginEXT", name)) {
11554         *addr = (void *)CmdSetTessellationDomainOriginEXT;
11555         return true;
11556     }
11557     if (!strcmp("vkCmdSetDepthClampEnableEXT", name)) {
11558         *addr = (void *)CmdSetDepthClampEnableEXT;
11559         return true;
11560     }
11561     if (!strcmp("vkCmdSetPolygonModeEXT", name)) {
11562         *addr = (void *)CmdSetPolygonModeEXT;
11563         return true;
11564     }
11565     if (!strcmp("vkCmdSetRasterizationSamplesEXT", name)) {
11566         *addr = (void *)CmdSetRasterizationSamplesEXT;
11567         return true;
11568     }
11569     if (!strcmp("vkCmdSetSampleMaskEXT", name)) {
11570         *addr = (void *)CmdSetSampleMaskEXT;
11571         return true;
11572     }
11573     if (!strcmp("vkCmdSetAlphaToCoverageEnableEXT", name)) {
11574         *addr = (void *)CmdSetAlphaToCoverageEnableEXT;
11575         return true;
11576     }
11577     if (!strcmp("vkCmdSetAlphaToOneEnableEXT", name)) {
11578         *addr = (void *)CmdSetAlphaToOneEnableEXT;
11579         return true;
11580     }
11581     if (!strcmp("vkCmdSetLogicOpEnableEXT", name)) {
11582         *addr = (void *)CmdSetLogicOpEnableEXT;
11583         return true;
11584     }
11585     if (!strcmp("vkCmdSetColorBlendEnableEXT", name)) {
11586         *addr = (void *)CmdSetColorBlendEnableEXT;
11587         return true;
11588     }
11589     if (!strcmp("vkCmdSetColorBlendEquationEXT", name)) {
11590         *addr = (void *)CmdSetColorBlendEquationEXT;
11591         return true;
11592     }
11593     if (!strcmp("vkCmdSetColorWriteMaskEXT", name)) {
11594         *addr = (void *)CmdSetColorWriteMaskEXT;
11595         return true;
11596     }
11597     if (!strcmp("vkCmdSetRasterizationStreamEXT", name)) {
11598         *addr = (void *)CmdSetRasterizationStreamEXT;
11599         return true;
11600     }
11601     if (!strcmp("vkCmdSetConservativeRasterizationModeEXT", name)) {
11602         *addr = (void *)CmdSetConservativeRasterizationModeEXT;
11603         return true;
11604     }
11605     if (!strcmp("vkCmdSetExtraPrimitiveOverestimationSizeEXT", name)) {
11606         *addr = (void *)CmdSetExtraPrimitiveOverestimationSizeEXT;
11607         return true;
11608     }
11609     if (!strcmp("vkCmdSetDepthClipEnableEXT", name)) {
11610         *addr = (void *)CmdSetDepthClipEnableEXT;
11611         return true;
11612     }
11613     if (!strcmp("vkCmdSetSampleLocationsEnableEXT", name)) {
11614         *addr = (void *)CmdSetSampleLocationsEnableEXT;
11615         return true;
11616     }
11617     if (!strcmp("vkCmdSetColorBlendAdvancedEXT", name)) {
11618         *addr = (void *)CmdSetColorBlendAdvancedEXT;
11619         return true;
11620     }
11621     if (!strcmp("vkCmdSetProvokingVertexModeEXT", name)) {
11622         *addr = (void *)CmdSetProvokingVertexModeEXT;
11623         return true;
11624     }
11625     if (!strcmp("vkCmdSetLineRasterizationModeEXT", name)) {
11626         *addr = (void *)CmdSetLineRasterizationModeEXT;
11627         return true;
11628     }
11629     if (!strcmp("vkCmdSetLineStippleEnableEXT", name)) {
11630         *addr = (void *)CmdSetLineStippleEnableEXT;
11631         return true;
11632     }
11633     if (!strcmp("vkCmdSetDepthClipNegativeOneToOneEXT", name)) {
11634         *addr = (void *)CmdSetDepthClipNegativeOneToOneEXT;
11635         return true;
11636     }
11637     if (!strcmp("vkCmdSetViewportWScalingEnableNV", name)) {
11638         *addr = (void *)CmdSetViewportWScalingEnableNV;
11639         return true;
11640     }
11641     if (!strcmp("vkCmdSetViewportSwizzleNV", name)) {
11642         *addr = (void *)CmdSetViewportSwizzleNV;
11643         return true;
11644     }
11645     if (!strcmp("vkCmdSetCoverageToColorEnableNV", name)) {
11646         *addr = (void *)CmdSetCoverageToColorEnableNV;
11647         return true;
11648     }
11649     if (!strcmp("vkCmdSetCoverageToColorLocationNV", name)) {
11650         *addr = (void *)CmdSetCoverageToColorLocationNV;
11651         return true;
11652     }
11653     if (!strcmp("vkCmdSetCoverageModulationModeNV", name)) {
11654         *addr = (void *)CmdSetCoverageModulationModeNV;
11655         return true;
11656     }
11657     if (!strcmp("vkCmdSetCoverageModulationTableEnableNV", name)) {
11658         *addr = (void *)CmdSetCoverageModulationTableEnableNV;
11659         return true;
11660     }
11661     if (!strcmp("vkCmdSetCoverageModulationTableNV", name)) {
11662         *addr = (void *)CmdSetCoverageModulationTableNV;
11663         return true;
11664     }
11665     if (!strcmp("vkCmdSetShadingRateImageEnableNV", name)) {
11666         *addr = (void *)CmdSetShadingRateImageEnableNV;
11667         return true;
11668     }
11669     if (!strcmp("vkCmdSetRepresentativeFragmentTestEnableNV", name)) {
11670         *addr = (void *)CmdSetRepresentativeFragmentTestEnableNV;
11671         return true;
11672     }
11673     if (!strcmp("vkCmdSetCoverageReductionModeNV", name)) {
11674         *addr = (void *)CmdSetCoverageReductionModeNV;
11675         return true;
11676     }
11677 
11678     // ---- VK_EXT_shader_module_identifier extension commands
11679     if (!strcmp("vkGetShaderModuleIdentifierEXT", name)) {
11680         *addr = (void *)GetShaderModuleIdentifierEXT;
11681         return true;
11682     }
11683     if (!strcmp("vkGetShaderModuleCreateInfoIdentifierEXT", name)) {
11684         *addr = (void *)GetShaderModuleCreateInfoIdentifierEXT;
11685         return true;
11686     }
11687 
11688     // ---- VK_NV_optical_flow extension commands
11689     if (!strcmp("vkGetPhysicalDeviceOpticalFlowImageFormatsNV", name)) {
11690         *addr = (void *)GetPhysicalDeviceOpticalFlowImageFormatsNV;
11691         return true;
11692     }
11693     if (!strcmp("vkCreateOpticalFlowSessionNV", name)) {
11694         *addr = (void *)CreateOpticalFlowSessionNV;
11695         return true;
11696     }
11697     if (!strcmp("vkDestroyOpticalFlowSessionNV", name)) {
11698         *addr = (void *)DestroyOpticalFlowSessionNV;
11699         return true;
11700     }
11701     if (!strcmp("vkBindOpticalFlowSessionImageNV", name)) {
11702         *addr = (void *)BindOpticalFlowSessionImageNV;
11703         return true;
11704     }
11705     if (!strcmp("vkCmdOpticalFlowExecuteNV", name)) {
11706         *addr = (void *)CmdOpticalFlowExecuteNV;
11707         return true;
11708     }
11709 
11710     // ---- VK_EXT_shader_object extension commands
11711     if (!strcmp("vkCreateShadersEXT", name)) {
11712         *addr = (void *)CreateShadersEXT;
11713         return true;
11714     }
11715     if (!strcmp("vkDestroyShaderEXT", name)) {
11716         *addr = (void *)DestroyShaderEXT;
11717         return true;
11718     }
11719     if (!strcmp("vkGetShaderBinaryDataEXT", name)) {
11720         *addr = (void *)GetShaderBinaryDataEXT;
11721         return true;
11722     }
11723     if (!strcmp("vkCmdBindShadersEXT", name)) {
11724         *addr = (void *)CmdBindShadersEXT;
11725         return true;
11726     }
11727 
11728     // ---- VK_QCOM_tile_properties extension commands
11729     if (!strcmp("vkGetFramebufferTilePropertiesQCOM", name)) {
11730         *addr = (void *)GetFramebufferTilePropertiesQCOM;
11731         return true;
11732     }
11733     if (!strcmp("vkGetDynamicRenderingTilePropertiesQCOM", name)) {
11734         *addr = (void *)GetDynamicRenderingTilePropertiesQCOM;
11735         return true;
11736     }
11737 
11738     // ---- VK_NV_low_latency2 extension commands
11739     if (!strcmp("vkSetLatencySleepModeNV", name)) {
11740         *addr = (void *)SetLatencySleepModeNV;
11741         return true;
11742     }
11743     if (!strcmp("vkLatencySleepNV", name)) {
11744         *addr = (void *)LatencySleepNV;
11745         return true;
11746     }
11747     if (!strcmp("vkSetLatencyMarkerNV", name)) {
11748         *addr = (void *)SetLatencyMarkerNV;
11749         return true;
11750     }
11751     if (!strcmp("vkGetLatencyTimingsNV", name)) {
11752         *addr = (void *)GetLatencyTimingsNV;
11753         return true;
11754     }
11755     if (!strcmp("vkQueueNotifyOutOfBandNV", name)) {
11756         *addr = (void *)QueueNotifyOutOfBandNV;
11757         return true;
11758     }
11759 
11760     // ---- VK_EXT_attachment_feedback_loop_dynamic_state extension commands
11761     if (!strcmp("vkCmdSetAttachmentFeedbackLoopEnableEXT", name)) {
11762         *addr = (void *)CmdSetAttachmentFeedbackLoopEnableEXT;
11763         return true;
11764     }
11765 
11766     // ---- VK_QNX_external_memory_screen_buffer extension commands
11767 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
11768     if (!strcmp("vkGetScreenBufferPropertiesQNX", name)) {
11769         *addr = (void *)GetScreenBufferPropertiesQNX;
11770         return true;
11771     }
11772 #endif // VK_USE_PLATFORM_SCREEN_QNX
11773 
11774     // ---- VK_KHR_acceleration_structure extension commands
11775     if (!strcmp("vkCreateAccelerationStructureKHR", name)) {
11776         *addr = (void *)CreateAccelerationStructureKHR;
11777         return true;
11778     }
11779     if (!strcmp("vkDestroyAccelerationStructureKHR", name)) {
11780         *addr = (void *)DestroyAccelerationStructureKHR;
11781         return true;
11782     }
11783     if (!strcmp("vkCmdBuildAccelerationStructuresKHR", name)) {
11784         *addr = (void *)CmdBuildAccelerationStructuresKHR;
11785         return true;
11786     }
11787     if (!strcmp("vkCmdBuildAccelerationStructuresIndirectKHR", name)) {
11788         *addr = (void *)CmdBuildAccelerationStructuresIndirectKHR;
11789         return true;
11790     }
11791     if (!strcmp("vkBuildAccelerationStructuresKHR", name)) {
11792         *addr = (void *)BuildAccelerationStructuresKHR;
11793         return true;
11794     }
11795     if (!strcmp("vkCopyAccelerationStructureKHR", name)) {
11796         *addr = (void *)CopyAccelerationStructureKHR;
11797         return true;
11798     }
11799     if (!strcmp("vkCopyAccelerationStructureToMemoryKHR", name)) {
11800         *addr = (void *)CopyAccelerationStructureToMemoryKHR;
11801         return true;
11802     }
11803     if (!strcmp("vkCopyMemoryToAccelerationStructureKHR", name)) {
11804         *addr = (void *)CopyMemoryToAccelerationStructureKHR;
11805         return true;
11806     }
11807     if (!strcmp("vkWriteAccelerationStructuresPropertiesKHR", name)) {
11808         *addr = (void *)WriteAccelerationStructuresPropertiesKHR;
11809         return true;
11810     }
11811     if (!strcmp("vkCmdCopyAccelerationStructureKHR", name)) {
11812         *addr = (void *)CmdCopyAccelerationStructureKHR;
11813         return true;
11814     }
11815     if (!strcmp("vkCmdCopyAccelerationStructureToMemoryKHR", name)) {
11816         *addr = (void *)CmdCopyAccelerationStructureToMemoryKHR;
11817         return true;
11818     }
11819     if (!strcmp("vkCmdCopyMemoryToAccelerationStructureKHR", name)) {
11820         *addr = (void *)CmdCopyMemoryToAccelerationStructureKHR;
11821         return true;
11822     }
11823     if (!strcmp("vkGetAccelerationStructureDeviceAddressKHR", name)) {
11824         *addr = (void *)GetAccelerationStructureDeviceAddressKHR;
11825         return true;
11826     }
11827     if (!strcmp("vkCmdWriteAccelerationStructuresPropertiesKHR", name)) {
11828         *addr = (void *)CmdWriteAccelerationStructuresPropertiesKHR;
11829         return true;
11830     }
11831     if (!strcmp("vkGetDeviceAccelerationStructureCompatibilityKHR", name)) {
11832         *addr = (void *)GetDeviceAccelerationStructureCompatibilityKHR;
11833         return true;
11834     }
11835     if (!strcmp("vkGetAccelerationStructureBuildSizesKHR", name)) {
11836         *addr = (void *)GetAccelerationStructureBuildSizesKHR;
11837         return true;
11838     }
11839 
11840     // ---- VK_KHR_ray_tracing_pipeline extension commands
11841     if (!strcmp("vkCmdTraceRaysKHR", name)) {
11842         *addr = (void *)CmdTraceRaysKHR;
11843         return true;
11844     }
11845     if (!strcmp("vkCreateRayTracingPipelinesKHR", name)) {
11846         *addr = (void *)CreateRayTracingPipelinesKHR;
11847         return true;
11848     }
11849     if (!strcmp("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR", name)) {
11850         *addr = (void *)GetRayTracingCaptureReplayShaderGroupHandlesKHR;
11851         return true;
11852     }
11853     if (!strcmp("vkCmdTraceRaysIndirectKHR", name)) {
11854         *addr = (void *)CmdTraceRaysIndirectKHR;
11855         return true;
11856     }
11857     if (!strcmp("vkGetRayTracingShaderGroupStackSizeKHR", name)) {
11858         *addr = (void *)GetRayTracingShaderGroupStackSizeKHR;
11859         return true;
11860     }
11861     if (!strcmp("vkCmdSetRayTracingPipelineStackSizeKHR", name)) {
11862         *addr = (void *)CmdSetRayTracingPipelineStackSizeKHR;
11863         return true;
11864     }
11865 
11866     // ---- VK_EXT_mesh_shader extension commands
11867     if (!strcmp("vkCmdDrawMeshTasksEXT", name)) {
11868         *addr = (void *)CmdDrawMeshTasksEXT;
11869         return true;
11870     }
11871     if (!strcmp("vkCmdDrawMeshTasksIndirectEXT", name)) {
11872         *addr = (void *)CmdDrawMeshTasksIndirectEXT;
11873         return true;
11874     }
11875     if (!strcmp("vkCmdDrawMeshTasksIndirectCountEXT", name)) {
11876         *addr = (void *)CmdDrawMeshTasksIndirectCountEXT;
11877         return true;
11878     }
11879 
11880     // ---- VK_OHOS_native_buffer extension commands
11881 #ifdef VK_USE_PLATFORM_OHOS
11882     if (!strcmp("vkGetSwapchainGrallocUsageOHOS", name)) {
11883         *addr = (void *)GetSwapchainGrallocUsageOHOS;
11884         return true;
11885     }
11886 #endif // VK_USE_PLATFORM_OHOS
11887 #ifdef VK_USE_PLATFORM_OHOS
11888     if (!strcmp("vkAcquireImageOHOS", name)) {
11889         *addr = (void *)AcquireImageOHOS;
11890         return true;
11891     }
11892 #endif // VK_USE_PLATFORM_OHOS
11893 #ifdef VK_USE_PLATFORM_OHOS
11894     if (!strcmp("vkQueueSignalReleaseImageOHOS", name)) {
11895         *addr = (void *)QueueSignalReleaseImageOHOS;
11896         return true;
11897     }
11898 #endif // VK_USE_PLATFORM_OHOS
11899 
11900     // ---- VK_OHOS_external_memory extension commands
11901 #ifdef VK_USE_PLATFORM_OHOS
11902     if (!strcmp("vkGetNativeBufferPropertiesOHOS", name)) {
11903         *addr = (void *)vkGetNativeBufferPropertiesOHOS;
11904         return true;
11905     }
11906 #endif // VK_USE_PLATFORM_OHOS
11907 #ifdef VK_USE_PLATFORM_OHOS
11908     if (!strcmp("vkGetMemoryNativeBufferOHOS", name)) {
11909         *addr = (void *)vkGetMemoryNativeBufferOHOS;
11910         return true;
11911     }
11912 #endif // VK_USE_PLATFORM_OHOS
11913 
11914    return false;
11915 }
11916 
11917 // 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)11918 void extensions_create_instance(struct loader_instance *ptr_instance, const VkInstanceCreateInfo *pCreateInfo) {
11919     for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) {
11920 
11921     // ---- VK_KHR_get_physical_device_properties2 extension commands
11922         if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME)) {
11923             ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 = 1;
11924 
11925     // ---- VK_KHR_device_group_creation extension commands
11926         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME)) {
11927             ptr_instance->enabled_known_extensions.khr_device_group_creation = 1;
11928 
11929     // ---- VK_KHR_external_memory_capabilities extension commands
11930         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME)) {
11931             ptr_instance->enabled_known_extensions.khr_external_memory_capabilities = 1;
11932 
11933     // ---- VK_KHR_external_semaphore_capabilities extension commands
11934         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME)) {
11935             ptr_instance->enabled_known_extensions.khr_external_semaphore_capabilities = 1;
11936 
11937     // ---- VK_KHR_external_fence_capabilities extension commands
11938         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME)) {
11939             ptr_instance->enabled_known_extensions.khr_external_fence_capabilities = 1;
11940 
11941     // ---- VK_NV_external_memory_capabilities extension commands
11942         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME)) {
11943             ptr_instance->enabled_known_extensions.nv_external_memory_capabilities = 1;
11944 
11945     // ---- VK_EXT_direct_mode_display extension commands
11946         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME)) {
11947             ptr_instance->enabled_known_extensions.ext_direct_mode_display = 1;
11948 
11949     // ---- VK_EXT_acquire_xlib_display extension commands
11950 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
11951         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME)) {
11952             ptr_instance->enabled_known_extensions.ext_acquire_xlib_display = 1;
11953 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
11954 
11955     // ---- VK_EXT_display_surface_counter extension commands
11956         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME)) {
11957             ptr_instance->enabled_known_extensions.ext_display_surface_counter = 1;
11958 
11959     // ---- VK_EXT_debug_utils extension commands
11960         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_DEBUG_UTILS_EXTENSION_NAME)) {
11961             ptr_instance->enabled_known_extensions.ext_debug_utils = 1;
11962 
11963     // ---- VK_EXT_acquire_drm_display extension commands
11964         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME)) {
11965             ptr_instance->enabled_known_extensions.ext_acquire_drm_display = 1;
11966         }
11967     }
11968 }
11969 
11970 // Some device commands still need a terminator because the loader needs to unwrap something about them.
11971 // In many cases, the item needing unwrapping is a VkPhysicalDevice or VkSurfaceKHR object.  But there may be other items
11972 // in the future.
get_extension_device_proc_terminator(struct loader_device * dev,const char * name,bool * found_name)11973 PFN_vkVoidFunction get_extension_device_proc_terminator(struct loader_device *dev, const char *name, bool* found_name) {
11974     *found_name = false;
11975     if (!name || name[0] != 'v' || name[1] != 'k') {
11976         return NULL;
11977     }
11978     name += 2;
11979     // ---- VK_KHR_swapchain extension commands
11980     if (!strcmp(name, "CreateSwapchainKHR")) {
11981         *found_name = true;
11982         return dev->driver_extensions.khr_swapchain_enabled ?
11983             (PFN_vkVoidFunction)terminator_CreateSwapchainKHR : NULL;
11984     }
11985     if (!strcmp(name, "GetDeviceGroupSurfacePresentModesKHR")) {
11986         *found_name = true;
11987         return dev->driver_extensions.khr_swapchain_enabled ?
11988             (PFN_vkVoidFunction)terminator_GetDeviceGroupSurfacePresentModesKHR : NULL;
11989     }
11990     // ---- VK_KHR_display_swapchain extension commands
11991     if (!strcmp(name, "CreateSharedSwapchainsKHR")) {
11992         *found_name = true;
11993         return dev->driver_extensions.khr_display_swapchain_enabled ?
11994             (PFN_vkVoidFunction)terminator_CreateSharedSwapchainsKHR : NULL;
11995     }
11996     // ---- VK_EXT_debug_marker extension commands
11997     if (!strcmp(name, "DebugMarkerSetObjectTagEXT")) {
11998         *found_name = true;
11999         return dev->driver_extensions.ext_debug_marker_enabled ?
12000             (PFN_vkVoidFunction)terminator_DebugMarkerSetObjectTagEXT : NULL;
12001     }
12002     if (!strcmp(name, "DebugMarkerSetObjectNameEXT")) {
12003         *found_name = true;
12004         return dev->driver_extensions.ext_debug_marker_enabled ?
12005             (PFN_vkVoidFunction)terminator_DebugMarkerSetObjectNameEXT : NULL;
12006     }
12007     // ---- VK_EXT_debug_utils extension commands
12008     if (!strcmp(name, "SetDebugUtilsObjectNameEXT")) {
12009         *found_name = true;
12010         return dev->driver_extensions.ext_debug_utils_enabled ?
12011             (PFN_vkVoidFunction)terminator_SetDebugUtilsObjectNameEXT : NULL;
12012     }
12013     if (!strcmp(name, "SetDebugUtilsObjectTagEXT")) {
12014         *found_name = true;
12015         return dev->driver_extensions.ext_debug_utils_enabled ?
12016             (PFN_vkVoidFunction)terminator_SetDebugUtilsObjectTagEXT : NULL;
12017     }
12018     if (!strcmp(name, "QueueBeginDebugUtilsLabelEXT")) {
12019         *found_name = true;
12020         return dev->driver_extensions.ext_debug_utils_enabled ?
12021             (PFN_vkVoidFunction)terminator_QueueBeginDebugUtilsLabelEXT : NULL;
12022     }
12023     if (!strcmp(name, "QueueEndDebugUtilsLabelEXT")) {
12024         *found_name = true;
12025         return dev->driver_extensions.ext_debug_utils_enabled ?
12026             (PFN_vkVoidFunction)terminator_QueueEndDebugUtilsLabelEXT : NULL;
12027     }
12028     if (!strcmp(name, "QueueInsertDebugUtilsLabelEXT")) {
12029         *found_name = true;
12030         return dev->driver_extensions.ext_debug_utils_enabled ?
12031             (PFN_vkVoidFunction)terminator_QueueInsertDebugUtilsLabelEXT : NULL;
12032     }
12033     if (!strcmp(name, "CmdBeginDebugUtilsLabelEXT")) {
12034         *found_name = true;
12035         return dev->driver_extensions.ext_debug_utils_enabled ?
12036             (PFN_vkVoidFunction)terminator_CmdBeginDebugUtilsLabelEXT : NULL;
12037     }
12038     if (!strcmp(name, "CmdEndDebugUtilsLabelEXT")) {
12039         *found_name = true;
12040         return dev->driver_extensions.ext_debug_utils_enabled ?
12041             (PFN_vkVoidFunction)terminator_CmdEndDebugUtilsLabelEXT : NULL;
12042     }
12043     if (!strcmp(name, "CmdInsertDebugUtilsLabelEXT")) {
12044         *found_name = true;
12045         return dev->driver_extensions.ext_debug_utils_enabled ?
12046             (PFN_vkVoidFunction)terminator_CmdInsertDebugUtilsLabelEXT : NULL;
12047     }
12048 #if defined(VK_USE_PLATFORM_WIN32_KHR)
12049     // ---- VK_EXT_full_screen_exclusive extension commands
12050     if (!strcmp(name, "GetDeviceGroupSurfacePresentModes2EXT")) {
12051         *found_name = true;
12052         return dev->driver_extensions.ext_full_screen_exclusive_enabled && dev->driver_extensions.khr_device_group_enabled ?
12053             (PFN_vkVoidFunction)terminator_GetDeviceGroupSurfacePresentModes2EXT : NULL;
12054     }
12055 #endif // VK_USE_PLATFORM_WIN32_KHR
12056     return NULL;
12057 }
12058 
12059 // This table contains the loader's instance dispatch table, which contains
12060 // default functions if no instance layers are activated.  This contains
12061 // pointers to "terminator functions".
12062 const VkLayerInstanceDispatchTable instance_disp = {
12063 
12064     // ---- Core Vulkan 1.0 commands
12065     .DestroyInstance = terminator_DestroyInstance,
12066     .EnumeratePhysicalDevices = terminator_EnumeratePhysicalDevices,
12067     .GetPhysicalDeviceFeatures = terminator_GetPhysicalDeviceFeatures,
12068     .GetPhysicalDeviceFormatProperties = terminator_GetPhysicalDeviceFormatProperties,
12069     .GetPhysicalDeviceImageFormatProperties = terminator_GetPhysicalDeviceImageFormatProperties,
12070     .GetPhysicalDeviceProperties = terminator_GetPhysicalDeviceProperties,
12071     .GetPhysicalDeviceQueueFamilyProperties = terminator_GetPhysicalDeviceQueueFamilyProperties,
12072     .GetPhysicalDeviceMemoryProperties = terminator_GetPhysicalDeviceMemoryProperties,
12073     .GetInstanceProcAddr = vkGetInstanceProcAddr,
12074     .EnumerateDeviceExtensionProperties = terminator_EnumerateDeviceExtensionProperties,
12075     .EnumerateDeviceLayerProperties = terminator_EnumerateDeviceLayerProperties,
12076     .GetPhysicalDeviceSparseImageFormatProperties = terminator_GetPhysicalDeviceSparseImageFormatProperties,
12077 
12078     // ---- Core Vulkan 1.1 commands
12079     .EnumeratePhysicalDeviceGroups = terminator_EnumeratePhysicalDeviceGroups,
12080     .GetPhysicalDeviceFeatures2 = terminator_GetPhysicalDeviceFeatures2,
12081     .GetPhysicalDeviceProperties2 = terminator_GetPhysicalDeviceProperties2,
12082     .GetPhysicalDeviceFormatProperties2 = terminator_GetPhysicalDeviceFormatProperties2,
12083     .GetPhysicalDeviceImageFormatProperties2 = terminator_GetPhysicalDeviceImageFormatProperties2,
12084     .GetPhysicalDeviceQueueFamilyProperties2 = terminator_GetPhysicalDeviceQueueFamilyProperties2,
12085     .GetPhysicalDeviceMemoryProperties2 = terminator_GetPhysicalDeviceMemoryProperties2,
12086     .GetPhysicalDeviceSparseImageFormatProperties2 = terminator_GetPhysicalDeviceSparseImageFormatProperties2,
12087     .GetPhysicalDeviceExternalBufferProperties = terminator_GetPhysicalDeviceExternalBufferProperties,
12088     .GetPhysicalDeviceExternalFenceProperties = terminator_GetPhysicalDeviceExternalFenceProperties,
12089     .GetPhysicalDeviceExternalSemaphoreProperties = terminator_GetPhysicalDeviceExternalSemaphoreProperties,
12090 
12091     // ---- Core Vulkan 1.3 commands
12092     .GetPhysicalDeviceToolProperties = terminator_GetPhysicalDeviceToolProperties,
12093 
12094     // ---- VK_KHR_surface extension commands
12095     .DestroySurfaceKHR = terminator_DestroySurfaceKHR,
12096     .GetPhysicalDeviceSurfaceSupportKHR = terminator_GetPhysicalDeviceSurfaceSupportKHR,
12097     .GetPhysicalDeviceSurfaceCapabilitiesKHR = terminator_GetPhysicalDeviceSurfaceCapabilitiesKHR,
12098     .GetPhysicalDeviceSurfaceFormatsKHR = terminator_GetPhysicalDeviceSurfaceFormatsKHR,
12099     .GetPhysicalDeviceSurfacePresentModesKHR = terminator_GetPhysicalDeviceSurfacePresentModesKHR,
12100 
12101     // ---- VK_KHR_swapchain extension commands
12102     .GetPhysicalDevicePresentRectanglesKHR = terminator_GetPhysicalDevicePresentRectanglesKHR,
12103 
12104     // ---- VK_KHR_display extension commands
12105     .GetPhysicalDeviceDisplayPropertiesKHR = terminator_GetPhysicalDeviceDisplayPropertiesKHR,
12106     .GetPhysicalDeviceDisplayPlanePropertiesKHR = terminator_GetPhysicalDeviceDisplayPlanePropertiesKHR,
12107     .GetDisplayPlaneSupportedDisplaysKHR = terminator_GetDisplayPlaneSupportedDisplaysKHR,
12108     .GetDisplayModePropertiesKHR = terminator_GetDisplayModePropertiesKHR,
12109     .CreateDisplayModeKHR = terminator_CreateDisplayModeKHR,
12110     .GetDisplayPlaneCapabilitiesKHR = terminator_GetDisplayPlaneCapabilitiesKHR,
12111     .CreateDisplayPlaneSurfaceKHR = terminator_CreateDisplayPlaneSurfaceKHR,
12112 
12113     // ---- VK_KHR_xlib_surface extension commands
12114 #if defined(VK_USE_PLATFORM_XLIB_KHR)
12115     .CreateXlibSurfaceKHR = terminator_CreateXlibSurfaceKHR,
12116 #endif // VK_USE_PLATFORM_XLIB_KHR
12117 #if defined(VK_USE_PLATFORM_XLIB_KHR)
12118     .GetPhysicalDeviceXlibPresentationSupportKHR = terminator_GetPhysicalDeviceXlibPresentationSupportKHR,
12119 #endif // VK_USE_PLATFORM_XLIB_KHR
12120 
12121     // ---- VK_KHR_xcb_surface extension commands
12122 #if defined(VK_USE_PLATFORM_XCB_KHR)
12123     .CreateXcbSurfaceKHR = terminator_CreateXcbSurfaceKHR,
12124 #endif // VK_USE_PLATFORM_XCB_KHR
12125 #if defined(VK_USE_PLATFORM_XCB_KHR)
12126     .GetPhysicalDeviceXcbPresentationSupportKHR = terminator_GetPhysicalDeviceXcbPresentationSupportKHR,
12127 #endif // VK_USE_PLATFORM_XCB_KHR
12128 
12129     // ---- VK_KHR_wayland_surface extension commands
12130 #if defined(VK_USE_PLATFORM_WAYLAND_KHR)
12131     .CreateWaylandSurfaceKHR = terminator_CreateWaylandSurfaceKHR,
12132 #endif // VK_USE_PLATFORM_WAYLAND_KHR
12133 #if defined(VK_USE_PLATFORM_WAYLAND_KHR)
12134     .GetPhysicalDeviceWaylandPresentationSupportKHR = terminator_GetPhysicalDeviceWaylandPresentationSupportKHR,
12135 #endif // VK_USE_PLATFORM_WAYLAND_KHR
12136 
12137     // ---- VK_KHR_android_surface extension commands
12138 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
12139     .CreateAndroidSurfaceKHR = terminator_CreateAndroidSurfaceKHR,
12140 #endif // VK_USE_PLATFORM_ANDROID_KHR
12141 
12142     // ---- VK_KHR_win32_surface extension commands
12143 #if defined(VK_USE_PLATFORM_WIN32_KHR)
12144     .CreateWin32SurfaceKHR = terminator_CreateWin32SurfaceKHR,
12145 #endif // VK_USE_PLATFORM_WIN32_KHR
12146 #if defined(VK_USE_PLATFORM_WIN32_KHR)
12147     .GetPhysicalDeviceWin32PresentationSupportKHR = terminator_GetPhysicalDeviceWin32PresentationSupportKHR,
12148 #endif // VK_USE_PLATFORM_WIN32_KHR
12149 
12150     // ---- VK_KHR_video_queue extension commands
12151     .GetPhysicalDeviceVideoCapabilitiesKHR = terminator_GetPhysicalDeviceVideoCapabilitiesKHR,
12152     .GetPhysicalDeviceVideoFormatPropertiesKHR = terminator_GetPhysicalDeviceVideoFormatPropertiesKHR,
12153 
12154     // ---- VK_KHR_get_physical_device_properties2 extension commands
12155     .GetPhysicalDeviceFeatures2KHR = terminator_GetPhysicalDeviceFeatures2,
12156     .GetPhysicalDeviceProperties2KHR = terminator_GetPhysicalDeviceProperties2,
12157     .GetPhysicalDeviceFormatProperties2KHR = terminator_GetPhysicalDeviceFormatProperties2,
12158     .GetPhysicalDeviceImageFormatProperties2KHR = terminator_GetPhysicalDeviceImageFormatProperties2,
12159     .GetPhysicalDeviceQueueFamilyProperties2KHR = terminator_GetPhysicalDeviceQueueFamilyProperties2,
12160     .GetPhysicalDeviceMemoryProperties2KHR = terminator_GetPhysicalDeviceMemoryProperties2,
12161     .GetPhysicalDeviceSparseImageFormatProperties2KHR = terminator_GetPhysicalDeviceSparseImageFormatProperties2,
12162 
12163     // ---- VK_KHR_device_group_creation extension commands
12164     .EnumeratePhysicalDeviceGroupsKHR = terminator_EnumeratePhysicalDeviceGroups,
12165 
12166     // ---- VK_KHR_external_memory_capabilities extension commands
12167     .GetPhysicalDeviceExternalBufferPropertiesKHR = terminator_GetPhysicalDeviceExternalBufferProperties,
12168 
12169     // ---- VK_KHR_external_semaphore_capabilities extension commands
12170     .GetPhysicalDeviceExternalSemaphorePropertiesKHR = terminator_GetPhysicalDeviceExternalSemaphoreProperties,
12171 
12172     // ---- VK_KHR_external_fence_capabilities extension commands
12173     .GetPhysicalDeviceExternalFencePropertiesKHR = terminator_GetPhysicalDeviceExternalFenceProperties,
12174 
12175     // ---- VK_KHR_performance_query extension commands
12176     .EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = terminator_EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR,
12177     .GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = terminator_GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR,
12178 
12179     // ---- VK_KHR_get_surface_capabilities2 extension commands
12180     .GetPhysicalDeviceSurfaceCapabilities2KHR = terminator_GetPhysicalDeviceSurfaceCapabilities2KHR,
12181     .GetPhysicalDeviceSurfaceFormats2KHR = terminator_GetPhysicalDeviceSurfaceFormats2KHR,
12182 
12183     // ---- VK_KHR_get_display_properties2 extension commands
12184     .GetPhysicalDeviceDisplayProperties2KHR = terminator_GetPhysicalDeviceDisplayProperties2KHR,
12185     .GetPhysicalDeviceDisplayPlaneProperties2KHR = terminator_GetPhysicalDeviceDisplayPlaneProperties2KHR,
12186     .GetDisplayModeProperties2KHR = terminator_GetDisplayModeProperties2KHR,
12187     .GetDisplayPlaneCapabilities2KHR = terminator_GetDisplayPlaneCapabilities2KHR,
12188 
12189     // ---- VK_KHR_fragment_shading_rate extension commands
12190     .GetPhysicalDeviceFragmentShadingRatesKHR = terminator_GetPhysicalDeviceFragmentShadingRatesKHR,
12191 
12192     // ---- VK_KHR_video_encode_queue extension commands
12193     .GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = terminator_GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR,
12194 
12195     // ---- VK_KHR_cooperative_matrix extension commands
12196     .GetPhysicalDeviceCooperativeMatrixPropertiesKHR = terminator_GetPhysicalDeviceCooperativeMatrixPropertiesKHR,
12197 
12198     // ---- VK_KHR_calibrated_timestamps extension commands
12199     .GetPhysicalDeviceCalibrateableTimeDomainsKHR = terminator_GetPhysicalDeviceCalibrateableTimeDomainsKHR,
12200 
12201     // ---- VK_EXT_debug_report extension commands
12202     .CreateDebugReportCallbackEXT = terminator_CreateDebugReportCallbackEXT,
12203     .DestroyDebugReportCallbackEXT = terminator_DestroyDebugReportCallbackEXT,
12204     .DebugReportMessageEXT = terminator_DebugReportMessageEXT,
12205 
12206     // ---- VK_GGP_stream_descriptor_surface extension commands
12207 #if defined(VK_USE_PLATFORM_GGP)
12208     .CreateStreamDescriptorSurfaceGGP = terminator_CreateStreamDescriptorSurfaceGGP,
12209 #endif // VK_USE_PLATFORM_GGP
12210 
12211     // ---- VK_NV_external_memory_capabilities extension commands
12212     .GetPhysicalDeviceExternalImageFormatPropertiesNV = terminator_GetPhysicalDeviceExternalImageFormatPropertiesNV,
12213 
12214     // ---- VK_NN_vi_surface extension commands
12215 #if defined(VK_USE_PLATFORM_VI_NN)
12216     .CreateViSurfaceNN = terminator_CreateViSurfaceNN,
12217 #endif // VK_USE_PLATFORM_VI_NN
12218 
12219     // ---- VK_EXT_direct_mode_display extension commands
12220     .ReleaseDisplayEXT = terminator_ReleaseDisplayEXT,
12221 
12222     // ---- VK_EXT_acquire_xlib_display extension commands
12223 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
12224     .AcquireXlibDisplayEXT = terminator_AcquireXlibDisplayEXT,
12225 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
12226 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
12227     .GetRandROutputDisplayEXT = terminator_GetRandROutputDisplayEXT,
12228 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
12229 
12230     // ---- VK_EXT_display_surface_counter extension commands
12231     .GetPhysicalDeviceSurfaceCapabilities2EXT = terminator_GetPhysicalDeviceSurfaceCapabilities2EXT,
12232 
12233     // ---- VK_MVK_ios_surface extension commands
12234 #if defined(VK_USE_PLATFORM_IOS_MVK)
12235     .CreateIOSSurfaceMVK = terminator_CreateIOSSurfaceMVK,
12236 #endif // VK_USE_PLATFORM_IOS_MVK
12237 
12238     // ---- VK_MVK_macos_surface extension commands
12239 #if defined(VK_USE_PLATFORM_MACOS_MVK)
12240     .CreateMacOSSurfaceMVK = terminator_CreateMacOSSurfaceMVK,
12241 #endif // VK_USE_PLATFORM_MACOS_MVK
12242 
12243     // ---- VK_EXT_debug_utils extension commands
12244     .CreateDebugUtilsMessengerEXT = terminator_CreateDebugUtilsMessengerEXT,
12245     .DestroyDebugUtilsMessengerEXT = terminator_DestroyDebugUtilsMessengerEXT,
12246     .SubmitDebugUtilsMessageEXT = terminator_SubmitDebugUtilsMessageEXT,
12247 
12248     // ---- VK_EXT_sample_locations extension commands
12249     .GetPhysicalDeviceMultisamplePropertiesEXT = terminator_GetPhysicalDeviceMultisamplePropertiesEXT,
12250 
12251     // ---- VK_EXT_calibrated_timestamps extension commands
12252     .GetPhysicalDeviceCalibrateableTimeDomainsEXT = terminator_GetPhysicalDeviceCalibrateableTimeDomainsEXT,
12253 
12254     // ---- VK_FUCHSIA_imagepipe_surface extension commands
12255 #if defined(VK_USE_PLATFORM_FUCHSIA)
12256     .CreateImagePipeSurfaceFUCHSIA = terminator_CreateImagePipeSurfaceFUCHSIA,
12257 #endif // VK_USE_PLATFORM_FUCHSIA
12258 
12259     // ---- VK_EXT_metal_surface extension commands
12260 #if defined(VK_USE_PLATFORM_METAL_EXT)
12261     .CreateMetalSurfaceEXT = terminator_CreateMetalSurfaceEXT,
12262 #endif // VK_USE_PLATFORM_METAL_EXT
12263 
12264     // ---- VK_EXT_tooling_info extension commands
12265     .GetPhysicalDeviceToolPropertiesEXT = terminator_GetPhysicalDeviceToolPropertiesEXT,
12266 
12267     // ---- VK_NV_cooperative_matrix extension commands
12268     .GetPhysicalDeviceCooperativeMatrixPropertiesNV = terminator_GetPhysicalDeviceCooperativeMatrixPropertiesNV,
12269 
12270     // ---- VK_NV_coverage_reduction_mode extension commands
12271     .GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = terminator_GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV,
12272 
12273     // ---- VK_EXT_full_screen_exclusive extension commands
12274 #if defined(VK_USE_PLATFORM_WIN32_KHR)
12275     .GetPhysicalDeviceSurfacePresentModes2EXT = terminator_GetPhysicalDeviceSurfacePresentModes2EXT,
12276 #endif // VK_USE_PLATFORM_WIN32_KHR
12277 
12278     // ---- VK_EXT_headless_surface extension commands
12279     .CreateHeadlessSurfaceEXT = terminator_CreateHeadlessSurfaceEXT,
12280 
12281     // ---- VK_EXT_acquire_drm_display extension commands
12282     .AcquireDrmDisplayEXT = terminator_AcquireDrmDisplayEXT,
12283     .GetDrmDisplayEXT = terminator_GetDrmDisplayEXT,
12284 
12285     // ---- VK_NV_acquire_winrt_display extension commands
12286 #if defined(VK_USE_PLATFORM_WIN32_KHR)
12287     .AcquireWinrtDisplayNV = terminator_AcquireWinrtDisplayNV,
12288 #endif // VK_USE_PLATFORM_WIN32_KHR
12289 #if defined(VK_USE_PLATFORM_WIN32_KHR)
12290     .GetWinrtDisplayNV = terminator_GetWinrtDisplayNV,
12291 #endif // VK_USE_PLATFORM_WIN32_KHR
12292 
12293     // ---- VK_EXT_directfb_surface extension commands
12294 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
12295     .CreateDirectFBSurfaceEXT = terminator_CreateDirectFBSurfaceEXT,
12296 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
12297 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
12298     .GetPhysicalDeviceDirectFBPresentationSupportEXT = terminator_GetPhysicalDeviceDirectFBPresentationSupportEXT,
12299 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
12300 
12301     // ---- VK_QNX_screen_surface extension commands
12302 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
12303     .CreateScreenSurfaceQNX = terminator_CreateScreenSurfaceQNX,
12304 #endif // VK_USE_PLATFORM_SCREEN_QNX
12305 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
12306     .GetPhysicalDeviceScreenPresentationSupportQNX = terminator_GetPhysicalDeviceScreenPresentationSupportQNX,
12307 #endif // VK_USE_PLATFORM_SCREEN_QNX
12308 
12309     // ---- VK_NV_optical_flow extension commands
12310     .GetPhysicalDeviceOpticalFlowImageFormatsNV = terminator_GetPhysicalDeviceOpticalFlowImageFormatsNV,
12311 
12312 #if defined(VK_USE_PLATFORM_OHOS)
12313     .CreateSurfaceOHOS = terminator_CreateSurfaceOHOS,
12314 #endif // VK_USE_PLATFORM_OHOS
12315 };
12316 
12317 // A null-terminated list of all of the instance extensions supported by the loader.
12318 // If an instance extension name is not in this list, but it is exported by one or more of the
12319 // ICDs detected by the loader, then the extension name not in the list will be filtered out
12320 // before passing the list of extensions to the application.
12321 const char *const LOADER_INSTANCE_EXTENSIONS[] = {
12322                                                   VK_KHR_SURFACE_EXTENSION_NAME,
12323                                                   VK_KHR_DISPLAY_EXTENSION_NAME,
12324 #if defined(VK_USE_PLATFORM_XLIB_KHR)
12325                                                   VK_KHR_XLIB_SURFACE_EXTENSION_NAME,
12326 #endif // VK_USE_PLATFORM_XLIB_KHR
12327 #if defined(VK_USE_PLATFORM_XCB_KHR)
12328                                                   VK_KHR_XCB_SURFACE_EXTENSION_NAME,
12329 #endif // VK_USE_PLATFORM_XCB_KHR
12330 #if defined(VK_USE_PLATFORM_WAYLAND_KHR)
12331                                                   VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME,
12332 #endif // VK_USE_PLATFORM_WAYLAND_KHR
12333 #if defined(VK_USE_PLATFORM_WIN32_KHR)
12334                                                   VK_KHR_WIN32_SURFACE_EXTENSION_NAME,
12335 #endif // VK_USE_PLATFORM_WIN32_KHR
12336                                                   VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME,
12337                                                   VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME,
12338                                                   VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
12339                                                   VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME,
12340                                                   VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME,
12341                                                   VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME,
12342                                                   VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME,
12343                                                   VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME,
12344                                                   VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,
12345                                                   VK_EXT_DEBUG_REPORT_EXTENSION_NAME,
12346 #if defined(VK_USE_PLATFORM_GGP)
12347                                                   VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME,
12348 #endif // VK_USE_PLATFORM_GGP
12349                                                   VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
12350                                                   VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME,
12351 #if defined(VK_USE_PLATFORM_VI_NN)
12352                                                   VK_NN_VI_SURFACE_EXTENSION_NAME,
12353 #endif // VK_USE_PLATFORM_VI_NN
12354                                                   VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME,
12355 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
12356                                                   VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME,
12357 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
12358                                                   VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME,
12359                                                   VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME,
12360 #if defined(VK_USE_PLATFORM_IOS_MVK)
12361                                                   VK_MVK_IOS_SURFACE_EXTENSION_NAME,
12362 #endif // VK_USE_PLATFORM_IOS_MVK
12363 #if defined(VK_USE_PLATFORM_MACOS_MVK)
12364                                                   VK_MVK_MACOS_SURFACE_EXTENSION_NAME,
12365 #endif // VK_USE_PLATFORM_MACOS_MVK
12366                                                   VK_EXT_DEBUG_UTILS_EXTENSION_NAME,
12367 #if defined(VK_USE_PLATFORM_FUCHSIA)
12368                                                   VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME,
12369 #endif // VK_USE_PLATFORM_FUCHSIA
12370 #if defined(VK_USE_PLATFORM_METAL_EXT)
12371                                                   VK_EXT_METAL_SURFACE_EXTENSION_NAME,
12372 #endif // VK_USE_PLATFORM_METAL_EXT
12373                                                   VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME,
12374                                                   VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME,
12375                                                   VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME,
12376                                                   VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME,
12377 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
12378                                                   VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME,
12379 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
12380 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
12381                                                   VK_QNX_SCREEN_SURFACE_EXTENSION_NAME,
12382 #endif // VK_USE_PLATFORM_SCREEN_QNX
12383                                                   VK_GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME,
12384                                                   VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME,
12385                                                   VK_EXT_LAYER_SETTINGS_EXTENSION_NAME,
12386 #if defined(VK_USE_PLATFORM_OHOS)
12387                                                   VK_OHOS_SURFACE_EXTENSION_NAME,
12388 #endif // VK_USE_PLATFORM_OHOS
12389                                                   NULL };
12390 // clang-format on
12391