• 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 "loader.h"
32 #include "vk_loader_extensions.h"
33 #include <vulkan/vk_icd.h>
34 #include "wsi.h"
35 #include "debug_utils.h"
36 #include "extension_manual.h"
37 
38 // Device extension error function
vkDevExtError(VkDevice dev)39 VKAPI_ATTR VkResult VKAPI_CALL vkDevExtError(VkDevice dev) {
40     struct loader_device *found_dev;
41     // The device going in is a trampoline device
42     struct loader_icd_term *icd_term = loader_get_icd_and_device(dev, &found_dev);
43 
44     if (icd_term)
45         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
46                    "Bad destination in loader trampoline dispatch,"
47                    "Are layers and extensions that you are calling enabled?");
48     return VK_ERROR_EXTENSION_NOT_PRESENT;
49 }
50 
loader_icd_init_entries(struct loader_instance * inst,struct loader_icd_term * icd_term)51 VKAPI_ATTR bool VKAPI_CALL loader_icd_init_entries(struct loader_instance* inst, struct loader_icd_term *icd_term) {
52     const PFN_vkGetInstanceProcAddr fp_gipa = icd_term->scanned_icd->GetInstanceProcAddr;
53 
54 #define LOOKUP_GIPA(func) icd_term->dispatch.func = (PFN_vk##func)fp_gipa(icd_term->instance, "vk" #func);
55 
56 #define LOOKUP_REQUIRED_GIPA(func)                                                      \
57     do {                                                                                \
58         LOOKUP_GIPA(func);                                                              \
59         if (!icd_term->dispatch.func) {                                                 \
60             loader_log(inst, VULKAN_LOADER_WARN_BIT, 0, "Unable to load %s from ICD %s",\
61                        "vk"#func, icd_term->scanned_icd->lib_name);                     \
62             return false;                                                               \
63         }                                                                               \
64     } while (0)
65 
66 
67     // ---- Core Vulkan 1.0
68     LOOKUP_REQUIRED_GIPA(DestroyInstance);
69     LOOKUP_REQUIRED_GIPA(EnumeratePhysicalDevices);
70     LOOKUP_REQUIRED_GIPA(GetPhysicalDeviceFeatures);
71     LOOKUP_REQUIRED_GIPA(GetPhysicalDeviceFormatProperties);
72     LOOKUP_REQUIRED_GIPA(GetPhysicalDeviceImageFormatProperties);
73     LOOKUP_REQUIRED_GIPA(GetPhysicalDeviceProperties);
74     LOOKUP_REQUIRED_GIPA(GetPhysicalDeviceQueueFamilyProperties);
75     LOOKUP_REQUIRED_GIPA(GetPhysicalDeviceMemoryProperties);
76     LOOKUP_REQUIRED_GIPA(GetDeviceProcAddr);
77     LOOKUP_REQUIRED_GIPA(CreateDevice);
78     LOOKUP_REQUIRED_GIPA(EnumerateDeviceExtensionProperties);
79     LOOKUP_REQUIRED_GIPA(GetPhysicalDeviceSparseImageFormatProperties);
80 
81     // ---- Core Vulkan 1.1
82     LOOKUP_GIPA(EnumeratePhysicalDeviceGroups);
83     LOOKUP_GIPA(GetPhysicalDeviceFeatures2);
84     LOOKUP_GIPA(GetPhysicalDeviceProperties2);
85     LOOKUP_GIPA(GetPhysicalDeviceFormatProperties2);
86     LOOKUP_GIPA(GetPhysicalDeviceImageFormatProperties2);
87     LOOKUP_GIPA(GetPhysicalDeviceQueueFamilyProperties2);
88     LOOKUP_GIPA(GetPhysicalDeviceMemoryProperties2);
89     LOOKUP_GIPA(GetPhysicalDeviceSparseImageFormatProperties2);
90     LOOKUP_GIPA(GetPhysicalDeviceExternalBufferProperties);
91     LOOKUP_GIPA(GetPhysicalDeviceExternalFenceProperties);
92     LOOKUP_GIPA(GetPhysicalDeviceExternalSemaphoreProperties);
93 
94     // ---- Core Vulkan 1.3
95     LOOKUP_GIPA(GetPhysicalDeviceToolProperties);
96 
97     // ---- VK_KHR_surface extension commands
98     LOOKUP_GIPA(DestroySurfaceKHR);
99     LOOKUP_GIPA(GetPhysicalDeviceSurfaceSupportKHR);
100     LOOKUP_GIPA(GetPhysicalDeviceSurfaceCapabilitiesKHR);
101     LOOKUP_GIPA(GetPhysicalDeviceSurfaceFormatsKHR);
102     LOOKUP_GIPA(GetPhysicalDeviceSurfacePresentModesKHR);
103 
104     // ---- VK_KHR_swapchain extension commands
105     LOOKUP_GIPA(GetPhysicalDevicePresentRectanglesKHR);
106 
107     // ---- VK_KHR_display extension commands
108     LOOKUP_GIPA(GetPhysicalDeviceDisplayPropertiesKHR);
109     LOOKUP_GIPA(GetPhysicalDeviceDisplayPlanePropertiesKHR);
110     LOOKUP_GIPA(GetDisplayPlaneSupportedDisplaysKHR);
111     LOOKUP_GIPA(GetDisplayModePropertiesKHR);
112     LOOKUP_GIPA(CreateDisplayModeKHR);
113     LOOKUP_GIPA(GetDisplayPlaneCapabilitiesKHR);
114     LOOKUP_GIPA(CreateDisplayPlaneSurfaceKHR);
115 
116     // ---- VK_KHR_xlib_surface extension commands
117 #if defined(VK_USE_PLATFORM_XLIB_KHR)
118     LOOKUP_GIPA(CreateXlibSurfaceKHR);
119 #endif // VK_USE_PLATFORM_XLIB_KHR
120 #if defined(VK_USE_PLATFORM_XLIB_KHR)
121     LOOKUP_GIPA(GetPhysicalDeviceXlibPresentationSupportKHR);
122 #endif // VK_USE_PLATFORM_XLIB_KHR
123 
124     // ---- VK_KHR_xcb_surface extension commands
125 #if defined(VK_USE_PLATFORM_XCB_KHR)
126     LOOKUP_GIPA(CreateXcbSurfaceKHR);
127 #endif // VK_USE_PLATFORM_XCB_KHR
128 #if defined(VK_USE_PLATFORM_XCB_KHR)
129     LOOKUP_GIPA(GetPhysicalDeviceXcbPresentationSupportKHR);
130 #endif // VK_USE_PLATFORM_XCB_KHR
131 
132     // ---- VK_KHR_wayland_surface extension commands
133 #if defined(VK_USE_PLATFORM_WAYLAND_KHR)
134     LOOKUP_GIPA(CreateWaylandSurfaceKHR);
135 #endif // VK_USE_PLATFORM_WAYLAND_KHR
136 #if defined(VK_USE_PLATFORM_WAYLAND_KHR)
137     LOOKUP_GIPA(GetPhysicalDeviceWaylandPresentationSupportKHR);
138 #endif // VK_USE_PLATFORM_WAYLAND_KHR
139 
140     // ---- VK_KHR_android_surface extension commands
141 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
142     LOOKUP_GIPA(CreateAndroidSurfaceKHR);
143 #endif // VK_USE_PLATFORM_ANDROID_KHR
144 
145     // ---- VK_KHR_win32_surface extension commands
146 #if defined(VK_USE_PLATFORM_WIN32_KHR)
147     LOOKUP_GIPA(CreateWin32SurfaceKHR);
148 #endif // VK_USE_PLATFORM_WIN32_KHR
149 #if defined(VK_USE_PLATFORM_WIN32_KHR)
150     LOOKUP_GIPA(GetPhysicalDeviceWin32PresentationSupportKHR);
151 #endif // VK_USE_PLATFORM_WIN32_KHR
152 
153     // ---- VK_KHR_video_queue extension commands
154     LOOKUP_GIPA(GetPhysicalDeviceVideoCapabilitiesKHR);
155     LOOKUP_GIPA(GetPhysicalDeviceVideoFormatPropertiesKHR);
156 
157     // ---- VK_KHR_get_physical_device_properties2 extension commands
158     LOOKUP_GIPA(GetPhysicalDeviceFeatures2KHR);
159     LOOKUP_GIPA(GetPhysicalDeviceProperties2KHR);
160     LOOKUP_GIPA(GetPhysicalDeviceFormatProperties2KHR);
161     LOOKUP_GIPA(GetPhysicalDeviceImageFormatProperties2KHR);
162     LOOKUP_GIPA(GetPhysicalDeviceQueueFamilyProperties2KHR);
163     LOOKUP_GIPA(GetPhysicalDeviceMemoryProperties2KHR);
164     LOOKUP_GIPA(GetPhysicalDeviceSparseImageFormatProperties2KHR);
165 
166     // ---- VK_KHR_device_group_creation extension commands
167     LOOKUP_GIPA(EnumeratePhysicalDeviceGroupsKHR);
168 
169     // ---- VK_KHR_external_memory_capabilities extension commands
170     LOOKUP_GIPA(GetPhysicalDeviceExternalBufferPropertiesKHR);
171 
172     // ---- VK_KHR_external_semaphore_capabilities extension commands
173     LOOKUP_GIPA(GetPhysicalDeviceExternalSemaphorePropertiesKHR);
174 
175     // ---- VK_KHR_external_fence_capabilities extension commands
176     LOOKUP_GIPA(GetPhysicalDeviceExternalFencePropertiesKHR);
177 
178     // ---- VK_KHR_performance_query extension commands
179     LOOKUP_GIPA(EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR);
180     LOOKUP_GIPA(GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR);
181 
182     // ---- VK_KHR_get_surface_capabilities2 extension commands
183     LOOKUP_GIPA(GetPhysicalDeviceSurfaceCapabilities2KHR);
184     LOOKUP_GIPA(GetPhysicalDeviceSurfaceFormats2KHR);
185 
186     // ---- VK_KHR_get_display_properties2 extension commands
187     LOOKUP_GIPA(GetPhysicalDeviceDisplayProperties2KHR);
188     LOOKUP_GIPA(GetPhysicalDeviceDisplayPlaneProperties2KHR);
189     LOOKUP_GIPA(GetDisplayModeProperties2KHR);
190     LOOKUP_GIPA(GetDisplayPlaneCapabilities2KHR);
191 
192     // ---- VK_KHR_fragment_shading_rate extension commands
193     LOOKUP_GIPA(GetPhysicalDeviceFragmentShadingRatesKHR);
194 
195     // ---- VK_KHR_video_encode_queue extension commands
196     LOOKUP_GIPA(GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR);
197 
198     // ---- VK_KHR_cooperative_matrix extension commands
199     LOOKUP_GIPA(GetPhysicalDeviceCooperativeMatrixPropertiesKHR);
200 
201     // ---- VK_KHR_calibrated_timestamps extension commands
202     LOOKUP_GIPA(GetPhysicalDeviceCalibrateableTimeDomainsKHR);
203 
204     // ---- VK_EXT_debug_report extension commands
205     LOOKUP_GIPA(CreateDebugReportCallbackEXT);
206     LOOKUP_GIPA(DestroyDebugReportCallbackEXT);
207     LOOKUP_GIPA(DebugReportMessageEXT);
208 
209     // ---- VK_GGP_stream_descriptor_surface extension commands
210 #if defined(VK_USE_PLATFORM_GGP)
211     LOOKUP_GIPA(CreateStreamDescriptorSurfaceGGP);
212 #endif // VK_USE_PLATFORM_GGP
213 
214     // ---- VK_NV_external_memory_capabilities extension commands
215     LOOKUP_GIPA(GetPhysicalDeviceExternalImageFormatPropertiesNV);
216 
217     // ---- VK_NN_vi_surface extension commands
218 #if defined(VK_USE_PLATFORM_VI_NN)
219     LOOKUP_GIPA(CreateViSurfaceNN);
220 #endif // VK_USE_PLATFORM_VI_NN
221 
222     // ---- VK_EXT_direct_mode_display extension commands
223     LOOKUP_GIPA(ReleaseDisplayEXT);
224 
225     // ---- VK_EXT_acquire_xlib_display extension commands
226 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
227     LOOKUP_GIPA(AcquireXlibDisplayEXT);
228 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
229 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
230     LOOKUP_GIPA(GetRandROutputDisplayEXT);
231 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
232 
233     // ---- VK_EXT_display_surface_counter extension commands
234     LOOKUP_GIPA(GetPhysicalDeviceSurfaceCapabilities2EXT);
235 
236     // ---- VK_MVK_ios_surface extension commands
237 #if defined(VK_USE_PLATFORM_IOS_MVK)
238     LOOKUP_GIPA(CreateIOSSurfaceMVK);
239 #endif // VK_USE_PLATFORM_IOS_MVK
240 
241     // ---- VK_MVK_macos_surface extension commands
242 #if defined(VK_USE_PLATFORM_MACOS_MVK)
243     LOOKUP_GIPA(CreateMacOSSurfaceMVK);
244 #endif // VK_USE_PLATFORM_MACOS_MVK
245 
246     // ---- VK_EXT_debug_utils extension commands
247     LOOKUP_GIPA(CreateDebugUtilsMessengerEXT);
248     LOOKUP_GIPA(DestroyDebugUtilsMessengerEXT);
249     LOOKUP_GIPA(SubmitDebugUtilsMessageEXT);
250 
251     // ---- VK_EXT_sample_locations extension commands
252     LOOKUP_GIPA(GetPhysicalDeviceMultisamplePropertiesEXT);
253 
254     // ---- VK_EXT_calibrated_timestamps extension commands
255     LOOKUP_GIPA(GetPhysicalDeviceCalibrateableTimeDomainsEXT);
256 
257     // ---- VK_FUCHSIA_imagepipe_surface extension commands
258 #if defined(VK_USE_PLATFORM_FUCHSIA)
259     LOOKUP_GIPA(CreateImagePipeSurfaceFUCHSIA);
260 #endif // VK_USE_PLATFORM_FUCHSIA
261 
262     // ---- VK_EXT_metal_surface extension commands
263 #if defined(VK_USE_PLATFORM_METAL_EXT)
264     LOOKUP_GIPA(CreateMetalSurfaceEXT);
265 #endif // VK_USE_PLATFORM_METAL_EXT
266 
267     // ---- VK_EXT_tooling_info extension commands
268     LOOKUP_GIPA(GetPhysicalDeviceToolPropertiesEXT);
269 
270     // ---- VK_NV_cooperative_matrix extension commands
271     LOOKUP_GIPA(GetPhysicalDeviceCooperativeMatrixPropertiesNV);
272 
273     // ---- VK_NV_coverage_reduction_mode extension commands
274     LOOKUP_GIPA(GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV);
275 
276     // ---- VK_EXT_full_screen_exclusive extension commands
277 #if defined(VK_USE_PLATFORM_WIN32_KHR)
278     LOOKUP_GIPA(GetPhysicalDeviceSurfacePresentModes2EXT);
279 #endif // VK_USE_PLATFORM_WIN32_KHR
280 
281     // ---- VK_EXT_headless_surface extension commands
282     LOOKUP_GIPA(CreateHeadlessSurfaceEXT);
283 
284     // ---- VK_EXT_acquire_drm_display extension commands
285     LOOKUP_GIPA(AcquireDrmDisplayEXT);
286     LOOKUP_GIPA(GetDrmDisplayEXT);
287 
288     // ---- VK_NV_acquire_winrt_display extension commands
289 #if defined(VK_USE_PLATFORM_WIN32_KHR)
290     LOOKUP_GIPA(AcquireWinrtDisplayNV);
291 #endif // VK_USE_PLATFORM_WIN32_KHR
292 #if defined(VK_USE_PLATFORM_WIN32_KHR)
293     LOOKUP_GIPA(GetWinrtDisplayNV);
294 #endif // VK_USE_PLATFORM_WIN32_KHR
295 
296     // ---- VK_EXT_directfb_surface extension commands
297 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
298     LOOKUP_GIPA(CreateDirectFBSurfaceEXT);
299 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
300 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
301     LOOKUP_GIPA(GetPhysicalDeviceDirectFBPresentationSupportEXT);
302 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
303 
304     // ---- VK_QNX_screen_surface extension commands
305 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
306     LOOKUP_GIPA(CreateScreenSurfaceQNX);
307 #endif // VK_USE_PLATFORM_SCREEN_QNX
308 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
309     LOOKUP_GIPA(GetPhysicalDeviceScreenPresentationSupportQNX);
310 #endif // VK_USE_PLATFORM_SCREEN_QNX
311 
312     // ---- VK_NV_optical_flow extension commands
313     LOOKUP_GIPA(GetPhysicalDeviceOpticalFlowImageFormatsNV);
314 
315     // ---- VK_OHOS_surface extension commands
316 #if defined(VK_USE_PLATFORM_OHOS)
317     LOOKUP_GIPA(CreateSurfaceOHOS);
318 #endif // VK_USE_PLATFORM_OHOS
319 
320     // ---- VK_NV_cooperative_vector extension commands
321     LOOKUP_GIPA(GetPhysicalDeviceCooperativeVectorPropertiesNV);
322 
323     // ---- VK_NV_cooperative_matrix2 extension commands
324     LOOKUP_GIPA(GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV);
325 
326 #undef LOOKUP_REQUIRED_GIPA
327 #undef LOOKUP_GIPA
328 
329     return true;
330 };
331 
332 // 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)333 VKAPI_ATTR void VKAPI_CALL loader_init_device_dispatch_table(struct loader_dev_dispatch_table *dev_table, PFN_vkGetDeviceProcAddr gpa,
334                                                              VkDevice dev) {
335     VkLayerDispatchTable *table = &dev_table->core_dispatch;
336     if (table->magic != DEVICE_DISP_TABLE_MAGIC_NUMBER) { abort(); }
337     for (uint32_t i = 0; i < MAX_NUM_UNKNOWN_EXTS; i++) dev_table->ext_dispatch[i] = (PFN_vkDevExt)vkDevExtError;
338 
339     // ---- Core Vulkan 1.0 commands
340     table->GetDeviceProcAddr = gpa;
341     table->DestroyDevice = (PFN_vkDestroyDevice)gpa(dev, "vkDestroyDevice");
342     table->GetDeviceQueue = (PFN_vkGetDeviceQueue)gpa(dev, "vkGetDeviceQueue");
343     table->QueueSubmit = (PFN_vkQueueSubmit)gpa(dev, "vkQueueSubmit");
344     table->QueueWaitIdle = (PFN_vkQueueWaitIdle)gpa(dev, "vkQueueWaitIdle");
345     table->DeviceWaitIdle = (PFN_vkDeviceWaitIdle)gpa(dev, "vkDeviceWaitIdle");
346     table->AllocateMemory = (PFN_vkAllocateMemory)gpa(dev, "vkAllocateMemory");
347     table->FreeMemory = (PFN_vkFreeMemory)gpa(dev, "vkFreeMemory");
348     table->MapMemory = (PFN_vkMapMemory)gpa(dev, "vkMapMemory");
349     table->UnmapMemory = (PFN_vkUnmapMemory)gpa(dev, "vkUnmapMemory");
350     table->FlushMappedMemoryRanges = (PFN_vkFlushMappedMemoryRanges)gpa(dev, "vkFlushMappedMemoryRanges");
351     table->InvalidateMappedMemoryRanges = (PFN_vkInvalidateMappedMemoryRanges)gpa(dev, "vkInvalidateMappedMemoryRanges");
352     table->GetDeviceMemoryCommitment = (PFN_vkGetDeviceMemoryCommitment)gpa(dev, "vkGetDeviceMemoryCommitment");
353     table->BindBufferMemory = (PFN_vkBindBufferMemory)gpa(dev, "vkBindBufferMemory");
354     table->BindImageMemory = (PFN_vkBindImageMemory)gpa(dev, "vkBindImageMemory");
355     table->GetBufferMemoryRequirements = (PFN_vkGetBufferMemoryRequirements)gpa(dev, "vkGetBufferMemoryRequirements");
356     table->GetImageMemoryRequirements = (PFN_vkGetImageMemoryRequirements)gpa(dev, "vkGetImageMemoryRequirements");
357     table->GetImageSparseMemoryRequirements = (PFN_vkGetImageSparseMemoryRequirements)gpa(dev, "vkGetImageSparseMemoryRequirements");
358     table->QueueBindSparse = (PFN_vkQueueBindSparse)gpa(dev, "vkQueueBindSparse");
359     table->CreateFence = (PFN_vkCreateFence)gpa(dev, "vkCreateFence");
360     table->DestroyFence = (PFN_vkDestroyFence)gpa(dev, "vkDestroyFence");
361     table->ResetFences = (PFN_vkResetFences)gpa(dev, "vkResetFences");
362     table->GetFenceStatus = (PFN_vkGetFenceStatus)gpa(dev, "vkGetFenceStatus");
363     table->WaitForFences = (PFN_vkWaitForFences)gpa(dev, "vkWaitForFences");
364     table->CreateSemaphore = (PFN_vkCreateSemaphore)gpa(dev, "vkCreateSemaphore");
365     table->DestroySemaphore = (PFN_vkDestroySemaphore)gpa(dev, "vkDestroySemaphore");
366     table->CreateEvent = (PFN_vkCreateEvent)gpa(dev, "vkCreateEvent");
367     table->DestroyEvent = (PFN_vkDestroyEvent)gpa(dev, "vkDestroyEvent");
368     table->GetEventStatus = (PFN_vkGetEventStatus)gpa(dev, "vkGetEventStatus");
369     table->SetEvent = (PFN_vkSetEvent)gpa(dev, "vkSetEvent");
370     table->ResetEvent = (PFN_vkResetEvent)gpa(dev, "vkResetEvent");
371     table->CreateQueryPool = (PFN_vkCreateQueryPool)gpa(dev, "vkCreateQueryPool");
372     table->DestroyQueryPool = (PFN_vkDestroyQueryPool)gpa(dev, "vkDestroyQueryPool");
373     table->GetQueryPoolResults = (PFN_vkGetQueryPoolResults)gpa(dev, "vkGetQueryPoolResults");
374     table->CreateBuffer = (PFN_vkCreateBuffer)gpa(dev, "vkCreateBuffer");
375     table->DestroyBuffer = (PFN_vkDestroyBuffer)gpa(dev, "vkDestroyBuffer");
376     table->CreateBufferView = (PFN_vkCreateBufferView)gpa(dev, "vkCreateBufferView");
377     table->DestroyBufferView = (PFN_vkDestroyBufferView)gpa(dev, "vkDestroyBufferView");
378     table->CreateImage = (PFN_vkCreateImage)gpa(dev, "vkCreateImage");
379     table->DestroyImage = (PFN_vkDestroyImage)gpa(dev, "vkDestroyImage");
380     table->GetImageSubresourceLayout = (PFN_vkGetImageSubresourceLayout)gpa(dev, "vkGetImageSubresourceLayout");
381     table->CreateImageView = (PFN_vkCreateImageView)gpa(dev, "vkCreateImageView");
382     table->DestroyImageView = (PFN_vkDestroyImageView)gpa(dev, "vkDestroyImageView");
383     table->CreateShaderModule = (PFN_vkCreateShaderModule)gpa(dev, "vkCreateShaderModule");
384     table->DestroyShaderModule = (PFN_vkDestroyShaderModule)gpa(dev, "vkDestroyShaderModule");
385     table->CreatePipelineCache = (PFN_vkCreatePipelineCache)gpa(dev, "vkCreatePipelineCache");
386     table->DestroyPipelineCache = (PFN_vkDestroyPipelineCache)gpa(dev, "vkDestroyPipelineCache");
387     table->GetPipelineCacheData = (PFN_vkGetPipelineCacheData)gpa(dev, "vkGetPipelineCacheData");
388     table->MergePipelineCaches = (PFN_vkMergePipelineCaches)gpa(dev, "vkMergePipelineCaches");
389     table->CreateGraphicsPipelines = (PFN_vkCreateGraphicsPipelines)gpa(dev, "vkCreateGraphicsPipelines");
390     table->CreateComputePipelines = (PFN_vkCreateComputePipelines)gpa(dev, "vkCreateComputePipelines");
391     table->DestroyPipeline = (PFN_vkDestroyPipeline)gpa(dev, "vkDestroyPipeline");
392     table->CreatePipelineLayout = (PFN_vkCreatePipelineLayout)gpa(dev, "vkCreatePipelineLayout");
393     table->DestroyPipelineLayout = (PFN_vkDestroyPipelineLayout)gpa(dev, "vkDestroyPipelineLayout");
394     table->CreateSampler = (PFN_vkCreateSampler)gpa(dev, "vkCreateSampler");
395     table->DestroySampler = (PFN_vkDestroySampler)gpa(dev, "vkDestroySampler");
396     table->CreateDescriptorSetLayout = (PFN_vkCreateDescriptorSetLayout)gpa(dev, "vkCreateDescriptorSetLayout");
397     table->DestroyDescriptorSetLayout = (PFN_vkDestroyDescriptorSetLayout)gpa(dev, "vkDestroyDescriptorSetLayout");
398     table->CreateDescriptorPool = (PFN_vkCreateDescriptorPool)gpa(dev, "vkCreateDescriptorPool");
399     table->DestroyDescriptorPool = (PFN_vkDestroyDescriptorPool)gpa(dev, "vkDestroyDescriptorPool");
400     table->ResetDescriptorPool = (PFN_vkResetDescriptorPool)gpa(dev, "vkResetDescriptorPool");
401     table->AllocateDescriptorSets = (PFN_vkAllocateDescriptorSets)gpa(dev, "vkAllocateDescriptorSets");
402     table->FreeDescriptorSets = (PFN_vkFreeDescriptorSets)gpa(dev, "vkFreeDescriptorSets");
403     table->UpdateDescriptorSets = (PFN_vkUpdateDescriptorSets)gpa(dev, "vkUpdateDescriptorSets");
404     table->CreateFramebuffer = (PFN_vkCreateFramebuffer)gpa(dev, "vkCreateFramebuffer");
405     table->DestroyFramebuffer = (PFN_vkDestroyFramebuffer)gpa(dev, "vkDestroyFramebuffer");
406     table->CreateRenderPass = (PFN_vkCreateRenderPass)gpa(dev, "vkCreateRenderPass");
407     table->DestroyRenderPass = (PFN_vkDestroyRenderPass)gpa(dev, "vkDestroyRenderPass");
408     table->GetRenderAreaGranularity = (PFN_vkGetRenderAreaGranularity)gpa(dev, "vkGetRenderAreaGranularity");
409     table->CreateCommandPool = (PFN_vkCreateCommandPool)gpa(dev, "vkCreateCommandPool");
410     table->DestroyCommandPool = (PFN_vkDestroyCommandPool)gpa(dev, "vkDestroyCommandPool");
411     table->ResetCommandPool = (PFN_vkResetCommandPool)gpa(dev, "vkResetCommandPool");
412     table->AllocateCommandBuffers = (PFN_vkAllocateCommandBuffers)gpa(dev, "vkAllocateCommandBuffers");
413     table->FreeCommandBuffers = (PFN_vkFreeCommandBuffers)gpa(dev, "vkFreeCommandBuffers");
414     table->BeginCommandBuffer = (PFN_vkBeginCommandBuffer)gpa(dev, "vkBeginCommandBuffer");
415     table->EndCommandBuffer = (PFN_vkEndCommandBuffer)gpa(dev, "vkEndCommandBuffer");
416     table->ResetCommandBuffer = (PFN_vkResetCommandBuffer)gpa(dev, "vkResetCommandBuffer");
417     table->CmdBindPipeline = (PFN_vkCmdBindPipeline)gpa(dev, "vkCmdBindPipeline");
418     table->CmdSetViewport = (PFN_vkCmdSetViewport)gpa(dev, "vkCmdSetViewport");
419     table->CmdSetScissor = (PFN_vkCmdSetScissor)gpa(dev, "vkCmdSetScissor");
420     table->CmdSetLineWidth = (PFN_vkCmdSetLineWidth)gpa(dev, "vkCmdSetLineWidth");
421     table->CmdSetDepthBias = (PFN_vkCmdSetDepthBias)gpa(dev, "vkCmdSetDepthBias");
422     table->CmdSetBlendConstants = (PFN_vkCmdSetBlendConstants)gpa(dev, "vkCmdSetBlendConstants");
423     table->CmdSetDepthBounds = (PFN_vkCmdSetDepthBounds)gpa(dev, "vkCmdSetDepthBounds");
424     table->CmdSetStencilCompareMask = (PFN_vkCmdSetStencilCompareMask)gpa(dev, "vkCmdSetStencilCompareMask");
425     table->CmdSetStencilWriteMask = (PFN_vkCmdSetStencilWriteMask)gpa(dev, "vkCmdSetStencilWriteMask");
426     table->CmdSetStencilReference = (PFN_vkCmdSetStencilReference)gpa(dev, "vkCmdSetStencilReference");
427     table->CmdBindDescriptorSets = (PFN_vkCmdBindDescriptorSets)gpa(dev, "vkCmdBindDescriptorSets");
428     table->CmdBindIndexBuffer = (PFN_vkCmdBindIndexBuffer)gpa(dev, "vkCmdBindIndexBuffer");
429     table->CmdBindVertexBuffers = (PFN_vkCmdBindVertexBuffers)gpa(dev, "vkCmdBindVertexBuffers");
430     table->CmdDraw = (PFN_vkCmdDraw)gpa(dev, "vkCmdDraw");
431     table->CmdDrawIndexed = (PFN_vkCmdDrawIndexed)gpa(dev, "vkCmdDrawIndexed");
432     table->CmdDrawIndirect = (PFN_vkCmdDrawIndirect)gpa(dev, "vkCmdDrawIndirect");
433     table->CmdDrawIndexedIndirect = (PFN_vkCmdDrawIndexedIndirect)gpa(dev, "vkCmdDrawIndexedIndirect");
434     table->CmdDispatch = (PFN_vkCmdDispatch)gpa(dev, "vkCmdDispatch");
435     table->CmdDispatchIndirect = (PFN_vkCmdDispatchIndirect)gpa(dev, "vkCmdDispatchIndirect");
436     table->CmdCopyBuffer = (PFN_vkCmdCopyBuffer)gpa(dev, "vkCmdCopyBuffer");
437     table->CmdCopyImage = (PFN_vkCmdCopyImage)gpa(dev, "vkCmdCopyImage");
438     table->CmdBlitImage = (PFN_vkCmdBlitImage)gpa(dev, "vkCmdBlitImage");
439     table->CmdCopyBufferToImage = (PFN_vkCmdCopyBufferToImage)gpa(dev, "vkCmdCopyBufferToImage");
440     table->CmdCopyImageToBuffer = (PFN_vkCmdCopyImageToBuffer)gpa(dev, "vkCmdCopyImageToBuffer");
441     table->CmdUpdateBuffer = (PFN_vkCmdUpdateBuffer)gpa(dev, "vkCmdUpdateBuffer");
442     table->CmdFillBuffer = (PFN_vkCmdFillBuffer)gpa(dev, "vkCmdFillBuffer");
443     table->CmdClearColorImage = (PFN_vkCmdClearColorImage)gpa(dev, "vkCmdClearColorImage");
444     table->CmdClearDepthStencilImage = (PFN_vkCmdClearDepthStencilImage)gpa(dev, "vkCmdClearDepthStencilImage");
445     table->CmdClearAttachments = (PFN_vkCmdClearAttachments)gpa(dev, "vkCmdClearAttachments");
446     table->CmdResolveImage = (PFN_vkCmdResolveImage)gpa(dev, "vkCmdResolveImage");
447     table->CmdSetEvent = (PFN_vkCmdSetEvent)gpa(dev, "vkCmdSetEvent");
448     table->CmdResetEvent = (PFN_vkCmdResetEvent)gpa(dev, "vkCmdResetEvent");
449     table->CmdWaitEvents = (PFN_vkCmdWaitEvents)gpa(dev, "vkCmdWaitEvents");
450     table->CmdPipelineBarrier = (PFN_vkCmdPipelineBarrier)gpa(dev, "vkCmdPipelineBarrier");
451     table->CmdBeginQuery = (PFN_vkCmdBeginQuery)gpa(dev, "vkCmdBeginQuery");
452     table->CmdEndQuery = (PFN_vkCmdEndQuery)gpa(dev, "vkCmdEndQuery");
453     table->CmdResetQueryPool = (PFN_vkCmdResetQueryPool)gpa(dev, "vkCmdResetQueryPool");
454     table->CmdWriteTimestamp = (PFN_vkCmdWriteTimestamp)gpa(dev, "vkCmdWriteTimestamp");
455     table->CmdCopyQueryPoolResults = (PFN_vkCmdCopyQueryPoolResults)gpa(dev, "vkCmdCopyQueryPoolResults");
456     table->CmdPushConstants = (PFN_vkCmdPushConstants)gpa(dev, "vkCmdPushConstants");
457     table->CmdBeginRenderPass = (PFN_vkCmdBeginRenderPass)gpa(dev, "vkCmdBeginRenderPass");
458     table->CmdNextSubpass = (PFN_vkCmdNextSubpass)gpa(dev, "vkCmdNextSubpass");
459     table->CmdEndRenderPass = (PFN_vkCmdEndRenderPass)gpa(dev, "vkCmdEndRenderPass");
460     table->CmdExecuteCommands = (PFN_vkCmdExecuteCommands)gpa(dev, "vkCmdExecuteCommands");
461 
462     // ---- Core Vulkan 1.1 commands
463     table->BindBufferMemory2 = (PFN_vkBindBufferMemory2)gpa(dev, "vkBindBufferMemory2");
464     table->BindImageMemory2 = (PFN_vkBindImageMemory2)gpa(dev, "vkBindImageMemory2");
465     table->GetDeviceGroupPeerMemoryFeatures = (PFN_vkGetDeviceGroupPeerMemoryFeatures)gpa(dev, "vkGetDeviceGroupPeerMemoryFeatures");
466     table->CmdSetDeviceMask = (PFN_vkCmdSetDeviceMask)gpa(dev, "vkCmdSetDeviceMask");
467     table->CmdDispatchBase = (PFN_vkCmdDispatchBase)gpa(dev, "vkCmdDispatchBase");
468     table->GetImageMemoryRequirements2 = (PFN_vkGetImageMemoryRequirements2)gpa(dev, "vkGetImageMemoryRequirements2");
469     table->GetBufferMemoryRequirements2 = (PFN_vkGetBufferMemoryRequirements2)gpa(dev, "vkGetBufferMemoryRequirements2");
470     table->GetImageSparseMemoryRequirements2 = (PFN_vkGetImageSparseMemoryRequirements2)gpa(dev, "vkGetImageSparseMemoryRequirements2");
471     table->TrimCommandPool = (PFN_vkTrimCommandPool)gpa(dev, "vkTrimCommandPool");
472     table->GetDeviceQueue2 = (PFN_vkGetDeviceQueue2)gpa(dev, "vkGetDeviceQueue2");
473     table->CreateSamplerYcbcrConversion = (PFN_vkCreateSamplerYcbcrConversion)gpa(dev, "vkCreateSamplerYcbcrConversion");
474     table->DestroySamplerYcbcrConversion = (PFN_vkDestroySamplerYcbcrConversion)gpa(dev, "vkDestroySamplerYcbcrConversion");
475     table->CreateDescriptorUpdateTemplate = (PFN_vkCreateDescriptorUpdateTemplate)gpa(dev, "vkCreateDescriptorUpdateTemplate");
476     table->DestroyDescriptorUpdateTemplate = (PFN_vkDestroyDescriptorUpdateTemplate)gpa(dev, "vkDestroyDescriptorUpdateTemplate");
477     table->UpdateDescriptorSetWithTemplate = (PFN_vkUpdateDescriptorSetWithTemplate)gpa(dev, "vkUpdateDescriptorSetWithTemplate");
478     table->GetDescriptorSetLayoutSupport = (PFN_vkGetDescriptorSetLayoutSupport)gpa(dev, "vkGetDescriptorSetLayoutSupport");
479 
480     // ---- Core Vulkan 1.2 commands
481     table->CmdDrawIndirectCount = (PFN_vkCmdDrawIndirectCount)gpa(dev, "vkCmdDrawIndirectCount");
482     table->CmdDrawIndexedIndirectCount = (PFN_vkCmdDrawIndexedIndirectCount)gpa(dev, "vkCmdDrawIndexedIndirectCount");
483     table->CreateRenderPass2 = (PFN_vkCreateRenderPass2)gpa(dev, "vkCreateRenderPass2");
484     table->CmdBeginRenderPass2 = (PFN_vkCmdBeginRenderPass2)gpa(dev, "vkCmdBeginRenderPass2");
485     table->CmdNextSubpass2 = (PFN_vkCmdNextSubpass2)gpa(dev, "vkCmdNextSubpass2");
486     table->CmdEndRenderPass2 = (PFN_vkCmdEndRenderPass2)gpa(dev, "vkCmdEndRenderPass2");
487     table->ResetQueryPool = (PFN_vkResetQueryPool)gpa(dev, "vkResetQueryPool");
488     table->GetSemaphoreCounterValue = (PFN_vkGetSemaphoreCounterValue)gpa(dev, "vkGetSemaphoreCounterValue");
489     table->WaitSemaphores = (PFN_vkWaitSemaphores)gpa(dev, "vkWaitSemaphores");
490     table->SignalSemaphore = (PFN_vkSignalSemaphore)gpa(dev, "vkSignalSemaphore");
491     table->GetBufferDeviceAddress = (PFN_vkGetBufferDeviceAddress)gpa(dev, "vkGetBufferDeviceAddress");
492     table->GetBufferOpaqueCaptureAddress = (PFN_vkGetBufferOpaqueCaptureAddress)gpa(dev, "vkGetBufferOpaqueCaptureAddress");
493     table->GetDeviceMemoryOpaqueCaptureAddress = (PFN_vkGetDeviceMemoryOpaqueCaptureAddress)gpa(dev, "vkGetDeviceMemoryOpaqueCaptureAddress");
494 
495     // ---- Core Vulkan 1.3 commands
496     table->CreatePrivateDataSlot = (PFN_vkCreatePrivateDataSlot)gpa(dev, "vkCreatePrivateDataSlot");
497     table->DestroyPrivateDataSlot = (PFN_vkDestroyPrivateDataSlot)gpa(dev, "vkDestroyPrivateDataSlot");
498     table->SetPrivateData = (PFN_vkSetPrivateData)gpa(dev, "vkSetPrivateData");
499     table->GetPrivateData = (PFN_vkGetPrivateData)gpa(dev, "vkGetPrivateData");
500     table->CmdSetEvent2 = (PFN_vkCmdSetEvent2)gpa(dev, "vkCmdSetEvent2");
501     table->CmdResetEvent2 = (PFN_vkCmdResetEvent2)gpa(dev, "vkCmdResetEvent2");
502     table->CmdWaitEvents2 = (PFN_vkCmdWaitEvents2)gpa(dev, "vkCmdWaitEvents2");
503     table->CmdPipelineBarrier2 = (PFN_vkCmdPipelineBarrier2)gpa(dev, "vkCmdPipelineBarrier2");
504     table->CmdWriteTimestamp2 = (PFN_vkCmdWriteTimestamp2)gpa(dev, "vkCmdWriteTimestamp2");
505     table->QueueSubmit2 = (PFN_vkQueueSubmit2)gpa(dev, "vkQueueSubmit2");
506     table->CmdCopyBuffer2 = (PFN_vkCmdCopyBuffer2)gpa(dev, "vkCmdCopyBuffer2");
507     table->CmdCopyImage2 = (PFN_vkCmdCopyImage2)gpa(dev, "vkCmdCopyImage2");
508     table->CmdCopyBufferToImage2 = (PFN_vkCmdCopyBufferToImage2)gpa(dev, "vkCmdCopyBufferToImage2");
509     table->CmdCopyImageToBuffer2 = (PFN_vkCmdCopyImageToBuffer2)gpa(dev, "vkCmdCopyImageToBuffer2");
510     table->CmdBlitImage2 = (PFN_vkCmdBlitImage2)gpa(dev, "vkCmdBlitImage2");
511     table->CmdResolveImage2 = (PFN_vkCmdResolveImage2)gpa(dev, "vkCmdResolveImage2");
512     table->CmdBeginRendering = (PFN_vkCmdBeginRendering)gpa(dev, "vkCmdBeginRendering");
513     table->CmdEndRendering = (PFN_vkCmdEndRendering)gpa(dev, "vkCmdEndRendering");
514     table->CmdSetCullMode = (PFN_vkCmdSetCullMode)gpa(dev, "vkCmdSetCullMode");
515     table->CmdSetFrontFace = (PFN_vkCmdSetFrontFace)gpa(dev, "vkCmdSetFrontFace");
516     table->CmdSetPrimitiveTopology = (PFN_vkCmdSetPrimitiveTopology)gpa(dev, "vkCmdSetPrimitiveTopology");
517     table->CmdSetViewportWithCount = (PFN_vkCmdSetViewportWithCount)gpa(dev, "vkCmdSetViewportWithCount");
518     table->CmdSetScissorWithCount = (PFN_vkCmdSetScissorWithCount)gpa(dev, "vkCmdSetScissorWithCount");
519     table->CmdBindVertexBuffers2 = (PFN_vkCmdBindVertexBuffers2)gpa(dev, "vkCmdBindVertexBuffers2");
520     table->CmdSetDepthTestEnable = (PFN_vkCmdSetDepthTestEnable)gpa(dev, "vkCmdSetDepthTestEnable");
521     table->CmdSetDepthWriteEnable = (PFN_vkCmdSetDepthWriteEnable)gpa(dev, "vkCmdSetDepthWriteEnable");
522     table->CmdSetDepthCompareOp = (PFN_vkCmdSetDepthCompareOp)gpa(dev, "vkCmdSetDepthCompareOp");
523     table->CmdSetDepthBoundsTestEnable = (PFN_vkCmdSetDepthBoundsTestEnable)gpa(dev, "vkCmdSetDepthBoundsTestEnable");
524     table->CmdSetStencilTestEnable = (PFN_vkCmdSetStencilTestEnable)gpa(dev, "vkCmdSetStencilTestEnable");
525     table->CmdSetStencilOp = (PFN_vkCmdSetStencilOp)gpa(dev, "vkCmdSetStencilOp");
526     table->CmdSetRasterizerDiscardEnable = (PFN_vkCmdSetRasterizerDiscardEnable)gpa(dev, "vkCmdSetRasterizerDiscardEnable");
527     table->CmdSetDepthBiasEnable = (PFN_vkCmdSetDepthBiasEnable)gpa(dev, "vkCmdSetDepthBiasEnable");
528     table->CmdSetPrimitiveRestartEnable = (PFN_vkCmdSetPrimitiveRestartEnable)gpa(dev, "vkCmdSetPrimitiveRestartEnable");
529     table->GetDeviceBufferMemoryRequirements = (PFN_vkGetDeviceBufferMemoryRequirements)gpa(dev, "vkGetDeviceBufferMemoryRequirements");
530     table->GetDeviceImageMemoryRequirements = (PFN_vkGetDeviceImageMemoryRequirements)gpa(dev, "vkGetDeviceImageMemoryRequirements");
531     table->GetDeviceImageSparseMemoryRequirements = (PFN_vkGetDeviceImageSparseMemoryRequirements)gpa(dev, "vkGetDeviceImageSparseMemoryRequirements");
532 
533     // ---- Core Vulkan 1.4 commands
534     table->CmdSetLineStipple = (PFN_vkCmdSetLineStipple)gpa(dev, "vkCmdSetLineStipple");
535     table->MapMemory2 = (PFN_vkMapMemory2)gpa(dev, "vkMapMemory2");
536     table->UnmapMemory2 = (PFN_vkUnmapMemory2)gpa(dev, "vkUnmapMemory2");
537     table->CmdBindIndexBuffer2 = (PFN_vkCmdBindIndexBuffer2)gpa(dev, "vkCmdBindIndexBuffer2");
538     table->GetRenderingAreaGranularity = (PFN_vkGetRenderingAreaGranularity)gpa(dev, "vkGetRenderingAreaGranularity");
539     table->GetDeviceImageSubresourceLayout = (PFN_vkGetDeviceImageSubresourceLayout)gpa(dev, "vkGetDeviceImageSubresourceLayout");
540     table->GetImageSubresourceLayout2 = (PFN_vkGetImageSubresourceLayout2)gpa(dev, "vkGetImageSubresourceLayout2");
541     table->CmdPushDescriptorSet = (PFN_vkCmdPushDescriptorSet)gpa(dev, "vkCmdPushDescriptorSet");
542     table->CmdPushDescriptorSetWithTemplate = (PFN_vkCmdPushDescriptorSetWithTemplate)gpa(dev, "vkCmdPushDescriptorSetWithTemplate");
543     table->CmdSetRenderingAttachmentLocations = (PFN_vkCmdSetRenderingAttachmentLocations)gpa(dev, "vkCmdSetRenderingAttachmentLocations");
544     table->CmdSetRenderingInputAttachmentIndices = (PFN_vkCmdSetRenderingInputAttachmentIndices)gpa(dev, "vkCmdSetRenderingInputAttachmentIndices");
545     table->CmdBindDescriptorSets2 = (PFN_vkCmdBindDescriptorSets2)gpa(dev, "vkCmdBindDescriptorSets2");
546     table->CmdPushConstants2 = (PFN_vkCmdPushConstants2)gpa(dev, "vkCmdPushConstants2");
547     table->CmdPushDescriptorSet2 = (PFN_vkCmdPushDescriptorSet2)gpa(dev, "vkCmdPushDescriptorSet2");
548     table->CmdPushDescriptorSetWithTemplate2 = (PFN_vkCmdPushDescriptorSetWithTemplate2)gpa(dev, "vkCmdPushDescriptorSetWithTemplate2");
549     table->CopyMemoryToImage = (PFN_vkCopyMemoryToImage)gpa(dev, "vkCopyMemoryToImage");
550     table->CopyImageToMemory = (PFN_vkCopyImageToMemory)gpa(dev, "vkCopyImageToMemory");
551     table->CopyImageToImage = (PFN_vkCopyImageToImage)gpa(dev, "vkCopyImageToImage");
552     table->TransitionImageLayout = (PFN_vkTransitionImageLayout)gpa(dev, "vkTransitionImageLayout");
553 }
554 
555 // 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)556 VKAPI_ATTR void VKAPI_CALL loader_init_device_extension_dispatch_table(struct loader_dev_dispatch_table *dev_table,
557                                                                        PFN_vkGetInstanceProcAddr gipa,
558                                                                        PFN_vkGetDeviceProcAddr gdpa,
559                                                                        VkInstance inst,
560                                                                        VkDevice dev) {
561     VkLayerDispatchTable *table = &dev_table->core_dispatch;
562     table->magic = DEVICE_DISP_TABLE_MAGIC_NUMBER;
563 
564     // ---- VK_KHR_swapchain extension commands
565     table->CreateSwapchainKHR = (PFN_vkCreateSwapchainKHR)gdpa(dev, "vkCreateSwapchainKHR");
566     table->DestroySwapchainKHR = (PFN_vkDestroySwapchainKHR)gdpa(dev, "vkDestroySwapchainKHR");
567     table->GetSwapchainImagesKHR = (PFN_vkGetSwapchainImagesKHR)gdpa(dev, "vkGetSwapchainImagesKHR");
568     table->AcquireNextImageKHR = (PFN_vkAcquireNextImageKHR)gdpa(dev, "vkAcquireNextImageKHR");
569     table->QueuePresentKHR = (PFN_vkQueuePresentKHR)gdpa(dev, "vkQueuePresentKHR");
570     table->GetDeviceGroupPresentCapabilitiesKHR = (PFN_vkGetDeviceGroupPresentCapabilitiesKHR)gdpa(dev, "vkGetDeviceGroupPresentCapabilitiesKHR");
571     table->GetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR)gdpa(dev, "vkGetDeviceGroupSurfacePresentModesKHR");
572     table->AcquireNextImage2KHR = (PFN_vkAcquireNextImage2KHR)gdpa(dev, "vkAcquireNextImage2KHR");
573 
574     // ---- VK_KHR_display_swapchain extension commands
575     table->CreateSharedSwapchainsKHR = (PFN_vkCreateSharedSwapchainsKHR)gdpa(dev, "vkCreateSharedSwapchainsKHR");
576 
577     // ---- VK_KHR_video_queue extension commands
578     table->CreateVideoSessionKHR = (PFN_vkCreateVideoSessionKHR)gdpa(dev, "vkCreateVideoSessionKHR");
579     table->DestroyVideoSessionKHR = (PFN_vkDestroyVideoSessionKHR)gdpa(dev, "vkDestroyVideoSessionKHR");
580     table->GetVideoSessionMemoryRequirementsKHR = (PFN_vkGetVideoSessionMemoryRequirementsKHR)gdpa(dev, "vkGetVideoSessionMemoryRequirementsKHR");
581     table->BindVideoSessionMemoryKHR = (PFN_vkBindVideoSessionMemoryKHR)gdpa(dev, "vkBindVideoSessionMemoryKHR");
582     table->CreateVideoSessionParametersKHR = (PFN_vkCreateVideoSessionParametersKHR)gdpa(dev, "vkCreateVideoSessionParametersKHR");
583     table->UpdateVideoSessionParametersKHR = (PFN_vkUpdateVideoSessionParametersKHR)gdpa(dev, "vkUpdateVideoSessionParametersKHR");
584     table->DestroyVideoSessionParametersKHR = (PFN_vkDestroyVideoSessionParametersKHR)gdpa(dev, "vkDestroyVideoSessionParametersKHR");
585     table->CmdBeginVideoCodingKHR = (PFN_vkCmdBeginVideoCodingKHR)gdpa(dev, "vkCmdBeginVideoCodingKHR");
586     table->CmdEndVideoCodingKHR = (PFN_vkCmdEndVideoCodingKHR)gdpa(dev, "vkCmdEndVideoCodingKHR");
587     table->CmdControlVideoCodingKHR = (PFN_vkCmdControlVideoCodingKHR)gdpa(dev, "vkCmdControlVideoCodingKHR");
588 
589     // ---- VK_KHR_video_decode_queue extension commands
590     table->CmdDecodeVideoKHR = (PFN_vkCmdDecodeVideoKHR)gdpa(dev, "vkCmdDecodeVideoKHR");
591 
592     // ---- VK_KHR_dynamic_rendering extension commands
593     table->CmdBeginRenderingKHR = (PFN_vkCmdBeginRenderingKHR)gdpa(dev, "vkCmdBeginRenderingKHR");
594     table->CmdEndRenderingKHR = (PFN_vkCmdEndRenderingKHR)gdpa(dev, "vkCmdEndRenderingKHR");
595 
596     // ---- VK_KHR_device_group extension commands
597     table->GetDeviceGroupPeerMemoryFeaturesKHR = (PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)gdpa(dev, "vkGetDeviceGroupPeerMemoryFeaturesKHR");
598     table->CmdSetDeviceMaskKHR = (PFN_vkCmdSetDeviceMaskKHR)gdpa(dev, "vkCmdSetDeviceMaskKHR");
599     table->CmdDispatchBaseKHR = (PFN_vkCmdDispatchBaseKHR)gdpa(dev, "vkCmdDispatchBaseKHR");
600 
601     // ---- VK_KHR_maintenance1 extension commands
602     table->TrimCommandPoolKHR = (PFN_vkTrimCommandPoolKHR)gdpa(dev, "vkTrimCommandPoolKHR");
603 
604     // ---- VK_KHR_external_memory_win32 extension commands
605 #if defined(VK_USE_PLATFORM_WIN32_KHR)
606     table->GetMemoryWin32HandleKHR = (PFN_vkGetMemoryWin32HandleKHR)gdpa(dev, "vkGetMemoryWin32HandleKHR");
607 #endif // VK_USE_PLATFORM_WIN32_KHR
608 #if defined(VK_USE_PLATFORM_WIN32_KHR)
609     table->GetMemoryWin32HandlePropertiesKHR = (PFN_vkGetMemoryWin32HandlePropertiesKHR)gdpa(dev, "vkGetMemoryWin32HandlePropertiesKHR");
610 #endif // VK_USE_PLATFORM_WIN32_KHR
611 
612     // ---- VK_KHR_external_memory_fd extension commands
613     table->GetMemoryFdKHR = (PFN_vkGetMemoryFdKHR)gdpa(dev, "vkGetMemoryFdKHR");
614     table->GetMemoryFdPropertiesKHR = (PFN_vkGetMemoryFdPropertiesKHR)gdpa(dev, "vkGetMemoryFdPropertiesKHR");
615 
616     // ---- VK_KHR_external_semaphore_win32 extension commands
617 #if defined(VK_USE_PLATFORM_WIN32_KHR)
618     table->ImportSemaphoreWin32HandleKHR = (PFN_vkImportSemaphoreWin32HandleKHR)gdpa(dev, "vkImportSemaphoreWin32HandleKHR");
619 #endif // VK_USE_PLATFORM_WIN32_KHR
620 #if defined(VK_USE_PLATFORM_WIN32_KHR)
621     table->GetSemaphoreWin32HandleKHR = (PFN_vkGetSemaphoreWin32HandleKHR)gdpa(dev, "vkGetSemaphoreWin32HandleKHR");
622 #endif // VK_USE_PLATFORM_WIN32_KHR
623 
624     // ---- VK_KHR_external_semaphore_fd extension commands
625     table->ImportSemaphoreFdKHR = (PFN_vkImportSemaphoreFdKHR)gdpa(dev, "vkImportSemaphoreFdKHR");
626     table->GetSemaphoreFdKHR = (PFN_vkGetSemaphoreFdKHR)gdpa(dev, "vkGetSemaphoreFdKHR");
627 
628     // ---- VK_KHR_push_descriptor extension commands
629     table->CmdPushDescriptorSetKHR = (PFN_vkCmdPushDescriptorSetKHR)gdpa(dev, "vkCmdPushDescriptorSetKHR");
630     table->CmdPushDescriptorSetWithTemplateKHR = (PFN_vkCmdPushDescriptorSetWithTemplateKHR)gdpa(dev, "vkCmdPushDescriptorSetWithTemplateKHR");
631 
632     // ---- VK_KHR_descriptor_update_template extension commands
633     table->CreateDescriptorUpdateTemplateKHR = (PFN_vkCreateDescriptorUpdateTemplateKHR)gdpa(dev, "vkCreateDescriptorUpdateTemplateKHR");
634     table->DestroyDescriptorUpdateTemplateKHR = (PFN_vkDestroyDescriptorUpdateTemplateKHR)gdpa(dev, "vkDestroyDescriptorUpdateTemplateKHR");
635     table->UpdateDescriptorSetWithTemplateKHR = (PFN_vkUpdateDescriptorSetWithTemplateKHR)gdpa(dev, "vkUpdateDescriptorSetWithTemplateKHR");
636 
637     // ---- VK_KHR_create_renderpass2 extension commands
638     table->CreateRenderPass2KHR = (PFN_vkCreateRenderPass2KHR)gdpa(dev, "vkCreateRenderPass2KHR");
639     table->CmdBeginRenderPass2KHR = (PFN_vkCmdBeginRenderPass2KHR)gdpa(dev, "vkCmdBeginRenderPass2KHR");
640     table->CmdNextSubpass2KHR = (PFN_vkCmdNextSubpass2KHR)gdpa(dev, "vkCmdNextSubpass2KHR");
641     table->CmdEndRenderPass2KHR = (PFN_vkCmdEndRenderPass2KHR)gdpa(dev, "vkCmdEndRenderPass2KHR");
642 
643     // ---- VK_KHR_shared_presentable_image extension commands
644     table->GetSwapchainStatusKHR = (PFN_vkGetSwapchainStatusKHR)gdpa(dev, "vkGetSwapchainStatusKHR");
645 
646     // ---- VK_KHR_external_fence_win32 extension commands
647 #if defined(VK_USE_PLATFORM_WIN32_KHR)
648     table->ImportFenceWin32HandleKHR = (PFN_vkImportFenceWin32HandleKHR)gdpa(dev, "vkImportFenceWin32HandleKHR");
649 #endif // VK_USE_PLATFORM_WIN32_KHR
650 #if defined(VK_USE_PLATFORM_WIN32_KHR)
651     table->GetFenceWin32HandleKHR = (PFN_vkGetFenceWin32HandleKHR)gdpa(dev, "vkGetFenceWin32HandleKHR");
652 #endif // VK_USE_PLATFORM_WIN32_KHR
653 
654     // ---- VK_KHR_external_fence_fd extension commands
655     table->ImportFenceFdKHR = (PFN_vkImportFenceFdKHR)gdpa(dev, "vkImportFenceFdKHR");
656     table->GetFenceFdKHR = (PFN_vkGetFenceFdKHR)gdpa(dev, "vkGetFenceFdKHR");
657 
658     // ---- VK_KHR_performance_query extension commands
659     table->AcquireProfilingLockKHR = (PFN_vkAcquireProfilingLockKHR)gdpa(dev, "vkAcquireProfilingLockKHR");
660     table->ReleaseProfilingLockKHR = (PFN_vkReleaseProfilingLockKHR)gdpa(dev, "vkReleaseProfilingLockKHR");
661 
662     // ---- VK_KHR_get_memory_requirements2 extension commands
663     table->GetImageMemoryRequirements2KHR = (PFN_vkGetImageMemoryRequirements2KHR)gdpa(dev, "vkGetImageMemoryRequirements2KHR");
664     table->GetBufferMemoryRequirements2KHR = (PFN_vkGetBufferMemoryRequirements2KHR)gdpa(dev, "vkGetBufferMemoryRequirements2KHR");
665     table->GetImageSparseMemoryRequirements2KHR = (PFN_vkGetImageSparseMemoryRequirements2KHR)gdpa(dev, "vkGetImageSparseMemoryRequirements2KHR");
666 
667     // ---- VK_KHR_sampler_ycbcr_conversion extension commands
668     table->CreateSamplerYcbcrConversionKHR = (PFN_vkCreateSamplerYcbcrConversionKHR)gdpa(dev, "vkCreateSamplerYcbcrConversionKHR");
669     table->DestroySamplerYcbcrConversionKHR = (PFN_vkDestroySamplerYcbcrConversionKHR)gdpa(dev, "vkDestroySamplerYcbcrConversionKHR");
670 
671     // ---- VK_KHR_bind_memory2 extension commands
672     table->BindBufferMemory2KHR = (PFN_vkBindBufferMemory2KHR)gdpa(dev, "vkBindBufferMemory2KHR");
673     table->BindImageMemory2KHR = (PFN_vkBindImageMemory2KHR)gdpa(dev, "vkBindImageMemory2KHR");
674 
675     // ---- VK_KHR_maintenance3 extension commands
676     table->GetDescriptorSetLayoutSupportKHR = (PFN_vkGetDescriptorSetLayoutSupportKHR)gdpa(dev, "vkGetDescriptorSetLayoutSupportKHR");
677 
678     // ---- VK_KHR_draw_indirect_count extension commands
679     table->CmdDrawIndirectCountKHR = (PFN_vkCmdDrawIndirectCountKHR)gdpa(dev, "vkCmdDrawIndirectCountKHR");
680     table->CmdDrawIndexedIndirectCountKHR = (PFN_vkCmdDrawIndexedIndirectCountKHR)gdpa(dev, "vkCmdDrawIndexedIndirectCountKHR");
681 
682     // ---- VK_KHR_timeline_semaphore extension commands
683     table->GetSemaphoreCounterValueKHR = (PFN_vkGetSemaphoreCounterValueKHR)gdpa(dev, "vkGetSemaphoreCounterValueKHR");
684     table->WaitSemaphoresKHR = (PFN_vkWaitSemaphoresKHR)gdpa(dev, "vkWaitSemaphoresKHR");
685     table->SignalSemaphoreKHR = (PFN_vkSignalSemaphoreKHR)gdpa(dev, "vkSignalSemaphoreKHR");
686 
687     // ---- VK_KHR_fragment_shading_rate extension commands
688     table->CmdSetFragmentShadingRateKHR = (PFN_vkCmdSetFragmentShadingRateKHR)gdpa(dev, "vkCmdSetFragmentShadingRateKHR");
689 
690     // ---- VK_KHR_dynamic_rendering_local_read extension commands
691     table->CmdSetRenderingAttachmentLocationsKHR = (PFN_vkCmdSetRenderingAttachmentLocationsKHR)gdpa(dev, "vkCmdSetRenderingAttachmentLocationsKHR");
692     table->CmdSetRenderingInputAttachmentIndicesKHR = (PFN_vkCmdSetRenderingInputAttachmentIndicesKHR)gdpa(dev, "vkCmdSetRenderingInputAttachmentIndicesKHR");
693 
694     // ---- VK_KHR_present_wait extension commands
695     table->WaitForPresentKHR = (PFN_vkWaitForPresentKHR)gdpa(dev, "vkWaitForPresentKHR");
696 
697     // ---- VK_KHR_buffer_device_address extension commands
698     table->GetBufferDeviceAddressKHR = (PFN_vkGetBufferDeviceAddressKHR)gdpa(dev, "vkGetBufferDeviceAddressKHR");
699     table->GetBufferOpaqueCaptureAddressKHR = (PFN_vkGetBufferOpaqueCaptureAddressKHR)gdpa(dev, "vkGetBufferOpaqueCaptureAddressKHR");
700     table->GetDeviceMemoryOpaqueCaptureAddressKHR = (PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)gdpa(dev, "vkGetDeviceMemoryOpaqueCaptureAddressKHR");
701 
702     // ---- VK_KHR_deferred_host_operations extension commands
703     table->CreateDeferredOperationKHR = (PFN_vkCreateDeferredOperationKHR)gdpa(dev, "vkCreateDeferredOperationKHR");
704     table->DestroyDeferredOperationKHR = (PFN_vkDestroyDeferredOperationKHR)gdpa(dev, "vkDestroyDeferredOperationKHR");
705     table->GetDeferredOperationMaxConcurrencyKHR = (PFN_vkGetDeferredOperationMaxConcurrencyKHR)gdpa(dev, "vkGetDeferredOperationMaxConcurrencyKHR");
706     table->GetDeferredOperationResultKHR = (PFN_vkGetDeferredOperationResultKHR)gdpa(dev, "vkGetDeferredOperationResultKHR");
707     table->DeferredOperationJoinKHR = (PFN_vkDeferredOperationJoinKHR)gdpa(dev, "vkDeferredOperationJoinKHR");
708 
709     // ---- VK_KHR_pipeline_executable_properties extension commands
710     table->GetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)gdpa(dev, "vkGetPipelineExecutablePropertiesKHR");
711     table->GetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)gdpa(dev, "vkGetPipelineExecutableStatisticsKHR");
712     table->GetPipelineExecutableInternalRepresentationsKHR = (PFN_vkGetPipelineExecutableInternalRepresentationsKHR)gdpa(dev, "vkGetPipelineExecutableInternalRepresentationsKHR");
713 
714     // ---- VK_KHR_map_memory2 extension commands
715     table->MapMemory2KHR = (PFN_vkMapMemory2KHR)gdpa(dev, "vkMapMemory2KHR");
716     table->UnmapMemory2KHR = (PFN_vkUnmapMemory2KHR)gdpa(dev, "vkUnmapMemory2KHR");
717 
718     // ---- VK_KHR_video_encode_queue extension commands
719     table->GetEncodedVideoSessionParametersKHR = (PFN_vkGetEncodedVideoSessionParametersKHR)gdpa(dev, "vkGetEncodedVideoSessionParametersKHR");
720     table->CmdEncodeVideoKHR = (PFN_vkCmdEncodeVideoKHR)gdpa(dev, "vkCmdEncodeVideoKHR");
721 
722     // ---- VK_KHR_synchronization2 extension commands
723     table->CmdSetEvent2KHR = (PFN_vkCmdSetEvent2KHR)gdpa(dev, "vkCmdSetEvent2KHR");
724     table->CmdResetEvent2KHR = (PFN_vkCmdResetEvent2KHR)gdpa(dev, "vkCmdResetEvent2KHR");
725     table->CmdWaitEvents2KHR = (PFN_vkCmdWaitEvents2KHR)gdpa(dev, "vkCmdWaitEvents2KHR");
726     table->CmdPipelineBarrier2KHR = (PFN_vkCmdPipelineBarrier2KHR)gdpa(dev, "vkCmdPipelineBarrier2KHR");
727     table->CmdWriteTimestamp2KHR = (PFN_vkCmdWriteTimestamp2KHR)gdpa(dev, "vkCmdWriteTimestamp2KHR");
728     table->QueueSubmit2KHR = (PFN_vkQueueSubmit2KHR)gdpa(dev, "vkQueueSubmit2KHR");
729 
730     // ---- VK_KHR_copy_commands2 extension commands
731     table->CmdCopyBuffer2KHR = (PFN_vkCmdCopyBuffer2KHR)gdpa(dev, "vkCmdCopyBuffer2KHR");
732     table->CmdCopyImage2KHR = (PFN_vkCmdCopyImage2KHR)gdpa(dev, "vkCmdCopyImage2KHR");
733     table->CmdCopyBufferToImage2KHR = (PFN_vkCmdCopyBufferToImage2KHR)gdpa(dev, "vkCmdCopyBufferToImage2KHR");
734     table->CmdCopyImageToBuffer2KHR = (PFN_vkCmdCopyImageToBuffer2KHR)gdpa(dev, "vkCmdCopyImageToBuffer2KHR");
735     table->CmdBlitImage2KHR = (PFN_vkCmdBlitImage2KHR)gdpa(dev, "vkCmdBlitImage2KHR");
736     table->CmdResolveImage2KHR = (PFN_vkCmdResolveImage2KHR)gdpa(dev, "vkCmdResolveImage2KHR");
737 
738     // ---- VK_KHR_ray_tracing_maintenance1 extension commands
739     table->CmdTraceRaysIndirect2KHR = (PFN_vkCmdTraceRaysIndirect2KHR)gdpa(dev, "vkCmdTraceRaysIndirect2KHR");
740 
741     // ---- VK_KHR_maintenance4 extension commands
742     table->GetDeviceBufferMemoryRequirementsKHR = (PFN_vkGetDeviceBufferMemoryRequirementsKHR)gdpa(dev, "vkGetDeviceBufferMemoryRequirementsKHR");
743     table->GetDeviceImageMemoryRequirementsKHR = (PFN_vkGetDeviceImageMemoryRequirementsKHR)gdpa(dev, "vkGetDeviceImageMemoryRequirementsKHR");
744     table->GetDeviceImageSparseMemoryRequirementsKHR = (PFN_vkGetDeviceImageSparseMemoryRequirementsKHR)gdpa(dev, "vkGetDeviceImageSparseMemoryRequirementsKHR");
745 
746     // ---- VK_KHR_maintenance5 extension commands
747     table->CmdBindIndexBuffer2KHR = (PFN_vkCmdBindIndexBuffer2KHR)gdpa(dev, "vkCmdBindIndexBuffer2KHR");
748     table->GetRenderingAreaGranularityKHR = (PFN_vkGetRenderingAreaGranularityKHR)gdpa(dev, "vkGetRenderingAreaGranularityKHR");
749     table->GetDeviceImageSubresourceLayoutKHR = (PFN_vkGetDeviceImageSubresourceLayoutKHR)gdpa(dev, "vkGetDeviceImageSubresourceLayoutKHR");
750     table->GetImageSubresourceLayout2KHR = (PFN_vkGetImageSubresourceLayout2KHR)gdpa(dev, "vkGetImageSubresourceLayout2KHR");
751 
752     // ---- VK_KHR_pipeline_binary extension commands
753     table->CreatePipelineBinariesKHR = (PFN_vkCreatePipelineBinariesKHR)gdpa(dev, "vkCreatePipelineBinariesKHR");
754     table->DestroyPipelineBinaryKHR = (PFN_vkDestroyPipelineBinaryKHR)gdpa(dev, "vkDestroyPipelineBinaryKHR");
755     table->GetPipelineKeyKHR = (PFN_vkGetPipelineKeyKHR)gdpa(dev, "vkGetPipelineKeyKHR");
756     table->GetPipelineBinaryDataKHR = (PFN_vkGetPipelineBinaryDataKHR)gdpa(dev, "vkGetPipelineBinaryDataKHR");
757     table->ReleaseCapturedPipelineDataKHR = (PFN_vkReleaseCapturedPipelineDataKHR)gdpa(dev, "vkReleaseCapturedPipelineDataKHR");
758 
759     // ---- VK_KHR_line_rasterization extension commands
760     table->CmdSetLineStippleKHR = (PFN_vkCmdSetLineStippleKHR)gdpa(dev, "vkCmdSetLineStippleKHR");
761 
762     // ---- VK_KHR_calibrated_timestamps extension commands
763     table->GetCalibratedTimestampsKHR = (PFN_vkGetCalibratedTimestampsKHR)gdpa(dev, "vkGetCalibratedTimestampsKHR");
764 
765     // ---- VK_KHR_maintenance6 extension commands
766     table->CmdBindDescriptorSets2KHR = (PFN_vkCmdBindDescriptorSets2KHR)gdpa(dev, "vkCmdBindDescriptorSets2KHR");
767     table->CmdPushConstants2KHR = (PFN_vkCmdPushConstants2KHR)gdpa(dev, "vkCmdPushConstants2KHR");
768     table->CmdPushDescriptorSet2KHR = (PFN_vkCmdPushDescriptorSet2KHR)gdpa(dev, "vkCmdPushDescriptorSet2KHR");
769     table->CmdPushDescriptorSetWithTemplate2KHR = (PFN_vkCmdPushDescriptorSetWithTemplate2KHR)gdpa(dev, "vkCmdPushDescriptorSetWithTemplate2KHR");
770     table->CmdSetDescriptorBufferOffsets2EXT = (PFN_vkCmdSetDescriptorBufferOffsets2EXT)gdpa(dev, "vkCmdSetDescriptorBufferOffsets2EXT");
771     table->CmdBindDescriptorBufferEmbeddedSamplers2EXT = (PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT)gdpa(dev, "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT");
772 
773     // ---- VK_EXT_debug_marker extension commands
774     table->DebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)gdpa(dev, "vkDebugMarkerSetObjectTagEXT");
775     table->DebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)gdpa(dev, "vkDebugMarkerSetObjectNameEXT");
776     table->CmdDebugMarkerBeginEXT = (PFN_vkCmdDebugMarkerBeginEXT)gdpa(dev, "vkCmdDebugMarkerBeginEXT");
777     table->CmdDebugMarkerEndEXT = (PFN_vkCmdDebugMarkerEndEXT)gdpa(dev, "vkCmdDebugMarkerEndEXT");
778     table->CmdDebugMarkerInsertEXT = (PFN_vkCmdDebugMarkerInsertEXT)gdpa(dev, "vkCmdDebugMarkerInsertEXT");
779 
780     // ---- VK_EXT_transform_feedback extension commands
781     table->CmdBindTransformFeedbackBuffersEXT = (PFN_vkCmdBindTransformFeedbackBuffersEXT)gdpa(dev, "vkCmdBindTransformFeedbackBuffersEXT");
782     table->CmdBeginTransformFeedbackEXT = (PFN_vkCmdBeginTransformFeedbackEXT)gdpa(dev, "vkCmdBeginTransformFeedbackEXT");
783     table->CmdEndTransformFeedbackEXT = (PFN_vkCmdEndTransformFeedbackEXT)gdpa(dev, "vkCmdEndTransformFeedbackEXT");
784     table->CmdBeginQueryIndexedEXT = (PFN_vkCmdBeginQueryIndexedEXT)gdpa(dev, "vkCmdBeginQueryIndexedEXT");
785     table->CmdEndQueryIndexedEXT = (PFN_vkCmdEndQueryIndexedEXT)gdpa(dev, "vkCmdEndQueryIndexedEXT");
786     table->CmdDrawIndirectByteCountEXT = (PFN_vkCmdDrawIndirectByteCountEXT)gdpa(dev, "vkCmdDrawIndirectByteCountEXT");
787 
788     // ---- VK_NVX_binary_import extension commands
789     table->CreateCuModuleNVX = (PFN_vkCreateCuModuleNVX)gdpa(dev, "vkCreateCuModuleNVX");
790     table->CreateCuFunctionNVX = (PFN_vkCreateCuFunctionNVX)gdpa(dev, "vkCreateCuFunctionNVX");
791     table->DestroyCuModuleNVX = (PFN_vkDestroyCuModuleNVX)gdpa(dev, "vkDestroyCuModuleNVX");
792     table->DestroyCuFunctionNVX = (PFN_vkDestroyCuFunctionNVX)gdpa(dev, "vkDestroyCuFunctionNVX");
793     table->CmdCuLaunchKernelNVX = (PFN_vkCmdCuLaunchKernelNVX)gdpa(dev, "vkCmdCuLaunchKernelNVX");
794 
795     // ---- VK_NVX_image_view_handle extension commands
796     table->GetImageViewHandleNVX = (PFN_vkGetImageViewHandleNVX)gdpa(dev, "vkGetImageViewHandleNVX");
797     table->GetImageViewHandle64NVX = (PFN_vkGetImageViewHandle64NVX)gdpa(dev, "vkGetImageViewHandle64NVX");
798     table->GetImageViewAddressNVX = (PFN_vkGetImageViewAddressNVX)gdpa(dev, "vkGetImageViewAddressNVX");
799 
800     // ---- VK_AMD_draw_indirect_count extension commands
801     table->CmdDrawIndirectCountAMD = (PFN_vkCmdDrawIndirectCountAMD)gdpa(dev, "vkCmdDrawIndirectCountAMD");
802     table->CmdDrawIndexedIndirectCountAMD = (PFN_vkCmdDrawIndexedIndirectCountAMD)gdpa(dev, "vkCmdDrawIndexedIndirectCountAMD");
803 
804     // ---- VK_AMD_shader_info extension commands
805     table->GetShaderInfoAMD = (PFN_vkGetShaderInfoAMD)gdpa(dev, "vkGetShaderInfoAMD");
806 
807     // ---- VK_NV_external_memory_win32 extension commands
808 #if defined(VK_USE_PLATFORM_WIN32_KHR)
809     table->GetMemoryWin32HandleNV = (PFN_vkGetMemoryWin32HandleNV)gdpa(dev, "vkGetMemoryWin32HandleNV");
810 #endif // VK_USE_PLATFORM_WIN32_KHR
811 
812     // ---- VK_EXT_conditional_rendering extension commands
813     table->CmdBeginConditionalRenderingEXT = (PFN_vkCmdBeginConditionalRenderingEXT)gdpa(dev, "vkCmdBeginConditionalRenderingEXT");
814     table->CmdEndConditionalRenderingEXT = (PFN_vkCmdEndConditionalRenderingEXT)gdpa(dev, "vkCmdEndConditionalRenderingEXT");
815 
816     // ---- VK_NV_clip_space_w_scaling extension commands
817     table->CmdSetViewportWScalingNV = (PFN_vkCmdSetViewportWScalingNV)gdpa(dev, "vkCmdSetViewportWScalingNV");
818 
819     // ---- VK_EXT_display_control extension commands
820     table->DisplayPowerControlEXT = (PFN_vkDisplayPowerControlEXT)gdpa(dev, "vkDisplayPowerControlEXT");
821     table->RegisterDeviceEventEXT = (PFN_vkRegisterDeviceEventEXT)gdpa(dev, "vkRegisterDeviceEventEXT");
822     table->RegisterDisplayEventEXT = (PFN_vkRegisterDisplayEventEXT)gdpa(dev, "vkRegisterDisplayEventEXT");
823     table->GetSwapchainCounterEXT = (PFN_vkGetSwapchainCounterEXT)gdpa(dev, "vkGetSwapchainCounterEXT");
824 
825     // ---- VK_GOOGLE_display_timing extension commands
826     table->GetRefreshCycleDurationGOOGLE = (PFN_vkGetRefreshCycleDurationGOOGLE)gdpa(dev, "vkGetRefreshCycleDurationGOOGLE");
827     table->GetPastPresentationTimingGOOGLE = (PFN_vkGetPastPresentationTimingGOOGLE)gdpa(dev, "vkGetPastPresentationTimingGOOGLE");
828 
829     // ---- VK_EXT_discard_rectangles extension commands
830     table->CmdSetDiscardRectangleEXT = (PFN_vkCmdSetDiscardRectangleEXT)gdpa(dev, "vkCmdSetDiscardRectangleEXT");
831     table->CmdSetDiscardRectangleEnableEXT = (PFN_vkCmdSetDiscardRectangleEnableEXT)gdpa(dev, "vkCmdSetDiscardRectangleEnableEXT");
832     table->CmdSetDiscardRectangleModeEXT = (PFN_vkCmdSetDiscardRectangleModeEXT)gdpa(dev, "vkCmdSetDiscardRectangleModeEXT");
833 
834     // ---- VK_EXT_hdr_metadata extension commands
835     table->SetHdrMetadataEXT = (PFN_vkSetHdrMetadataEXT)gdpa(dev, "vkSetHdrMetadataEXT");
836 
837     // ---- VK_EXT_debug_utils extension commands
838     table->SetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)gipa(inst, "vkSetDebugUtilsObjectNameEXT");
839     table->SetDebugUtilsObjectTagEXT = (PFN_vkSetDebugUtilsObjectTagEXT)gipa(inst, "vkSetDebugUtilsObjectTagEXT");
840     table->QueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT)gipa(inst, "vkQueueBeginDebugUtilsLabelEXT");
841     table->QueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)gipa(inst, "vkQueueEndDebugUtilsLabelEXT");
842     table->QueueInsertDebugUtilsLabelEXT = (PFN_vkQueueInsertDebugUtilsLabelEXT)gipa(inst, "vkQueueInsertDebugUtilsLabelEXT");
843     table->CmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)gipa(inst, "vkCmdBeginDebugUtilsLabelEXT");
844     table->CmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)gipa(inst, "vkCmdEndDebugUtilsLabelEXT");
845     table->CmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT)gipa(inst, "vkCmdInsertDebugUtilsLabelEXT");
846 
847     // ---- VK_ANDROID_external_memory_android_hardware_buffer extension commands
848 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
849     table->GetAndroidHardwareBufferPropertiesANDROID = (PFN_vkGetAndroidHardwareBufferPropertiesANDROID)gdpa(dev, "vkGetAndroidHardwareBufferPropertiesANDROID");
850 #endif // VK_USE_PLATFORM_ANDROID_KHR
851 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
852     table->GetMemoryAndroidHardwareBufferANDROID = (PFN_vkGetMemoryAndroidHardwareBufferANDROID)gdpa(dev, "vkGetMemoryAndroidHardwareBufferANDROID");
853 #endif // VK_USE_PLATFORM_ANDROID_KHR
854 
855     // ---- VK_AMDX_shader_enqueue extension commands
856 #if defined(VK_ENABLE_BETA_EXTENSIONS)
857     table->CreateExecutionGraphPipelinesAMDX = (PFN_vkCreateExecutionGraphPipelinesAMDX)gdpa(dev, "vkCreateExecutionGraphPipelinesAMDX");
858 #endif // VK_ENABLE_BETA_EXTENSIONS
859 #if defined(VK_ENABLE_BETA_EXTENSIONS)
860     table->GetExecutionGraphPipelineScratchSizeAMDX = (PFN_vkGetExecutionGraphPipelineScratchSizeAMDX)gdpa(dev, "vkGetExecutionGraphPipelineScratchSizeAMDX");
861 #endif // VK_ENABLE_BETA_EXTENSIONS
862 #if defined(VK_ENABLE_BETA_EXTENSIONS)
863     table->GetExecutionGraphPipelineNodeIndexAMDX = (PFN_vkGetExecutionGraphPipelineNodeIndexAMDX)gdpa(dev, "vkGetExecutionGraphPipelineNodeIndexAMDX");
864 #endif // VK_ENABLE_BETA_EXTENSIONS
865 #if defined(VK_ENABLE_BETA_EXTENSIONS)
866     table->CmdInitializeGraphScratchMemoryAMDX = (PFN_vkCmdInitializeGraphScratchMemoryAMDX)gdpa(dev, "vkCmdInitializeGraphScratchMemoryAMDX");
867 #endif // VK_ENABLE_BETA_EXTENSIONS
868 #if defined(VK_ENABLE_BETA_EXTENSIONS)
869     table->CmdDispatchGraphAMDX = (PFN_vkCmdDispatchGraphAMDX)gdpa(dev, "vkCmdDispatchGraphAMDX");
870 #endif // VK_ENABLE_BETA_EXTENSIONS
871 #if defined(VK_ENABLE_BETA_EXTENSIONS)
872     table->CmdDispatchGraphIndirectAMDX = (PFN_vkCmdDispatchGraphIndirectAMDX)gdpa(dev, "vkCmdDispatchGraphIndirectAMDX");
873 #endif // VK_ENABLE_BETA_EXTENSIONS
874 #if defined(VK_ENABLE_BETA_EXTENSIONS)
875     table->CmdDispatchGraphIndirectCountAMDX = (PFN_vkCmdDispatchGraphIndirectCountAMDX)gdpa(dev, "vkCmdDispatchGraphIndirectCountAMDX");
876 #endif // VK_ENABLE_BETA_EXTENSIONS
877 
878     // ---- VK_EXT_sample_locations extension commands
879     table->CmdSetSampleLocationsEXT = (PFN_vkCmdSetSampleLocationsEXT)gdpa(dev, "vkCmdSetSampleLocationsEXT");
880 
881     // ---- VK_EXT_image_drm_format_modifier extension commands
882     table->GetImageDrmFormatModifierPropertiesEXT = (PFN_vkGetImageDrmFormatModifierPropertiesEXT)gdpa(dev, "vkGetImageDrmFormatModifierPropertiesEXT");
883 
884     // ---- VK_EXT_validation_cache extension commands
885     table->CreateValidationCacheEXT = (PFN_vkCreateValidationCacheEXT)gdpa(dev, "vkCreateValidationCacheEXT");
886     table->DestroyValidationCacheEXT = (PFN_vkDestroyValidationCacheEXT)gdpa(dev, "vkDestroyValidationCacheEXT");
887     table->MergeValidationCachesEXT = (PFN_vkMergeValidationCachesEXT)gdpa(dev, "vkMergeValidationCachesEXT");
888     table->GetValidationCacheDataEXT = (PFN_vkGetValidationCacheDataEXT)gdpa(dev, "vkGetValidationCacheDataEXT");
889 
890     // ---- VK_NV_shading_rate_image extension commands
891     table->CmdBindShadingRateImageNV = (PFN_vkCmdBindShadingRateImageNV)gdpa(dev, "vkCmdBindShadingRateImageNV");
892     table->CmdSetViewportShadingRatePaletteNV = (PFN_vkCmdSetViewportShadingRatePaletteNV)gdpa(dev, "vkCmdSetViewportShadingRatePaletteNV");
893     table->CmdSetCoarseSampleOrderNV = (PFN_vkCmdSetCoarseSampleOrderNV)gdpa(dev, "vkCmdSetCoarseSampleOrderNV");
894 
895     // ---- VK_NV_ray_tracing extension commands
896     table->CreateAccelerationStructureNV = (PFN_vkCreateAccelerationStructureNV)gdpa(dev, "vkCreateAccelerationStructureNV");
897     table->DestroyAccelerationStructureNV = (PFN_vkDestroyAccelerationStructureNV)gdpa(dev, "vkDestroyAccelerationStructureNV");
898     table->GetAccelerationStructureMemoryRequirementsNV = (PFN_vkGetAccelerationStructureMemoryRequirementsNV)gdpa(dev, "vkGetAccelerationStructureMemoryRequirementsNV");
899     table->BindAccelerationStructureMemoryNV = (PFN_vkBindAccelerationStructureMemoryNV)gdpa(dev, "vkBindAccelerationStructureMemoryNV");
900     table->CmdBuildAccelerationStructureNV = (PFN_vkCmdBuildAccelerationStructureNV)gdpa(dev, "vkCmdBuildAccelerationStructureNV");
901     table->CmdCopyAccelerationStructureNV = (PFN_vkCmdCopyAccelerationStructureNV)gdpa(dev, "vkCmdCopyAccelerationStructureNV");
902     table->CmdTraceRaysNV = (PFN_vkCmdTraceRaysNV)gdpa(dev, "vkCmdTraceRaysNV");
903     table->CreateRayTracingPipelinesNV = (PFN_vkCreateRayTracingPipelinesNV)gdpa(dev, "vkCreateRayTracingPipelinesNV");
904     table->GetRayTracingShaderGroupHandlesKHR = (PFN_vkGetRayTracingShaderGroupHandlesKHR)gdpa(dev, "vkGetRayTracingShaderGroupHandlesKHR");
905     table->GetRayTracingShaderGroupHandlesNV = (PFN_vkGetRayTracingShaderGroupHandlesNV)gdpa(dev, "vkGetRayTracingShaderGroupHandlesNV");
906     table->GetAccelerationStructureHandleNV = (PFN_vkGetAccelerationStructureHandleNV)gdpa(dev, "vkGetAccelerationStructureHandleNV");
907     table->CmdWriteAccelerationStructuresPropertiesNV = (PFN_vkCmdWriteAccelerationStructuresPropertiesNV)gdpa(dev, "vkCmdWriteAccelerationStructuresPropertiesNV");
908     table->CompileDeferredNV = (PFN_vkCompileDeferredNV)gdpa(dev, "vkCompileDeferredNV");
909 
910     // ---- VK_EXT_external_memory_host extension commands
911     table->GetMemoryHostPointerPropertiesEXT = (PFN_vkGetMemoryHostPointerPropertiesEXT)gdpa(dev, "vkGetMemoryHostPointerPropertiesEXT");
912 
913     // ---- VK_AMD_buffer_marker extension commands
914     table->CmdWriteBufferMarkerAMD = (PFN_vkCmdWriteBufferMarkerAMD)gdpa(dev, "vkCmdWriteBufferMarkerAMD");
915     table->CmdWriteBufferMarker2AMD = (PFN_vkCmdWriteBufferMarker2AMD)gdpa(dev, "vkCmdWriteBufferMarker2AMD");
916 
917     // ---- VK_EXT_calibrated_timestamps extension commands
918     table->GetCalibratedTimestampsEXT = (PFN_vkGetCalibratedTimestampsEXT)gdpa(dev, "vkGetCalibratedTimestampsEXT");
919 
920     // ---- VK_NV_mesh_shader extension commands
921     table->CmdDrawMeshTasksNV = (PFN_vkCmdDrawMeshTasksNV)gdpa(dev, "vkCmdDrawMeshTasksNV");
922     table->CmdDrawMeshTasksIndirectNV = (PFN_vkCmdDrawMeshTasksIndirectNV)gdpa(dev, "vkCmdDrawMeshTasksIndirectNV");
923     table->CmdDrawMeshTasksIndirectCountNV = (PFN_vkCmdDrawMeshTasksIndirectCountNV)gdpa(dev, "vkCmdDrawMeshTasksIndirectCountNV");
924 
925     // ---- VK_NV_scissor_exclusive extension commands
926     table->CmdSetExclusiveScissorEnableNV = (PFN_vkCmdSetExclusiveScissorEnableNV)gdpa(dev, "vkCmdSetExclusiveScissorEnableNV");
927     table->CmdSetExclusiveScissorNV = (PFN_vkCmdSetExclusiveScissorNV)gdpa(dev, "vkCmdSetExclusiveScissorNV");
928 
929     // ---- VK_NV_device_diagnostic_checkpoints extension commands
930     table->CmdSetCheckpointNV = (PFN_vkCmdSetCheckpointNV)gdpa(dev, "vkCmdSetCheckpointNV");
931     table->GetQueueCheckpointDataNV = (PFN_vkGetQueueCheckpointDataNV)gdpa(dev, "vkGetQueueCheckpointDataNV");
932     table->GetQueueCheckpointData2NV = (PFN_vkGetQueueCheckpointData2NV)gdpa(dev, "vkGetQueueCheckpointData2NV");
933 
934     // ---- VK_INTEL_performance_query extension commands
935     table->InitializePerformanceApiINTEL = (PFN_vkInitializePerformanceApiINTEL)gdpa(dev, "vkInitializePerformanceApiINTEL");
936     table->UninitializePerformanceApiINTEL = (PFN_vkUninitializePerformanceApiINTEL)gdpa(dev, "vkUninitializePerformanceApiINTEL");
937     table->CmdSetPerformanceMarkerINTEL = (PFN_vkCmdSetPerformanceMarkerINTEL)gdpa(dev, "vkCmdSetPerformanceMarkerINTEL");
938     table->CmdSetPerformanceStreamMarkerINTEL = (PFN_vkCmdSetPerformanceStreamMarkerINTEL)gdpa(dev, "vkCmdSetPerformanceStreamMarkerINTEL");
939     table->CmdSetPerformanceOverrideINTEL = (PFN_vkCmdSetPerformanceOverrideINTEL)gdpa(dev, "vkCmdSetPerformanceOverrideINTEL");
940     table->AcquirePerformanceConfigurationINTEL = (PFN_vkAcquirePerformanceConfigurationINTEL)gdpa(dev, "vkAcquirePerformanceConfigurationINTEL");
941     table->ReleasePerformanceConfigurationINTEL = (PFN_vkReleasePerformanceConfigurationINTEL)gdpa(dev, "vkReleasePerformanceConfigurationINTEL");
942     table->QueueSetPerformanceConfigurationINTEL = (PFN_vkQueueSetPerformanceConfigurationINTEL)gdpa(dev, "vkQueueSetPerformanceConfigurationINTEL");
943     table->GetPerformanceParameterINTEL = (PFN_vkGetPerformanceParameterINTEL)gdpa(dev, "vkGetPerformanceParameterINTEL");
944 
945     // ---- VK_AMD_display_native_hdr extension commands
946     table->SetLocalDimmingAMD = (PFN_vkSetLocalDimmingAMD)gdpa(dev, "vkSetLocalDimmingAMD");
947 
948     // ---- VK_EXT_buffer_device_address extension commands
949     table->GetBufferDeviceAddressEXT = (PFN_vkGetBufferDeviceAddressEXT)gdpa(dev, "vkGetBufferDeviceAddressEXT");
950 
951     // ---- VK_EXT_full_screen_exclusive extension commands
952 #if defined(VK_USE_PLATFORM_WIN32_KHR)
953     table->AcquireFullScreenExclusiveModeEXT = (PFN_vkAcquireFullScreenExclusiveModeEXT)gdpa(dev, "vkAcquireFullScreenExclusiveModeEXT");
954 #endif // VK_USE_PLATFORM_WIN32_KHR
955 #if defined(VK_USE_PLATFORM_WIN32_KHR)
956     table->ReleaseFullScreenExclusiveModeEXT = (PFN_vkReleaseFullScreenExclusiveModeEXT)gdpa(dev, "vkReleaseFullScreenExclusiveModeEXT");
957 #endif // VK_USE_PLATFORM_WIN32_KHR
958 #if defined(VK_USE_PLATFORM_WIN32_KHR)
959     table->GetDeviceGroupSurfacePresentModes2EXT = (PFN_vkGetDeviceGroupSurfacePresentModes2EXT)gdpa(dev, "vkGetDeviceGroupSurfacePresentModes2EXT");
960 #endif // VK_USE_PLATFORM_WIN32_KHR
961 
962     // ---- VK_EXT_line_rasterization extension commands
963     table->CmdSetLineStippleEXT = (PFN_vkCmdSetLineStippleEXT)gdpa(dev, "vkCmdSetLineStippleEXT");
964 
965     // ---- VK_EXT_host_query_reset extension commands
966     table->ResetQueryPoolEXT = (PFN_vkResetQueryPoolEXT)gdpa(dev, "vkResetQueryPoolEXT");
967 
968     // ---- VK_EXT_extended_dynamic_state extension commands
969     table->CmdSetCullModeEXT = (PFN_vkCmdSetCullModeEXT)gdpa(dev, "vkCmdSetCullModeEXT");
970     table->CmdSetFrontFaceEXT = (PFN_vkCmdSetFrontFaceEXT)gdpa(dev, "vkCmdSetFrontFaceEXT");
971     table->CmdSetPrimitiveTopologyEXT = (PFN_vkCmdSetPrimitiveTopologyEXT)gdpa(dev, "vkCmdSetPrimitiveTopologyEXT");
972     table->CmdSetViewportWithCountEXT = (PFN_vkCmdSetViewportWithCountEXT)gdpa(dev, "vkCmdSetViewportWithCountEXT");
973     table->CmdSetScissorWithCountEXT = (PFN_vkCmdSetScissorWithCountEXT)gdpa(dev, "vkCmdSetScissorWithCountEXT");
974     table->CmdBindVertexBuffers2EXT = (PFN_vkCmdBindVertexBuffers2EXT)gdpa(dev, "vkCmdBindVertexBuffers2EXT");
975     table->CmdSetDepthTestEnableEXT = (PFN_vkCmdSetDepthTestEnableEXT)gdpa(dev, "vkCmdSetDepthTestEnableEXT");
976     table->CmdSetDepthWriteEnableEXT = (PFN_vkCmdSetDepthWriteEnableEXT)gdpa(dev, "vkCmdSetDepthWriteEnableEXT");
977     table->CmdSetDepthCompareOpEXT = (PFN_vkCmdSetDepthCompareOpEXT)gdpa(dev, "vkCmdSetDepthCompareOpEXT");
978     table->CmdSetDepthBoundsTestEnableEXT = (PFN_vkCmdSetDepthBoundsTestEnableEXT)gdpa(dev, "vkCmdSetDepthBoundsTestEnableEXT");
979     table->CmdSetStencilTestEnableEXT = (PFN_vkCmdSetStencilTestEnableEXT)gdpa(dev, "vkCmdSetStencilTestEnableEXT");
980     table->CmdSetStencilOpEXT = (PFN_vkCmdSetStencilOpEXT)gdpa(dev, "vkCmdSetStencilOpEXT");
981 
982     // ---- VK_EXT_host_image_copy extension commands
983     table->CopyMemoryToImageEXT = (PFN_vkCopyMemoryToImageEXT)gdpa(dev, "vkCopyMemoryToImageEXT");
984     table->CopyImageToMemoryEXT = (PFN_vkCopyImageToMemoryEXT)gdpa(dev, "vkCopyImageToMemoryEXT");
985     table->CopyImageToImageEXT = (PFN_vkCopyImageToImageEXT)gdpa(dev, "vkCopyImageToImageEXT");
986     table->TransitionImageLayoutEXT = (PFN_vkTransitionImageLayoutEXT)gdpa(dev, "vkTransitionImageLayoutEXT");
987     table->GetImageSubresourceLayout2EXT = (PFN_vkGetImageSubresourceLayout2EXT)gdpa(dev, "vkGetImageSubresourceLayout2EXT");
988 
989     // ---- VK_EXT_swapchain_maintenance1 extension commands
990     table->ReleaseSwapchainImagesEXT = (PFN_vkReleaseSwapchainImagesEXT)gdpa(dev, "vkReleaseSwapchainImagesEXT");
991 
992     // ---- VK_NV_device_generated_commands extension commands
993     table->GetGeneratedCommandsMemoryRequirementsNV = (PFN_vkGetGeneratedCommandsMemoryRequirementsNV)gdpa(dev, "vkGetGeneratedCommandsMemoryRequirementsNV");
994     table->CmdPreprocessGeneratedCommandsNV = (PFN_vkCmdPreprocessGeneratedCommandsNV)gdpa(dev, "vkCmdPreprocessGeneratedCommandsNV");
995     table->CmdExecuteGeneratedCommandsNV = (PFN_vkCmdExecuteGeneratedCommandsNV)gdpa(dev, "vkCmdExecuteGeneratedCommandsNV");
996     table->CmdBindPipelineShaderGroupNV = (PFN_vkCmdBindPipelineShaderGroupNV)gdpa(dev, "vkCmdBindPipelineShaderGroupNV");
997     table->CreateIndirectCommandsLayoutNV = (PFN_vkCreateIndirectCommandsLayoutNV)gdpa(dev, "vkCreateIndirectCommandsLayoutNV");
998     table->DestroyIndirectCommandsLayoutNV = (PFN_vkDestroyIndirectCommandsLayoutNV)gdpa(dev, "vkDestroyIndirectCommandsLayoutNV");
999 
1000     // ---- VK_EXT_depth_bias_control extension commands
1001     table->CmdSetDepthBias2EXT = (PFN_vkCmdSetDepthBias2EXT)gdpa(dev, "vkCmdSetDepthBias2EXT");
1002 
1003     // ---- VK_EXT_private_data extension commands
1004     table->CreatePrivateDataSlotEXT = (PFN_vkCreatePrivateDataSlotEXT)gdpa(dev, "vkCreatePrivateDataSlotEXT");
1005     table->DestroyPrivateDataSlotEXT = (PFN_vkDestroyPrivateDataSlotEXT)gdpa(dev, "vkDestroyPrivateDataSlotEXT");
1006     table->SetPrivateDataEXT = (PFN_vkSetPrivateDataEXT)gdpa(dev, "vkSetPrivateDataEXT");
1007     table->GetPrivateDataEXT = (PFN_vkGetPrivateDataEXT)gdpa(dev, "vkGetPrivateDataEXT");
1008 
1009     // ---- VK_NV_cuda_kernel_launch extension commands
1010     table->CreateCudaModuleNV = (PFN_vkCreateCudaModuleNV)gdpa(dev, "vkCreateCudaModuleNV");
1011     table->GetCudaModuleCacheNV = (PFN_vkGetCudaModuleCacheNV)gdpa(dev, "vkGetCudaModuleCacheNV");
1012     table->CreateCudaFunctionNV = (PFN_vkCreateCudaFunctionNV)gdpa(dev, "vkCreateCudaFunctionNV");
1013     table->DestroyCudaModuleNV = (PFN_vkDestroyCudaModuleNV)gdpa(dev, "vkDestroyCudaModuleNV");
1014     table->DestroyCudaFunctionNV = (PFN_vkDestroyCudaFunctionNV)gdpa(dev, "vkDestroyCudaFunctionNV");
1015     table->CmdCudaLaunchKernelNV = (PFN_vkCmdCudaLaunchKernelNV)gdpa(dev, "vkCmdCudaLaunchKernelNV");
1016 
1017     // ---- VK_EXT_metal_objects extension commands
1018 #if defined(VK_USE_PLATFORM_METAL_EXT)
1019     table->ExportMetalObjectsEXT = (PFN_vkExportMetalObjectsEXT)gdpa(dev, "vkExportMetalObjectsEXT");
1020 #endif // VK_USE_PLATFORM_METAL_EXT
1021 
1022     // ---- VK_EXT_descriptor_buffer extension commands
1023     table->GetDescriptorSetLayoutSizeEXT = (PFN_vkGetDescriptorSetLayoutSizeEXT)gdpa(dev, "vkGetDescriptorSetLayoutSizeEXT");
1024     table->GetDescriptorSetLayoutBindingOffsetEXT = (PFN_vkGetDescriptorSetLayoutBindingOffsetEXT)gdpa(dev, "vkGetDescriptorSetLayoutBindingOffsetEXT");
1025     table->GetDescriptorEXT = (PFN_vkGetDescriptorEXT)gdpa(dev, "vkGetDescriptorEXT");
1026     table->CmdBindDescriptorBuffersEXT = (PFN_vkCmdBindDescriptorBuffersEXT)gdpa(dev, "vkCmdBindDescriptorBuffersEXT");
1027     table->CmdSetDescriptorBufferOffsetsEXT = (PFN_vkCmdSetDescriptorBufferOffsetsEXT)gdpa(dev, "vkCmdSetDescriptorBufferOffsetsEXT");
1028     table->CmdBindDescriptorBufferEmbeddedSamplersEXT = (PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT)gdpa(dev, "vkCmdBindDescriptorBufferEmbeddedSamplersEXT");
1029     table->GetBufferOpaqueCaptureDescriptorDataEXT = (PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT)gdpa(dev, "vkGetBufferOpaqueCaptureDescriptorDataEXT");
1030     table->GetImageOpaqueCaptureDescriptorDataEXT = (PFN_vkGetImageOpaqueCaptureDescriptorDataEXT)gdpa(dev, "vkGetImageOpaqueCaptureDescriptorDataEXT");
1031     table->GetImageViewOpaqueCaptureDescriptorDataEXT = (PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT)gdpa(dev, "vkGetImageViewOpaqueCaptureDescriptorDataEXT");
1032     table->GetSamplerOpaqueCaptureDescriptorDataEXT = (PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT)gdpa(dev, "vkGetSamplerOpaqueCaptureDescriptorDataEXT");
1033     table->GetAccelerationStructureOpaqueCaptureDescriptorDataEXT = (PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT)gdpa(dev, "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT");
1034 
1035     // ---- VK_NV_fragment_shading_rate_enums extension commands
1036     table->CmdSetFragmentShadingRateEnumNV = (PFN_vkCmdSetFragmentShadingRateEnumNV)gdpa(dev, "vkCmdSetFragmentShadingRateEnumNV");
1037 
1038     // ---- VK_EXT_device_fault extension commands
1039     table->GetDeviceFaultInfoEXT = (PFN_vkGetDeviceFaultInfoEXT)gdpa(dev, "vkGetDeviceFaultInfoEXT");
1040 
1041     // ---- VK_EXT_vertex_input_dynamic_state extension commands
1042     table->CmdSetVertexInputEXT = (PFN_vkCmdSetVertexInputEXT)gdpa(dev, "vkCmdSetVertexInputEXT");
1043 
1044     // ---- VK_FUCHSIA_external_memory extension commands
1045 #if defined(VK_USE_PLATFORM_FUCHSIA)
1046     table->GetMemoryZirconHandleFUCHSIA = (PFN_vkGetMemoryZirconHandleFUCHSIA)gdpa(dev, "vkGetMemoryZirconHandleFUCHSIA");
1047 #endif // VK_USE_PLATFORM_FUCHSIA
1048 #if defined(VK_USE_PLATFORM_FUCHSIA)
1049     table->GetMemoryZirconHandlePropertiesFUCHSIA = (PFN_vkGetMemoryZirconHandlePropertiesFUCHSIA)gdpa(dev, "vkGetMemoryZirconHandlePropertiesFUCHSIA");
1050 #endif // VK_USE_PLATFORM_FUCHSIA
1051 
1052     // ---- VK_FUCHSIA_external_semaphore extension commands
1053 #if defined(VK_USE_PLATFORM_FUCHSIA)
1054     table->ImportSemaphoreZirconHandleFUCHSIA = (PFN_vkImportSemaphoreZirconHandleFUCHSIA)gdpa(dev, "vkImportSemaphoreZirconHandleFUCHSIA");
1055 #endif // VK_USE_PLATFORM_FUCHSIA
1056 #if defined(VK_USE_PLATFORM_FUCHSIA)
1057     table->GetSemaphoreZirconHandleFUCHSIA = (PFN_vkGetSemaphoreZirconHandleFUCHSIA)gdpa(dev, "vkGetSemaphoreZirconHandleFUCHSIA");
1058 #endif // VK_USE_PLATFORM_FUCHSIA
1059 
1060     // ---- VK_FUCHSIA_buffer_collection extension commands
1061 #if defined(VK_USE_PLATFORM_FUCHSIA)
1062     table->CreateBufferCollectionFUCHSIA = (PFN_vkCreateBufferCollectionFUCHSIA)gdpa(dev, "vkCreateBufferCollectionFUCHSIA");
1063 #endif // VK_USE_PLATFORM_FUCHSIA
1064 #if defined(VK_USE_PLATFORM_FUCHSIA)
1065     table->SetBufferCollectionImageConstraintsFUCHSIA = (PFN_vkSetBufferCollectionImageConstraintsFUCHSIA)gdpa(dev, "vkSetBufferCollectionImageConstraintsFUCHSIA");
1066 #endif // VK_USE_PLATFORM_FUCHSIA
1067 #if defined(VK_USE_PLATFORM_FUCHSIA)
1068     table->SetBufferCollectionBufferConstraintsFUCHSIA = (PFN_vkSetBufferCollectionBufferConstraintsFUCHSIA)gdpa(dev, "vkSetBufferCollectionBufferConstraintsFUCHSIA");
1069 #endif // VK_USE_PLATFORM_FUCHSIA
1070 #if defined(VK_USE_PLATFORM_FUCHSIA)
1071     table->DestroyBufferCollectionFUCHSIA = (PFN_vkDestroyBufferCollectionFUCHSIA)gdpa(dev, "vkDestroyBufferCollectionFUCHSIA");
1072 #endif // VK_USE_PLATFORM_FUCHSIA
1073 #if defined(VK_USE_PLATFORM_FUCHSIA)
1074     table->GetBufferCollectionPropertiesFUCHSIA = (PFN_vkGetBufferCollectionPropertiesFUCHSIA)gdpa(dev, "vkGetBufferCollectionPropertiesFUCHSIA");
1075 #endif // VK_USE_PLATFORM_FUCHSIA
1076 
1077     // ---- VK_HUAWEI_subpass_shading extension commands
1078     table->GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = (PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI)gdpa(dev, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI");
1079     table->CmdSubpassShadingHUAWEI = (PFN_vkCmdSubpassShadingHUAWEI)gdpa(dev, "vkCmdSubpassShadingHUAWEI");
1080 
1081     // ---- VK_HUAWEI_invocation_mask extension commands
1082     table->CmdBindInvocationMaskHUAWEI = (PFN_vkCmdBindInvocationMaskHUAWEI)gdpa(dev, "vkCmdBindInvocationMaskHUAWEI");
1083 
1084     // ---- VK_NV_external_memory_rdma extension commands
1085     table->GetMemoryRemoteAddressNV = (PFN_vkGetMemoryRemoteAddressNV)gdpa(dev, "vkGetMemoryRemoteAddressNV");
1086 
1087     // ---- VK_EXT_pipeline_properties extension commands
1088     table->GetPipelinePropertiesEXT = (PFN_vkGetPipelinePropertiesEXT)gdpa(dev, "vkGetPipelinePropertiesEXT");
1089 
1090     // ---- VK_EXT_extended_dynamic_state2 extension commands
1091     table->CmdSetPatchControlPointsEXT = (PFN_vkCmdSetPatchControlPointsEXT)gdpa(dev, "vkCmdSetPatchControlPointsEXT");
1092     table->CmdSetRasterizerDiscardEnableEXT = (PFN_vkCmdSetRasterizerDiscardEnableEXT)gdpa(dev, "vkCmdSetRasterizerDiscardEnableEXT");
1093     table->CmdSetDepthBiasEnableEXT = (PFN_vkCmdSetDepthBiasEnableEXT)gdpa(dev, "vkCmdSetDepthBiasEnableEXT");
1094     table->CmdSetLogicOpEXT = (PFN_vkCmdSetLogicOpEXT)gdpa(dev, "vkCmdSetLogicOpEXT");
1095     table->CmdSetPrimitiveRestartEnableEXT = (PFN_vkCmdSetPrimitiveRestartEnableEXT)gdpa(dev, "vkCmdSetPrimitiveRestartEnableEXT");
1096 
1097     // ---- VK_EXT_color_write_enable extension commands
1098     table->CmdSetColorWriteEnableEXT = (PFN_vkCmdSetColorWriteEnableEXT)gdpa(dev, "vkCmdSetColorWriteEnableEXT");
1099 
1100     // ---- VK_EXT_multi_draw extension commands
1101     table->CmdDrawMultiEXT = (PFN_vkCmdDrawMultiEXT)gdpa(dev, "vkCmdDrawMultiEXT");
1102     table->CmdDrawMultiIndexedEXT = (PFN_vkCmdDrawMultiIndexedEXT)gdpa(dev, "vkCmdDrawMultiIndexedEXT");
1103 
1104     // ---- VK_EXT_opacity_micromap extension commands
1105     table->CreateMicromapEXT = (PFN_vkCreateMicromapEXT)gdpa(dev, "vkCreateMicromapEXT");
1106     table->DestroyMicromapEXT = (PFN_vkDestroyMicromapEXT)gdpa(dev, "vkDestroyMicromapEXT");
1107     table->CmdBuildMicromapsEXT = (PFN_vkCmdBuildMicromapsEXT)gdpa(dev, "vkCmdBuildMicromapsEXT");
1108     table->BuildMicromapsEXT = (PFN_vkBuildMicromapsEXT)gdpa(dev, "vkBuildMicromapsEXT");
1109     table->CopyMicromapEXT = (PFN_vkCopyMicromapEXT)gdpa(dev, "vkCopyMicromapEXT");
1110     table->CopyMicromapToMemoryEXT = (PFN_vkCopyMicromapToMemoryEXT)gdpa(dev, "vkCopyMicromapToMemoryEXT");
1111     table->CopyMemoryToMicromapEXT = (PFN_vkCopyMemoryToMicromapEXT)gdpa(dev, "vkCopyMemoryToMicromapEXT");
1112     table->WriteMicromapsPropertiesEXT = (PFN_vkWriteMicromapsPropertiesEXT)gdpa(dev, "vkWriteMicromapsPropertiesEXT");
1113     table->CmdCopyMicromapEXT = (PFN_vkCmdCopyMicromapEXT)gdpa(dev, "vkCmdCopyMicromapEXT");
1114     table->CmdCopyMicromapToMemoryEXT = (PFN_vkCmdCopyMicromapToMemoryEXT)gdpa(dev, "vkCmdCopyMicromapToMemoryEXT");
1115     table->CmdCopyMemoryToMicromapEXT = (PFN_vkCmdCopyMemoryToMicromapEXT)gdpa(dev, "vkCmdCopyMemoryToMicromapEXT");
1116     table->CmdWriteMicromapsPropertiesEXT = (PFN_vkCmdWriteMicromapsPropertiesEXT)gdpa(dev, "vkCmdWriteMicromapsPropertiesEXT");
1117     table->GetDeviceMicromapCompatibilityEXT = (PFN_vkGetDeviceMicromapCompatibilityEXT)gdpa(dev, "vkGetDeviceMicromapCompatibilityEXT");
1118     table->GetMicromapBuildSizesEXT = (PFN_vkGetMicromapBuildSizesEXT)gdpa(dev, "vkGetMicromapBuildSizesEXT");
1119 
1120     // ---- VK_HUAWEI_cluster_culling_shader extension commands
1121     table->CmdDrawClusterHUAWEI = (PFN_vkCmdDrawClusterHUAWEI)gdpa(dev, "vkCmdDrawClusterHUAWEI");
1122     table->CmdDrawClusterIndirectHUAWEI = (PFN_vkCmdDrawClusterIndirectHUAWEI)gdpa(dev, "vkCmdDrawClusterIndirectHUAWEI");
1123 
1124     // ---- VK_EXT_pageable_device_local_memory extension commands
1125     table->SetDeviceMemoryPriorityEXT = (PFN_vkSetDeviceMemoryPriorityEXT)gdpa(dev, "vkSetDeviceMemoryPriorityEXT");
1126 
1127     // ---- VK_VALVE_descriptor_set_host_mapping extension commands
1128     table->GetDescriptorSetLayoutHostMappingInfoVALVE = (PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE)gdpa(dev, "vkGetDescriptorSetLayoutHostMappingInfoVALVE");
1129     table->GetDescriptorSetHostMappingVALVE = (PFN_vkGetDescriptorSetHostMappingVALVE)gdpa(dev, "vkGetDescriptorSetHostMappingVALVE");
1130 
1131     // ---- VK_NV_copy_memory_indirect extension commands
1132     table->CmdCopyMemoryIndirectNV = (PFN_vkCmdCopyMemoryIndirectNV)gdpa(dev, "vkCmdCopyMemoryIndirectNV");
1133     table->CmdCopyMemoryToImageIndirectNV = (PFN_vkCmdCopyMemoryToImageIndirectNV)gdpa(dev, "vkCmdCopyMemoryToImageIndirectNV");
1134 
1135     // ---- VK_NV_memory_decompression extension commands
1136     table->CmdDecompressMemoryNV = (PFN_vkCmdDecompressMemoryNV)gdpa(dev, "vkCmdDecompressMemoryNV");
1137     table->CmdDecompressMemoryIndirectCountNV = (PFN_vkCmdDecompressMemoryIndirectCountNV)gdpa(dev, "vkCmdDecompressMemoryIndirectCountNV");
1138 
1139     // ---- VK_NV_device_generated_commands_compute extension commands
1140     table->GetPipelineIndirectMemoryRequirementsNV = (PFN_vkGetPipelineIndirectMemoryRequirementsNV)gdpa(dev, "vkGetPipelineIndirectMemoryRequirementsNV");
1141     table->CmdUpdatePipelineIndirectBufferNV = (PFN_vkCmdUpdatePipelineIndirectBufferNV)gdpa(dev, "vkCmdUpdatePipelineIndirectBufferNV");
1142     table->GetPipelineIndirectDeviceAddressNV = (PFN_vkGetPipelineIndirectDeviceAddressNV)gdpa(dev, "vkGetPipelineIndirectDeviceAddressNV");
1143 
1144     // ---- VK_EXT_extended_dynamic_state3 extension commands
1145     table->CmdSetDepthClampEnableEXT = (PFN_vkCmdSetDepthClampEnableEXT)gdpa(dev, "vkCmdSetDepthClampEnableEXT");
1146     table->CmdSetPolygonModeEXT = (PFN_vkCmdSetPolygonModeEXT)gdpa(dev, "vkCmdSetPolygonModeEXT");
1147     table->CmdSetRasterizationSamplesEXT = (PFN_vkCmdSetRasterizationSamplesEXT)gdpa(dev, "vkCmdSetRasterizationSamplesEXT");
1148     table->CmdSetSampleMaskEXT = (PFN_vkCmdSetSampleMaskEXT)gdpa(dev, "vkCmdSetSampleMaskEXT");
1149     table->CmdSetAlphaToCoverageEnableEXT = (PFN_vkCmdSetAlphaToCoverageEnableEXT)gdpa(dev, "vkCmdSetAlphaToCoverageEnableEXT");
1150     table->CmdSetAlphaToOneEnableEXT = (PFN_vkCmdSetAlphaToOneEnableEXT)gdpa(dev, "vkCmdSetAlphaToOneEnableEXT");
1151     table->CmdSetLogicOpEnableEXT = (PFN_vkCmdSetLogicOpEnableEXT)gdpa(dev, "vkCmdSetLogicOpEnableEXT");
1152     table->CmdSetColorBlendEnableEXT = (PFN_vkCmdSetColorBlendEnableEXT)gdpa(dev, "vkCmdSetColorBlendEnableEXT");
1153     table->CmdSetColorBlendEquationEXT = (PFN_vkCmdSetColorBlendEquationEXT)gdpa(dev, "vkCmdSetColorBlendEquationEXT");
1154     table->CmdSetColorWriteMaskEXT = (PFN_vkCmdSetColorWriteMaskEXT)gdpa(dev, "vkCmdSetColorWriteMaskEXT");
1155     table->CmdSetTessellationDomainOriginEXT = (PFN_vkCmdSetTessellationDomainOriginEXT)gdpa(dev, "vkCmdSetTessellationDomainOriginEXT");
1156     table->CmdSetRasterizationStreamEXT = (PFN_vkCmdSetRasterizationStreamEXT)gdpa(dev, "vkCmdSetRasterizationStreamEXT");
1157     table->CmdSetConservativeRasterizationModeEXT = (PFN_vkCmdSetConservativeRasterizationModeEXT)gdpa(dev, "vkCmdSetConservativeRasterizationModeEXT");
1158     table->CmdSetExtraPrimitiveOverestimationSizeEXT = (PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT)gdpa(dev, "vkCmdSetExtraPrimitiveOverestimationSizeEXT");
1159     table->CmdSetDepthClipEnableEXT = (PFN_vkCmdSetDepthClipEnableEXT)gdpa(dev, "vkCmdSetDepthClipEnableEXT");
1160     table->CmdSetSampleLocationsEnableEXT = (PFN_vkCmdSetSampleLocationsEnableEXT)gdpa(dev, "vkCmdSetSampleLocationsEnableEXT");
1161     table->CmdSetColorBlendAdvancedEXT = (PFN_vkCmdSetColorBlendAdvancedEXT)gdpa(dev, "vkCmdSetColorBlendAdvancedEXT");
1162     table->CmdSetProvokingVertexModeEXT = (PFN_vkCmdSetProvokingVertexModeEXT)gdpa(dev, "vkCmdSetProvokingVertexModeEXT");
1163     table->CmdSetLineRasterizationModeEXT = (PFN_vkCmdSetLineRasterizationModeEXT)gdpa(dev, "vkCmdSetLineRasterizationModeEXT");
1164     table->CmdSetLineStippleEnableEXT = (PFN_vkCmdSetLineStippleEnableEXT)gdpa(dev, "vkCmdSetLineStippleEnableEXT");
1165     table->CmdSetDepthClipNegativeOneToOneEXT = (PFN_vkCmdSetDepthClipNegativeOneToOneEXT)gdpa(dev, "vkCmdSetDepthClipNegativeOneToOneEXT");
1166     table->CmdSetViewportWScalingEnableNV = (PFN_vkCmdSetViewportWScalingEnableNV)gdpa(dev, "vkCmdSetViewportWScalingEnableNV");
1167     table->CmdSetViewportSwizzleNV = (PFN_vkCmdSetViewportSwizzleNV)gdpa(dev, "vkCmdSetViewportSwizzleNV");
1168     table->CmdSetCoverageToColorEnableNV = (PFN_vkCmdSetCoverageToColorEnableNV)gdpa(dev, "vkCmdSetCoverageToColorEnableNV");
1169     table->CmdSetCoverageToColorLocationNV = (PFN_vkCmdSetCoverageToColorLocationNV)gdpa(dev, "vkCmdSetCoverageToColorLocationNV");
1170     table->CmdSetCoverageModulationModeNV = (PFN_vkCmdSetCoverageModulationModeNV)gdpa(dev, "vkCmdSetCoverageModulationModeNV");
1171     table->CmdSetCoverageModulationTableEnableNV = (PFN_vkCmdSetCoverageModulationTableEnableNV)gdpa(dev, "vkCmdSetCoverageModulationTableEnableNV");
1172     table->CmdSetCoverageModulationTableNV = (PFN_vkCmdSetCoverageModulationTableNV)gdpa(dev, "vkCmdSetCoverageModulationTableNV");
1173     table->CmdSetShadingRateImageEnableNV = (PFN_vkCmdSetShadingRateImageEnableNV)gdpa(dev, "vkCmdSetShadingRateImageEnableNV");
1174     table->CmdSetRepresentativeFragmentTestEnableNV = (PFN_vkCmdSetRepresentativeFragmentTestEnableNV)gdpa(dev, "vkCmdSetRepresentativeFragmentTestEnableNV");
1175     table->CmdSetCoverageReductionModeNV = (PFN_vkCmdSetCoverageReductionModeNV)gdpa(dev, "vkCmdSetCoverageReductionModeNV");
1176 
1177     // ---- VK_EXT_shader_module_identifier extension commands
1178     table->GetShaderModuleIdentifierEXT = (PFN_vkGetShaderModuleIdentifierEXT)gdpa(dev, "vkGetShaderModuleIdentifierEXT");
1179     table->GetShaderModuleCreateInfoIdentifierEXT = (PFN_vkGetShaderModuleCreateInfoIdentifierEXT)gdpa(dev, "vkGetShaderModuleCreateInfoIdentifierEXT");
1180 
1181     // ---- VK_NV_optical_flow extension commands
1182     table->CreateOpticalFlowSessionNV = (PFN_vkCreateOpticalFlowSessionNV)gdpa(dev, "vkCreateOpticalFlowSessionNV");
1183     table->DestroyOpticalFlowSessionNV = (PFN_vkDestroyOpticalFlowSessionNV)gdpa(dev, "vkDestroyOpticalFlowSessionNV");
1184     table->BindOpticalFlowSessionImageNV = (PFN_vkBindOpticalFlowSessionImageNV)gdpa(dev, "vkBindOpticalFlowSessionImageNV");
1185     table->CmdOpticalFlowExecuteNV = (PFN_vkCmdOpticalFlowExecuteNV)gdpa(dev, "vkCmdOpticalFlowExecuteNV");
1186 
1187     // ---- VK_AMD_anti_lag extension commands
1188     table->AntiLagUpdateAMD = (PFN_vkAntiLagUpdateAMD)gdpa(dev, "vkAntiLagUpdateAMD");
1189 
1190     // ---- VK_EXT_shader_object extension commands
1191     table->CreateShadersEXT = (PFN_vkCreateShadersEXT)gdpa(dev, "vkCreateShadersEXT");
1192     table->DestroyShaderEXT = (PFN_vkDestroyShaderEXT)gdpa(dev, "vkDestroyShaderEXT");
1193     table->GetShaderBinaryDataEXT = (PFN_vkGetShaderBinaryDataEXT)gdpa(dev, "vkGetShaderBinaryDataEXT");
1194     table->CmdBindShadersEXT = (PFN_vkCmdBindShadersEXT)gdpa(dev, "vkCmdBindShadersEXT");
1195     table->CmdSetDepthClampRangeEXT = (PFN_vkCmdSetDepthClampRangeEXT)gdpa(dev, "vkCmdSetDepthClampRangeEXT");
1196 
1197     // ---- VK_QCOM_tile_properties extension commands
1198     table->GetFramebufferTilePropertiesQCOM = (PFN_vkGetFramebufferTilePropertiesQCOM)gdpa(dev, "vkGetFramebufferTilePropertiesQCOM");
1199     table->GetDynamicRenderingTilePropertiesQCOM = (PFN_vkGetDynamicRenderingTilePropertiesQCOM)gdpa(dev, "vkGetDynamicRenderingTilePropertiesQCOM");
1200 
1201     // ---- VK_NV_cooperative_vector extension commands
1202     table->ConvertCooperativeVectorMatrixNV = (PFN_vkConvertCooperativeVectorMatrixNV)gdpa(dev, "vkConvertCooperativeVectorMatrixNV");
1203     table->CmdConvertCooperativeVectorMatrixNV = (PFN_vkCmdConvertCooperativeVectorMatrixNV)gdpa(dev, "vkCmdConvertCooperativeVectorMatrixNV");
1204 
1205     // ---- VK_NV_low_latency2 extension commands
1206     table->SetLatencySleepModeNV = (PFN_vkSetLatencySleepModeNV)gdpa(dev, "vkSetLatencySleepModeNV");
1207     table->LatencySleepNV = (PFN_vkLatencySleepNV)gdpa(dev, "vkLatencySleepNV");
1208     table->SetLatencyMarkerNV = (PFN_vkSetLatencyMarkerNV)gdpa(dev, "vkSetLatencyMarkerNV");
1209     table->GetLatencyTimingsNV = (PFN_vkGetLatencyTimingsNV)gdpa(dev, "vkGetLatencyTimingsNV");
1210     table->QueueNotifyOutOfBandNV = (PFN_vkQueueNotifyOutOfBandNV)gdpa(dev, "vkQueueNotifyOutOfBandNV");
1211 
1212     // ---- VK_EXT_attachment_feedback_loop_dynamic_state extension commands
1213     table->CmdSetAttachmentFeedbackLoopEnableEXT = (PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT)gdpa(dev, "vkCmdSetAttachmentFeedbackLoopEnableEXT");
1214 
1215     // ---- VK_QNX_external_memory_screen_buffer extension commands
1216 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
1217     table->GetScreenBufferPropertiesQNX = (PFN_vkGetScreenBufferPropertiesQNX)gdpa(dev, "vkGetScreenBufferPropertiesQNX");
1218 #endif // VK_USE_PLATFORM_SCREEN_QNX
1219 
1220     // ---- VK_NV_cluster_acceleration_structure extension commands
1221     table->GetClusterAccelerationStructureBuildSizesNV = (PFN_vkGetClusterAccelerationStructureBuildSizesNV)gdpa(dev, "vkGetClusterAccelerationStructureBuildSizesNV");
1222     table->CmdBuildClusterAccelerationStructureIndirectNV = (PFN_vkCmdBuildClusterAccelerationStructureIndirectNV)gdpa(dev, "vkCmdBuildClusterAccelerationStructureIndirectNV");
1223 
1224     // ---- VK_NV_partitioned_acceleration_structure extension commands
1225     table->GetPartitionedAccelerationStructuresBuildSizesNV = (PFN_vkGetPartitionedAccelerationStructuresBuildSizesNV)gdpa(dev, "vkGetPartitionedAccelerationStructuresBuildSizesNV");
1226     table->CmdBuildPartitionedAccelerationStructuresNV = (PFN_vkCmdBuildPartitionedAccelerationStructuresNV)gdpa(dev, "vkCmdBuildPartitionedAccelerationStructuresNV");
1227 
1228     // ---- VK_EXT_device_generated_commands extension commands
1229     table->GetGeneratedCommandsMemoryRequirementsEXT = (PFN_vkGetGeneratedCommandsMemoryRequirementsEXT)gdpa(dev, "vkGetGeneratedCommandsMemoryRequirementsEXT");
1230     table->CmdPreprocessGeneratedCommandsEXT = (PFN_vkCmdPreprocessGeneratedCommandsEXT)gdpa(dev, "vkCmdPreprocessGeneratedCommandsEXT");
1231     table->CmdExecuteGeneratedCommandsEXT = (PFN_vkCmdExecuteGeneratedCommandsEXT)gdpa(dev, "vkCmdExecuteGeneratedCommandsEXT");
1232     table->CreateIndirectCommandsLayoutEXT = (PFN_vkCreateIndirectCommandsLayoutEXT)gdpa(dev, "vkCreateIndirectCommandsLayoutEXT");
1233     table->DestroyIndirectCommandsLayoutEXT = (PFN_vkDestroyIndirectCommandsLayoutEXT)gdpa(dev, "vkDestroyIndirectCommandsLayoutEXT");
1234     table->CreateIndirectExecutionSetEXT = (PFN_vkCreateIndirectExecutionSetEXT)gdpa(dev, "vkCreateIndirectExecutionSetEXT");
1235     table->DestroyIndirectExecutionSetEXT = (PFN_vkDestroyIndirectExecutionSetEXT)gdpa(dev, "vkDestroyIndirectExecutionSetEXT");
1236     table->UpdateIndirectExecutionSetPipelineEXT = (PFN_vkUpdateIndirectExecutionSetPipelineEXT)gdpa(dev, "vkUpdateIndirectExecutionSetPipelineEXT");
1237     table->UpdateIndirectExecutionSetShaderEXT = (PFN_vkUpdateIndirectExecutionSetShaderEXT)gdpa(dev, "vkUpdateIndirectExecutionSetShaderEXT");
1238 
1239     // ---- VK_EXT_external_memory_metal extension commands
1240 #if defined(VK_USE_PLATFORM_METAL_EXT)
1241     table->GetMemoryMetalHandleEXT = (PFN_vkGetMemoryMetalHandleEXT)gdpa(dev, "vkGetMemoryMetalHandleEXT");
1242 #endif // VK_USE_PLATFORM_METAL_EXT
1243 #if defined(VK_USE_PLATFORM_METAL_EXT)
1244     table->GetMemoryMetalHandlePropertiesEXT = (PFN_vkGetMemoryMetalHandlePropertiesEXT)gdpa(dev, "vkGetMemoryMetalHandlePropertiesEXT");
1245 #endif // VK_USE_PLATFORM_METAL_EXT
1246 
1247     // ---- VK_KHR_acceleration_structure extension commands
1248     table->CreateAccelerationStructureKHR = (PFN_vkCreateAccelerationStructureKHR)gdpa(dev, "vkCreateAccelerationStructureKHR");
1249     table->DestroyAccelerationStructureKHR = (PFN_vkDestroyAccelerationStructureKHR)gdpa(dev, "vkDestroyAccelerationStructureKHR");
1250     table->CmdBuildAccelerationStructuresKHR = (PFN_vkCmdBuildAccelerationStructuresKHR)gdpa(dev, "vkCmdBuildAccelerationStructuresKHR");
1251     table->CmdBuildAccelerationStructuresIndirectKHR = (PFN_vkCmdBuildAccelerationStructuresIndirectKHR)gdpa(dev, "vkCmdBuildAccelerationStructuresIndirectKHR");
1252     table->BuildAccelerationStructuresKHR = (PFN_vkBuildAccelerationStructuresKHR)gdpa(dev, "vkBuildAccelerationStructuresKHR");
1253     table->CopyAccelerationStructureKHR = (PFN_vkCopyAccelerationStructureKHR)gdpa(dev, "vkCopyAccelerationStructureKHR");
1254     table->CopyAccelerationStructureToMemoryKHR = (PFN_vkCopyAccelerationStructureToMemoryKHR)gdpa(dev, "vkCopyAccelerationStructureToMemoryKHR");
1255     table->CopyMemoryToAccelerationStructureKHR = (PFN_vkCopyMemoryToAccelerationStructureKHR)gdpa(dev, "vkCopyMemoryToAccelerationStructureKHR");
1256     table->WriteAccelerationStructuresPropertiesKHR = (PFN_vkWriteAccelerationStructuresPropertiesKHR)gdpa(dev, "vkWriteAccelerationStructuresPropertiesKHR");
1257     table->CmdCopyAccelerationStructureKHR = (PFN_vkCmdCopyAccelerationStructureKHR)gdpa(dev, "vkCmdCopyAccelerationStructureKHR");
1258     table->CmdCopyAccelerationStructureToMemoryKHR = (PFN_vkCmdCopyAccelerationStructureToMemoryKHR)gdpa(dev, "vkCmdCopyAccelerationStructureToMemoryKHR");
1259     table->CmdCopyMemoryToAccelerationStructureKHR = (PFN_vkCmdCopyMemoryToAccelerationStructureKHR)gdpa(dev, "vkCmdCopyMemoryToAccelerationStructureKHR");
1260     table->GetAccelerationStructureDeviceAddressKHR = (PFN_vkGetAccelerationStructureDeviceAddressKHR)gdpa(dev, "vkGetAccelerationStructureDeviceAddressKHR");
1261     table->CmdWriteAccelerationStructuresPropertiesKHR = (PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)gdpa(dev, "vkCmdWriteAccelerationStructuresPropertiesKHR");
1262     table->GetDeviceAccelerationStructureCompatibilityKHR = (PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)gdpa(dev, "vkGetDeviceAccelerationStructureCompatibilityKHR");
1263     table->GetAccelerationStructureBuildSizesKHR = (PFN_vkGetAccelerationStructureBuildSizesKHR)gdpa(dev, "vkGetAccelerationStructureBuildSizesKHR");
1264 
1265     // ---- VK_KHR_ray_tracing_pipeline extension commands
1266     table->CmdTraceRaysKHR = (PFN_vkCmdTraceRaysKHR)gdpa(dev, "vkCmdTraceRaysKHR");
1267     table->CreateRayTracingPipelinesKHR = (PFN_vkCreateRayTracingPipelinesKHR)gdpa(dev, "vkCreateRayTracingPipelinesKHR");
1268     table->GetRayTracingCaptureReplayShaderGroupHandlesKHR = (PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)gdpa(dev, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR");
1269     table->CmdTraceRaysIndirectKHR = (PFN_vkCmdTraceRaysIndirectKHR)gdpa(dev, "vkCmdTraceRaysIndirectKHR");
1270     table->GetRayTracingShaderGroupStackSizeKHR = (PFN_vkGetRayTracingShaderGroupStackSizeKHR)gdpa(dev, "vkGetRayTracingShaderGroupStackSizeKHR");
1271     table->CmdSetRayTracingPipelineStackSizeKHR = (PFN_vkCmdSetRayTracingPipelineStackSizeKHR)gdpa(dev, "vkCmdSetRayTracingPipelineStackSizeKHR");
1272 
1273     // ---- VK_EXT_mesh_shader extension commands
1274     table->CmdDrawMeshTasksEXT = (PFN_vkCmdDrawMeshTasksEXT)gdpa(dev, "vkCmdDrawMeshTasksEXT");
1275     table->CmdDrawMeshTasksIndirectEXT = (PFN_vkCmdDrawMeshTasksIndirectEXT)gdpa(dev, "vkCmdDrawMeshTasksIndirectEXT");
1276     table->CmdDrawMeshTasksIndirectCountEXT = (PFN_vkCmdDrawMeshTasksIndirectCountEXT)gdpa(dev, "vkCmdDrawMeshTasksIndirectCountEXT");
1277 
1278     // ---- VK_OHOS_native_buffer extension commands
1279 #if defined(VK_USE_PLATFORM_OHOS)
1280     table->GetSwapchainGrallocUsageOHOS = (PFN_vkGetSwapchainGrallocUsageOHOS)gdpa(dev, "vkGetSwapchainGrallocUsageOHOS");
1281 #endif // VK_USE_PLATFORM_OHOS
1282 #if defined(VK_USE_PLATFORM_OHOS)
1283     table->AcquireImageOHOS = (PFN_vkAcquireImageOHOS)gdpa(dev, "vkAcquireImageOHOS");
1284 #endif // VK_USE_PLATFORM_OHOS
1285 #if defined(VK_USE_PLATFORM_OHOS)
1286     table->QueueSignalReleaseImageOHOS = (PFN_vkQueueSignalReleaseImageOHOS)gdpa(dev, "vkQueueSignalReleaseImageOHOS");
1287 #endif // VK_USE_PLATFORM_OHOS
1288 
1289     // ---- VK_OHOS_external_memory extension commands
1290 #if defined(VK_USE_PLATFORM_OHOS)
1291     table->GetNativeBufferPropertiesOHOS = (PFN_vkGetNativeBufferPropertiesOHOS)gdpa(dev, "vkGetNativeBufferPropertiesOHOS");
1292 #endif // VK_USE_PLATFORM_OHOS
1293 #if defined(VK_USE_PLATFORM_OHOS)
1294     table->GetMemoryNativeBufferOHOS = (PFN_vkGetMemoryNativeBufferOHOS)gdpa(dev, "vkGetMemoryNativeBufferOHOS");
1295 #endif // VK_USE_PLATFORM_OHOS
1296 }
1297 
1298 // Init Instance function pointer dispatch table with core commands
loader_init_instance_core_dispatch_table(VkLayerInstanceDispatchTable * table,PFN_vkGetInstanceProcAddr gpa,VkInstance inst)1299 VKAPI_ATTR void VKAPI_CALL loader_init_instance_core_dispatch_table(VkLayerInstanceDispatchTable *table, PFN_vkGetInstanceProcAddr gpa,
1300                                                                     VkInstance inst) {
1301 
1302     // ---- Core Vulkan 1.0 commands
1303     table->DestroyInstance = (PFN_vkDestroyInstance)gpa(inst, "vkDestroyInstance");
1304     table->EnumeratePhysicalDevices = (PFN_vkEnumeratePhysicalDevices)gpa(inst, "vkEnumeratePhysicalDevices");
1305     table->GetPhysicalDeviceFeatures = (PFN_vkGetPhysicalDeviceFeatures)gpa(inst, "vkGetPhysicalDeviceFeatures");
1306     table->GetPhysicalDeviceFormatProperties = (PFN_vkGetPhysicalDeviceFormatProperties)gpa(inst, "vkGetPhysicalDeviceFormatProperties");
1307     table->GetPhysicalDeviceImageFormatProperties = (PFN_vkGetPhysicalDeviceImageFormatProperties)gpa(inst, "vkGetPhysicalDeviceImageFormatProperties");
1308     table->GetPhysicalDeviceProperties = (PFN_vkGetPhysicalDeviceProperties)gpa(inst, "vkGetPhysicalDeviceProperties");
1309     table->GetPhysicalDeviceQueueFamilyProperties = (PFN_vkGetPhysicalDeviceQueueFamilyProperties)gpa(inst, "vkGetPhysicalDeviceQueueFamilyProperties");
1310     table->GetPhysicalDeviceMemoryProperties = (PFN_vkGetPhysicalDeviceMemoryProperties)gpa(inst, "vkGetPhysicalDeviceMemoryProperties");
1311     table->GetInstanceProcAddr = gpa;
1312     table->EnumerateDeviceExtensionProperties = (PFN_vkEnumerateDeviceExtensionProperties)gpa(inst, "vkEnumerateDeviceExtensionProperties");
1313     table->EnumerateDeviceLayerProperties = (PFN_vkEnumerateDeviceLayerProperties)gpa(inst, "vkEnumerateDeviceLayerProperties");
1314     table->GetPhysicalDeviceSparseImageFormatProperties = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties)gpa(inst, "vkGetPhysicalDeviceSparseImageFormatProperties");
1315 
1316     // ---- Core Vulkan 1.1 commands
1317     table->EnumeratePhysicalDeviceGroups = (PFN_vkEnumeratePhysicalDeviceGroups)gpa(inst, "vkEnumeratePhysicalDeviceGroups");
1318     table->GetPhysicalDeviceFeatures2 = (PFN_vkGetPhysicalDeviceFeatures2)gpa(inst, "vkGetPhysicalDeviceFeatures2");
1319     table->GetPhysicalDeviceProperties2 = (PFN_vkGetPhysicalDeviceProperties2)gpa(inst, "vkGetPhysicalDeviceProperties2");
1320     table->GetPhysicalDeviceFormatProperties2 = (PFN_vkGetPhysicalDeviceFormatProperties2)gpa(inst, "vkGetPhysicalDeviceFormatProperties2");
1321     table->GetPhysicalDeviceImageFormatProperties2 = (PFN_vkGetPhysicalDeviceImageFormatProperties2)gpa(inst, "vkGetPhysicalDeviceImageFormatProperties2");
1322     table->GetPhysicalDeviceQueueFamilyProperties2 = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2)gpa(inst, "vkGetPhysicalDeviceQueueFamilyProperties2");
1323     table->GetPhysicalDeviceMemoryProperties2 = (PFN_vkGetPhysicalDeviceMemoryProperties2)gpa(inst, "vkGetPhysicalDeviceMemoryProperties2");
1324     table->GetPhysicalDeviceSparseImageFormatProperties2 = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)gpa(inst, "vkGetPhysicalDeviceSparseImageFormatProperties2");
1325     table->GetPhysicalDeviceExternalBufferProperties = (PFN_vkGetPhysicalDeviceExternalBufferProperties)gpa(inst, "vkGetPhysicalDeviceExternalBufferProperties");
1326     table->GetPhysicalDeviceExternalFenceProperties = (PFN_vkGetPhysicalDeviceExternalFenceProperties)gpa(inst, "vkGetPhysicalDeviceExternalFenceProperties");
1327     table->GetPhysicalDeviceExternalSemaphoreProperties = (PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)gpa(inst, "vkGetPhysicalDeviceExternalSemaphoreProperties");
1328 
1329     // ---- Core Vulkan 1.3 commands
1330     table->GetPhysicalDeviceToolProperties = (PFN_vkGetPhysicalDeviceToolProperties)gpa(inst, "vkGetPhysicalDeviceToolProperties");
1331 }
1332 
1333 // Init Instance function pointer dispatch table with core commands
loader_init_instance_extension_dispatch_table(VkLayerInstanceDispatchTable * table,PFN_vkGetInstanceProcAddr gpa,VkInstance inst)1334 VKAPI_ATTR void VKAPI_CALL loader_init_instance_extension_dispatch_table(VkLayerInstanceDispatchTable *table, PFN_vkGetInstanceProcAddr gpa,
1335                                                                         VkInstance inst) {
1336 
1337     // ---- VK_KHR_surface extension commands
1338     table->DestroySurfaceKHR = (PFN_vkDestroySurfaceKHR)gpa(inst, "vkDestroySurfaceKHR");
1339     table->GetPhysicalDeviceSurfaceSupportKHR = (PFN_vkGetPhysicalDeviceSurfaceSupportKHR)gpa(inst, "vkGetPhysicalDeviceSurfaceSupportKHR");
1340     table->GetPhysicalDeviceSurfaceCapabilitiesKHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)gpa(inst, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR");
1341     table->GetPhysicalDeviceSurfaceFormatsKHR = (PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)gpa(inst, "vkGetPhysicalDeviceSurfaceFormatsKHR");
1342     table->GetPhysicalDeviceSurfacePresentModesKHR = (PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)gpa(inst, "vkGetPhysicalDeviceSurfacePresentModesKHR");
1343 
1344     // ---- VK_KHR_swapchain extension commands
1345     table->GetPhysicalDevicePresentRectanglesKHR = (PFN_vkGetPhysicalDevicePresentRectanglesKHR)gpa(inst, "vkGetPhysicalDevicePresentRectanglesKHR");
1346 
1347     // ---- VK_KHR_display extension commands
1348     table->GetPhysicalDeviceDisplayPropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)gpa(inst, "vkGetPhysicalDeviceDisplayPropertiesKHR");
1349     table->GetPhysicalDeviceDisplayPlanePropertiesKHR = (PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)gpa(inst, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR");
1350     table->GetDisplayPlaneSupportedDisplaysKHR = (PFN_vkGetDisplayPlaneSupportedDisplaysKHR)gpa(inst, "vkGetDisplayPlaneSupportedDisplaysKHR");
1351     table->GetDisplayModePropertiesKHR = (PFN_vkGetDisplayModePropertiesKHR)gpa(inst, "vkGetDisplayModePropertiesKHR");
1352     table->CreateDisplayModeKHR = (PFN_vkCreateDisplayModeKHR)gpa(inst, "vkCreateDisplayModeKHR");
1353     table->GetDisplayPlaneCapabilitiesKHR = (PFN_vkGetDisplayPlaneCapabilitiesKHR)gpa(inst, "vkGetDisplayPlaneCapabilitiesKHR");
1354     table->CreateDisplayPlaneSurfaceKHR = (PFN_vkCreateDisplayPlaneSurfaceKHR)gpa(inst, "vkCreateDisplayPlaneSurfaceKHR");
1355 
1356     // ---- VK_KHR_xlib_surface extension commands
1357 #if defined(VK_USE_PLATFORM_XLIB_KHR)
1358     table->CreateXlibSurfaceKHR = (PFN_vkCreateXlibSurfaceKHR)gpa(inst, "vkCreateXlibSurfaceKHR");
1359 #endif // VK_USE_PLATFORM_XLIB_KHR
1360 #if defined(VK_USE_PLATFORM_XLIB_KHR)
1361     table->GetPhysicalDeviceXlibPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)gpa(inst, "vkGetPhysicalDeviceXlibPresentationSupportKHR");
1362 #endif // VK_USE_PLATFORM_XLIB_KHR
1363 
1364     // ---- VK_KHR_xcb_surface extension commands
1365 #if defined(VK_USE_PLATFORM_XCB_KHR)
1366     table->CreateXcbSurfaceKHR = (PFN_vkCreateXcbSurfaceKHR)gpa(inst, "vkCreateXcbSurfaceKHR");
1367 #endif // VK_USE_PLATFORM_XCB_KHR
1368 #if defined(VK_USE_PLATFORM_XCB_KHR)
1369     table->GetPhysicalDeviceXcbPresentationSupportKHR = (PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)gpa(inst, "vkGetPhysicalDeviceXcbPresentationSupportKHR");
1370 #endif // VK_USE_PLATFORM_XCB_KHR
1371 
1372     // ---- VK_KHR_wayland_surface extension commands
1373 #if defined(VK_USE_PLATFORM_WAYLAND_KHR)
1374     table->CreateWaylandSurfaceKHR = (PFN_vkCreateWaylandSurfaceKHR)gpa(inst, "vkCreateWaylandSurfaceKHR");
1375 #endif // VK_USE_PLATFORM_WAYLAND_KHR
1376 #if defined(VK_USE_PLATFORM_WAYLAND_KHR)
1377     table->GetPhysicalDeviceWaylandPresentationSupportKHR = (PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)gpa(inst, "vkGetPhysicalDeviceWaylandPresentationSupportKHR");
1378 #endif // VK_USE_PLATFORM_WAYLAND_KHR
1379 
1380     // ---- VK_KHR_android_surface extension commands
1381 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
1382     table->CreateAndroidSurfaceKHR = (PFN_vkCreateAndroidSurfaceKHR)gpa(inst, "vkCreateAndroidSurfaceKHR");
1383 #endif // VK_USE_PLATFORM_ANDROID_KHR
1384 
1385     // ---- VK_KHR_win32_surface extension commands
1386 #if defined(VK_USE_PLATFORM_WIN32_KHR)
1387     table->CreateWin32SurfaceKHR = (PFN_vkCreateWin32SurfaceKHR)gpa(inst, "vkCreateWin32SurfaceKHR");
1388 #endif // VK_USE_PLATFORM_WIN32_KHR
1389 #if defined(VK_USE_PLATFORM_WIN32_KHR)
1390     table->GetPhysicalDeviceWin32PresentationSupportKHR = (PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)gpa(inst, "vkGetPhysicalDeviceWin32PresentationSupportKHR");
1391 #endif // VK_USE_PLATFORM_WIN32_KHR
1392 
1393     // ---- VK_KHR_video_queue extension commands
1394     table->GetPhysicalDeviceVideoCapabilitiesKHR = (PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)gpa(inst, "vkGetPhysicalDeviceVideoCapabilitiesKHR");
1395     table->GetPhysicalDeviceVideoFormatPropertiesKHR = (PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)gpa(inst, "vkGetPhysicalDeviceVideoFormatPropertiesKHR");
1396 
1397     // ---- VK_KHR_get_physical_device_properties2 extension commands
1398     table->GetPhysicalDeviceFeatures2KHR = (PFN_vkGetPhysicalDeviceFeatures2KHR)gpa(inst, "vkGetPhysicalDeviceFeatures2KHR");
1399     table->GetPhysicalDeviceProperties2KHR = (PFN_vkGetPhysicalDeviceProperties2KHR)gpa(inst, "vkGetPhysicalDeviceProperties2KHR");
1400     table->GetPhysicalDeviceFormatProperties2KHR = (PFN_vkGetPhysicalDeviceFormatProperties2KHR)gpa(inst, "vkGetPhysicalDeviceFormatProperties2KHR");
1401     table->GetPhysicalDeviceImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)gpa(inst, "vkGetPhysicalDeviceImageFormatProperties2KHR");
1402     table->GetPhysicalDeviceQueueFamilyProperties2KHR = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)gpa(inst, "vkGetPhysicalDeviceQueueFamilyProperties2KHR");
1403     table->GetPhysicalDeviceMemoryProperties2KHR = (PFN_vkGetPhysicalDeviceMemoryProperties2KHR)gpa(inst, "vkGetPhysicalDeviceMemoryProperties2KHR");
1404     table->GetPhysicalDeviceSparseImageFormatProperties2KHR = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)gpa(inst, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR");
1405 
1406     // ---- VK_KHR_device_group_creation extension commands
1407     table->EnumeratePhysicalDeviceGroupsKHR = (PFN_vkEnumeratePhysicalDeviceGroupsKHR)gpa(inst, "vkEnumeratePhysicalDeviceGroupsKHR");
1408 
1409     // ---- VK_KHR_external_memory_capabilities extension commands
1410     table->GetPhysicalDeviceExternalBufferPropertiesKHR = (PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)gpa(inst, "vkGetPhysicalDeviceExternalBufferPropertiesKHR");
1411 
1412     // ---- VK_KHR_external_semaphore_capabilities extension commands
1413     table->GetPhysicalDeviceExternalSemaphorePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)gpa(inst, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR");
1414 
1415     // ---- VK_KHR_external_fence_capabilities extension commands
1416     table->GetPhysicalDeviceExternalFencePropertiesKHR = (PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)gpa(inst, "vkGetPhysicalDeviceExternalFencePropertiesKHR");
1417 
1418     // ---- VK_KHR_performance_query extension commands
1419     table->EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = (PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)gpa(inst, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
1420     table->GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = (PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)gpa(inst, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
1421 
1422     // ---- VK_KHR_get_surface_capabilities2 extension commands
1423     table->GetPhysicalDeviceSurfaceCapabilities2KHR = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)gpa(inst, "vkGetPhysicalDeviceSurfaceCapabilities2KHR");
1424     table->GetPhysicalDeviceSurfaceFormats2KHR = (PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)gpa(inst, "vkGetPhysicalDeviceSurfaceFormats2KHR");
1425 
1426     // ---- VK_KHR_get_display_properties2 extension commands
1427     table->GetPhysicalDeviceDisplayProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayProperties2KHR)gpa(inst, "vkGetPhysicalDeviceDisplayProperties2KHR");
1428     table->GetPhysicalDeviceDisplayPlaneProperties2KHR = (PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)gpa(inst, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR");
1429     table->GetDisplayModeProperties2KHR = (PFN_vkGetDisplayModeProperties2KHR)gpa(inst, "vkGetDisplayModeProperties2KHR");
1430     table->GetDisplayPlaneCapabilities2KHR = (PFN_vkGetDisplayPlaneCapabilities2KHR)gpa(inst, "vkGetDisplayPlaneCapabilities2KHR");
1431 
1432     // ---- VK_KHR_fragment_shading_rate extension commands
1433     table->GetPhysicalDeviceFragmentShadingRatesKHR = (PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR)gpa(inst, "vkGetPhysicalDeviceFragmentShadingRatesKHR");
1434 
1435     // ---- VK_KHR_video_encode_queue extension commands
1436     table->GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = (PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR)gpa(inst, "vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR");
1437 
1438     // ---- VK_KHR_cooperative_matrix extension commands
1439     table->GetPhysicalDeviceCooperativeMatrixPropertiesKHR = (PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR)gpa(inst, "vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR");
1440 
1441     // ---- VK_KHR_calibrated_timestamps extension commands
1442     table->GetPhysicalDeviceCalibrateableTimeDomainsKHR = (PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR)gpa(inst, "vkGetPhysicalDeviceCalibrateableTimeDomainsKHR");
1443 
1444     // ---- VK_EXT_debug_report extension commands
1445     table->CreateDebugReportCallbackEXT = (PFN_vkCreateDebugReportCallbackEXT)gpa(inst, "vkCreateDebugReportCallbackEXT");
1446     table->DestroyDebugReportCallbackEXT = (PFN_vkDestroyDebugReportCallbackEXT)gpa(inst, "vkDestroyDebugReportCallbackEXT");
1447     table->DebugReportMessageEXT = (PFN_vkDebugReportMessageEXT)gpa(inst, "vkDebugReportMessageEXT");
1448 
1449     // ---- VK_GGP_stream_descriptor_surface extension commands
1450 #if defined(VK_USE_PLATFORM_GGP)
1451     table->CreateStreamDescriptorSurfaceGGP = (PFN_vkCreateStreamDescriptorSurfaceGGP)gpa(inst, "vkCreateStreamDescriptorSurfaceGGP");
1452 #endif // VK_USE_PLATFORM_GGP
1453 
1454     // ---- VK_NV_external_memory_capabilities extension commands
1455     table->GetPhysicalDeviceExternalImageFormatPropertiesNV = (PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)gpa(inst, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV");
1456 
1457     // ---- VK_NN_vi_surface extension commands
1458 #if defined(VK_USE_PLATFORM_VI_NN)
1459     table->CreateViSurfaceNN = (PFN_vkCreateViSurfaceNN)gpa(inst, "vkCreateViSurfaceNN");
1460 #endif // VK_USE_PLATFORM_VI_NN
1461 
1462     // ---- VK_EXT_direct_mode_display extension commands
1463     table->ReleaseDisplayEXT = (PFN_vkReleaseDisplayEXT)gpa(inst, "vkReleaseDisplayEXT");
1464 
1465     // ---- VK_EXT_acquire_xlib_display extension commands
1466 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
1467     table->AcquireXlibDisplayEXT = (PFN_vkAcquireXlibDisplayEXT)gpa(inst, "vkAcquireXlibDisplayEXT");
1468 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
1469 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
1470     table->GetRandROutputDisplayEXT = (PFN_vkGetRandROutputDisplayEXT)gpa(inst, "vkGetRandROutputDisplayEXT");
1471 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
1472 
1473     // ---- VK_EXT_display_surface_counter extension commands
1474     table->GetPhysicalDeviceSurfaceCapabilities2EXT = (PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)gpa(inst, "vkGetPhysicalDeviceSurfaceCapabilities2EXT");
1475 
1476     // ---- VK_MVK_ios_surface extension commands
1477 #if defined(VK_USE_PLATFORM_IOS_MVK)
1478     table->CreateIOSSurfaceMVK = (PFN_vkCreateIOSSurfaceMVK)gpa(inst, "vkCreateIOSSurfaceMVK");
1479 #endif // VK_USE_PLATFORM_IOS_MVK
1480 
1481     // ---- VK_MVK_macos_surface extension commands
1482 #if defined(VK_USE_PLATFORM_MACOS_MVK)
1483     table->CreateMacOSSurfaceMVK = (PFN_vkCreateMacOSSurfaceMVK)gpa(inst, "vkCreateMacOSSurfaceMVK");
1484 #endif // VK_USE_PLATFORM_MACOS_MVK
1485 
1486     // ---- VK_EXT_debug_utils extension commands
1487     table->CreateDebugUtilsMessengerEXT = (PFN_vkCreateDebugUtilsMessengerEXT)gpa(inst, "vkCreateDebugUtilsMessengerEXT");
1488     table->DestroyDebugUtilsMessengerEXT = (PFN_vkDestroyDebugUtilsMessengerEXT)gpa(inst, "vkDestroyDebugUtilsMessengerEXT");
1489     table->SubmitDebugUtilsMessageEXT = (PFN_vkSubmitDebugUtilsMessageEXT)gpa(inst, "vkSubmitDebugUtilsMessageEXT");
1490 
1491     // ---- VK_EXT_sample_locations extension commands
1492     table->GetPhysicalDeviceMultisamplePropertiesEXT = (PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)gpa(inst, "vkGetPhysicalDeviceMultisamplePropertiesEXT");
1493 
1494     // ---- VK_EXT_calibrated_timestamps extension commands
1495     table->GetPhysicalDeviceCalibrateableTimeDomainsEXT = (PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)gpa(inst, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT");
1496 
1497     // ---- VK_FUCHSIA_imagepipe_surface extension commands
1498 #if defined(VK_USE_PLATFORM_FUCHSIA)
1499     table->CreateImagePipeSurfaceFUCHSIA = (PFN_vkCreateImagePipeSurfaceFUCHSIA)gpa(inst, "vkCreateImagePipeSurfaceFUCHSIA");
1500 #endif // VK_USE_PLATFORM_FUCHSIA
1501 
1502     // ---- VK_EXT_metal_surface extension commands
1503 #if defined(VK_USE_PLATFORM_METAL_EXT)
1504     table->CreateMetalSurfaceEXT = (PFN_vkCreateMetalSurfaceEXT)gpa(inst, "vkCreateMetalSurfaceEXT");
1505 #endif // VK_USE_PLATFORM_METAL_EXT
1506 
1507     // ---- VK_EXT_tooling_info extension commands
1508     table->GetPhysicalDeviceToolPropertiesEXT = (PFN_vkGetPhysicalDeviceToolPropertiesEXT)gpa(inst, "vkGetPhysicalDeviceToolPropertiesEXT");
1509 
1510     // ---- VK_NV_cooperative_matrix extension commands
1511     table->GetPhysicalDeviceCooperativeMatrixPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)gpa(inst, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV");
1512 
1513     // ---- VK_NV_coverage_reduction_mode extension commands
1514     table->GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = (PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)gpa(inst, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
1515 
1516     // ---- VK_EXT_full_screen_exclusive extension commands
1517 #if defined(VK_USE_PLATFORM_WIN32_KHR)
1518     table->GetPhysicalDeviceSurfacePresentModes2EXT = (PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)gpa(inst, "vkGetPhysicalDeviceSurfacePresentModes2EXT");
1519 #endif // VK_USE_PLATFORM_WIN32_KHR
1520 
1521     // ---- VK_EXT_headless_surface extension commands
1522     table->CreateHeadlessSurfaceEXT = (PFN_vkCreateHeadlessSurfaceEXT)gpa(inst, "vkCreateHeadlessSurfaceEXT");
1523 
1524     // ---- VK_EXT_acquire_drm_display extension commands
1525     table->AcquireDrmDisplayEXT = (PFN_vkAcquireDrmDisplayEXT)gpa(inst, "vkAcquireDrmDisplayEXT");
1526     table->GetDrmDisplayEXT = (PFN_vkGetDrmDisplayEXT)gpa(inst, "vkGetDrmDisplayEXT");
1527 
1528     // ---- VK_NV_acquire_winrt_display extension commands
1529 #if defined(VK_USE_PLATFORM_WIN32_KHR)
1530     table->AcquireWinrtDisplayNV = (PFN_vkAcquireWinrtDisplayNV)gpa(inst, "vkAcquireWinrtDisplayNV");
1531 #endif // VK_USE_PLATFORM_WIN32_KHR
1532 #if defined(VK_USE_PLATFORM_WIN32_KHR)
1533     table->GetWinrtDisplayNV = (PFN_vkGetWinrtDisplayNV)gpa(inst, "vkGetWinrtDisplayNV");
1534 #endif // VK_USE_PLATFORM_WIN32_KHR
1535 
1536     // ---- VK_EXT_directfb_surface extension commands
1537 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
1538     table->CreateDirectFBSurfaceEXT = (PFN_vkCreateDirectFBSurfaceEXT)gpa(inst, "vkCreateDirectFBSurfaceEXT");
1539 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
1540 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
1541     table->GetPhysicalDeviceDirectFBPresentationSupportEXT = (PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT)gpa(inst, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT");
1542 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
1543 
1544     // ---- VK_QNX_screen_surface extension commands
1545 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
1546     table->CreateScreenSurfaceQNX = (PFN_vkCreateScreenSurfaceQNX)gpa(inst, "vkCreateScreenSurfaceQNX");
1547 #endif // VK_USE_PLATFORM_SCREEN_QNX
1548 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
1549     table->GetPhysicalDeviceScreenPresentationSupportQNX = (PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX)gpa(inst, "vkGetPhysicalDeviceScreenPresentationSupportQNX");
1550 #endif // VK_USE_PLATFORM_SCREEN_QNX
1551 
1552     // ---- VK_NV_optical_flow extension commands
1553     table->GetPhysicalDeviceOpticalFlowImageFormatsNV = (PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV)gpa(inst, "vkGetPhysicalDeviceOpticalFlowImageFormatsNV");
1554 
1555 #if defined(VK_USE_PLATFORM_OHOS)
1556     table->CreateSurfaceOHOS = (PFN_vkCreateSurfaceOHOS)gpa(inst, "vkCreateSurfaceOHOS");
1557 #endif // VK_USE_PLATFORM_OHOS
1558 
1559     // ---- VK_NV_cooperative_vector extension commands
1560     table->GetPhysicalDeviceCooperativeVectorPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeVectorPropertiesNV)gpa(inst, "vkGetPhysicalDeviceCooperativeVectorPropertiesNV");
1561 
1562     // ---- VK_NV_cooperative_matrix2 extension commands
1563     table->GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = (PFN_vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV)gpa(inst, "vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV");
1564 }
1565 
1566 // Functions that required a terminator need to have a separate dispatch table which contains their corresponding
1567 // device function. This is used in the terminators themselves.
init_extension_device_proc_terminator_dispatch(struct loader_device * dev)1568 void init_extension_device_proc_terminator_dispatch(struct loader_device *dev) {
1569     struct loader_device_terminator_dispatch* dispatch = &dev->loader_dispatch.extension_terminator_dispatch;
1570     PFN_vkGetDeviceProcAddr gpda = (PFN_vkGetDeviceProcAddr)dev->phys_dev_term->this_icd_term->dispatch.GetDeviceProcAddr;
1571     // ---- VK_KHR_swapchain extension commands
1572     if (dev->driver_extensions.khr_swapchain_enabled)
1573        dispatch->CreateSwapchainKHR = (PFN_vkCreateSwapchainKHR)gpda(dev->icd_device, "vkCreateSwapchainKHR");
1574     if (dev->driver_extensions.khr_swapchain_enabled)
1575        dispatch->GetDeviceGroupSurfacePresentModesKHR = (PFN_vkGetDeviceGroupSurfacePresentModesKHR)gpda(dev->icd_device, "vkGetDeviceGroupSurfacePresentModesKHR");
1576     // ---- VK_KHR_display_swapchain extension commands
1577     if (dev->driver_extensions.khr_display_swapchain_enabled)
1578        dispatch->CreateSharedSwapchainsKHR = (PFN_vkCreateSharedSwapchainsKHR)gpda(dev->icd_device, "vkCreateSharedSwapchainsKHR");
1579     // ---- VK_EXT_debug_marker extension commands
1580     if (dev->driver_extensions.ext_debug_marker_enabled)
1581        dispatch->DebugMarkerSetObjectTagEXT = (PFN_vkDebugMarkerSetObjectTagEXT)gpda(dev->icd_device, "vkDebugMarkerSetObjectTagEXT");
1582     if (dev->driver_extensions.ext_debug_marker_enabled)
1583        dispatch->DebugMarkerSetObjectNameEXT = (PFN_vkDebugMarkerSetObjectNameEXT)gpda(dev->icd_device, "vkDebugMarkerSetObjectNameEXT");
1584     // ---- VK_EXT_debug_utils extension commands
1585     if (dev->driver_extensions.ext_debug_utils_enabled)
1586        dispatch->SetDebugUtilsObjectNameEXT = (PFN_vkSetDebugUtilsObjectNameEXT)gpda(dev->icd_device, "vkSetDebugUtilsObjectNameEXT");
1587     if (dev->driver_extensions.ext_debug_utils_enabled)
1588        dispatch->SetDebugUtilsObjectTagEXT = (PFN_vkSetDebugUtilsObjectTagEXT)gpda(dev->icd_device, "vkSetDebugUtilsObjectTagEXT");
1589     if (dev->driver_extensions.ext_debug_utils_enabled)
1590        dispatch->QueueBeginDebugUtilsLabelEXT = (PFN_vkQueueBeginDebugUtilsLabelEXT)gpda(dev->icd_device, "vkQueueBeginDebugUtilsLabelEXT");
1591     if (dev->driver_extensions.ext_debug_utils_enabled)
1592        dispatch->QueueEndDebugUtilsLabelEXT = (PFN_vkQueueEndDebugUtilsLabelEXT)gpda(dev->icd_device, "vkQueueEndDebugUtilsLabelEXT");
1593     if (dev->driver_extensions.ext_debug_utils_enabled)
1594        dispatch->QueueInsertDebugUtilsLabelEXT = (PFN_vkQueueInsertDebugUtilsLabelEXT)gpda(dev->icd_device, "vkQueueInsertDebugUtilsLabelEXT");
1595     if (dev->driver_extensions.ext_debug_utils_enabled)
1596        dispatch->CmdBeginDebugUtilsLabelEXT = (PFN_vkCmdBeginDebugUtilsLabelEXT)gpda(dev->icd_device, "vkCmdBeginDebugUtilsLabelEXT");
1597     if (dev->driver_extensions.ext_debug_utils_enabled)
1598        dispatch->CmdEndDebugUtilsLabelEXT = (PFN_vkCmdEndDebugUtilsLabelEXT)gpda(dev->icd_device, "vkCmdEndDebugUtilsLabelEXT");
1599     if (dev->driver_extensions.ext_debug_utils_enabled)
1600        dispatch->CmdInsertDebugUtilsLabelEXT = (PFN_vkCmdInsertDebugUtilsLabelEXT)gpda(dev->icd_device, "vkCmdInsertDebugUtilsLabelEXT");
1601 #if defined(VK_USE_PLATFORM_WIN32_KHR)
1602     // ---- VK_EXT_full_screen_exclusive extension commands
1603     if (dev->driver_extensions.ext_full_screen_exclusive_enabled && (dev->driver_extensions.khr_device_group_enabled || dev->driver_extensions.version_1_1_enabled))
1604        dispatch->GetDeviceGroupSurfacePresentModes2EXT = (PFN_vkGetDeviceGroupSurfacePresentModes2EXT)gpda(dev->icd_device, "vkGetDeviceGroupSurfacePresentModes2EXT");
1605 #endif // VK_USE_PLATFORM_WIN32_KHR
1606 }
1607 
1608 // These are prototypes for functions that need their trampoline called in all circumstances.
1609 // They are used in loader_lookup_device_dispatch_table but are defined afterwards.
1610     // ---- VK_EXT_debug_marker extension commands
1611 VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectTagEXT(
1612     VkDevice                                    device,
1613     const VkDebugMarkerObjectTagInfoEXT*        pTagInfo);
1614 VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectNameEXT(
1615     VkDevice                                    device,
1616     const VkDebugMarkerObjectNameInfoEXT*       pNameInfo);
1617     // ---- VK_EXT_debug_utils extension commands
1618 VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectNameEXT(
1619     VkDevice                                    device,
1620     const VkDebugUtilsObjectNameInfoEXT*        pNameInfo);
1621 VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectTagEXT(
1622     VkDevice                                    device,
1623     const VkDebugUtilsObjectTagInfoEXT*         pTagInfo);
1624 
1625 // Device command lookup function
loader_lookup_device_dispatch_table(const VkLayerDispatchTable * table,const char * name,bool * found_name)1626 VKAPI_ATTR void* VKAPI_CALL loader_lookup_device_dispatch_table(const VkLayerDispatchTable *table, const char *name, bool* found_name) {
1627     if (!name || name[0] != 'v' || name[1] != 'k') {
1628         *found_name = false;
1629         return NULL;
1630     }
1631 
1632     name += 2;
1633     *found_name = true;
1634     struct loader_device* dev = (struct loader_device *)table;
1635     const struct loader_instance* inst = dev->phys_dev_term->this_icd_term->this_instance;
1636     uint32_t api_version = VK_MAKE_API_VERSION(0, inst->app_api_version.major, inst->app_api_version.minor, inst->app_api_version.patch);
1637 
1638 
1639     // ---- Core Vulkan 1.0 commands
1640     if (!strcmp(name, "GetDeviceProcAddr")) {
1641         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1642         return (void *)table->GetDeviceProcAddr;
1643     }
1644     if (!strcmp(name, "DestroyDevice")) {
1645         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1646         return (void *)table->DestroyDevice;
1647     }
1648     if (!strcmp(name, "GetDeviceQueue")) {
1649         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1650         return (void *)table->GetDeviceQueue;
1651     }
1652     if (!strcmp(name, "QueueSubmit")) {
1653         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1654         return (void *)table->QueueSubmit;
1655     }
1656     if (!strcmp(name, "QueueWaitIdle")) {
1657         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1658         return (void *)table->QueueWaitIdle;
1659     }
1660     if (!strcmp(name, "DeviceWaitIdle")) {
1661         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1662         return (void *)table->DeviceWaitIdle;
1663     }
1664     if (!strcmp(name, "AllocateMemory")) {
1665         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1666         return (void *)table->AllocateMemory;
1667     }
1668     if (!strcmp(name, "FreeMemory")) {
1669         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1670         return (void *)table->FreeMemory;
1671     }
1672     if (!strcmp(name, "MapMemory")) {
1673         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1674         return (void *)table->MapMemory;
1675     }
1676     if (!strcmp(name, "UnmapMemory")) {
1677         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1678         return (void *)table->UnmapMemory;
1679     }
1680     if (!strcmp(name, "FlushMappedMemoryRanges")) {
1681         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1682         return (void *)table->FlushMappedMemoryRanges;
1683     }
1684     if (!strcmp(name, "InvalidateMappedMemoryRanges")) {
1685         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1686         return (void *)table->InvalidateMappedMemoryRanges;
1687     }
1688     if (!strcmp(name, "GetDeviceMemoryCommitment")) {
1689         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1690         return (void *)table->GetDeviceMemoryCommitment;
1691     }
1692     if (!strcmp(name, "BindBufferMemory")) {
1693         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1694         return (void *)table->BindBufferMemory;
1695     }
1696     if (!strcmp(name, "BindImageMemory")) {
1697         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1698         return (void *)table->BindImageMemory;
1699     }
1700     if (!strcmp(name, "GetBufferMemoryRequirements")) {
1701         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1702         return (void *)table->GetBufferMemoryRequirements;
1703     }
1704     if (!strcmp(name, "GetImageMemoryRequirements")) {
1705         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1706         return (void *)table->GetImageMemoryRequirements;
1707     }
1708     if (!strcmp(name, "GetImageSparseMemoryRequirements")) {
1709         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1710         return (void *)table->GetImageSparseMemoryRequirements;
1711     }
1712     if (!strcmp(name, "QueueBindSparse")) {
1713         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1714         return (void *)table->QueueBindSparse;
1715     }
1716     if (!strcmp(name, "CreateFence")) {
1717         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1718         return (void *)table->CreateFence;
1719     }
1720     if (!strcmp(name, "DestroyFence")) {
1721         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1722         return (void *)table->DestroyFence;
1723     }
1724     if (!strcmp(name, "ResetFences")) {
1725         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1726         return (void *)table->ResetFences;
1727     }
1728     if (!strcmp(name, "GetFenceStatus")) {
1729         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1730         return (void *)table->GetFenceStatus;
1731     }
1732     if (!strcmp(name, "WaitForFences")) {
1733         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1734         return (void *)table->WaitForFences;
1735     }
1736     if (!strcmp(name, "CreateSemaphore")) {
1737         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1738         return (void *)table->CreateSemaphore;
1739     }
1740     if (!strcmp(name, "DestroySemaphore")) {
1741         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1742         return (void *)table->DestroySemaphore;
1743     }
1744     if (!strcmp(name, "CreateEvent")) {
1745         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1746         return (void *)table->CreateEvent;
1747     }
1748     if (!strcmp(name, "DestroyEvent")) {
1749         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1750         return (void *)table->DestroyEvent;
1751     }
1752     if (!strcmp(name, "GetEventStatus")) {
1753         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1754         return (void *)table->GetEventStatus;
1755     }
1756     if (!strcmp(name, "SetEvent")) {
1757         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1758         return (void *)table->SetEvent;
1759     }
1760     if (!strcmp(name, "ResetEvent")) {
1761         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1762         return (void *)table->ResetEvent;
1763     }
1764     if (!strcmp(name, "CreateQueryPool")) {
1765         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1766         return (void *)table->CreateQueryPool;
1767     }
1768     if (!strcmp(name, "DestroyQueryPool")) {
1769         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1770         return (void *)table->DestroyQueryPool;
1771     }
1772     if (!strcmp(name, "GetQueryPoolResults")) {
1773         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1774         return (void *)table->GetQueryPoolResults;
1775     }
1776     if (!strcmp(name, "CreateBuffer")) {
1777         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1778         return (void *)table->CreateBuffer;
1779     }
1780     if (!strcmp(name, "DestroyBuffer")) {
1781         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1782         return (void *)table->DestroyBuffer;
1783     }
1784     if (!strcmp(name, "CreateBufferView")) {
1785         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1786         return (void *)table->CreateBufferView;
1787     }
1788     if (!strcmp(name, "DestroyBufferView")) {
1789         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1790         return (void *)table->DestroyBufferView;
1791     }
1792     if (!strcmp(name, "CreateImage")) {
1793         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1794         return (void *)table->CreateImage;
1795     }
1796     if (!strcmp(name, "DestroyImage")) {
1797         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1798         return (void *)table->DestroyImage;
1799     }
1800     if (!strcmp(name, "GetImageSubresourceLayout")) {
1801         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1802         return (void *)table->GetImageSubresourceLayout;
1803     }
1804     if (!strcmp(name, "CreateImageView")) {
1805         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1806         return (void *)table->CreateImageView;
1807     }
1808     if (!strcmp(name, "DestroyImageView")) {
1809         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1810         return (void *)table->DestroyImageView;
1811     }
1812     if (!strcmp(name, "CreateShaderModule")) {
1813         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1814         return (void *)table->CreateShaderModule;
1815     }
1816     if (!strcmp(name, "DestroyShaderModule")) {
1817         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1818         return (void *)table->DestroyShaderModule;
1819     }
1820     if (!strcmp(name, "CreatePipelineCache")) {
1821         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1822         return (void *)table->CreatePipelineCache;
1823     }
1824     if (!strcmp(name, "DestroyPipelineCache")) {
1825         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1826         return (void *)table->DestroyPipelineCache;
1827     }
1828     if (!strcmp(name, "GetPipelineCacheData")) {
1829         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1830         return (void *)table->GetPipelineCacheData;
1831     }
1832     if (!strcmp(name, "MergePipelineCaches")) {
1833         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1834         return (void *)table->MergePipelineCaches;
1835     }
1836     if (!strcmp(name, "CreateGraphicsPipelines")) {
1837         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1838         return (void *)table->CreateGraphicsPipelines;
1839     }
1840     if (!strcmp(name, "CreateComputePipelines")) {
1841         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1842         return (void *)table->CreateComputePipelines;
1843     }
1844     if (!strcmp(name, "DestroyPipeline")) {
1845         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1846         return (void *)table->DestroyPipeline;
1847     }
1848     if (!strcmp(name, "CreatePipelineLayout")) {
1849         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1850         return (void *)table->CreatePipelineLayout;
1851     }
1852     if (!strcmp(name, "DestroyPipelineLayout")) {
1853         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1854         return (void *)table->DestroyPipelineLayout;
1855     }
1856     if (!strcmp(name, "CreateSampler")) {
1857         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1858         return (void *)table->CreateSampler;
1859     }
1860     if (!strcmp(name, "DestroySampler")) {
1861         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1862         return (void *)table->DestroySampler;
1863     }
1864     if (!strcmp(name, "CreateDescriptorSetLayout")) {
1865         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1866         return (void *)table->CreateDescriptorSetLayout;
1867     }
1868     if (!strcmp(name, "DestroyDescriptorSetLayout")) {
1869         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1870         return (void *)table->DestroyDescriptorSetLayout;
1871     }
1872     if (!strcmp(name, "CreateDescriptorPool")) {
1873         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1874         return (void *)table->CreateDescriptorPool;
1875     }
1876     if (!strcmp(name, "DestroyDescriptorPool")) {
1877         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1878         return (void *)table->DestroyDescriptorPool;
1879     }
1880     if (!strcmp(name, "ResetDescriptorPool")) {
1881         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1882         return (void *)table->ResetDescriptorPool;
1883     }
1884     if (!strcmp(name, "AllocateDescriptorSets")) {
1885         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1886         return (void *)table->AllocateDescriptorSets;
1887     }
1888     if (!strcmp(name, "FreeDescriptorSets")) {
1889         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1890         return (void *)table->FreeDescriptorSets;
1891     }
1892     if (!strcmp(name, "UpdateDescriptorSets")) {
1893         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1894         return (void *)table->UpdateDescriptorSets;
1895     }
1896     if (!strcmp(name, "CreateFramebuffer")) {
1897         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1898         return (void *)table->CreateFramebuffer;
1899     }
1900     if (!strcmp(name, "DestroyFramebuffer")) {
1901         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1902         return (void *)table->DestroyFramebuffer;
1903     }
1904     if (!strcmp(name, "CreateRenderPass")) {
1905         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1906         return (void *)table->CreateRenderPass;
1907     }
1908     if (!strcmp(name, "DestroyRenderPass")) {
1909         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1910         return (void *)table->DestroyRenderPass;
1911     }
1912     if (!strcmp(name, "GetRenderAreaGranularity")) {
1913         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1914         return (void *)table->GetRenderAreaGranularity;
1915     }
1916     if (!strcmp(name, "CreateCommandPool")) {
1917         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1918         return (void *)table->CreateCommandPool;
1919     }
1920     if (!strcmp(name, "DestroyCommandPool")) {
1921         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1922         return (void *)table->DestroyCommandPool;
1923     }
1924     if (!strcmp(name, "ResetCommandPool")) {
1925         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1926         return (void *)table->ResetCommandPool;
1927     }
1928     if (!strcmp(name, "AllocateCommandBuffers")) {
1929         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1930         return (void *)table->AllocateCommandBuffers;
1931     }
1932     if (!strcmp(name, "FreeCommandBuffers")) {
1933         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1934         return (void *)table->FreeCommandBuffers;
1935     }
1936     if (!strcmp(name, "BeginCommandBuffer")) {
1937         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1938         return (void *)table->BeginCommandBuffer;
1939     }
1940     if (!strcmp(name, "EndCommandBuffer")) {
1941         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1942         return (void *)table->EndCommandBuffer;
1943     }
1944     if (!strcmp(name, "ResetCommandBuffer")) {
1945         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1946         return (void *)table->ResetCommandBuffer;
1947     }
1948     if (!strcmp(name, "CmdBindPipeline")) {
1949         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1950         return (void *)table->CmdBindPipeline;
1951     }
1952     if (!strcmp(name, "CmdSetViewport")) {
1953         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1954         return (void *)table->CmdSetViewport;
1955     }
1956     if (!strcmp(name, "CmdSetScissor")) {
1957         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1958         return (void *)table->CmdSetScissor;
1959     }
1960     if (!strcmp(name, "CmdSetLineWidth")) {
1961         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1962         return (void *)table->CmdSetLineWidth;
1963     }
1964     if (!strcmp(name, "CmdSetDepthBias")) {
1965         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1966         return (void *)table->CmdSetDepthBias;
1967     }
1968     if (!strcmp(name, "CmdSetBlendConstants")) {
1969         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1970         return (void *)table->CmdSetBlendConstants;
1971     }
1972     if (!strcmp(name, "CmdSetDepthBounds")) {
1973         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1974         return (void *)table->CmdSetDepthBounds;
1975     }
1976     if (!strcmp(name, "CmdSetStencilCompareMask")) {
1977         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1978         return (void *)table->CmdSetStencilCompareMask;
1979     }
1980     if (!strcmp(name, "CmdSetStencilWriteMask")) {
1981         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1982         return (void *)table->CmdSetStencilWriteMask;
1983     }
1984     if (!strcmp(name, "CmdSetStencilReference")) {
1985         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1986         return (void *)table->CmdSetStencilReference;
1987     }
1988     if (!strcmp(name, "CmdBindDescriptorSets")) {
1989         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1990         return (void *)table->CmdBindDescriptorSets;
1991     }
1992     if (!strcmp(name, "CmdBindIndexBuffer")) {
1993         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1994         return (void *)table->CmdBindIndexBuffer;
1995     }
1996     if (!strcmp(name, "CmdBindVertexBuffers")) {
1997         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
1998         return (void *)table->CmdBindVertexBuffers;
1999     }
2000     if (!strcmp(name, "CmdDraw")) {
2001         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2002         return (void *)table->CmdDraw;
2003     }
2004     if (!strcmp(name, "CmdDrawIndexed")) {
2005         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2006         return (void *)table->CmdDrawIndexed;
2007     }
2008     if (!strcmp(name, "CmdDrawIndirect")) {
2009         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2010         return (void *)table->CmdDrawIndirect;
2011     }
2012     if (!strcmp(name, "CmdDrawIndexedIndirect")) {
2013         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2014         return (void *)table->CmdDrawIndexedIndirect;
2015     }
2016     if (!strcmp(name, "CmdDispatch")) {
2017         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2018         return (void *)table->CmdDispatch;
2019     }
2020     if (!strcmp(name, "CmdDispatchIndirect")) {
2021         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2022         return (void *)table->CmdDispatchIndirect;
2023     }
2024     if (!strcmp(name, "CmdCopyBuffer")) {
2025         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2026         return (void *)table->CmdCopyBuffer;
2027     }
2028     if (!strcmp(name, "CmdCopyImage")) {
2029         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2030         return (void *)table->CmdCopyImage;
2031     }
2032     if (!strcmp(name, "CmdBlitImage")) {
2033         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2034         return (void *)table->CmdBlitImage;
2035     }
2036     if (!strcmp(name, "CmdCopyBufferToImage")) {
2037         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2038         return (void *)table->CmdCopyBufferToImage;
2039     }
2040     if (!strcmp(name, "CmdCopyImageToBuffer")) {
2041         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2042         return (void *)table->CmdCopyImageToBuffer;
2043     }
2044     if (!strcmp(name, "CmdUpdateBuffer")) {
2045         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2046         return (void *)table->CmdUpdateBuffer;
2047     }
2048     if (!strcmp(name, "CmdFillBuffer")) {
2049         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2050         return (void *)table->CmdFillBuffer;
2051     }
2052     if (!strcmp(name, "CmdClearColorImage")) {
2053         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2054         return (void *)table->CmdClearColorImage;
2055     }
2056     if (!strcmp(name, "CmdClearDepthStencilImage")) {
2057         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2058         return (void *)table->CmdClearDepthStencilImage;
2059     }
2060     if (!strcmp(name, "CmdClearAttachments")) {
2061         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2062         return (void *)table->CmdClearAttachments;
2063     }
2064     if (!strcmp(name, "CmdResolveImage")) {
2065         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2066         return (void *)table->CmdResolveImage;
2067     }
2068     if (!strcmp(name, "CmdSetEvent")) {
2069         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2070         return (void *)table->CmdSetEvent;
2071     }
2072     if (!strcmp(name, "CmdResetEvent")) {
2073         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2074         return (void *)table->CmdResetEvent;
2075     }
2076     if (!strcmp(name, "CmdWaitEvents")) {
2077         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2078         return (void *)table->CmdWaitEvents;
2079     }
2080     if (!strcmp(name, "CmdPipelineBarrier")) {
2081         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2082         return (void *)table->CmdPipelineBarrier;
2083     }
2084     if (!strcmp(name, "CmdBeginQuery")) {
2085         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2086         return (void *)table->CmdBeginQuery;
2087     }
2088     if (!strcmp(name, "CmdEndQuery")) {
2089         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2090         return (void *)table->CmdEndQuery;
2091     }
2092     if (!strcmp(name, "CmdResetQueryPool")) {
2093         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2094         return (void *)table->CmdResetQueryPool;
2095     }
2096     if (!strcmp(name, "CmdWriteTimestamp")) {
2097         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2098         return (void *)table->CmdWriteTimestamp;
2099     }
2100     if (!strcmp(name, "CmdCopyQueryPoolResults")) {
2101         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2102         return (void *)table->CmdCopyQueryPoolResults;
2103     }
2104     if (!strcmp(name, "CmdPushConstants")) {
2105         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2106         return (void *)table->CmdPushConstants;
2107     }
2108     if (!strcmp(name, "CmdBeginRenderPass")) {
2109         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2110         return (void *)table->CmdBeginRenderPass;
2111     }
2112     if (!strcmp(name, "CmdNextSubpass")) {
2113         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2114         return (void *)table->CmdNextSubpass;
2115     }
2116     if (!strcmp(name, "CmdEndRenderPass")) {
2117         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2118         return (void *)table->CmdEndRenderPass;
2119     }
2120     if (!strcmp(name, "CmdExecuteCommands")) {
2121         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_0) return NULL;
2122         return (void *)table->CmdExecuteCommands;
2123     }
2124 
2125     // ---- Core Vulkan 1.1 commands
2126     if (!strcmp(name, "BindBufferMemory2")) {
2127         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2128         return (void *)table->BindBufferMemory2;
2129     }
2130     if (!strcmp(name, "BindImageMemory2")) {
2131         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2132         return (void *)table->BindImageMemory2;
2133     }
2134     if (!strcmp(name, "GetDeviceGroupPeerMemoryFeatures")) {
2135         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2136         return (void *)table->GetDeviceGroupPeerMemoryFeatures;
2137     }
2138     if (!strcmp(name, "CmdSetDeviceMask")) {
2139         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2140         return (void *)table->CmdSetDeviceMask;
2141     }
2142     if (!strcmp(name, "CmdDispatchBase")) {
2143         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2144         return (void *)table->CmdDispatchBase;
2145     }
2146     if (!strcmp(name, "GetImageMemoryRequirements2")) {
2147         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2148         return (void *)table->GetImageMemoryRequirements2;
2149     }
2150     if (!strcmp(name, "GetBufferMemoryRequirements2")) {
2151         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2152         return (void *)table->GetBufferMemoryRequirements2;
2153     }
2154     if (!strcmp(name, "GetImageSparseMemoryRequirements2")) {
2155         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2156         return (void *)table->GetImageSparseMemoryRequirements2;
2157     }
2158     if (!strcmp(name, "TrimCommandPool")) {
2159         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2160         return (void *)table->TrimCommandPool;
2161     }
2162     if (!strcmp(name, "GetDeviceQueue2")) {
2163         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2164         return (void *)table->GetDeviceQueue2;
2165     }
2166     if (!strcmp(name, "CreateSamplerYcbcrConversion")) {
2167         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2168         return (void *)table->CreateSamplerYcbcrConversion;
2169     }
2170     if (!strcmp(name, "DestroySamplerYcbcrConversion")) {
2171         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2172         return (void *)table->DestroySamplerYcbcrConversion;
2173     }
2174     if (!strcmp(name, "CreateDescriptorUpdateTemplate")) {
2175         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2176         return (void *)table->CreateDescriptorUpdateTemplate;
2177     }
2178     if (!strcmp(name, "DestroyDescriptorUpdateTemplate")) {
2179         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2180         return (void *)table->DestroyDescriptorUpdateTemplate;
2181     }
2182     if (!strcmp(name, "UpdateDescriptorSetWithTemplate")) {
2183         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2184         return (void *)table->UpdateDescriptorSetWithTemplate;
2185     }
2186     if (!strcmp(name, "GetDescriptorSetLayoutSupport")) {
2187         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_1) return NULL;
2188         return (void *)table->GetDescriptorSetLayoutSupport;
2189     }
2190 
2191     // ---- Core Vulkan 1.2 commands
2192     if (!strcmp(name, "CmdDrawIndirectCount")) {
2193         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2194         return (void *)table->CmdDrawIndirectCount;
2195     }
2196     if (!strcmp(name, "CmdDrawIndexedIndirectCount")) {
2197         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2198         return (void *)table->CmdDrawIndexedIndirectCount;
2199     }
2200     if (!strcmp(name, "CreateRenderPass2")) {
2201         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2202         return (void *)table->CreateRenderPass2;
2203     }
2204     if (!strcmp(name, "CmdBeginRenderPass2")) {
2205         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2206         return (void *)table->CmdBeginRenderPass2;
2207     }
2208     if (!strcmp(name, "CmdNextSubpass2")) {
2209         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2210         return (void *)table->CmdNextSubpass2;
2211     }
2212     if (!strcmp(name, "CmdEndRenderPass2")) {
2213         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2214         return (void *)table->CmdEndRenderPass2;
2215     }
2216     if (!strcmp(name, "ResetQueryPool")) {
2217         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2218         return (void *)table->ResetQueryPool;
2219     }
2220     if (!strcmp(name, "GetSemaphoreCounterValue")) {
2221         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2222         return (void *)table->GetSemaphoreCounterValue;
2223     }
2224     if (!strcmp(name, "WaitSemaphores")) {
2225         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2226         return (void *)table->WaitSemaphores;
2227     }
2228     if (!strcmp(name, "SignalSemaphore")) {
2229         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2230         return (void *)table->SignalSemaphore;
2231     }
2232     if (!strcmp(name, "GetBufferDeviceAddress")) {
2233         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2234         return (void *)table->GetBufferDeviceAddress;
2235     }
2236     if (!strcmp(name, "GetBufferOpaqueCaptureAddress")) {
2237         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2238         return (void *)table->GetBufferOpaqueCaptureAddress;
2239     }
2240     if (!strcmp(name, "GetDeviceMemoryOpaqueCaptureAddress")) {
2241         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_2) return NULL;
2242         return (void *)table->GetDeviceMemoryOpaqueCaptureAddress;
2243     }
2244 
2245     // ---- Core Vulkan 1.3 commands
2246     if (!strcmp(name, "CreatePrivateDataSlot")) {
2247         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2248         return (void *)table->CreatePrivateDataSlot;
2249     }
2250     if (!strcmp(name, "DestroyPrivateDataSlot")) {
2251         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2252         return (void *)table->DestroyPrivateDataSlot;
2253     }
2254     if (!strcmp(name, "SetPrivateData")) {
2255         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2256         return (void *)table->SetPrivateData;
2257     }
2258     if (!strcmp(name, "GetPrivateData")) {
2259         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2260         return (void *)table->GetPrivateData;
2261     }
2262     if (!strcmp(name, "CmdSetEvent2")) {
2263         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2264         return (void *)table->CmdSetEvent2;
2265     }
2266     if (!strcmp(name, "CmdResetEvent2")) {
2267         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2268         return (void *)table->CmdResetEvent2;
2269     }
2270     if (!strcmp(name, "CmdWaitEvents2")) {
2271         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2272         return (void *)table->CmdWaitEvents2;
2273     }
2274     if (!strcmp(name, "CmdPipelineBarrier2")) {
2275         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2276         return (void *)table->CmdPipelineBarrier2;
2277     }
2278     if (!strcmp(name, "CmdWriteTimestamp2")) {
2279         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2280         return (void *)table->CmdWriteTimestamp2;
2281     }
2282     if (!strcmp(name, "QueueSubmit2")) {
2283         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2284         return (void *)table->QueueSubmit2;
2285     }
2286     if (!strcmp(name, "CmdCopyBuffer2")) {
2287         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2288         return (void *)table->CmdCopyBuffer2;
2289     }
2290     if (!strcmp(name, "CmdCopyImage2")) {
2291         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2292         return (void *)table->CmdCopyImage2;
2293     }
2294     if (!strcmp(name, "CmdCopyBufferToImage2")) {
2295         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2296         return (void *)table->CmdCopyBufferToImage2;
2297     }
2298     if (!strcmp(name, "CmdCopyImageToBuffer2")) {
2299         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2300         return (void *)table->CmdCopyImageToBuffer2;
2301     }
2302     if (!strcmp(name, "CmdBlitImage2")) {
2303         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2304         return (void *)table->CmdBlitImage2;
2305     }
2306     if (!strcmp(name, "CmdResolveImage2")) {
2307         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2308         return (void *)table->CmdResolveImage2;
2309     }
2310     if (!strcmp(name, "CmdBeginRendering")) {
2311         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2312         return (void *)table->CmdBeginRendering;
2313     }
2314     if (!strcmp(name, "CmdEndRendering")) {
2315         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2316         return (void *)table->CmdEndRendering;
2317     }
2318     if (!strcmp(name, "CmdSetCullMode")) {
2319         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2320         return (void *)table->CmdSetCullMode;
2321     }
2322     if (!strcmp(name, "CmdSetFrontFace")) {
2323         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2324         return (void *)table->CmdSetFrontFace;
2325     }
2326     if (!strcmp(name, "CmdSetPrimitiveTopology")) {
2327         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2328         return (void *)table->CmdSetPrimitiveTopology;
2329     }
2330     if (!strcmp(name, "CmdSetViewportWithCount")) {
2331         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2332         return (void *)table->CmdSetViewportWithCount;
2333     }
2334     if (!strcmp(name, "CmdSetScissorWithCount")) {
2335         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2336         return (void *)table->CmdSetScissorWithCount;
2337     }
2338     if (!strcmp(name, "CmdBindVertexBuffers2")) {
2339         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2340         return (void *)table->CmdBindVertexBuffers2;
2341     }
2342     if (!strcmp(name, "CmdSetDepthTestEnable")) {
2343         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2344         return (void *)table->CmdSetDepthTestEnable;
2345     }
2346     if (!strcmp(name, "CmdSetDepthWriteEnable")) {
2347         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2348         return (void *)table->CmdSetDepthWriteEnable;
2349     }
2350     if (!strcmp(name, "CmdSetDepthCompareOp")) {
2351         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2352         return (void *)table->CmdSetDepthCompareOp;
2353     }
2354     if (!strcmp(name, "CmdSetDepthBoundsTestEnable")) {
2355         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2356         return (void *)table->CmdSetDepthBoundsTestEnable;
2357     }
2358     if (!strcmp(name, "CmdSetStencilTestEnable")) {
2359         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2360         return (void *)table->CmdSetStencilTestEnable;
2361     }
2362     if (!strcmp(name, "CmdSetStencilOp")) {
2363         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2364         return (void *)table->CmdSetStencilOp;
2365     }
2366     if (!strcmp(name, "CmdSetRasterizerDiscardEnable")) {
2367         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2368         return (void *)table->CmdSetRasterizerDiscardEnable;
2369     }
2370     if (!strcmp(name, "CmdSetDepthBiasEnable")) {
2371         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2372         return (void *)table->CmdSetDepthBiasEnable;
2373     }
2374     if (!strcmp(name, "CmdSetPrimitiveRestartEnable")) {
2375         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2376         return (void *)table->CmdSetPrimitiveRestartEnable;
2377     }
2378     if (!strcmp(name, "GetDeviceBufferMemoryRequirements")) {
2379         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2380         return (void *)table->GetDeviceBufferMemoryRequirements;
2381     }
2382     if (!strcmp(name, "GetDeviceImageMemoryRequirements")) {
2383         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2384         return (void *)table->GetDeviceImageMemoryRequirements;
2385     }
2386     if (!strcmp(name, "GetDeviceImageSparseMemoryRequirements")) {
2387         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_3) return NULL;
2388         return (void *)table->GetDeviceImageSparseMemoryRequirements;
2389     }
2390 
2391     // ---- Core Vulkan 1.4 commands
2392     if (!strcmp(name, "CmdSetLineStipple")) {
2393         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2394         return (void *)table->CmdSetLineStipple;
2395     }
2396     if (!strcmp(name, "MapMemory2")) {
2397         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2398         return (void *)table->MapMemory2;
2399     }
2400     if (!strcmp(name, "UnmapMemory2")) {
2401         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2402         return (void *)table->UnmapMemory2;
2403     }
2404     if (!strcmp(name, "CmdBindIndexBuffer2")) {
2405         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2406         return (void *)table->CmdBindIndexBuffer2;
2407     }
2408     if (!strcmp(name, "GetRenderingAreaGranularity")) {
2409         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2410         return (void *)table->GetRenderingAreaGranularity;
2411     }
2412     if (!strcmp(name, "GetDeviceImageSubresourceLayout")) {
2413         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2414         return (void *)table->GetDeviceImageSubresourceLayout;
2415     }
2416     if (!strcmp(name, "GetImageSubresourceLayout2")) {
2417         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2418         return (void *)table->GetImageSubresourceLayout2;
2419     }
2420     if (!strcmp(name, "CmdPushDescriptorSet")) {
2421         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2422         return (void *)table->CmdPushDescriptorSet;
2423     }
2424     if (!strcmp(name, "CmdPushDescriptorSetWithTemplate")) {
2425         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2426         return (void *)table->CmdPushDescriptorSetWithTemplate;
2427     }
2428     if (!strcmp(name, "CmdSetRenderingAttachmentLocations")) {
2429         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2430         return (void *)table->CmdSetRenderingAttachmentLocations;
2431     }
2432     if (!strcmp(name, "CmdSetRenderingInputAttachmentIndices")) {
2433         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2434         return (void *)table->CmdSetRenderingInputAttachmentIndices;
2435     }
2436     if (!strcmp(name, "CmdBindDescriptorSets2")) {
2437         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2438         return (void *)table->CmdBindDescriptorSets2;
2439     }
2440     if (!strcmp(name, "CmdPushConstants2")) {
2441         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2442         return (void *)table->CmdPushConstants2;
2443     }
2444     if (!strcmp(name, "CmdPushDescriptorSet2")) {
2445         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2446         return (void *)table->CmdPushDescriptorSet2;
2447     }
2448     if (!strcmp(name, "CmdPushDescriptorSetWithTemplate2")) {
2449         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2450         return (void *)table->CmdPushDescriptorSetWithTemplate2;
2451     }
2452     if (!strcmp(name, "CopyMemoryToImage")) {
2453         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2454         return (void *)table->CopyMemoryToImage;
2455     }
2456     if (!strcmp(name, "CopyImageToMemory")) {
2457         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2458         return (void *)table->CopyImageToMemory;
2459     }
2460     if (!strcmp(name, "CopyImageToImage")) {
2461         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2462         return (void *)table->CopyImageToImage;
2463     }
2464     if (!strcmp(name, "TransitionImageLayout")) {
2465         if (dev->should_ignore_device_commands_from_newer_version && api_version < VK_API_VERSION_1_4) return NULL;
2466         return (void *)table->TransitionImageLayout;
2467     }
2468 
2469     // ---- VK_KHR_swapchain extension commands
2470     if (!strcmp(name, "CreateSwapchainKHR")) return (void *)table->CreateSwapchainKHR;
2471     if (!strcmp(name, "DestroySwapchainKHR")) return (void *)table->DestroySwapchainKHR;
2472     if (!strcmp(name, "GetSwapchainImagesKHR")) return (void *)table->GetSwapchainImagesKHR;
2473     if (!strcmp(name, "AcquireNextImageKHR")) return (void *)table->AcquireNextImageKHR;
2474     if (!strcmp(name, "QueuePresentKHR")) return (void *)table->QueuePresentKHR;
2475     if (!strcmp(name, "GetDeviceGroupPresentCapabilitiesKHR")) return (void *)table->GetDeviceGroupPresentCapabilitiesKHR;
2476     if (!strcmp(name, "GetDeviceGroupSurfacePresentModesKHR")) return (void *)table->GetDeviceGroupSurfacePresentModesKHR;
2477     if (!strcmp(name, "AcquireNextImage2KHR")) return (void *)table->AcquireNextImage2KHR;
2478 
2479     // ---- VK_KHR_display_swapchain extension commands
2480     if (!strcmp(name, "CreateSharedSwapchainsKHR")) return (void *)table->CreateSharedSwapchainsKHR;
2481 
2482     // ---- VK_KHR_video_queue extension commands
2483     if (!strcmp(name, "CreateVideoSessionKHR")) return (void *)table->CreateVideoSessionKHR;
2484     if (!strcmp(name, "DestroyVideoSessionKHR")) return (void *)table->DestroyVideoSessionKHR;
2485     if (!strcmp(name, "GetVideoSessionMemoryRequirementsKHR")) return (void *)table->GetVideoSessionMemoryRequirementsKHR;
2486     if (!strcmp(name, "BindVideoSessionMemoryKHR")) return (void *)table->BindVideoSessionMemoryKHR;
2487     if (!strcmp(name, "CreateVideoSessionParametersKHR")) return (void *)table->CreateVideoSessionParametersKHR;
2488     if (!strcmp(name, "UpdateVideoSessionParametersKHR")) return (void *)table->UpdateVideoSessionParametersKHR;
2489     if (!strcmp(name, "DestroyVideoSessionParametersKHR")) return (void *)table->DestroyVideoSessionParametersKHR;
2490     if (!strcmp(name, "CmdBeginVideoCodingKHR")) return (void *)table->CmdBeginVideoCodingKHR;
2491     if (!strcmp(name, "CmdEndVideoCodingKHR")) return (void *)table->CmdEndVideoCodingKHR;
2492     if (!strcmp(name, "CmdControlVideoCodingKHR")) return (void *)table->CmdControlVideoCodingKHR;
2493 
2494     // ---- VK_KHR_video_decode_queue extension commands
2495     if (!strcmp(name, "CmdDecodeVideoKHR")) return (void *)table->CmdDecodeVideoKHR;
2496 
2497     // ---- VK_KHR_dynamic_rendering extension commands
2498     if (!strcmp(name, "CmdBeginRenderingKHR")) return (void *)table->CmdBeginRenderingKHR;
2499     if (!strcmp(name, "CmdEndRenderingKHR")) return (void *)table->CmdEndRenderingKHR;
2500 
2501     // ---- VK_KHR_device_group extension commands
2502     if (!strcmp(name, "GetDeviceGroupPeerMemoryFeaturesKHR")) return (void *)table->GetDeviceGroupPeerMemoryFeaturesKHR;
2503     if (!strcmp(name, "CmdSetDeviceMaskKHR")) return (void *)table->CmdSetDeviceMaskKHR;
2504     if (!strcmp(name, "CmdDispatchBaseKHR")) return (void *)table->CmdDispatchBaseKHR;
2505 
2506     // ---- VK_KHR_maintenance1 extension commands
2507     if (!strcmp(name, "TrimCommandPoolKHR")) return (void *)table->TrimCommandPoolKHR;
2508 
2509     // ---- VK_KHR_external_memory_win32 extension commands
2510 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2511     if (!strcmp(name, "GetMemoryWin32HandleKHR")) return (void *)table->GetMemoryWin32HandleKHR;
2512 #endif // VK_USE_PLATFORM_WIN32_KHR
2513 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2514     if (!strcmp(name, "GetMemoryWin32HandlePropertiesKHR")) return (void *)table->GetMemoryWin32HandlePropertiesKHR;
2515 #endif // VK_USE_PLATFORM_WIN32_KHR
2516 
2517     // ---- VK_KHR_external_memory_fd extension commands
2518     if (!strcmp(name, "GetMemoryFdKHR")) return (void *)table->GetMemoryFdKHR;
2519     if (!strcmp(name, "GetMemoryFdPropertiesKHR")) return (void *)table->GetMemoryFdPropertiesKHR;
2520 
2521     // ---- VK_KHR_external_semaphore_win32 extension commands
2522 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2523     if (!strcmp(name, "ImportSemaphoreWin32HandleKHR")) return (void *)table->ImportSemaphoreWin32HandleKHR;
2524 #endif // VK_USE_PLATFORM_WIN32_KHR
2525 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2526     if (!strcmp(name, "GetSemaphoreWin32HandleKHR")) return (void *)table->GetSemaphoreWin32HandleKHR;
2527 #endif // VK_USE_PLATFORM_WIN32_KHR
2528 
2529     // ---- VK_KHR_external_semaphore_fd extension commands
2530     if (!strcmp(name, "ImportSemaphoreFdKHR")) return (void *)table->ImportSemaphoreFdKHR;
2531     if (!strcmp(name, "GetSemaphoreFdKHR")) return (void *)table->GetSemaphoreFdKHR;
2532 
2533     // ---- VK_KHR_push_descriptor extension commands
2534     if (!strcmp(name, "CmdPushDescriptorSetKHR")) return (void *)table->CmdPushDescriptorSetKHR;
2535     if (!strcmp(name, "CmdPushDescriptorSetWithTemplateKHR")) return (void *)table->CmdPushDescriptorSetWithTemplateKHR;
2536 
2537     // ---- VK_KHR_descriptor_update_template extension commands
2538     if (!strcmp(name, "CreateDescriptorUpdateTemplateKHR")) return (void *)table->CreateDescriptorUpdateTemplateKHR;
2539     if (!strcmp(name, "DestroyDescriptorUpdateTemplateKHR")) return (void *)table->DestroyDescriptorUpdateTemplateKHR;
2540     if (!strcmp(name, "UpdateDescriptorSetWithTemplateKHR")) return (void *)table->UpdateDescriptorSetWithTemplateKHR;
2541 
2542     // ---- VK_KHR_create_renderpass2 extension commands
2543     if (!strcmp(name, "CreateRenderPass2KHR")) return (void *)table->CreateRenderPass2KHR;
2544     if (!strcmp(name, "CmdBeginRenderPass2KHR")) return (void *)table->CmdBeginRenderPass2KHR;
2545     if (!strcmp(name, "CmdNextSubpass2KHR")) return (void *)table->CmdNextSubpass2KHR;
2546     if (!strcmp(name, "CmdEndRenderPass2KHR")) return (void *)table->CmdEndRenderPass2KHR;
2547 
2548     // ---- VK_KHR_shared_presentable_image extension commands
2549     if (!strcmp(name, "GetSwapchainStatusKHR")) return (void *)table->GetSwapchainStatusKHR;
2550 
2551     // ---- VK_KHR_external_fence_win32 extension commands
2552 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2553     if (!strcmp(name, "ImportFenceWin32HandleKHR")) return (void *)table->ImportFenceWin32HandleKHR;
2554 #endif // VK_USE_PLATFORM_WIN32_KHR
2555 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2556     if (!strcmp(name, "GetFenceWin32HandleKHR")) return (void *)table->GetFenceWin32HandleKHR;
2557 #endif // VK_USE_PLATFORM_WIN32_KHR
2558 
2559     // ---- VK_KHR_external_fence_fd extension commands
2560     if (!strcmp(name, "ImportFenceFdKHR")) return (void *)table->ImportFenceFdKHR;
2561     if (!strcmp(name, "GetFenceFdKHR")) return (void *)table->GetFenceFdKHR;
2562 
2563     // ---- VK_KHR_performance_query extension commands
2564     if (!strcmp(name, "AcquireProfilingLockKHR")) return (void *)table->AcquireProfilingLockKHR;
2565     if (!strcmp(name, "ReleaseProfilingLockKHR")) return (void *)table->ReleaseProfilingLockKHR;
2566 
2567     // ---- VK_KHR_get_memory_requirements2 extension commands
2568     if (!strcmp(name, "GetImageMemoryRequirements2KHR")) return (void *)table->GetImageMemoryRequirements2KHR;
2569     if (!strcmp(name, "GetBufferMemoryRequirements2KHR")) return (void *)table->GetBufferMemoryRequirements2KHR;
2570     if (!strcmp(name, "GetImageSparseMemoryRequirements2KHR")) return (void *)table->GetImageSparseMemoryRequirements2KHR;
2571 
2572     // ---- VK_KHR_sampler_ycbcr_conversion extension commands
2573     if (!strcmp(name, "CreateSamplerYcbcrConversionKHR")) return (void *)table->CreateSamplerYcbcrConversionKHR;
2574     if (!strcmp(name, "DestroySamplerYcbcrConversionKHR")) return (void *)table->DestroySamplerYcbcrConversionKHR;
2575 
2576     // ---- VK_KHR_bind_memory2 extension commands
2577     if (!strcmp(name, "BindBufferMemory2KHR")) return (void *)table->BindBufferMemory2KHR;
2578     if (!strcmp(name, "BindImageMemory2KHR")) return (void *)table->BindImageMemory2KHR;
2579 
2580     // ---- VK_KHR_maintenance3 extension commands
2581     if (!strcmp(name, "GetDescriptorSetLayoutSupportKHR")) return (void *)table->GetDescriptorSetLayoutSupportKHR;
2582 
2583     // ---- VK_KHR_draw_indirect_count extension commands
2584     if (!strcmp(name, "CmdDrawIndirectCountKHR")) return (void *)table->CmdDrawIndirectCountKHR;
2585     if (!strcmp(name, "CmdDrawIndexedIndirectCountKHR")) return (void *)table->CmdDrawIndexedIndirectCountKHR;
2586 
2587     // ---- VK_KHR_timeline_semaphore extension commands
2588     if (!strcmp(name, "GetSemaphoreCounterValueKHR")) return (void *)table->GetSemaphoreCounterValueKHR;
2589     if (!strcmp(name, "WaitSemaphoresKHR")) return (void *)table->WaitSemaphoresKHR;
2590     if (!strcmp(name, "SignalSemaphoreKHR")) return (void *)table->SignalSemaphoreKHR;
2591 
2592     // ---- VK_KHR_fragment_shading_rate extension commands
2593     if (!strcmp(name, "CmdSetFragmentShadingRateKHR")) return (void *)table->CmdSetFragmentShadingRateKHR;
2594 
2595     // ---- VK_KHR_dynamic_rendering_local_read extension commands
2596     if (!strcmp(name, "CmdSetRenderingAttachmentLocationsKHR")) return (void *)table->CmdSetRenderingAttachmentLocationsKHR;
2597     if (!strcmp(name, "CmdSetRenderingInputAttachmentIndicesKHR")) return (void *)table->CmdSetRenderingInputAttachmentIndicesKHR;
2598 
2599     // ---- VK_KHR_present_wait extension commands
2600     if (!strcmp(name, "WaitForPresentKHR")) return (void *)table->WaitForPresentKHR;
2601 
2602     // ---- VK_KHR_buffer_device_address extension commands
2603     if (!strcmp(name, "GetBufferDeviceAddressKHR")) return (void *)table->GetBufferDeviceAddressKHR;
2604     if (!strcmp(name, "GetBufferOpaqueCaptureAddressKHR")) return (void *)table->GetBufferOpaqueCaptureAddressKHR;
2605     if (!strcmp(name, "GetDeviceMemoryOpaqueCaptureAddressKHR")) return (void *)table->GetDeviceMemoryOpaqueCaptureAddressKHR;
2606 
2607     // ---- VK_KHR_deferred_host_operations extension commands
2608     if (!strcmp(name, "CreateDeferredOperationKHR")) return (void *)table->CreateDeferredOperationKHR;
2609     if (!strcmp(name, "DestroyDeferredOperationKHR")) return (void *)table->DestroyDeferredOperationKHR;
2610     if (!strcmp(name, "GetDeferredOperationMaxConcurrencyKHR")) return (void *)table->GetDeferredOperationMaxConcurrencyKHR;
2611     if (!strcmp(name, "GetDeferredOperationResultKHR")) return (void *)table->GetDeferredOperationResultKHR;
2612     if (!strcmp(name, "DeferredOperationJoinKHR")) return (void *)table->DeferredOperationJoinKHR;
2613 
2614     // ---- VK_KHR_pipeline_executable_properties extension commands
2615     if (!strcmp(name, "GetPipelineExecutablePropertiesKHR")) return (void *)table->GetPipelineExecutablePropertiesKHR;
2616     if (!strcmp(name, "GetPipelineExecutableStatisticsKHR")) return (void *)table->GetPipelineExecutableStatisticsKHR;
2617     if (!strcmp(name, "GetPipelineExecutableInternalRepresentationsKHR")) return (void *)table->GetPipelineExecutableInternalRepresentationsKHR;
2618 
2619     // ---- VK_KHR_map_memory2 extension commands
2620     if (!strcmp(name, "MapMemory2KHR")) return (void *)table->MapMemory2KHR;
2621     if (!strcmp(name, "UnmapMemory2KHR")) return (void *)table->UnmapMemory2KHR;
2622 
2623     // ---- VK_KHR_video_encode_queue extension commands
2624     if (!strcmp(name, "GetEncodedVideoSessionParametersKHR")) return (void *)table->GetEncodedVideoSessionParametersKHR;
2625     if (!strcmp(name, "CmdEncodeVideoKHR")) return (void *)table->CmdEncodeVideoKHR;
2626 
2627     // ---- VK_KHR_synchronization2 extension commands
2628     if (!strcmp(name, "CmdSetEvent2KHR")) return (void *)table->CmdSetEvent2KHR;
2629     if (!strcmp(name, "CmdResetEvent2KHR")) return (void *)table->CmdResetEvent2KHR;
2630     if (!strcmp(name, "CmdWaitEvents2KHR")) return (void *)table->CmdWaitEvents2KHR;
2631     if (!strcmp(name, "CmdPipelineBarrier2KHR")) return (void *)table->CmdPipelineBarrier2KHR;
2632     if (!strcmp(name, "CmdWriteTimestamp2KHR")) return (void *)table->CmdWriteTimestamp2KHR;
2633     if (!strcmp(name, "QueueSubmit2KHR")) return (void *)table->QueueSubmit2KHR;
2634 
2635     // ---- VK_KHR_copy_commands2 extension commands
2636     if (!strcmp(name, "CmdCopyBuffer2KHR")) return (void *)table->CmdCopyBuffer2KHR;
2637     if (!strcmp(name, "CmdCopyImage2KHR")) return (void *)table->CmdCopyImage2KHR;
2638     if (!strcmp(name, "CmdCopyBufferToImage2KHR")) return (void *)table->CmdCopyBufferToImage2KHR;
2639     if (!strcmp(name, "CmdCopyImageToBuffer2KHR")) return (void *)table->CmdCopyImageToBuffer2KHR;
2640     if (!strcmp(name, "CmdBlitImage2KHR")) return (void *)table->CmdBlitImage2KHR;
2641     if (!strcmp(name, "CmdResolveImage2KHR")) return (void *)table->CmdResolveImage2KHR;
2642 
2643     // ---- VK_KHR_ray_tracing_maintenance1 extension commands
2644     if (!strcmp(name, "CmdTraceRaysIndirect2KHR")) return (void *)table->CmdTraceRaysIndirect2KHR;
2645 
2646     // ---- VK_KHR_maintenance4 extension commands
2647     if (!strcmp(name, "GetDeviceBufferMemoryRequirementsKHR")) return (void *)table->GetDeviceBufferMemoryRequirementsKHR;
2648     if (!strcmp(name, "GetDeviceImageMemoryRequirementsKHR")) return (void *)table->GetDeviceImageMemoryRequirementsKHR;
2649     if (!strcmp(name, "GetDeviceImageSparseMemoryRequirementsKHR")) return (void *)table->GetDeviceImageSparseMemoryRequirementsKHR;
2650 
2651     // ---- VK_KHR_maintenance5 extension commands
2652     if (!strcmp(name, "CmdBindIndexBuffer2KHR")) return (void *)table->CmdBindIndexBuffer2KHR;
2653     if (!strcmp(name, "GetRenderingAreaGranularityKHR")) return (void *)table->GetRenderingAreaGranularityKHR;
2654     if (!strcmp(name, "GetDeviceImageSubresourceLayoutKHR")) return (void *)table->GetDeviceImageSubresourceLayoutKHR;
2655     if (!strcmp(name, "GetImageSubresourceLayout2KHR")) return (void *)table->GetImageSubresourceLayout2KHR;
2656 
2657     // ---- VK_KHR_pipeline_binary extension commands
2658     if (!strcmp(name, "CreatePipelineBinariesKHR")) return (void *)table->CreatePipelineBinariesKHR;
2659     if (!strcmp(name, "DestroyPipelineBinaryKHR")) return (void *)table->DestroyPipelineBinaryKHR;
2660     if (!strcmp(name, "GetPipelineKeyKHR")) return (void *)table->GetPipelineKeyKHR;
2661     if (!strcmp(name, "GetPipelineBinaryDataKHR")) return (void *)table->GetPipelineBinaryDataKHR;
2662     if (!strcmp(name, "ReleaseCapturedPipelineDataKHR")) return (void *)table->ReleaseCapturedPipelineDataKHR;
2663 
2664     // ---- VK_KHR_line_rasterization extension commands
2665     if (!strcmp(name, "CmdSetLineStippleKHR")) return (void *)table->CmdSetLineStippleKHR;
2666 
2667     // ---- VK_KHR_calibrated_timestamps extension commands
2668     if (!strcmp(name, "GetCalibratedTimestampsKHR")) return (void *)table->GetCalibratedTimestampsKHR;
2669 
2670     // ---- VK_KHR_maintenance6 extension commands
2671     if (!strcmp(name, "CmdBindDescriptorSets2KHR")) return (void *)table->CmdBindDescriptorSets2KHR;
2672     if (!strcmp(name, "CmdPushConstants2KHR")) return (void *)table->CmdPushConstants2KHR;
2673     if (!strcmp(name, "CmdPushDescriptorSet2KHR")) return (void *)table->CmdPushDescriptorSet2KHR;
2674     if (!strcmp(name, "CmdPushDescriptorSetWithTemplate2KHR")) return (void *)table->CmdPushDescriptorSetWithTemplate2KHR;
2675     if (!strcmp(name, "CmdSetDescriptorBufferOffsets2EXT")) return (void *)table->CmdSetDescriptorBufferOffsets2EXT;
2676     if (!strcmp(name, "CmdBindDescriptorBufferEmbeddedSamplers2EXT")) return (void *)table->CmdBindDescriptorBufferEmbeddedSamplers2EXT;
2677 
2678     // ---- VK_EXT_debug_marker extension commands
2679     if (!strcmp(name, "DebugMarkerSetObjectTagEXT")) return dev->layer_extensions.ext_debug_marker_enabled ? (void *)DebugMarkerSetObjectTagEXT : NULL;
2680     if (!strcmp(name, "DebugMarkerSetObjectNameEXT")) return dev->layer_extensions.ext_debug_marker_enabled ? (void *)DebugMarkerSetObjectNameEXT : NULL;
2681     if (!strcmp(name, "CmdDebugMarkerBeginEXT")) return (void *)table->CmdDebugMarkerBeginEXT;
2682     if (!strcmp(name, "CmdDebugMarkerEndEXT")) return (void *)table->CmdDebugMarkerEndEXT;
2683     if (!strcmp(name, "CmdDebugMarkerInsertEXT")) return (void *)table->CmdDebugMarkerInsertEXT;
2684 
2685     // ---- VK_EXT_transform_feedback extension commands
2686     if (!strcmp(name, "CmdBindTransformFeedbackBuffersEXT")) return (void *)table->CmdBindTransformFeedbackBuffersEXT;
2687     if (!strcmp(name, "CmdBeginTransformFeedbackEXT")) return (void *)table->CmdBeginTransformFeedbackEXT;
2688     if (!strcmp(name, "CmdEndTransformFeedbackEXT")) return (void *)table->CmdEndTransformFeedbackEXT;
2689     if (!strcmp(name, "CmdBeginQueryIndexedEXT")) return (void *)table->CmdBeginQueryIndexedEXT;
2690     if (!strcmp(name, "CmdEndQueryIndexedEXT")) return (void *)table->CmdEndQueryIndexedEXT;
2691     if (!strcmp(name, "CmdDrawIndirectByteCountEXT")) return (void *)table->CmdDrawIndirectByteCountEXT;
2692 
2693     // ---- VK_NVX_binary_import extension commands
2694     if (!strcmp(name, "CreateCuModuleNVX")) return (void *)table->CreateCuModuleNVX;
2695     if (!strcmp(name, "CreateCuFunctionNVX")) return (void *)table->CreateCuFunctionNVX;
2696     if (!strcmp(name, "DestroyCuModuleNVX")) return (void *)table->DestroyCuModuleNVX;
2697     if (!strcmp(name, "DestroyCuFunctionNVX")) return (void *)table->DestroyCuFunctionNVX;
2698     if (!strcmp(name, "CmdCuLaunchKernelNVX")) return (void *)table->CmdCuLaunchKernelNVX;
2699 
2700     // ---- VK_NVX_image_view_handle extension commands
2701     if (!strcmp(name, "GetImageViewHandleNVX")) return (void *)table->GetImageViewHandleNVX;
2702     if (!strcmp(name, "GetImageViewHandle64NVX")) return (void *)table->GetImageViewHandle64NVX;
2703     if (!strcmp(name, "GetImageViewAddressNVX")) return (void *)table->GetImageViewAddressNVX;
2704 
2705     // ---- VK_AMD_draw_indirect_count extension commands
2706     if (!strcmp(name, "CmdDrawIndirectCountAMD")) return (void *)table->CmdDrawIndirectCountAMD;
2707     if (!strcmp(name, "CmdDrawIndexedIndirectCountAMD")) return (void *)table->CmdDrawIndexedIndirectCountAMD;
2708 
2709     // ---- VK_AMD_shader_info extension commands
2710     if (!strcmp(name, "GetShaderInfoAMD")) return (void *)table->GetShaderInfoAMD;
2711 
2712     // ---- VK_NV_external_memory_win32 extension commands
2713 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2714     if (!strcmp(name, "GetMemoryWin32HandleNV")) return (void *)table->GetMemoryWin32HandleNV;
2715 #endif // VK_USE_PLATFORM_WIN32_KHR
2716 
2717     // ---- VK_EXT_conditional_rendering extension commands
2718     if (!strcmp(name, "CmdBeginConditionalRenderingEXT")) return (void *)table->CmdBeginConditionalRenderingEXT;
2719     if (!strcmp(name, "CmdEndConditionalRenderingEXT")) return (void *)table->CmdEndConditionalRenderingEXT;
2720 
2721     // ---- VK_NV_clip_space_w_scaling extension commands
2722     if (!strcmp(name, "CmdSetViewportWScalingNV")) return (void *)table->CmdSetViewportWScalingNV;
2723 
2724     // ---- VK_EXT_display_control extension commands
2725     if (!strcmp(name, "DisplayPowerControlEXT")) return (void *)table->DisplayPowerControlEXT;
2726     if (!strcmp(name, "RegisterDeviceEventEXT")) return (void *)table->RegisterDeviceEventEXT;
2727     if (!strcmp(name, "RegisterDisplayEventEXT")) return (void *)table->RegisterDisplayEventEXT;
2728     if (!strcmp(name, "GetSwapchainCounterEXT")) return (void *)table->GetSwapchainCounterEXT;
2729 
2730     // ---- VK_GOOGLE_display_timing extension commands
2731     if (!strcmp(name, "GetRefreshCycleDurationGOOGLE")) return (void *)table->GetRefreshCycleDurationGOOGLE;
2732     if (!strcmp(name, "GetPastPresentationTimingGOOGLE")) return (void *)table->GetPastPresentationTimingGOOGLE;
2733 
2734     // ---- VK_EXT_discard_rectangles extension commands
2735     if (!strcmp(name, "CmdSetDiscardRectangleEXT")) return (void *)table->CmdSetDiscardRectangleEXT;
2736     if (!strcmp(name, "CmdSetDiscardRectangleEnableEXT")) return (void *)table->CmdSetDiscardRectangleEnableEXT;
2737     if (!strcmp(name, "CmdSetDiscardRectangleModeEXT")) return (void *)table->CmdSetDiscardRectangleModeEXT;
2738 
2739     // ---- VK_EXT_hdr_metadata extension commands
2740     if (!strcmp(name, "SetHdrMetadataEXT")) return (void *)table->SetHdrMetadataEXT;
2741 
2742     // ---- VK_EXT_debug_utils extension commands
2743     if (!strcmp(name, "SetDebugUtilsObjectNameEXT")) return dev->layer_extensions.ext_debug_utils_enabled ? (void *)SetDebugUtilsObjectNameEXT : NULL;
2744     if (!strcmp(name, "SetDebugUtilsObjectTagEXT")) return dev->layer_extensions.ext_debug_utils_enabled ? (void *)SetDebugUtilsObjectTagEXT : NULL;
2745     if (!strcmp(name, "QueueBeginDebugUtilsLabelEXT")) return (void *)table->QueueBeginDebugUtilsLabelEXT;
2746     if (!strcmp(name, "QueueEndDebugUtilsLabelEXT")) return (void *)table->QueueEndDebugUtilsLabelEXT;
2747     if (!strcmp(name, "QueueInsertDebugUtilsLabelEXT")) return (void *)table->QueueInsertDebugUtilsLabelEXT;
2748     if (!strcmp(name, "CmdBeginDebugUtilsLabelEXT")) return (void *)table->CmdBeginDebugUtilsLabelEXT;
2749     if (!strcmp(name, "CmdEndDebugUtilsLabelEXT")) return (void *)table->CmdEndDebugUtilsLabelEXT;
2750     if (!strcmp(name, "CmdInsertDebugUtilsLabelEXT")) return (void *)table->CmdInsertDebugUtilsLabelEXT;
2751 
2752     // ---- VK_ANDROID_external_memory_android_hardware_buffer extension commands
2753 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
2754     if (!strcmp(name, "GetAndroidHardwareBufferPropertiesANDROID")) return (void *)table->GetAndroidHardwareBufferPropertiesANDROID;
2755 #endif // VK_USE_PLATFORM_ANDROID_KHR
2756 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
2757     if (!strcmp(name, "GetMemoryAndroidHardwareBufferANDROID")) return (void *)table->GetMemoryAndroidHardwareBufferANDROID;
2758 #endif // VK_USE_PLATFORM_ANDROID_KHR
2759 
2760     // ---- VK_AMDX_shader_enqueue extension commands
2761 #if defined(VK_ENABLE_BETA_EXTENSIONS)
2762     if (!strcmp(name, "CreateExecutionGraphPipelinesAMDX")) return (void *)table->CreateExecutionGraphPipelinesAMDX;
2763 #endif // VK_ENABLE_BETA_EXTENSIONS
2764 #if defined(VK_ENABLE_BETA_EXTENSIONS)
2765     if (!strcmp(name, "GetExecutionGraphPipelineScratchSizeAMDX")) return (void *)table->GetExecutionGraphPipelineScratchSizeAMDX;
2766 #endif // VK_ENABLE_BETA_EXTENSIONS
2767 #if defined(VK_ENABLE_BETA_EXTENSIONS)
2768     if (!strcmp(name, "GetExecutionGraphPipelineNodeIndexAMDX")) return (void *)table->GetExecutionGraphPipelineNodeIndexAMDX;
2769 #endif // VK_ENABLE_BETA_EXTENSIONS
2770 #if defined(VK_ENABLE_BETA_EXTENSIONS)
2771     if (!strcmp(name, "CmdInitializeGraphScratchMemoryAMDX")) return (void *)table->CmdInitializeGraphScratchMemoryAMDX;
2772 #endif // VK_ENABLE_BETA_EXTENSIONS
2773 #if defined(VK_ENABLE_BETA_EXTENSIONS)
2774     if (!strcmp(name, "CmdDispatchGraphAMDX")) return (void *)table->CmdDispatchGraphAMDX;
2775 #endif // VK_ENABLE_BETA_EXTENSIONS
2776 #if defined(VK_ENABLE_BETA_EXTENSIONS)
2777     if (!strcmp(name, "CmdDispatchGraphIndirectAMDX")) return (void *)table->CmdDispatchGraphIndirectAMDX;
2778 #endif // VK_ENABLE_BETA_EXTENSIONS
2779 #if defined(VK_ENABLE_BETA_EXTENSIONS)
2780     if (!strcmp(name, "CmdDispatchGraphIndirectCountAMDX")) return (void *)table->CmdDispatchGraphIndirectCountAMDX;
2781 #endif // VK_ENABLE_BETA_EXTENSIONS
2782 
2783     // ---- VK_EXT_sample_locations extension commands
2784     if (!strcmp(name, "CmdSetSampleLocationsEXT")) return (void *)table->CmdSetSampleLocationsEXT;
2785 
2786     // ---- VK_EXT_image_drm_format_modifier extension commands
2787     if (!strcmp(name, "GetImageDrmFormatModifierPropertiesEXT")) return (void *)table->GetImageDrmFormatModifierPropertiesEXT;
2788 
2789     // ---- VK_EXT_validation_cache extension commands
2790     if (!strcmp(name, "CreateValidationCacheEXT")) return (void *)table->CreateValidationCacheEXT;
2791     if (!strcmp(name, "DestroyValidationCacheEXT")) return (void *)table->DestroyValidationCacheEXT;
2792     if (!strcmp(name, "MergeValidationCachesEXT")) return (void *)table->MergeValidationCachesEXT;
2793     if (!strcmp(name, "GetValidationCacheDataEXT")) return (void *)table->GetValidationCacheDataEXT;
2794 
2795     // ---- VK_NV_shading_rate_image extension commands
2796     if (!strcmp(name, "CmdBindShadingRateImageNV")) return (void *)table->CmdBindShadingRateImageNV;
2797     if (!strcmp(name, "CmdSetViewportShadingRatePaletteNV")) return (void *)table->CmdSetViewportShadingRatePaletteNV;
2798     if (!strcmp(name, "CmdSetCoarseSampleOrderNV")) return (void *)table->CmdSetCoarseSampleOrderNV;
2799 
2800     // ---- VK_NV_ray_tracing extension commands
2801     if (!strcmp(name, "CreateAccelerationStructureNV")) return (void *)table->CreateAccelerationStructureNV;
2802     if (!strcmp(name, "DestroyAccelerationStructureNV")) return (void *)table->DestroyAccelerationStructureNV;
2803     if (!strcmp(name, "GetAccelerationStructureMemoryRequirementsNV")) return (void *)table->GetAccelerationStructureMemoryRequirementsNV;
2804     if (!strcmp(name, "BindAccelerationStructureMemoryNV")) return (void *)table->BindAccelerationStructureMemoryNV;
2805     if (!strcmp(name, "CmdBuildAccelerationStructureNV")) return (void *)table->CmdBuildAccelerationStructureNV;
2806     if (!strcmp(name, "CmdCopyAccelerationStructureNV")) return (void *)table->CmdCopyAccelerationStructureNV;
2807     if (!strcmp(name, "CmdTraceRaysNV")) return (void *)table->CmdTraceRaysNV;
2808     if (!strcmp(name, "CreateRayTracingPipelinesNV")) return (void *)table->CreateRayTracingPipelinesNV;
2809     if (!strcmp(name, "GetRayTracingShaderGroupHandlesKHR")) return (void *)table->GetRayTracingShaderGroupHandlesKHR;
2810     if (!strcmp(name, "GetRayTracingShaderGroupHandlesNV")) return (void *)table->GetRayTracingShaderGroupHandlesNV;
2811     if (!strcmp(name, "GetAccelerationStructureHandleNV")) return (void *)table->GetAccelerationStructureHandleNV;
2812     if (!strcmp(name, "CmdWriteAccelerationStructuresPropertiesNV")) return (void *)table->CmdWriteAccelerationStructuresPropertiesNV;
2813     if (!strcmp(name, "CompileDeferredNV")) return (void *)table->CompileDeferredNV;
2814 
2815     // ---- VK_EXT_external_memory_host extension commands
2816     if (!strcmp(name, "GetMemoryHostPointerPropertiesEXT")) return (void *)table->GetMemoryHostPointerPropertiesEXT;
2817 
2818     // ---- VK_AMD_buffer_marker extension commands
2819     if (!strcmp(name, "CmdWriteBufferMarkerAMD")) return (void *)table->CmdWriteBufferMarkerAMD;
2820     if (!strcmp(name, "CmdWriteBufferMarker2AMD")) return (void *)table->CmdWriteBufferMarker2AMD;
2821 
2822     // ---- VK_EXT_calibrated_timestamps extension commands
2823     if (!strcmp(name, "GetCalibratedTimestampsEXT")) return (void *)table->GetCalibratedTimestampsEXT;
2824 
2825     // ---- VK_NV_mesh_shader extension commands
2826     if (!strcmp(name, "CmdDrawMeshTasksNV")) return (void *)table->CmdDrawMeshTasksNV;
2827     if (!strcmp(name, "CmdDrawMeshTasksIndirectNV")) return (void *)table->CmdDrawMeshTasksIndirectNV;
2828     if (!strcmp(name, "CmdDrawMeshTasksIndirectCountNV")) return (void *)table->CmdDrawMeshTasksIndirectCountNV;
2829 
2830     // ---- VK_NV_scissor_exclusive extension commands
2831     if (!strcmp(name, "CmdSetExclusiveScissorEnableNV")) return (void *)table->CmdSetExclusiveScissorEnableNV;
2832     if (!strcmp(name, "CmdSetExclusiveScissorNV")) return (void *)table->CmdSetExclusiveScissorNV;
2833 
2834     // ---- VK_NV_device_diagnostic_checkpoints extension commands
2835     if (!strcmp(name, "CmdSetCheckpointNV")) return (void *)table->CmdSetCheckpointNV;
2836     if (!strcmp(name, "GetQueueCheckpointDataNV")) return (void *)table->GetQueueCheckpointDataNV;
2837     if (!strcmp(name, "GetQueueCheckpointData2NV")) return (void *)table->GetQueueCheckpointData2NV;
2838 
2839     // ---- VK_INTEL_performance_query extension commands
2840     if (!strcmp(name, "InitializePerformanceApiINTEL")) return (void *)table->InitializePerformanceApiINTEL;
2841     if (!strcmp(name, "UninitializePerformanceApiINTEL")) return (void *)table->UninitializePerformanceApiINTEL;
2842     if (!strcmp(name, "CmdSetPerformanceMarkerINTEL")) return (void *)table->CmdSetPerformanceMarkerINTEL;
2843     if (!strcmp(name, "CmdSetPerformanceStreamMarkerINTEL")) return (void *)table->CmdSetPerformanceStreamMarkerINTEL;
2844     if (!strcmp(name, "CmdSetPerformanceOverrideINTEL")) return (void *)table->CmdSetPerformanceOverrideINTEL;
2845     if (!strcmp(name, "AcquirePerformanceConfigurationINTEL")) return (void *)table->AcquirePerformanceConfigurationINTEL;
2846     if (!strcmp(name, "ReleasePerformanceConfigurationINTEL")) return (void *)table->ReleasePerformanceConfigurationINTEL;
2847     if (!strcmp(name, "QueueSetPerformanceConfigurationINTEL")) return (void *)table->QueueSetPerformanceConfigurationINTEL;
2848     if (!strcmp(name, "GetPerformanceParameterINTEL")) return (void *)table->GetPerformanceParameterINTEL;
2849 
2850     // ---- VK_AMD_display_native_hdr extension commands
2851     if (!strcmp(name, "SetLocalDimmingAMD")) return (void *)table->SetLocalDimmingAMD;
2852 
2853     // ---- VK_EXT_buffer_device_address extension commands
2854     if (!strcmp(name, "GetBufferDeviceAddressEXT")) return (void *)table->GetBufferDeviceAddressEXT;
2855 
2856     // ---- VK_EXT_full_screen_exclusive extension commands
2857 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2858     if (!strcmp(name, "AcquireFullScreenExclusiveModeEXT")) return (void *)table->AcquireFullScreenExclusiveModeEXT;
2859 #endif // VK_USE_PLATFORM_WIN32_KHR
2860 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2861     if (!strcmp(name, "ReleaseFullScreenExclusiveModeEXT")) return (void *)table->ReleaseFullScreenExclusiveModeEXT;
2862 #endif // VK_USE_PLATFORM_WIN32_KHR
2863 #if defined(VK_USE_PLATFORM_WIN32_KHR)
2864     if (!strcmp(name, "GetDeviceGroupSurfacePresentModes2EXT")) return (void *)table->GetDeviceGroupSurfacePresentModes2EXT;
2865 #endif // VK_USE_PLATFORM_WIN32_KHR
2866 
2867     // ---- VK_EXT_line_rasterization extension commands
2868     if (!strcmp(name, "CmdSetLineStippleEXT")) return (void *)table->CmdSetLineStippleEXT;
2869 
2870     // ---- VK_EXT_host_query_reset extension commands
2871     if (!strcmp(name, "ResetQueryPoolEXT")) return (void *)table->ResetQueryPoolEXT;
2872 
2873     // ---- VK_EXT_extended_dynamic_state extension commands
2874     if (!strcmp(name, "CmdSetCullModeEXT")) return (void *)table->CmdSetCullModeEXT;
2875     if (!strcmp(name, "CmdSetFrontFaceEXT")) return (void *)table->CmdSetFrontFaceEXT;
2876     if (!strcmp(name, "CmdSetPrimitiveTopologyEXT")) return (void *)table->CmdSetPrimitiveTopologyEXT;
2877     if (!strcmp(name, "CmdSetViewportWithCountEXT")) return (void *)table->CmdSetViewportWithCountEXT;
2878     if (!strcmp(name, "CmdSetScissorWithCountEXT")) return (void *)table->CmdSetScissorWithCountEXT;
2879     if (!strcmp(name, "CmdBindVertexBuffers2EXT")) return (void *)table->CmdBindVertexBuffers2EXT;
2880     if (!strcmp(name, "CmdSetDepthTestEnableEXT")) return (void *)table->CmdSetDepthTestEnableEXT;
2881     if (!strcmp(name, "CmdSetDepthWriteEnableEXT")) return (void *)table->CmdSetDepthWriteEnableEXT;
2882     if (!strcmp(name, "CmdSetDepthCompareOpEXT")) return (void *)table->CmdSetDepthCompareOpEXT;
2883     if (!strcmp(name, "CmdSetDepthBoundsTestEnableEXT")) return (void *)table->CmdSetDepthBoundsTestEnableEXT;
2884     if (!strcmp(name, "CmdSetStencilTestEnableEXT")) return (void *)table->CmdSetStencilTestEnableEXT;
2885     if (!strcmp(name, "CmdSetStencilOpEXT")) return (void *)table->CmdSetStencilOpEXT;
2886 
2887     // ---- VK_EXT_host_image_copy extension commands
2888     if (!strcmp(name, "CopyMemoryToImageEXT")) return (void *)table->CopyMemoryToImageEXT;
2889     if (!strcmp(name, "CopyImageToMemoryEXT")) return (void *)table->CopyImageToMemoryEXT;
2890     if (!strcmp(name, "CopyImageToImageEXT")) return (void *)table->CopyImageToImageEXT;
2891     if (!strcmp(name, "TransitionImageLayoutEXT")) return (void *)table->TransitionImageLayoutEXT;
2892     if (!strcmp(name, "GetImageSubresourceLayout2EXT")) return (void *)table->GetImageSubresourceLayout2EXT;
2893 
2894     // ---- VK_EXT_swapchain_maintenance1 extension commands
2895     if (!strcmp(name, "ReleaseSwapchainImagesEXT")) return (void *)table->ReleaseSwapchainImagesEXT;
2896 
2897     // ---- VK_NV_device_generated_commands extension commands
2898     if (!strcmp(name, "GetGeneratedCommandsMemoryRequirementsNV")) return (void *)table->GetGeneratedCommandsMemoryRequirementsNV;
2899     if (!strcmp(name, "CmdPreprocessGeneratedCommandsNV")) return (void *)table->CmdPreprocessGeneratedCommandsNV;
2900     if (!strcmp(name, "CmdExecuteGeneratedCommandsNV")) return (void *)table->CmdExecuteGeneratedCommandsNV;
2901     if (!strcmp(name, "CmdBindPipelineShaderGroupNV")) return (void *)table->CmdBindPipelineShaderGroupNV;
2902     if (!strcmp(name, "CreateIndirectCommandsLayoutNV")) return (void *)table->CreateIndirectCommandsLayoutNV;
2903     if (!strcmp(name, "DestroyIndirectCommandsLayoutNV")) return (void *)table->DestroyIndirectCommandsLayoutNV;
2904 
2905     // ---- VK_EXT_depth_bias_control extension commands
2906     if (!strcmp(name, "CmdSetDepthBias2EXT")) return (void *)table->CmdSetDepthBias2EXT;
2907 
2908     // ---- VK_EXT_private_data extension commands
2909     if (!strcmp(name, "CreatePrivateDataSlotEXT")) return (void *)table->CreatePrivateDataSlotEXT;
2910     if (!strcmp(name, "DestroyPrivateDataSlotEXT")) return (void *)table->DestroyPrivateDataSlotEXT;
2911     if (!strcmp(name, "SetPrivateDataEXT")) return (void *)table->SetPrivateDataEXT;
2912     if (!strcmp(name, "GetPrivateDataEXT")) return (void *)table->GetPrivateDataEXT;
2913 
2914     // ---- VK_NV_cuda_kernel_launch extension commands
2915     if (!strcmp(name, "CreateCudaModuleNV")) return (void *)table->CreateCudaModuleNV;
2916     if (!strcmp(name, "GetCudaModuleCacheNV")) return (void *)table->GetCudaModuleCacheNV;
2917     if (!strcmp(name, "CreateCudaFunctionNV")) return (void *)table->CreateCudaFunctionNV;
2918     if (!strcmp(name, "DestroyCudaModuleNV")) return (void *)table->DestroyCudaModuleNV;
2919     if (!strcmp(name, "DestroyCudaFunctionNV")) return (void *)table->DestroyCudaFunctionNV;
2920     if (!strcmp(name, "CmdCudaLaunchKernelNV")) return (void *)table->CmdCudaLaunchKernelNV;
2921 
2922     // ---- VK_EXT_metal_objects extension commands
2923 #if defined(VK_USE_PLATFORM_METAL_EXT)
2924     if (!strcmp(name, "ExportMetalObjectsEXT")) return (void *)table->ExportMetalObjectsEXT;
2925 #endif // VK_USE_PLATFORM_METAL_EXT
2926 
2927     // ---- VK_EXT_descriptor_buffer extension commands
2928     if (!strcmp(name, "GetDescriptorSetLayoutSizeEXT")) return (void *)table->GetDescriptorSetLayoutSizeEXT;
2929     if (!strcmp(name, "GetDescriptorSetLayoutBindingOffsetEXT")) return (void *)table->GetDescriptorSetLayoutBindingOffsetEXT;
2930     if (!strcmp(name, "GetDescriptorEXT")) return (void *)table->GetDescriptorEXT;
2931     if (!strcmp(name, "CmdBindDescriptorBuffersEXT")) return (void *)table->CmdBindDescriptorBuffersEXT;
2932     if (!strcmp(name, "CmdSetDescriptorBufferOffsetsEXT")) return (void *)table->CmdSetDescriptorBufferOffsetsEXT;
2933     if (!strcmp(name, "CmdBindDescriptorBufferEmbeddedSamplersEXT")) return (void *)table->CmdBindDescriptorBufferEmbeddedSamplersEXT;
2934     if (!strcmp(name, "GetBufferOpaqueCaptureDescriptorDataEXT")) return (void *)table->GetBufferOpaqueCaptureDescriptorDataEXT;
2935     if (!strcmp(name, "GetImageOpaqueCaptureDescriptorDataEXT")) return (void *)table->GetImageOpaqueCaptureDescriptorDataEXT;
2936     if (!strcmp(name, "GetImageViewOpaqueCaptureDescriptorDataEXT")) return (void *)table->GetImageViewOpaqueCaptureDescriptorDataEXT;
2937     if (!strcmp(name, "GetSamplerOpaqueCaptureDescriptorDataEXT")) return (void *)table->GetSamplerOpaqueCaptureDescriptorDataEXT;
2938     if (!strcmp(name, "GetAccelerationStructureOpaqueCaptureDescriptorDataEXT")) return (void *)table->GetAccelerationStructureOpaqueCaptureDescriptorDataEXT;
2939 
2940     // ---- VK_NV_fragment_shading_rate_enums extension commands
2941     if (!strcmp(name, "CmdSetFragmentShadingRateEnumNV")) return (void *)table->CmdSetFragmentShadingRateEnumNV;
2942 
2943     // ---- VK_EXT_device_fault extension commands
2944     if (!strcmp(name, "GetDeviceFaultInfoEXT")) return (void *)table->GetDeviceFaultInfoEXT;
2945 
2946     // ---- VK_EXT_vertex_input_dynamic_state extension commands
2947     if (!strcmp(name, "CmdSetVertexInputEXT")) return (void *)table->CmdSetVertexInputEXT;
2948 
2949     // ---- VK_FUCHSIA_external_memory extension commands
2950 #if defined(VK_USE_PLATFORM_FUCHSIA)
2951     if (!strcmp(name, "GetMemoryZirconHandleFUCHSIA")) return (void *)table->GetMemoryZirconHandleFUCHSIA;
2952 #endif // VK_USE_PLATFORM_FUCHSIA
2953 #if defined(VK_USE_PLATFORM_FUCHSIA)
2954     if (!strcmp(name, "GetMemoryZirconHandlePropertiesFUCHSIA")) return (void *)table->GetMemoryZirconHandlePropertiesFUCHSIA;
2955 #endif // VK_USE_PLATFORM_FUCHSIA
2956 
2957     // ---- VK_FUCHSIA_external_semaphore extension commands
2958 #if defined(VK_USE_PLATFORM_FUCHSIA)
2959     if (!strcmp(name, "ImportSemaphoreZirconHandleFUCHSIA")) return (void *)table->ImportSemaphoreZirconHandleFUCHSIA;
2960 #endif // VK_USE_PLATFORM_FUCHSIA
2961 #if defined(VK_USE_PLATFORM_FUCHSIA)
2962     if (!strcmp(name, "GetSemaphoreZirconHandleFUCHSIA")) return (void *)table->GetSemaphoreZirconHandleFUCHSIA;
2963 #endif // VK_USE_PLATFORM_FUCHSIA
2964 
2965     // ---- VK_FUCHSIA_buffer_collection extension commands
2966 #if defined(VK_USE_PLATFORM_FUCHSIA)
2967     if (!strcmp(name, "CreateBufferCollectionFUCHSIA")) return (void *)table->CreateBufferCollectionFUCHSIA;
2968 #endif // VK_USE_PLATFORM_FUCHSIA
2969 #if defined(VK_USE_PLATFORM_FUCHSIA)
2970     if (!strcmp(name, "SetBufferCollectionImageConstraintsFUCHSIA")) return (void *)table->SetBufferCollectionImageConstraintsFUCHSIA;
2971 #endif // VK_USE_PLATFORM_FUCHSIA
2972 #if defined(VK_USE_PLATFORM_FUCHSIA)
2973     if (!strcmp(name, "SetBufferCollectionBufferConstraintsFUCHSIA")) return (void *)table->SetBufferCollectionBufferConstraintsFUCHSIA;
2974 #endif // VK_USE_PLATFORM_FUCHSIA
2975 #if defined(VK_USE_PLATFORM_FUCHSIA)
2976     if (!strcmp(name, "DestroyBufferCollectionFUCHSIA")) return (void *)table->DestroyBufferCollectionFUCHSIA;
2977 #endif // VK_USE_PLATFORM_FUCHSIA
2978 #if defined(VK_USE_PLATFORM_FUCHSIA)
2979     if (!strcmp(name, "GetBufferCollectionPropertiesFUCHSIA")) return (void *)table->GetBufferCollectionPropertiesFUCHSIA;
2980 #endif // VK_USE_PLATFORM_FUCHSIA
2981 
2982     // ---- VK_HUAWEI_subpass_shading extension commands
2983     if (!strcmp(name, "GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI")) return (void *)table->GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
2984     if (!strcmp(name, "CmdSubpassShadingHUAWEI")) return (void *)table->CmdSubpassShadingHUAWEI;
2985 
2986     // ---- VK_HUAWEI_invocation_mask extension commands
2987     if (!strcmp(name, "CmdBindInvocationMaskHUAWEI")) return (void *)table->CmdBindInvocationMaskHUAWEI;
2988 
2989     // ---- VK_NV_external_memory_rdma extension commands
2990     if (!strcmp(name, "GetMemoryRemoteAddressNV")) return (void *)table->GetMemoryRemoteAddressNV;
2991 
2992     // ---- VK_EXT_pipeline_properties extension commands
2993     if (!strcmp(name, "GetPipelinePropertiesEXT")) return (void *)table->GetPipelinePropertiesEXT;
2994 
2995     // ---- VK_EXT_extended_dynamic_state2 extension commands
2996     if (!strcmp(name, "CmdSetPatchControlPointsEXT")) return (void *)table->CmdSetPatchControlPointsEXT;
2997     if (!strcmp(name, "CmdSetRasterizerDiscardEnableEXT")) return (void *)table->CmdSetRasterizerDiscardEnableEXT;
2998     if (!strcmp(name, "CmdSetDepthBiasEnableEXT")) return (void *)table->CmdSetDepthBiasEnableEXT;
2999     if (!strcmp(name, "CmdSetLogicOpEXT")) return (void *)table->CmdSetLogicOpEXT;
3000     if (!strcmp(name, "CmdSetPrimitiveRestartEnableEXT")) return (void *)table->CmdSetPrimitiveRestartEnableEXT;
3001 
3002     // ---- VK_EXT_color_write_enable extension commands
3003     if (!strcmp(name, "CmdSetColorWriteEnableEXT")) return (void *)table->CmdSetColorWriteEnableEXT;
3004 
3005     // ---- VK_EXT_multi_draw extension commands
3006     if (!strcmp(name, "CmdDrawMultiEXT")) return (void *)table->CmdDrawMultiEXT;
3007     if (!strcmp(name, "CmdDrawMultiIndexedEXT")) return (void *)table->CmdDrawMultiIndexedEXT;
3008 
3009     // ---- VK_EXT_opacity_micromap extension commands
3010     if (!strcmp(name, "CreateMicromapEXT")) return (void *)table->CreateMicromapEXT;
3011     if (!strcmp(name, "DestroyMicromapEXT")) return (void *)table->DestroyMicromapEXT;
3012     if (!strcmp(name, "CmdBuildMicromapsEXT")) return (void *)table->CmdBuildMicromapsEXT;
3013     if (!strcmp(name, "BuildMicromapsEXT")) return (void *)table->BuildMicromapsEXT;
3014     if (!strcmp(name, "CopyMicromapEXT")) return (void *)table->CopyMicromapEXT;
3015     if (!strcmp(name, "CopyMicromapToMemoryEXT")) return (void *)table->CopyMicromapToMemoryEXT;
3016     if (!strcmp(name, "CopyMemoryToMicromapEXT")) return (void *)table->CopyMemoryToMicromapEXT;
3017     if (!strcmp(name, "WriteMicromapsPropertiesEXT")) return (void *)table->WriteMicromapsPropertiesEXT;
3018     if (!strcmp(name, "CmdCopyMicromapEXT")) return (void *)table->CmdCopyMicromapEXT;
3019     if (!strcmp(name, "CmdCopyMicromapToMemoryEXT")) return (void *)table->CmdCopyMicromapToMemoryEXT;
3020     if (!strcmp(name, "CmdCopyMemoryToMicromapEXT")) return (void *)table->CmdCopyMemoryToMicromapEXT;
3021     if (!strcmp(name, "CmdWriteMicromapsPropertiesEXT")) return (void *)table->CmdWriteMicromapsPropertiesEXT;
3022     if (!strcmp(name, "GetDeviceMicromapCompatibilityEXT")) return (void *)table->GetDeviceMicromapCompatibilityEXT;
3023     if (!strcmp(name, "GetMicromapBuildSizesEXT")) return (void *)table->GetMicromapBuildSizesEXT;
3024 
3025     // ---- VK_HUAWEI_cluster_culling_shader extension commands
3026     if (!strcmp(name, "CmdDrawClusterHUAWEI")) return (void *)table->CmdDrawClusterHUAWEI;
3027     if (!strcmp(name, "CmdDrawClusterIndirectHUAWEI")) return (void *)table->CmdDrawClusterIndirectHUAWEI;
3028 
3029     // ---- VK_EXT_pageable_device_local_memory extension commands
3030     if (!strcmp(name, "SetDeviceMemoryPriorityEXT")) return (void *)table->SetDeviceMemoryPriorityEXT;
3031 
3032     // ---- VK_VALVE_descriptor_set_host_mapping extension commands
3033     if (!strcmp(name, "GetDescriptorSetLayoutHostMappingInfoVALVE")) return (void *)table->GetDescriptorSetLayoutHostMappingInfoVALVE;
3034     if (!strcmp(name, "GetDescriptorSetHostMappingVALVE")) return (void *)table->GetDescriptorSetHostMappingVALVE;
3035 
3036     // ---- VK_NV_copy_memory_indirect extension commands
3037     if (!strcmp(name, "CmdCopyMemoryIndirectNV")) return (void *)table->CmdCopyMemoryIndirectNV;
3038     if (!strcmp(name, "CmdCopyMemoryToImageIndirectNV")) return (void *)table->CmdCopyMemoryToImageIndirectNV;
3039 
3040     // ---- VK_NV_memory_decompression extension commands
3041     if (!strcmp(name, "CmdDecompressMemoryNV")) return (void *)table->CmdDecompressMemoryNV;
3042     if (!strcmp(name, "CmdDecompressMemoryIndirectCountNV")) return (void *)table->CmdDecompressMemoryIndirectCountNV;
3043 
3044     // ---- VK_NV_device_generated_commands_compute extension commands
3045     if (!strcmp(name, "GetPipelineIndirectMemoryRequirementsNV")) return (void *)table->GetPipelineIndirectMemoryRequirementsNV;
3046     if (!strcmp(name, "CmdUpdatePipelineIndirectBufferNV")) return (void *)table->CmdUpdatePipelineIndirectBufferNV;
3047     if (!strcmp(name, "GetPipelineIndirectDeviceAddressNV")) return (void *)table->GetPipelineIndirectDeviceAddressNV;
3048 
3049     // ---- VK_EXT_extended_dynamic_state3 extension commands
3050     if (!strcmp(name, "CmdSetDepthClampEnableEXT")) return (void *)table->CmdSetDepthClampEnableEXT;
3051     if (!strcmp(name, "CmdSetPolygonModeEXT")) return (void *)table->CmdSetPolygonModeEXT;
3052     if (!strcmp(name, "CmdSetRasterizationSamplesEXT")) return (void *)table->CmdSetRasterizationSamplesEXT;
3053     if (!strcmp(name, "CmdSetSampleMaskEXT")) return (void *)table->CmdSetSampleMaskEXT;
3054     if (!strcmp(name, "CmdSetAlphaToCoverageEnableEXT")) return (void *)table->CmdSetAlphaToCoverageEnableEXT;
3055     if (!strcmp(name, "CmdSetAlphaToOneEnableEXT")) return (void *)table->CmdSetAlphaToOneEnableEXT;
3056     if (!strcmp(name, "CmdSetLogicOpEnableEXT")) return (void *)table->CmdSetLogicOpEnableEXT;
3057     if (!strcmp(name, "CmdSetColorBlendEnableEXT")) return (void *)table->CmdSetColorBlendEnableEXT;
3058     if (!strcmp(name, "CmdSetColorBlendEquationEXT")) return (void *)table->CmdSetColorBlendEquationEXT;
3059     if (!strcmp(name, "CmdSetColorWriteMaskEXT")) return (void *)table->CmdSetColorWriteMaskEXT;
3060     if (!strcmp(name, "CmdSetTessellationDomainOriginEXT")) return (void *)table->CmdSetTessellationDomainOriginEXT;
3061     if (!strcmp(name, "CmdSetRasterizationStreamEXT")) return (void *)table->CmdSetRasterizationStreamEXT;
3062     if (!strcmp(name, "CmdSetConservativeRasterizationModeEXT")) return (void *)table->CmdSetConservativeRasterizationModeEXT;
3063     if (!strcmp(name, "CmdSetExtraPrimitiveOverestimationSizeEXT")) return (void *)table->CmdSetExtraPrimitiveOverestimationSizeEXT;
3064     if (!strcmp(name, "CmdSetDepthClipEnableEXT")) return (void *)table->CmdSetDepthClipEnableEXT;
3065     if (!strcmp(name, "CmdSetSampleLocationsEnableEXT")) return (void *)table->CmdSetSampleLocationsEnableEXT;
3066     if (!strcmp(name, "CmdSetColorBlendAdvancedEXT")) return (void *)table->CmdSetColorBlendAdvancedEXT;
3067     if (!strcmp(name, "CmdSetProvokingVertexModeEXT")) return (void *)table->CmdSetProvokingVertexModeEXT;
3068     if (!strcmp(name, "CmdSetLineRasterizationModeEXT")) return (void *)table->CmdSetLineRasterizationModeEXT;
3069     if (!strcmp(name, "CmdSetLineStippleEnableEXT")) return (void *)table->CmdSetLineStippleEnableEXT;
3070     if (!strcmp(name, "CmdSetDepthClipNegativeOneToOneEXT")) return (void *)table->CmdSetDepthClipNegativeOneToOneEXT;
3071     if (!strcmp(name, "CmdSetViewportWScalingEnableNV")) return (void *)table->CmdSetViewportWScalingEnableNV;
3072     if (!strcmp(name, "CmdSetViewportSwizzleNV")) return (void *)table->CmdSetViewportSwizzleNV;
3073     if (!strcmp(name, "CmdSetCoverageToColorEnableNV")) return (void *)table->CmdSetCoverageToColorEnableNV;
3074     if (!strcmp(name, "CmdSetCoverageToColorLocationNV")) return (void *)table->CmdSetCoverageToColorLocationNV;
3075     if (!strcmp(name, "CmdSetCoverageModulationModeNV")) return (void *)table->CmdSetCoverageModulationModeNV;
3076     if (!strcmp(name, "CmdSetCoverageModulationTableEnableNV")) return (void *)table->CmdSetCoverageModulationTableEnableNV;
3077     if (!strcmp(name, "CmdSetCoverageModulationTableNV")) return (void *)table->CmdSetCoverageModulationTableNV;
3078     if (!strcmp(name, "CmdSetShadingRateImageEnableNV")) return (void *)table->CmdSetShadingRateImageEnableNV;
3079     if (!strcmp(name, "CmdSetRepresentativeFragmentTestEnableNV")) return (void *)table->CmdSetRepresentativeFragmentTestEnableNV;
3080     if (!strcmp(name, "CmdSetCoverageReductionModeNV")) return (void *)table->CmdSetCoverageReductionModeNV;
3081 
3082     // ---- VK_EXT_shader_module_identifier extension commands
3083     if (!strcmp(name, "GetShaderModuleIdentifierEXT")) return (void *)table->GetShaderModuleIdentifierEXT;
3084     if (!strcmp(name, "GetShaderModuleCreateInfoIdentifierEXT")) return (void *)table->GetShaderModuleCreateInfoIdentifierEXT;
3085 
3086     // ---- VK_NV_optical_flow extension commands
3087     if (!strcmp(name, "CreateOpticalFlowSessionNV")) return (void *)table->CreateOpticalFlowSessionNV;
3088     if (!strcmp(name, "DestroyOpticalFlowSessionNV")) return (void *)table->DestroyOpticalFlowSessionNV;
3089     if (!strcmp(name, "BindOpticalFlowSessionImageNV")) return (void *)table->BindOpticalFlowSessionImageNV;
3090     if (!strcmp(name, "CmdOpticalFlowExecuteNV")) return (void *)table->CmdOpticalFlowExecuteNV;
3091 
3092     // ---- VK_AMD_anti_lag extension commands
3093     if (!strcmp(name, "AntiLagUpdateAMD")) return (void *)table->AntiLagUpdateAMD;
3094 
3095     // ---- VK_EXT_shader_object extension commands
3096     if (!strcmp(name, "CreateShadersEXT")) return (void *)table->CreateShadersEXT;
3097     if (!strcmp(name, "DestroyShaderEXT")) return (void *)table->DestroyShaderEXT;
3098     if (!strcmp(name, "GetShaderBinaryDataEXT")) return (void *)table->GetShaderBinaryDataEXT;
3099     if (!strcmp(name, "CmdBindShadersEXT")) return (void *)table->CmdBindShadersEXT;
3100     if (!strcmp(name, "CmdSetDepthClampRangeEXT")) return (void *)table->CmdSetDepthClampRangeEXT;
3101 
3102     // ---- VK_QCOM_tile_properties extension commands
3103     if (!strcmp(name, "GetFramebufferTilePropertiesQCOM")) return (void *)table->GetFramebufferTilePropertiesQCOM;
3104     if (!strcmp(name, "GetDynamicRenderingTilePropertiesQCOM")) return (void *)table->GetDynamicRenderingTilePropertiesQCOM;
3105 
3106     // ---- VK_NV_cooperative_vector extension commands
3107     if (!strcmp(name, "ConvertCooperativeVectorMatrixNV")) return (void *)table->ConvertCooperativeVectorMatrixNV;
3108     if (!strcmp(name, "CmdConvertCooperativeVectorMatrixNV")) return (void *)table->CmdConvertCooperativeVectorMatrixNV;
3109 
3110     // ---- VK_NV_low_latency2 extension commands
3111     if (!strcmp(name, "SetLatencySleepModeNV")) return (void *)table->SetLatencySleepModeNV;
3112     if (!strcmp(name, "LatencySleepNV")) return (void *)table->LatencySleepNV;
3113     if (!strcmp(name, "SetLatencyMarkerNV")) return (void *)table->SetLatencyMarkerNV;
3114     if (!strcmp(name, "GetLatencyTimingsNV")) return (void *)table->GetLatencyTimingsNV;
3115     if (!strcmp(name, "QueueNotifyOutOfBandNV")) return (void *)table->QueueNotifyOutOfBandNV;
3116 
3117     // ---- VK_EXT_attachment_feedback_loop_dynamic_state extension commands
3118     if (!strcmp(name, "CmdSetAttachmentFeedbackLoopEnableEXT")) return (void *)table->CmdSetAttachmentFeedbackLoopEnableEXT;
3119 
3120     // ---- VK_QNX_external_memory_screen_buffer extension commands
3121 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
3122     if (!strcmp(name, "GetScreenBufferPropertiesQNX")) return (void *)table->GetScreenBufferPropertiesQNX;
3123 #endif // VK_USE_PLATFORM_SCREEN_QNX
3124 
3125     // ---- VK_NV_cluster_acceleration_structure extension commands
3126     if (!strcmp(name, "GetClusterAccelerationStructureBuildSizesNV")) return (void *)table->GetClusterAccelerationStructureBuildSizesNV;
3127     if (!strcmp(name, "CmdBuildClusterAccelerationStructureIndirectNV")) return (void *)table->CmdBuildClusterAccelerationStructureIndirectNV;
3128 
3129     // ---- VK_NV_partitioned_acceleration_structure extension commands
3130     if (!strcmp(name, "GetPartitionedAccelerationStructuresBuildSizesNV")) return (void *)table->GetPartitionedAccelerationStructuresBuildSizesNV;
3131     if (!strcmp(name, "CmdBuildPartitionedAccelerationStructuresNV")) return (void *)table->CmdBuildPartitionedAccelerationStructuresNV;
3132 
3133     // ---- VK_EXT_device_generated_commands extension commands
3134     if (!strcmp(name, "GetGeneratedCommandsMemoryRequirementsEXT")) return (void *)table->GetGeneratedCommandsMemoryRequirementsEXT;
3135     if (!strcmp(name, "CmdPreprocessGeneratedCommandsEXT")) return (void *)table->CmdPreprocessGeneratedCommandsEXT;
3136     if (!strcmp(name, "CmdExecuteGeneratedCommandsEXT")) return (void *)table->CmdExecuteGeneratedCommandsEXT;
3137     if (!strcmp(name, "CreateIndirectCommandsLayoutEXT")) return (void *)table->CreateIndirectCommandsLayoutEXT;
3138     if (!strcmp(name, "DestroyIndirectCommandsLayoutEXT")) return (void *)table->DestroyIndirectCommandsLayoutEXT;
3139     if (!strcmp(name, "CreateIndirectExecutionSetEXT")) return (void *)table->CreateIndirectExecutionSetEXT;
3140     if (!strcmp(name, "DestroyIndirectExecutionSetEXT")) return (void *)table->DestroyIndirectExecutionSetEXT;
3141     if (!strcmp(name, "UpdateIndirectExecutionSetPipelineEXT")) return (void *)table->UpdateIndirectExecutionSetPipelineEXT;
3142     if (!strcmp(name, "UpdateIndirectExecutionSetShaderEXT")) return (void *)table->UpdateIndirectExecutionSetShaderEXT;
3143 
3144     // ---- VK_EXT_external_memory_metal extension commands
3145 #if defined(VK_USE_PLATFORM_METAL_EXT)
3146     if (!strcmp(name, "GetMemoryMetalHandleEXT")) return (void *)table->GetMemoryMetalHandleEXT;
3147 #endif // VK_USE_PLATFORM_METAL_EXT
3148 #if defined(VK_USE_PLATFORM_METAL_EXT)
3149     if (!strcmp(name, "GetMemoryMetalHandlePropertiesEXT")) return (void *)table->GetMemoryMetalHandlePropertiesEXT;
3150 #endif // VK_USE_PLATFORM_METAL_EXT
3151 
3152     // ---- VK_KHR_acceleration_structure extension commands
3153     if (!strcmp(name, "CreateAccelerationStructureKHR")) return (void *)table->CreateAccelerationStructureKHR;
3154     if (!strcmp(name, "DestroyAccelerationStructureKHR")) return (void *)table->DestroyAccelerationStructureKHR;
3155     if (!strcmp(name, "CmdBuildAccelerationStructuresKHR")) return (void *)table->CmdBuildAccelerationStructuresKHR;
3156     if (!strcmp(name, "CmdBuildAccelerationStructuresIndirectKHR")) return (void *)table->CmdBuildAccelerationStructuresIndirectKHR;
3157     if (!strcmp(name, "BuildAccelerationStructuresKHR")) return (void *)table->BuildAccelerationStructuresKHR;
3158     if (!strcmp(name, "CopyAccelerationStructureKHR")) return (void *)table->CopyAccelerationStructureKHR;
3159     if (!strcmp(name, "CopyAccelerationStructureToMemoryKHR")) return (void *)table->CopyAccelerationStructureToMemoryKHR;
3160     if (!strcmp(name, "CopyMemoryToAccelerationStructureKHR")) return (void *)table->CopyMemoryToAccelerationStructureKHR;
3161     if (!strcmp(name, "WriteAccelerationStructuresPropertiesKHR")) return (void *)table->WriteAccelerationStructuresPropertiesKHR;
3162     if (!strcmp(name, "CmdCopyAccelerationStructureKHR")) return (void *)table->CmdCopyAccelerationStructureKHR;
3163     if (!strcmp(name, "CmdCopyAccelerationStructureToMemoryKHR")) return (void *)table->CmdCopyAccelerationStructureToMemoryKHR;
3164     if (!strcmp(name, "CmdCopyMemoryToAccelerationStructureKHR")) return (void *)table->CmdCopyMemoryToAccelerationStructureKHR;
3165     if (!strcmp(name, "GetAccelerationStructureDeviceAddressKHR")) return (void *)table->GetAccelerationStructureDeviceAddressKHR;
3166     if (!strcmp(name, "CmdWriteAccelerationStructuresPropertiesKHR")) return (void *)table->CmdWriteAccelerationStructuresPropertiesKHR;
3167     if (!strcmp(name, "GetDeviceAccelerationStructureCompatibilityKHR")) return (void *)table->GetDeviceAccelerationStructureCompatibilityKHR;
3168     if (!strcmp(name, "GetAccelerationStructureBuildSizesKHR")) return (void *)table->GetAccelerationStructureBuildSizesKHR;
3169 
3170     // ---- VK_KHR_ray_tracing_pipeline extension commands
3171     if (!strcmp(name, "CmdTraceRaysKHR")) return (void *)table->CmdTraceRaysKHR;
3172     if (!strcmp(name, "CreateRayTracingPipelinesKHR")) return (void *)table->CreateRayTracingPipelinesKHR;
3173     if (!strcmp(name, "GetRayTracingCaptureReplayShaderGroupHandlesKHR")) return (void *)table->GetRayTracingCaptureReplayShaderGroupHandlesKHR;
3174     if (!strcmp(name, "CmdTraceRaysIndirectKHR")) return (void *)table->CmdTraceRaysIndirectKHR;
3175     if (!strcmp(name, "GetRayTracingShaderGroupStackSizeKHR")) return (void *)table->GetRayTracingShaderGroupStackSizeKHR;
3176     if (!strcmp(name, "CmdSetRayTracingPipelineStackSizeKHR")) return (void *)table->CmdSetRayTracingPipelineStackSizeKHR;
3177 
3178     // ---- VK_EXT_mesh_shader extension commands
3179     if (!strcmp(name, "CmdDrawMeshTasksEXT")) return (void *)table->CmdDrawMeshTasksEXT;
3180     if (!strcmp(name, "CmdDrawMeshTasksIndirectEXT")) return (void *)table->CmdDrawMeshTasksIndirectEXT;
3181     if (!strcmp(name, "CmdDrawMeshTasksIndirectCountEXT")) return (void *)table->CmdDrawMeshTasksIndirectCountEXT;
3182 
3183     // ---- VK_OHOS_native_buffer extension commands
3184 #ifdef VK_USE_PLATFORM_OHOS
3185     if (!strcmp(name, "GetSwapchainGrallocUsageOHOS")) return (void *)table->GetSwapchainGrallocUsageOHOS;
3186 #endif // VK_USE_PLATFORM_OHOS
3187 #ifdef VK_USE_PLATFORM_OHOS
3188     if (!strcmp(name, "AcquireImageOHOS")) return (void *)table->AcquireImageOHOS;
3189 #endif // VK_USE_PLATFORM_OHOS
3190 #ifdef VK_USE_PLATFORM_OHOS
3191     if (!strcmp(name, "QueueSignalReleaseImageOHOS")) return (void *)table->QueueSignalReleaseImageOHOS;
3192 #endif // VK_USE_PLATFORM_OHOS
3193 
3194     // ---- VK_OHOS_external_memory extension commands
3195 #ifdef VK_USE_PLATFORM_OHOS
3196     if (!strcmp(name, "GetNativeBufferPropertiesOHOS")) return (void *)table->GetNativeBufferPropertiesOHOS;
3197 #endif // VK_USE_PLATFORM_OHOS
3198 #ifdef VK_USE_PLATFORM_OHOS
3199     if (!strcmp(name, "GetMemoryNativeBufferOHOS")) return (void *)table->GetMemoryNativeBufferOHOS;
3200 #endif // VK_USE_PLATFORM_OHOS
3201 
3202     *found_name = false;
3203     return NULL;
3204 }
3205 
3206 // Instance command lookup function
loader_lookup_instance_dispatch_table(const VkLayerInstanceDispatchTable * table,const char * name,bool * found_name)3207 VKAPI_ATTR void* VKAPI_CALL loader_lookup_instance_dispatch_table(const VkLayerInstanceDispatchTable *table, const char *name,
3208                                                                  bool *found_name) {
3209     if (!name || name[0] != 'v' || name[1] != 'k') {
3210         *found_name = false;
3211         return NULL;
3212     }
3213 
3214     *found_name = true;
3215     name += 2;
3216 
3217     // ---- Core Vulkan 1.0 commands
3218     if (!strcmp(name, "DestroyInstance")) return (void *)table->DestroyInstance;
3219     if (!strcmp(name, "EnumeratePhysicalDevices")) return (void *)table->EnumeratePhysicalDevices;
3220     if (!strcmp(name, "GetPhysicalDeviceFeatures")) return (void *)table->GetPhysicalDeviceFeatures;
3221     if (!strcmp(name, "GetPhysicalDeviceFormatProperties")) return (void *)table->GetPhysicalDeviceFormatProperties;
3222     if (!strcmp(name, "GetPhysicalDeviceImageFormatProperties")) return (void *)table->GetPhysicalDeviceImageFormatProperties;
3223     if (!strcmp(name, "GetPhysicalDeviceProperties")) return (void *)table->GetPhysicalDeviceProperties;
3224     if (!strcmp(name, "GetPhysicalDeviceQueueFamilyProperties")) return (void *)table->GetPhysicalDeviceQueueFamilyProperties;
3225     if (!strcmp(name, "GetPhysicalDeviceMemoryProperties")) return (void *)table->GetPhysicalDeviceMemoryProperties;
3226     if (!strcmp(name, "GetInstanceProcAddr")) return (void *)table->GetInstanceProcAddr;
3227     if (!strcmp(name, "EnumerateDeviceExtensionProperties")) return (void *)table->EnumerateDeviceExtensionProperties;
3228     if (!strcmp(name, "EnumerateDeviceLayerProperties")) return (void *)table->EnumerateDeviceLayerProperties;
3229     if (!strcmp(name, "GetPhysicalDeviceSparseImageFormatProperties")) return (void *)table->GetPhysicalDeviceSparseImageFormatProperties;
3230 
3231     // ---- Core Vulkan 1.1 commands
3232     if (!strcmp(name, "EnumeratePhysicalDeviceGroups")) return (void *)table->EnumeratePhysicalDeviceGroups;
3233     if (!strcmp(name, "GetPhysicalDeviceFeatures2")) return (void *)table->GetPhysicalDeviceFeatures2;
3234     if (!strcmp(name, "GetPhysicalDeviceProperties2")) return (void *)table->GetPhysicalDeviceProperties2;
3235     if (!strcmp(name, "GetPhysicalDeviceFormatProperties2")) return (void *)table->GetPhysicalDeviceFormatProperties2;
3236     if (!strcmp(name, "GetPhysicalDeviceImageFormatProperties2")) return (void *)table->GetPhysicalDeviceImageFormatProperties2;
3237     if (!strcmp(name, "GetPhysicalDeviceQueueFamilyProperties2")) return (void *)table->GetPhysicalDeviceQueueFamilyProperties2;
3238     if (!strcmp(name, "GetPhysicalDeviceMemoryProperties2")) return (void *)table->GetPhysicalDeviceMemoryProperties2;
3239     if (!strcmp(name, "GetPhysicalDeviceSparseImageFormatProperties2")) return (void *)table->GetPhysicalDeviceSparseImageFormatProperties2;
3240     if (!strcmp(name, "GetPhysicalDeviceExternalBufferProperties")) return (void *)table->GetPhysicalDeviceExternalBufferProperties;
3241     if (!strcmp(name, "GetPhysicalDeviceExternalFenceProperties")) return (void *)table->GetPhysicalDeviceExternalFenceProperties;
3242     if (!strcmp(name, "GetPhysicalDeviceExternalSemaphoreProperties")) return (void *)table->GetPhysicalDeviceExternalSemaphoreProperties;
3243 
3244     // ---- Core Vulkan 1.3 commands
3245     if (!strcmp(name, "GetPhysicalDeviceToolProperties")) return (void *)table->GetPhysicalDeviceToolProperties;
3246 
3247     // ---- VK_KHR_surface extension commands
3248     if (!strcmp(name, "DestroySurfaceKHR")) return (void *)table->DestroySurfaceKHR;
3249     if (!strcmp(name, "GetPhysicalDeviceSurfaceSupportKHR")) return (void *)table->GetPhysicalDeviceSurfaceSupportKHR;
3250     if (!strcmp(name, "GetPhysicalDeviceSurfaceCapabilitiesKHR")) return (void *)table->GetPhysicalDeviceSurfaceCapabilitiesKHR;
3251     if (!strcmp(name, "GetPhysicalDeviceSurfaceFormatsKHR")) return (void *)table->GetPhysicalDeviceSurfaceFormatsKHR;
3252     if (!strcmp(name, "GetPhysicalDeviceSurfacePresentModesKHR")) return (void *)table->GetPhysicalDeviceSurfacePresentModesKHR;
3253 
3254     // ---- VK_KHR_swapchain extension commands
3255     if (!strcmp(name, "GetPhysicalDevicePresentRectanglesKHR")) return (void *)table->GetPhysicalDevicePresentRectanglesKHR;
3256 
3257     // ---- VK_KHR_display extension commands
3258     if (!strcmp(name, "GetPhysicalDeviceDisplayPropertiesKHR")) return (void *)table->GetPhysicalDeviceDisplayPropertiesKHR;
3259     if (!strcmp(name, "GetPhysicalDeviceDisplayPlanePropertiesKHR")) return (void *)table->GetPhysicalDeviceDisplayPlanePropertiesKHR;
3260     if (!strcmp(name, "GetDisplayPlaneSupportedDisplaysKHR")) return (void *)table->GetDisplayPlaneSupportedDisplaysKHR;
3261     if (!strcmp(name, "GetDisplayModePropertiesKHR")) return (void *)table->GetDisplayModePropertiesKHR;
3262     if (!strcmp(name, "CreateDisplayModeKHR")) return (void *)table->CreateDisplayModeKHR;
3263     if (!strcmp(name, "GetDisplayPlaneCapabilitiesKHR")) return (void *)table->GetDisplayPlaneCapabilitiesKHR;
3264     if (!strcmp(name, "CreateDisplayPlaneSurfaceKHR")) return (void *)table->CreateDisplayPlaneSurfaceKHR;
3265 
3266     // ---- VK_KHR_xlib_surface extension commands
3267 #if defined(VK_USE_PLATFORM_XLIB_KHR)
3268     if (!strcmp(name, "CreateXlibSurfaceKHR")) return (void *)table->CreateXlibSurfaceKHR;
3269 #endif // VK_USE_PLATFORM_XLIB_KHR
3270 #if defined(VK_USE_PLATFORM_XLIB_KHR)
3271     if (!strcmp(name, "GetPhysicalDeviceXlibPresentationSupportKHR")) return (void *)table->GetPhysicalDeviceXlibPresentationSupportKHR;
3272 #endif // VK_USE_PLATFORM_XLIB_KHR
3273 
3274     // ---- VK_KHR_xcb_surface extension commands
3275 #if defined(VK_USE_PLATFORM_XCB_KHR)
3276     if (!strcmp(name, "CreateXcbSurfaceKHR")) return (void *)table->CreateXcbSurfaceKHR;
3277 #endif // VK_USE_PLATFORM_XCB_KHR
3278 #if defined(VK_USE_PLATFORM_XCB_KHR)
3279     if (!strcmp(name, "GetPhysicalDeviceXcbPresentationSupportKHR")) return (void *)table->GetPhysicalDeviceXcbPresentationSupportKHR;
3280 #endif // VK_USE_PLATFORM_XCB_KHR
3281 
3282     // ---- VK_KHR_wayland_surface extension commands
3283 #if defined(VK_USE_PLATFORM_WAYLAND_KHR)
3284     if (!strcmp(name, "CreateWaylandSurfaceKHR")) return (void *)table->CreateWaylandSurfaceKHR;
3285 #endif // VK_USE_PLATFORM_WAYLAND_KHR
3286 #if defined(VK_USE_PLATFORM_WAYLAND_KHR)
3287     if (!strcmp(name, "GetPhysicalDeviceWaylandPresentationSupportKHR")) return (void *)table->GetPhysicalDeviceWaylandPresentationSupportKHR;
3288 #endif // VK_USE_PLATFORM_WAYLAND_KHR
3289 
3290     // ---- VK_KHR_android_surface extension commands
3291 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
3292     if (!strcmp(name, "CreateAndroidSurfaceKHR")) return (void *)table->CreateAndroidSurfaceKHR;
3293 #endif // VK_USE_PLATFORM_ANDROID_KHR
3294 
3295     // ---- VK_KHR_win32_surface extension commands
3296 #if defined(VK_USE_PLATFORM_WIN32_KHR)
3297     if (!strcmp(name, "CreateWin32SurfaceKHR")) return (void *)table->CreateWin32SurfaceKHR;
3298 #endif // VK_USE_PLATFORM_WIN32_KHR
3299 #if defined(VK_USE_PLATFORM_WIN32_KHR)
3300     if (!strcmp(name, "GetPhysicalDeviceWin32PresentationSupportKHR")) return (void *)table->GetPhysicalDeviceWin32PresentationSupportKHR;
3301 #endif // VK_USE_PLATFORM_WIN32_KHR
3302 
3303     // ---- VK_KHR_video_queue extension commands
3304     if (!strcmp(name, "GetPhysicalDeviceVideoCapabilitiesKHR")) return (void *)table->GetPhysicalDeviceVideoCapabilitiesKHR;
3305     if (!strcmp(name, "GetPhysicalDeviceVideoFormatPropertiesKHR")) return (void *)table->GetPhysicalDeviceVideoFormatPropertiesKHR;
3306 
3307     // ---- VK_KHR_get_physical_device_properties2 extension commands
3308     if (!strcmp(name, "GetPhysicalDeviceFeatures2KHR")) return (void *)table->GetPhysicalDeviceFeatures2KHR;
3309     if (!strcmp(name, "GetPhysicalDeviceProperties2KHR")) return (void *)table->GetPhysicalDeviceProperties2KHR;
3310     if (!strcmp(name, "GetPhysicalDeviceFormatProperties2KHR")) return (void *)table->GetPhysicalDeviceFormatProperties2KHR;
3311     if (!strcmp(name, "GetPhysicalDeviceImageFormatProperties2KHR")) return (void *)table->GetPhysicalDeviceImageFormatProperties2KHR;
3312     if (!strcmp(name, "GetPhysicalDeviceQueueFamilyProperties2KHR")) return (void *)table->GetPhysicalDeviceQueueFamilyProperties2KHR;
3313     if (!strcmp(name, "GetPhysicalDeviceMemoryProperties2KHR")) return (void *)table->GetPhysicalDeviceMemoryProperties2KHR;
3314     if (!strcmp(name, "GetPhysicalDeviceSparseImageFormatProperties2KHR")) return (void *)table->GetPhysicalDeviceSparseImageFormatProperties2KHR;
3315 
3316     // ---- VK_KHR_device_group_creation extension commands
3317     if (!strcmp(name, "EnumeratePhysicalDeviceGroupsKHR")) return (void *)table->EnumeratePhysicalDeviceGroupsKHR;
3318 
3319     // ---- VK_KHR_external_memory_capabilities extension commands
3320     if (!strcmp(name, "GetPhysicalDeviceExternalBufferPropertiesKHR")) return (void *)table->GetPhysicalDeviceExternalBufferPropertiesKHR;
3321 
3322     // ---- VK_KHR_external_semaphore_capabilities extension commands
3323     if (!strcmp(name, "GetPhysicalDeviceExternalSemaphorePropertiesKHR")) return (void *)table->GetPhysicalDeviceExternalSemaphorePropertiesKHR;
3324 
3325     // ---- VK_KHR_external_fence_capabilities extension commands
3326     if (!strcmp(name, "GetPhysicalDeviceExternalFencePropertiesKHR")) return (void *)table->GetPhysicalDeviceExternalFencePropertiesKHR;
3327 
3328     // ---- VK_KHR_performance_query extension commands
3329     if (!strcmp(name, "EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR")) return (void *)table->EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
3330     if (!strcmp(name, "GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR")) return (void *)table->GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
3331 
3332     // ---- VK_KHR_get_surface_capabilities2 extension commands
3333     if (!strcmp(name, "GetPhysicalDeviceSurfaceCapabilities2KHR")) return (void *)table->GetPhysicalDeviceSurfaceCapabilities2KHR;
3334     if (!strcmp(name, "GetPhysicalDeviceSurfaceFormats2KHR")) return (void *)table->GetPhysicalDeviceSurfaceFormats2KHR;
3335 
3336     // ---- VK_KHR_get_display_properties2 extension commands
3337     if (!strcmp(name, "GetPhysicalDeviceDisplayProperties2KHR")) return (void *)table->GetPhysicalDeviceDisplayProperties2KHR;
3338     if (!strcmp(name, "GetPhysicalDeviceDisplayPlaneProperties2KHR")) return (void *)table->GetPhysicalDeviceDisplayPlaneProperties2KHR;
3339     if (!strcmp(name, "GetDisplayModeProperties2KHR")) return (void *)table->GetDisplayModeProperties2KHR;
3340     if (!strcmp(name, "GetDisplayPlaneCapabilities2KHR")) return (void *)table->GetDisplayPlaneCapabilities2KHR;
3341 
3342     // ---- VK_KHR_fragment_shading_rate extension commands
3343     if (!strcmp(name, "GetPhysicalDeviceFragmentShadingRatesKHR")) return (void *)table->GetPhysicalDeviceFragmentShadingRatesKHR;
3344 
3345     // ---- VK_KHR_video_encode_queue extension commands
3346     if (!strcmp(name, "GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR")) return (void *)table->GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR;
3347 
3348     // ---- VK_KHR_cooperative_matrix extension commands
3349     if (!strcmp(name, "GetPhysicalDeviceCooperativeMatrixPropertiesKHR")) return (void *)table->GetPhysicalDeviceCooperativeMatrixPropertiesKHR;
3350 
3351     // ---- VK_KHR_calibrated_timestamps extension commands
3352     if (!strcmp(name, "GetPhysicalDeviceCalibrateableTimeDomainsKHR")) return (void *)table->GetPhysicalDeviceCalibrateableTimeDomainsKHR;
3353 
3354     // ---- VK_EXT_debug_report extension commands
3355     if (!strcmp(name, "CreateDebugReportCallbackEXT")) return (void *)table->CreateDebugReportCallbackEXT;
3356     if (!strcmp(name, "DestroyDebugReportCallbackEXT")) return (void *)table->DestroyDebugReportCallbackEXT;
3357     if (!strcmp(name, "DebugReportMessageEXT")) return (void *)table->DebugReportMessageEXT;
3358 
3359     // ---- VK_GGP_stream_descriptor_surface extension commands
3360 #if defined(VK_USE_PLATFORM_GGP)
3361     if (!strcmp(name, "CreateStreamDescriptorSurfaceGGP")) return (void *)table->CreateStreamDescriptorSurfaceGGP;
3362 #endif // VK_USE_PLATFORM_GGP
3363 
3364     // ---- VK_NV_external_memory_capabilities extension commands
3365     if (!strcmp(name, "GetPhysicalDeviceExternalImageFormatPropertiesNV")) return (void *)table->GetPhysicalDeviceExternalImageFormatPropertiesNV;
3366 
3367     // ---- VK_NN_vi_surface extension commands
3368 #if defined(VK_USE_PLATFORM_VI_NN)
3369     if (!strcmp(name, "CreateViSurfaceNN")) return (void *)table->CreateViSurfaceNN;
3370 #endif // VK_USE_PLATFORM_VI_NN
3371 
3372     // ---- VK_EXT_direct_mode_display extension commands
3373     if (!strcmp(name, "ReleaseDisplayEXT")) return (void *)table->ReleaseDisplayEXT;
3374 
3375     // ---- VK_EXT_acquire_xlib_display extension commands
3376 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
3377     if (!strcmp(name, "AcquireXlibDisplayEXT")) return (void *)table->AcquireXlibDisplayEXT;
3378 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
3379 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
3380     if (!strcmp(name, "GetRandROutputDisplayEXT")) return (void *)table->GetRandROutputDisplayEXT;
3381 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
3382 
3383     // ---- VK_EXT_display_surface_counter extension commands
3384     if (!strcmp(name, "GetPhysicalDeviceSurfaceCapabilities2EXT")) return (void *)table->GetPhysicalDeviceSurfaceCapabilities2EXT;
3385 
3386     // ---- VK_MVK_ios_surface extension commands
3387 #if defined(VK_USE_PLATFORM_IOS_MVK)
3388     if (!strcmp(name, "CreateIOSSurfaceMVK")) return (void *)table->CreateIOSSurfaceMVK;
3389 #endif // VK_USE_PLATFORM_IOS_MVK
3390 
3391     // ---- VK_MVK_macos_surface extension commands
3392 #if defined(VK_USE_PLATFORM_MACOS_MVK)
3393     if (!strcmp(name, "CreateMacOSSurfaceMVK")) return (void *)table->CreateMacOSSurfaceMVK;
3394 #endif // VK_USE_PLATFORM_MACOS_MVK
3395 
3396     // ---- VK_EXT_debug_utils extension commands
3397     if (!strcmp(name, "CreateDebugUtilsMessengerEXT")) return (void *)table->CreateDebugUtilsMessengerEXT;
3398     if (!strcmp(name, "DestroyDebugUtilsMessengerEXT")) return (void *)table->DestroyDebugUtilsMessengerEXT;
3399     if (!strcmp(name, "SubmitDebugUtilsMessageEXT")) return (void *)table->SubmitDebugUtilsMessageEXT;
3400 
3401     // ---- VK_EXT_sample_locations extension commands
3402     if (!strcmp(name, "GetPhysicalDeviceMultisamplePropertiesEXT")) return (void *)table->GetPhysicalDeviceMultisamplePropertiesEXT;
3403 
3404     // ---- VK_EXT_calibrated_timestamps extension commands
3405     if (!strcmp(name, "GetPhysicalDeviceCalibrateableTimeDomainsEXT")) return (void *)table->GetPhysicalDeviceCalibrateableTimeDomainsEXT;
3406 
3407     // ---- VK_FUCHSIA_imagepipe_surface extension commands
3408 #if defined(VK_USE_PLATFORM_FUCHSIA)
3409     if (!strcmp(name, "CreateImagePipeSurfaceFUCHSIA")) return (void *)table->CreateImagePipeSurfaceFUCHSIA;
3410 #endif // VK_USE_PLATFORM_FUCHSIA
3411 
3412     // ---- VK_EXT_metal_surface extension commands
3413 #if defined(VK_USE_PLATFORM_METAL_EXT)
3414     if (!strcmp(name, "CreateMetalSurfaceEXT")) return (void *)table->CreateMetalSurfaceEXT;
3415 #endif // VK_USE_PLATFORM_METAL_EXT
3416 
3417     // ---- VK_EXT_tooling_info extension commands
3418     if (!strcmp(name, "GetPhysicalDeviceToolPropertiesEXT")) return (void *)table->GetPhysicalDeviceToolPropertiesEXT;
3419 
3420     // ---- VK_NV_cooperative_matrix extension commands
3421     if (!strcmp(name, "GetPhysicalDeviceCooperativeMatrixPropertiesNV")) return (void *)table->GetPhysicalDeviceCooperativeMatrixPropertiesNV;
3422 
3423     // ---- VK_NV_coverage_reduction_mode extension commands
3424     if (!strcmp(name, "GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV")) return (void *)table->GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
3425 
3426     // ---- VK_EXT_full_screen_exclusive extension commands
3427 #if defined(VK_USE_PLATFORM_WIN32_KHR)
3428     if (!strcmp(name, "GetPhysicalDeviceSurfacePresentModes2EXT")) return (void *)table->GetPhysicalDeviceSurfacePresentModes2EXT;
3429 #endif // VK_USE_PLATFORM_WIN32_KHR
3430 
3431     // ---- VK_EXT_headless_surface extension commands
3432     if (!strcmp(name, "CreateHeadlessSurfaceEXT")) return (void *)table->CreateHeadlessSurfaceEXT;
3433 
3434     // ---- VK_EXT_acquire_drm_display extension commands
3435     if (!strcmp(name, "AcquireDrmDisplayEXT")) return (void *)table->AcquireDrmDisplayEXT;
3436     if (!strcmp(name, "GetDrmDisplayEXT")) return (void *)table->GetDrmDisplayEXT;
3437 
3438     // ---- VK_NV_acquire_winrt_display extension commands
3439 #if defined(VK_USE_PLATFORM_WIN32_KHR)
3440     if (!strcmp(name, "AcquireWinrtDisplayNV")) return (void *)table->AcquireWinrtDisplayNV;
3441 #endif // VK_USE_PLATFORM_WIN32_KHR
3442 #if defined(VK_USE_PLATFORM_WIN32_KHR)
3443     if (!strcmp(name, "GetWinrtDisplayNV")) return (void *)table->GetWinrtDisplayNV;
3444 #endif // VK_USE_PLATFORM_WIN32_KHR
3445 
3446     // ---- VK_EXT_directfb_surface extension commands
3447 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
3448     if (!strcmp(name, "CreateDirectFBSurfaceEXT")) return (void *)table->CreateDirectFBSurfaceEXT;
3449 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
3450 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
3451     if (!strcmp(name, "GetPhysicalDeviceDirectFBPresentationSupportEXT")) return (void *)table->GetPhysicalDeviceDirectFBPresentationSupportEXT;
3452 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
3453 
3454     // ---- VK_QNX_screen_surface extension commands
3455 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
3456     if (!strcmp(name, "CreateScreenSurfaceQNX")) return (void *)table->CreateScreenSurfaceQNX;
3457 #endif // VK_USE_PLATFORM_SCREEN_QNX
3458 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
3459     if (!strcmp(name, "GetPhysicalDeviceScreenPresentationSupportQNX")) return (void *)table->GetPhysicalDeviceScreenPresentationSupportQNX;
3460 #endif // VK_USE_PLATFORM_SCREEN_QNX
3461 
3462     // ---- VK_NV_optical_flow extension commands
3463     if (!strcmp(name, "GetPhysicalDeviceOpticalFlowImageFormatsNV")) return (void *)table->GetPhysicalDeviceOpticalFlowImageFormatsNV;
3464 
3465     // ---- VK_OHOS_surface extension commands
3466 #ifdef VK_USE_PLATFORM_OHOS
3467     if (!strcmp(name, "CreateSurfaceOHOS")) return (void *)table->CreateSurfaceOHOS;
3468 #endif // VK_USE_PLATFORM_OHOS
3469 
3470     // ---- VK_NV_cooperative_vector extension commands
3471     if (!strcmp(name, "GetPhysicalDeviceCooperativeVectorPropertiesNV")) return (void *)table->GetPhysicalDeviceCooperativeVectorPropertiesNV;
3472 
3473     // ---- VK_NV_cooperative_matrix2 extension commands
3474     if (!strcmp(name, "GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV")) return (void *)table->GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV;
3475 
3476     *found_name = false;
3477     return NULL;
3478 }
3479 
3480 
3481 // ---- VK_KHR_video_queue extension trampoline/terminators
3482 
GetPhysicalDeviceVideoCapabilitiesKHR(VkPhysicalDevice physicalDevice,const VkVideoProfileInfoKHR * pVideoProfile,VkVideoCapabilitiesKHR * pCapabilities)3483 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoCapabilitiesKHR(
3484     VkPhysicalDevice                            physicalDevice,
3485     const VkVideoProfileInfoKHR*                pVideoProfile,
3486     VkVideoCapabilitiesKHR*                     pCapabilities) {
3487     const VkLayerInstanceDispatchTable *disp;
3488     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
3489     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
3490         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3491                    "vkGetPhysicalDeviceVideoCapabilitiesKHR: Invalid physicalDevice "
3492                    "[VUID-vkGetPhysicalDeviceVideoCapabilitiesKHR-physicalDevice-parameter]");
3493         abort(); /* Intentionally fail so user can correct issue. */
3494     }
3495     disp = loader_get_instance_layer_dispatch(physicalDevice);
3496     return disp->GetPhysicalDeviceVideoCapabilitiesKHR(unwrapped_phys_dev, pVideoProfile, pCapabilities);
3497 }
3498 
terminator_GetPhysicalDeviceVideoCapabilitiesKHR(VkPhysicalDevice physicalDevice,const VkVideoProfileInfoKHR * pVideoProfile,VkVideoCapabilitiesKHR * pCapabilities)3499 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceVideoCapabilitiesKHR(
3500     VkPhysicalDevice                            physicalDevice,
3501     const VkVideoProfileInfoKHR*                pVideoProfile,
3502     VkVideoCapabilitiesKHR*                     pCapabilities) {
3503     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
3504     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
3505     if (NULL == icd_term->dispatch.GetPhysicalDeviceVideoCapabilitiesKHR) {
3506         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
3507                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceVideoCapabilitiesKHR");
3508         abort(); /* Intentionally fail so user can correct issue. */
3509     }
3510     return icd_term->dispatch.GetPhysicalDeviceVideoCapabilitiesKHR(phys_dev_term->phys_dev, pVideoProfile, pCapabilities);
3511 }
3512 
GetPhysicalDeviceVideoFormatPropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo,uint32_t * pVideoFormatPropertyCount,VkVideoFormatPropertiesKHR * pVideoFormatProperties)3513 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoFormatPropertiesKHR(
3514     VkPhysicalDevice                            physicalDevice,
3515     const VkPhysicalDeviceVideoFormatInfoKHR*   pVideoFormatInfo,
3516     uint32_t*                                   pVideoFormatPropertyCount,
3517     VkVideoFormatPropertiesKHR*                 pVideoFormatProperties) {
3518     const VkLayerInstanceDispatchTable *disp;
3519     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
3520     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
3521         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3522                    "vkGetPhysicalDeviceVideoFormatPropertiesKHR: Invalid physicalDevice "
3523                    "[VUID-vkGetPhysicalDeviceVideoFormatPropertiesKHR-physicalDevice-parameter]");
3524         abort(); /* Intentionally fail so user can correct issue. */
3525     }
3526     disp = loader_get_instance_layer_dispatch(physicalDevice);
3527     return disp->GetPhysicalDeviceVideoFormatPropertiesKHR(unwrapped_phys_dev, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties);
3528 }
3529 
terminator_GetPhysicalDeviceVideoFormatPropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceVideoFormatInfoKHR * pVideoFormatInfo,uint32_t * pVideoFormatPropertyCount,VkVideoFormatPropertiesKHR * pVideoFormatProperties)3530 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceVideoFormatPropertiesKHR(
3531     VkPhysicalDevice                            physicalDevice,
3532     const VkPhysicalDeviceVideoFormatInfoKHR*   pVideoFormatInfo,
3533     uint32_t*                                   pVideoFormatPropertyCount,
3534     VkVideoFormatPropertiesKHR*                 pVideoFormatProperties) {
3535     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
3536     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
3537     if (NULL == icd_term->dispatch.GetPhysicalDeviceVideoFormatPropertiesKHR) {
3538         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
3539                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceVideoFormatPropertiesKHR");
3540         abort(); /* Intentionally fail so user can correct issue. */
3541     }
3542     return icd_term->dispatch.GetPhysicalDeviceVideoFormatPropertiesKHR(phys_dev_term->phys_dev, pVideoFormatInfo, pVideoFormatPropertyCount, pVideoFormatProperties);
3543 }
3544 
CreateVideoSessionKHR(VkDevice device,const VkVideoSessionCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkVideoSessionKHR * pVideoSession)3545 VKAPI_ATTR VkResult VKAPI_CALL CreateVideoSessionKHR(
3546     VkDevice                                    device,
3547     const VkVideoSessionCreateInfoKHR*          pCreateInfo,
3548     const VkAllocationCallbacks*                pAllocator,
3549     VkVideoSessionKHR*                          pVideoSession) {
3550     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3551     if (NULL == disp) {
3552         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3553                    "vkCreateVideoSessionKHR: Invalid device "
3554                    "[VUID-vkCreateVideoSessionKHR-device-parameter]");
3555         abort(); /* Intentionally fail so user can correct issue. */
3556     }
3557     return disp->CreateVideoSessionKHR(device, pCreateInfo, pAllocator, pVideoSession);
3558 }
3559 
DestroyVideoSessionKHR(VkDevice device,VkVideoSessionKHR videoSession,const VkAllocationCallbacks * pAllocator)3560 VKAPI_ATTR void VKAPI_CALL DestroyVideoSessionKHR(
3561     VkDevice                                    device,
3562     VkVideoSessionKHR                           videoSession,
3563     const VkAllocationCallbacks*                pAllocator) {
3564     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3565     if (NULL == disp) {
3566         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3567                    "vkDestroyVideoSessionKHR: Invalid device "
3568                    "[VUID-vkDestroyVideoSessionKHR-device-parameter]");
3569         abort(); /* Intentionally fail so user can correct issue. */
3570     }
3571     disp->DestroyVideoSessionKHR(device, videoSession, pAllocator);
3572 }
3573 
GetVideoSessionMemoryRequirementsKHR(VkDevice device,VkVideoSessionKHR videoSession,uint32_t * pMemoryRequirementsCount,VkVideoSessionMemoryRequirementsKHR * pMemoryRequirements)3574 VKAPI_ATTR VkResult VKAPI_CALL GetVideoSessionMemoryRequirementsKHR(
3575     VkDevice                                    device,
3576     VkVideoSessionKHR                           videoSession,
3577     uint32_t*                                   pMemoryRequirementsCount,
3578     VkVideoSessionMemoryRequirementsKHR*        pMemoryRequirements) {
3579     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3580     if (NULL == disp) {
3581         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3582                    "vkGetVideoSessionMemoryRequirementsKHR: Invalid device "
3583                    "[VUID-vkGetVideoSessionMemoryRequirementsKHR-device-parameter]");
3584         abort(); /* Intentionally fail so user can correct issue. */
3585     }
3586     return disp->GetVideoSessionMemoryRequirementsKHR(device, videoSession, pMemoryRequirementsCount, pMemoryRequirements);
3587 }
3588 
BindVideoSessionMemoryKHR(VkDevice device,VkVideoSessionKHR videoSession,uint32_t bindSessionMemoryInfoCount,const VkBindVideoSessionMemoryInfoKHR * pBindSessionMemoryInfos)3589 VKAPI_ATTR VkResult VKAPI_CALL BindVideoSessionMemoryKHR(
3590     VkDevice                                    device,
3591     VkVideoSessionKHR                           videoSession,
3592     uint32_t                                    bindSessionMemoryInfoCount,
3593     const VkBindVideoSessionMemoryInfoKHR*      pBindSessionMemoryInfos) {
3594     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3595     if (NULL == disp) {
3596         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3597                    "vkBindVideoSessionMemoryKHR: Invalid device "
3598                    "[VUID-vkBindVideoSessionMemoryKHR-device-parameter]");
3599         abort(); /* Intentionally fail so user can correct issue. */
3600     }
3601     return disp->BindVideoSessionMemoryKHR(device, videoSession, bindSessionMemoryInfoCount, pBindSessionMemoryInfos);
3602 }
3603 
CreateVideoSessionParametersKHR(VkDevice device,const VkVideoSessionParametersCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkVideoSessionParametersKHR * pVideoSessionParameters)3604 VKAPI_ATTR VkResult VKAPI_CALL CreateVideoSessionParametersKHR(
3605     VkDevice                                    device,
3606     const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
3607     const VkAllocationCallbacks*                pAllocator,
3608     VkVideoSessionParametersKHR*                pVideoSessionParameters) {
3609     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3610     if (NULL == disp) {
3611         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3612                    "vkCreateVideoSessionParametersKHR: Invalid device "
3613                    "[VUID-vkCreateVideoSessionParametersKHR-device-parameter]");
3614         abort(); /* Intentionally fail so user can correct issue. */
3615     }
3616     return disp->CreateVideoSessionParametersKHR(device, pCreateInfo, pAllocator, pVideoSessionParameters);
3617 }
3618 
UpdateVideoSessionParametersKHR(VkDevice device,VkVideoSessionParametersKHR videoSessionParameters,const VkVideoSessionParametersUpdateInfoKHR * pUpdateInfo)3619 VKAPI_ATTR VkResult VKAPI_CALL UpdateVideoSessionParametersKHR(
3620     VkDevice                                    device,
3621     VkVideoSessionParametersKHR                 videoSessionParameters,
3622     const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo) {
3623     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3624     if (NULL == disp) {
3625         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3626                    "vkUpdateVideoSessionParametersKHR: Invalid device "
3627                    "[VUID-vkUpdateVideoSessionParametersKHR-device-parameter]");
3628         abort(); /* Intentionally fail so user can correct issue. */
3629     }
3630     return disp->UpdateVideoSessionParametersKHR(device, videoSessionParameters, pUpdateInfo);
3631 }
3632 
DestroyVideoSessionParametersKHR(VkDevice device,VkVideoSessionParametersKHR videoSessionParameters,const VkAllocationCallbacks * pAllocator)3633 VKAPI_ATTR void VKAPI_CALL DestroyVideoSessionParametersKHR(
3634     VkDevice                                    device,
3635     VkVideoSessionParametersKHR                 videoSessionParameters,
3636     const VkAllocationCallbacks*                pAllocator) {
3637     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3638     if (NULL == disp) {
3639         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3640                    "vkDestroyVideoSessionParametersKHR: Invalid device "
3641                    "[VUID-vkDestroyVideoSessionParametersKHR-device-parameter]");
3642         abort(); /* Intentionally fail so user can correct issue. */
3643     }
3644     disp->DestroyVideoSessionParametersKHR(device, videoSessionParameters, pAllocator);
3645 }
3646 
CmdBeginVideoCodingKHR(VkCommandBuffer commandBuffer,const VkVideoBeginCodingInfoKHR * pBeginInfo)3647 VKAPI_ATTR void VKAPI_CALL CmdBeginVideoCodingKHR(
3648     VkCommandBuffer                             commandBuffer,
3649     const VkVideoBeginCodingInfoKHR*            pBeginInfo) {
3650     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3651     if (NULL == disp) {
3652         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3653                    "vkCmdBeginVideoCodingKHR: Invalid commandBuffer "
3654                    "[VUID-vkCmdBeginVideoCodingKHR-commandBuffer-parameter]");
3655         abort(); /* Intentionally fail so user can correct issue. */
3656     }
3657     disp->CmdBeginVideoCodingKHR(commandBuffer, pBeginInfo);
3658 }
3659 
CmdEndVideoCodingKHR(VkCommandBuffer commandBuffer,const VkVideoEndCodingInfoKHR * pEndCodingInfo)3660 VKAPI_ATTR void VKAPI_CALL CmdEndVideoCodingKHR(
3661     VkCommandBuffer                             commandBuffer,
3662     const VkVideoEndCodingInfoKHR*              pEndCodingInfo) {
3663     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3664     if (NULL == disp) {
3665         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3666                    "vkCmdEndVideoCodingKHR: Invalid commandBuffer "
3667                    "[VUID-vkCmdEndVideoCodingKHR-commandBuffer-parameter]");
3668         abort(); /* Intentionally fail so user can correct issue. */
3669     }
3670     disp->CmdEndVideoCodingKHR(commandBuffer, pEndCodingInfo);
3671 }
3672 
CmdControlVideoCodingKHR(VkCommandBuffer commandBuffer,const VkVideoCodingControlInfoKHR * pCodingControlInfo)3673 VKAPI_ATTR void VKAPI_CALL CmdControlVideoCodingKHR(
3674     VkCommandBuffer                             commandBuffer,
3675     const VkVideoCodingControlInfoKHR*          pCodingControlInfo) {
3676     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3677     if (NULL == disp) {
3678         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3679                    "vkCmdControlVideoCodingKHR: Invalid commandBuffer "
3680                    "[VUID-vkCmdControlVideoCodingKHR-commandBuffer-parameter]");
3681         abort(); /* Intentionally fail so user can correct issue. */
3682     }
3683     disp->CmdControlVideoCodingKHR(commandBuffer, pCodingControlInfo);
3684 }
3685 
3686 
3687 // ---- VK_KHR_video_decode_queue extension trampoline/terminators
3688 
CmdDecodeVideoKHR(VkCommandBuffer commandBuffer,const VkVideoDecodeInfoKHR * pDecodeInfo)3689 VKAPI_ATTR void VKAPI_CALL CmdDecodeVideoKHR(
3690     VkCommandBuffer                             commandBuffer,
3691     const VkVideoDecodeInfoKHR*                 pDecodeInfo) {
3692     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3693     if (NULL == disp) {
3694         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3695                    "vkCmdDecodeVideoKHR: Invalid commandBuffer "
3696                    "[VUID-vkCmdDecodeVideoKHR-commandBuffer-parameter]");
3697         abort(); /* Intentionally fail so user can correct issue. */
3698     }
3699     disp->CmdDecodeVideoKHR(commandBuffer, pDecodeInfo);
3700 }
3701 
3702 
3703 // ---- VK_KHR_dynamic_rendering extension trampoline/terminators
3704 
CmdBeginRenderingKHR(VkCommandBuffer commandBuffer,const VkRenderingInfo * pRenderingInfo)3705 VKAPI_ATTR void VKAPI_CALL CmdBeginRenderingKHR(
3706     VkCommandBuffer                             commandBuffer,
3707     const VkRenderingInfo*                      pRenderingInfo) {
3708     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3709     if (NULL == disp) {
3710         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3711                    "vkCmdBeginRenderingKHR: Invalid commandBuffer "
3712                    "[VUID-vkCmdBeginRenderingKHR-commandBuffer-parameter]");
3713         abort(); /* Intentionally fail so user can correct issue. */
3714     }
3715     disp->CmdBeginRenderingKHR(commandBuffer, pRenderingInfo);
3716 }
3717 
CmdEndRenderingKHR(VkCommandBuffer commandBuffer)3718 VKAPI_ATTR void VKAPI_CALL CmdEndRenderingKHR(
3719     VkCommandBuffer                             commandBuffer) {
3720     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3721     if (NULL == disp) {
3722         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3723                    "vkCmdEndRenderingKHR: Invalid commandBuffer "
3724                    "[VUID-vkCmdEndRenderingKHR-commandBuffer-parameter]");
3725         abort(); /* Intentionally fail so user can correct issue. */
3726     }
3727     disp->CmdEndRenderingKHR(commandBuffer);
3728 }
3729 
3730 
3731 // ---- VK_KHR_device_group extension trampoline/terminators
3732 
GetDeviceGroupPeerMemoryFeaturesKHR(VkDevice device,uint32_t heapIndex,uint32_t localDeviceIndex,uint32_t remoteDeviceIndex,VkPeerMemoryFeatureFlags * pPeerMemoryFeatures)3733 VKAPI_ATTR void VKAPI_CALL GetDeviceGroupPeerMemoryFeaturesKHR(
3734     VkDevice                                    device,
3735     uint32_t                                    heapIndex,
3736     uint32_t                                    localDeviceIndex,
3737     uint32_t                                    remoteDeviceIndex,
3738     VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures) {
3739     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3740     if (NULL == disp) {
3741         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3742                    "vkGetDeviceGroupPeerMemoryFeaturesKHR: Invalid device "
3743                    "[VUID-vkGetDeviceGroupPeerMemoryFeaturesKHR-device-parameter]");
3744         abort(); /* Intentionally fail so user can correct issue. */
3745     }
3746     disp->GetDeviceGroupPeerMemoryFeaturesKHR(device, heapIndex, localDeviceIndex, remoteDeviceIndex, pPeerMemoryFeatures);
3747 }
3748 
CmdSetDeviceMaskKHR(VkCommandBuffer commandBuffer,uint32_t deviceMask)3749 VKAPI_ATTR void VKAPI_CALL CmdSetDeviceMaskKHR(
3750     VkCommandBuffer                             commandBuffer,
3751     uint32_t                                    deviceMask) {
3752     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3753     if (NULL == disp) {
3754         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3755                    "vkCmdSetDeviceMaskKHR: Invalid commandBuffer "
3756                    "[VUID-vkCmdSetDeviceMaskKHR-commandBuffer-parameter]");
3757         abort(); /* Intentionally fail so user can correct issue. */
3758     }
3759     disp->CmdSetDeviceMaskKHR(commandBuffer, deviceMask);
3760 }
3761 
CmdDispatchBaseKHR(VkCommandBuffer commandBuffer,uint32_t baseGroupX,uint32_t baseGroupY,uint32_t baseGroupZ,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)3762 VKAPI_ATTR void VKAPI_CALL CmdDispatchBaseKHR(
3763     VkCommandBuffer                             commandBuffer,
3764     uint32_t                                    baseGroupX,
3765     uint32_t                                    baseGroupY,
3766     uint32_t                                    baseGroupZ,
3767     uint32_t                                    groupCountX,
3768     uint32_t                                    groupCountY,
3769     uint32_t                                    groupCountZ) {
3770     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3771     if (NULL == disp) {
3772         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3773                    "vkCmdDispatchBaseKHR: Invalid commandBuffer "
3774                    "[VUID-vkCmdDispatchBaseKHR-commandBuffer-parameter]");
3775         abort(); /* Intentionally fail so user can correct issue. */
3776     }
3777     disp->CmdDispatchBaseKHR(commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
3778 }
3779 
3780 
3781 // ---- VK_KHR_maintenance1 extension trampoline/terminators
3782 
TrimCommandPoolKHR(VkDevice device,VkCommandPool commandPool,VkCommandPoolTrimFlags flags)3783 VKAPI_ATTR void VKAPI_CALL TrimCommandPoolKHR(
3784     VkDevice                                    device,
3785     VkCommandPool                               commandPool,
3786     VkCommandPoolTrimFlags                      flags) {
3787     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3788     if (NULL == disp) {
3789         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3790                    "vkTrimCommandPoolKHR: Invalid device "
3791                    "[VUID-vkTrimCommandPoolKHR-device-parameter]");
3792         abort(); /* Intentionally fail so user can correct issue. */
3793     }
3794     disp->TrimCommandPoolKHR(device, commandPool, flags);
3795 }
3796 
3797 
3798 // ---- VK_KHR_external_memory_win32 extension trampoline/terminators
3799 
3800 #if defined(VK_USE_PLATFORM_WIN32_KHR)
GetMemoryWin32HandleKHR(VkDevice device,const VkMemoryGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)3801 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandleKHR(
3802     VkDevice                                    device,
3803     const VkMemoryGetWin32HandleInfoKHR*        pGetWin32HandleInfo,
3804     HANDLE*                                     pHandle) {
3805     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3806     if (NULL == disp) {
3807         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3808                    "vkGetMemoryWin32HandleKHR: Invalid device "
3809                    "[VUID-vkGetMemoryWin32HandleKHR-device-parameter]");
3810         abort(); /* Intentionally fail so user can correct issue. */
3811     }
3812     return disp->GetMemoryWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
3813 }
3814 
3815 #endif // VK_USE_PLATFORM_WIN32_KHR
3816 #if defined(VK_USE_PLATFORM_WIN32_KHR)
GetMemoryWin32HandlePropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,HANDLE handle,VkMemoryWin32HandlePropertiesKHR * pMemoryWin32HandleProperties)3817 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandlePropertiesKHR(
3818     VkDevice                                    device,
3819     VkExternalMemoryHandleTypeFlagBits          handleType,
3820     HANDLE                                      handle,
3821     VkMemoryWin32HandlePropertiesKHR*           pMemoryWin32HandleProperties) {
3822     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3823     if (NULL == disp) {
3824         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3825                    "vkGetMemoryWin32HandlePropertiesKHR: Invalid device "
3826                    "[VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter]");
3827         abort(); /* Intentionally fail so user can correct issue. */
3828     }
3829     return disp->GetMemoryWin32HandlePropertiesKHR(device, handleType, handle, pMemoryWin32HandleProperties);
3830 }
3831 
3832 #endif // VK_USE_PLATFORM_WIN32_KHR
3833 
3834 // ---- VK_KHR_external_memory_fd extension trampoline/terminators
3835 
GetMemoryFdKHR(VkDevice device,const VkMemoryGetFdInfoKHR * pGetFdInfo,int * pFd)3836 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryFdKHR(
3837     VkDevice                                    device,
3838     const VkMemoryGetFdInfoKHR*                 pGetFdInfo,
3839     int*                                        pFd) {
3840     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3841     if (NULL == disp) {
3842         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3843                    "vkGetMemoryFdKHR: Invalid device "
3844                    "[VUID-vkGetMemoryFdKHR-device-parameter]");
3845         abort(); /* Intentionally fail so user can correct issue. */
3846     }
3847     return disp->GetMemoryFdKHR(device, pGetFdInfo, pFd);
3848 }
3849 
GetMemoryFdPropertiesKHR(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,int fd,VkMemoryFdPropertiesKHR * pMemoryFdProperties)3850 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryFdPropertiesKHR(
3851     VkDevice                                    device,
3852     VkExternalMemoryHandleTypeFlagBits          handleType,
3853     int                                         fd,
3854     VkMemoryFdPropertiesKHR*                    pMemoryFdProperties) {
3855     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3856     if (NULL == disp) {
3857         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3858                    "vkGetMemoryFdPropertiesKHR: Invalid device "
3859                    "[VUID-vkGetMemoryFdPropertiesKHR-device-parameter]");
3860         abort(); /* Intentionally fail so user can correct issue. */
3861     }
3862     return disp->GetMemoryFdPropertiesKHR(device, handleType, fd, pMemoryFdProperties);
3863 }
3864 
3865 
3866 // ---- VK_KHR_external_semaphore_win32 extension trampoline/terminators
3867 
3868 #if defined(VK_USE_PLATFORM_WIN32_KHR)
ImportSemaphoreWin32HandleKHR(VkDevice device,const VkImportSemaphoreWin32HandleInfoKHR * pImportSemaphoreWin32HandleInfo)3869 VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreWin32HandleKHR(
3870     VkDevice                                    device,
3871     const VkImportSemaphoreWin32HandleInfoKHR*  pImportSemaphoreWin32HandleInfo) {
3872     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3873     if (NULL == disp) {
3874         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3875                    "vkImportSemaphoreWin32HandleKHR: Invalid device "
3876                    "[VUID-vkImportSemaphoreWin32HandleKHR-device-parameter]");
3877         abort(); /* Intentionally fail so user can correct issue. */
3878     }
3879     return disp->ImportSemaphoreWin32HandleKHR(device, pImportSemaphoreWin32HandleInfo);
3880 }
3881 
3882 #endif // VK_USE_PLATFORM_WIN32_KHR
3883 #if defined(VK_USE_PLATFORM_WIN32_KHR)
GetSemaphoreWin32HandleKHR(VkDevice device,const VkSemaphoreGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)3884 VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreWin32HandleKHR(
3885     VkDevice                                    device,
3886     const VkSemaphoreGetWin32HandleInfoKHR*     pGetWin32HandleInfo,
3887     HANDLE*                                     pHandle) {
3888     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3889     if (NULL == disp) {
3890         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3891                    "vkGetSemaphoreWin32HandleKHR: Invalid device "
3892                    "[VUID-vkGetSemaphoreWin32HandleKHR-device-parameter]");
3893         abort(); /* Intentionally fail so user can correct issue. */
3894     }
3895     return disp->GetSemaphoreWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
3896 }
3897 
3898 #endif // VK_USE_PLATFORM_WIN32_KHR
3899 
3900 // ---- VK_KHR_external_semaphore_fd extension trampoline/terminators
3901 
ImportSemaphoreFdKHR(VkDevice device,const VkImportSemaphoreFdInfoKHR * pImportSemaphoreFdInfo)3902 VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreFdKHR(
3903     VkDevice                                    device,
3904     const VkImportSemaphoreFdInfoKHR*           pImportSemaphoreFdInfo) {
3905     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3906     if (NULL == disp) {
3907         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3908                    "vkImportSemaphoreFdKHR: Invalid device "
3909                    "[VUID-vkImportSemaphoreFdKHR-device-parameter]");
3910         abort(); /* Intentionally fail so user can correct issue. */
3911     }
3912     return disp->ImportSemaphoreFdKHR(device, pImportSemaphoreFdInfo);
3913 }
3914 
GetSemaphoreFdKHR(VkDevice device,const VkSemaphoreGetFdInfoKHR * pGetFdInfo,int * pFd)3915 VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreFdKHR(
3916     VkDevice                                    device,
3917     const VkSemaphoreGetFdInfoKHR*              pGetFdInfo,
3918     int*                                        pFd) {
3919     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3920     if (NULL == disp) {
3921         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3922                    "vkGetSemaphoreFdKHR: Invalid device "
3923                    "[VUID-vkGetSemaphoreFdKHR-device-parameter]");
3924         abort(); /* Intentionally fail so user can correct issue. */
3925     }
3926     return disp->GetSemaphoreFdKHR(device, pGetFdInfo, pFd);
3927 }
3928 
3929 
3930 // ---- VK_KHR_push_descriptor extension trampoline/terminators
3931 
CmdPushDescriptorSetKHR(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t set,uint32_t descriptorWriteCount,const VkWriteDescriptorSet * pDescriptorWrites)3932 VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetKHR(
3933     VkCommandBuffer                             commandBuffer,
3934     VkPipelineBindPoint                         pipelineBindPoint,
3935     VkPipelineLayout                            layout,
3936     uint32_t                                    set,
3937     uint32_t                                    descriptorWriteCount,
3938     const VkWriteDescriptorSet*                 pDescriptorWrites) {
3939     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3940     if (NULL == disp) {
3941         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3942                    "vkCmdPushDescriptorSetKHR: Invalid commandBuffer "
3943                    "[VUID-vkCmdPushDescriptorSetKHR-commandBuffer-parameter]");
3944         abort(); /* Intentionally fail so user can correct issue. */
3945     }
3946     disp->CmdPushDescriptorSetKHR(commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites);
3947 }
3948 
CmdPushDescriptorSetWithTemplateKHR(VkCommandBuffer commandBuffer,VkDescriptorUpdateTemplate descriptorUpdateTemplate,VkPipelineLayout layout,uint32_t set,const void * pData)3949 VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetWithTemplateKHR(
3950     VkCommandBuffer                             commandBuffer,
3951     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
3952     VkPipelineLayout                            layout,
3953     uint32_t                                    set,
3954     const void*                                 pData) {
3955     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
3956     if (NULL == disp) {
3957         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3958                    "vkCmdPushDescriptorSetWithTemplateKHR: Invalid commandBuffer "
3959                    "[VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter]");
3960         abort(); /* Intentionally fail so user can correct issue. */
3961     }
3962     disp->CmdPushDescriptorSetWithTemplateKHR(commandBuffer, descriptorUpdateTemplate, layout, set, pData);
3963 }
3964 
3965 
3966 // ---- VK_KHR_descriptor_update_template extension trampoline/terminators
3967 
CreateDescriptorUpdateTemplateKHR(VkDevice device,const VkDescriptorUpdateTemplateCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkDescriptorUpdateTemplate * pDescriptorUpdateTemplate)3968 VKAPI_ATTR VkResult VKAPI_CALL CreateDescriptorUpdateTemplateKHR(
3969     VkDevice                                    device,
3970     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
3971     const VkAllocationCallbacks*                pAllocator,
3972     VkDescriptorUpdateTemplate*                 pDescriptorUpdateTemplate) {
3973     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3974     if (NULL == disp) {
3975         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3976                    "vkCreateDescriptorUpdateTemplateKHR: Invalid device "
3977                    "[VUID-vkCreateDescriptorUpdateTemplateKHR-device-parameter]");
3978         abort(); /* Intentionally fail so user can correct issue. */
3979     }
3980     return disp->CreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
3981 }
3982 
DestroyDescriptorUpdateTemplateKHR(VkDevice device,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const VkAllocationCallbacks * pAllocator)3983 VKAPI_ATTR void VKAPI_CALL DestroyDescriptorUpdateTemplateKHR(
3984     VkDevice                                    device,
3985     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
3986     const VkAllocationCallbacks*                pAllocator) {
3987     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
3988     if (NULL == disp) {
3989         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
3990                    "vkDestroyDescriptorUpdateTemplateKHR: Invalid device "
3991                    "[VUID-vkDestroyDescriptorUpdateTemplateKHR-device-parameter]");
3992         abort(); /* Intentionally fail so user can correct issue. */
3993     }
3994     disp->DestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator);
3995 }
3996 
UpdateDescriptorSetWithTemplateKHR(VkDevice device,VkDescriptorSet descriptorSet,VkDescriptorUpdateTemplate descriptorUpdateTemplate,const void * pData)3997 VKAPI_ATTR void VKAPI_CALL UpdateDescriptorSetWithTemplateKHR(
3998     VkDevice                                    device,
3999     VkDescriptorSet                             descriptorSet,
4000     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
4001     const void*                                 pData) {
4002     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4003     if (NULL == disp) {
4004         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4005                    "vkUpdateDescriptorSetWithTemplateKHR: Invalid device "
4006                    "[VUID-vkUpdateDescriptorSetWithTemplateKHR-device-parameter]");
4007         abort(); /* Intentionally fail so user can correct issue. */
4008     }
4009     disp->UpdateDescriptorSetWithTemplateKHR(device, descriptorSet, descriptorUpdateTemplate, pData);
4010 }
4011 
4012 
4013 // ---- VK_KHR_create_renderpass2 extension trampoline/terminators
4014 
CreateRenderPass2KHR(VkDevice device,const VkRenderPassCreateInfo2 * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkRenderPass * pRenderPass)4015 VKAPI_ATTR VkResult VKAPI_CALL CreateRenderPass2KHR(
4016     VkDevice                                    device,
4017     const VkRenderPassCreateInfo2*              pCreateInfo,
4018     const VkAllocationCallbacks*                pAllocator,
4019     VkRenderPass*                               pRenderPass) {
4020     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4021     if (NULL == disp) {
4022         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4023                    "vkCreateRenderPass2KHR: Invalid device "
4024                    "[VUID-vkCreateRenderPass2KHR-device-parameter]");
4025         abort(); /* Intentionally fail so user can correct issue. */
4026     }
4027     return disp->CreateRenderPass2KHR(device, pCreateInfo, pAllocator, pRenderPass);
4028 }
4029 
CmdBeginRenderPass2KHR(VkCommandBuffer commandBuffer,const VkRenderPassBeginInfo * pRenderPassBegin,const VkSubpassBeginInfo * pSubpassBeginInfo)4030 VKAPI_ATTR void VKAPI_CALL CmdBeginRenderPass2KHR(
4031     VkCommandBuffer                             commandBuffer,
4032     const VkRenderPassBeginInfo*                pRenderPassBegin,
4033     const VkSubpassBeginInfo*                   pSubpassBeginInfo) {
4034     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4035     if (NULL == disp) {
4036         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4037                    "vkCmdBeginRenderPass2KHR: Invalid commandBuffer "
4038                    "[VUID-vkCmdBeginRenderPass2KHR-commandBuffer-parameter]");
4039         abort(); /* Intentionally fail so user can correct issue. */
4040     }
4041     disp->CmdBeginRenderPass2KHR(commandBuffer, pRenderPassBegin, pSubpassBeginInfo);
4042 }
4043 
CmdNextSubpass2KHR(VkCommandBuffer commandBuffer,const VkSubpassBeginInfo * pSubpassBeginInfo,const VkSubpassEndInfo * pSubpassEndInfo)4044 VKAPI_ATTR void VKAPI_CALL CmdNextSubpass2KHR(
4045     VkCommandBuffer                             commandBuffer,
4046     const VkSubpassBeginInfo*                   pSubpassBeginInfo,
4047     const VkSubpassEndInfo*                     pSubpassEndInfo) {
4048     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4049     if (NULL == disp) {
4050         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4051                    "vkCmdNextSubpass2KHR: Invalid commandBuffer "
4052                    "[VUID-vkCmdNextSubpass2KHR-commandBuffer-parameter]");
4053         abort(); /* Intentionally fail so user can correct issue. */
4054     }
4055     disp->CmdNextSubpass2KHR(commandBuffer, pSubpassBeginInfo, pSubpassEndInfo);
4056 }
4057 
CmdEndRenderPass2KHR(VkCommandBuffer commandBuffer,const VkSubpassEndInfo * pSubpassEndInfo)4058 VKAPI_ATTR void VKAPI_CALL CmdEndRenderPass2KHR(
4059     VkCommandBuffer                             commandBuffer,
4060     const VkSubpassEndInfo*                     pSubpassEndInfo) {
4061     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4062     if (NULL == disp) {
4063         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4064                    "vkCmdEndRenderPass2KHR: Invalid commandBuffer "
4065                    "[VUID-vkCmdEndRenderPass2KHR-commandBuffer-parameter]");
4066         abort(); /* Intentionally fail so user can correct issue. */
4067     }
4068     disp->CmdEndRenderPass2KHR(commandBuffer, pSubpassEndInfo);
4069 }
4070 
4071 
4072 // ---- VK_KHR_shared_presentable_image extension trampoline/terminators
4073 
GetSwapchainStatusKHR(VkDevice device,VkSwapchainKHR swapchain)4074 VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainStatusKHR(
4075     VkDevice                                    device,
4076     VkSwapchainKHR                              swapchain) {
4077     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4078     if (NULL == disp) {
4079         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4080                    "vkGetSwapchainStatusKHR: Invalid device "
4081                    "[VUID-vkGetSwapchainStatusKHR-device-parameter]");
4082         abort(); /* Intentionally fail so user can correct issue. */
4083     }
4084     return disp->GetSwapchainStatusKHR(device, swapchain);
4085 }
4086 
4087 
4088 // ---- VK_KHR_external_fence_win32 extension trampoline/terminators
4089 
4090 #if defined(VK_USE_PLATFORM_WIN32_KHR)
ImportFenceWin32HandleKHR(VkDevice device,const VkImportFenceWin32HandleInfoKHR * pImportFenceWin32HandleInfo)4091 VKAPI_ATTR VkResult VKAPI_CALL ImportFenceWin32HandleKHR(
4092     VkDevice                                    device,
4093     const VkImportFenceWin32HandleInfoKHR*      pImportFenceWin32HandleInfo) {
4094     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4095     if (NULL == disp) {
4096         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4097                    "vkImportFenceWin32HandleKHR: Invalid device "
4098                    "[VUID-vkImportFenceWin32HandleKHR-device-parameter]");
4099         abort(); /* Intentionally fail so user can correct issue. */
4100     }
4101     return disp->ImportFenceWin32HandleKHR(device, pImportFenceWin32HandleInfo);
4102 }
4103 
4104 #endif // VK_USE_PLATFORM_WIN32_KHR
4105 #if defined(VK_USE_PLATFORM_WIN32_KHR)
GetFenceWin32HandleKHR(VkDevice device,const VkFenceGetWin32HandleInfoKHR * pGetWin32HandleInfo,HANDLE * pHandle)4106 VKAPI_ATTR VkResult VKAPI_CALL GetFenceWin32HandleKHR(
4107     VkDevice                                    device,
4108     const VkFenceGetWin32HandleInfoKHR*         pGetWin32HandleInfo,
4109     HANDLE*                                     pHandle) {
4110     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4111     if (NULL == disp) {
4112         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4113                    "vkGetFenceWin32HandleKHR: Invalid device "
4114                    "[VUID-vkGetFenceWin32HandleKHR-device-parameter]");
4115         abort(); /* Intentionally fail so user can correct issue. */
4116     }
4117     return disp->GetFenceWin32HandleKHR(device, pGetWin32HandleInfo, pHandle);
4118 }
4119 
4120 #endif // VK_USE_PLATFORM_WIN32_KHR
4121 
4122 // ---- VK_KHR_external_fence_fd extension trampoline/terminators
4123 
ImportFenceFdKHR(VkDevice device,const VkImportFenceFdInfoKHR * pImportFenceFdInfo)4124 VKAPI_ATTR VkResult VKAPI_CALL ImportFenceFdKHR(
4125     VkDevice                                    device,
4126     const VkImportFenceFdInfoKHR*               pImportFenceFdInfo) {
4127     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4128     if (NULL == disp) {
4129         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4130                    "vkImportFenceFdKHR: Invalid device "
4131                    "[VUID-vkImportFenceFdKHR-device-parameter]");
4132         abort(); /* Intentionally fail so user can correct issue. */
4133     }
4134     return disp->ImportFenceFdKHR(device, pImportFenceFdInfo);
4135 }
4136 
GetFenceFdKHR(VkDevice device,const VkFenceGetFdInfoKHR * pGetFdInfo,int * pFd)4137 VKAPI_ATTR VkResult VKAPI_CALL GetFenceFdKHR(
4138     VkDevice                                    device,
4139     const VkFenceGetFdInfoKHR*                  pGetFdInfo,
4140     int*                                        pFd) {
4141     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4142     if (NULL == disp) {
4143         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4144                    "vkGetFenceFdKHR: Invalid device "
4145                    "[VUID-vkGetFenceFdKHR-device-parameter]");
4146         abort(); /* Intentionally fail so user can correct issue. */
4147     }
4148     return disp->GetFenceFdKHR(device, pGetFdInfo, pFd);
4149 }
4150 
4151 
4152 // ---- VK_KHR_performance_query extension trampoline/terminators
4153 
EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,uint32_t * pCounterCount,VkPerformanceCounterKHR * pCounters,VkPerformanceCounterDescriptionKHR * pCounterDescriptions)4154 VKAPI_ATTR VkResult VKAPI_CALL EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
4155     VkPhysicalDevice                            physicalDevice,
4156     uint32_t                                    queueFamilyIndex,
4157     uint32_t*                                   pCounterCount,
4158     VkPerformanceCounterKHR*                    pCounters,
4159     VkPerformanceCounterDescriptionKHR*         pCounterDescriptions) {
4160     const VkLayerInstanceDispatchTable *disp;
4161     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
4162     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
4163         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4164                    "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR: Invalid physicalDevice "
4165                    "[VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-physicalDevice-parameter]");
4166         abort(); /* Intentionally fail so user can correct issue. */
4167     }
4168     disp = loader_get_instance_layer_dispatch(physicalDevice);
4169     return disp->EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(unwrapped_phys_dev, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions);
4170 }
4171 
terminator_EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(VkPhysicalDevice physicalDevice,uint32_t queueFamilyIndex,uint32_t * pCounterCount,VkPerformanceCounterKHR * pCounters,VkPerformanceCounterDescriptionKHR * pCounterDescriptions)4172 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
4173     VkPhysicalDevice                            physicalDevice,
4174     uint32_t                                    queueFamilyIndex,
4175     uint32_t*                                   pCounterCount,
4176     VkPerformanceCounterKHR*                    pCounters,
4177     VkPerformanceCounterDescriptionKHR*         pCounterDescriptions) {
4178     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
4179     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
4180     if (NULL == icd_term->dispatch.EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR) {
4181         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
4182                    "ICD associated with VkPhysicalDevice does not support EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR");
4183         abort(); /* Intentionally fail so user can correct issue. */
4184     }
4185     return icd_term->dispatch.EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(phys_dev_term->phys_dev, queueFamilyIndex, pCounterCount, pCounters, pCounterDescriptions);
4186 }
4187 
GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(VkPhysicalDevice physicalDevice,const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo,uint32_t * pNumPasses)4188 VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
4189     VkPhysicalDevice                            physicalDevice,
4190     const VkQueryPoolPerformanceCreateInfoKHR*  pPerformanceQueryCreateInfo,
4191     uint32_t*                                   pNumPasses) {
4192     const VkLayerInstanceDispatchTable *disp;
4193     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
4194     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
4195         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4196                    "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR: Invalid physicalDevice "
4197                    "[VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-physicalDevice-parameter]");
4198         abort(); /* Intentionally fail so user can correct issue. */
4199     }
4200     disp = loader_get_instance_layer_dispatch(physicalDevice);
4201     disp->GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(unwrapped_phys_dev, pPerformanceQueryCreateInfo, pNumPasses);
4202 }
4203 
terminator_GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(VkPhysicalDevice physicalDevice,const VkQueryPoolPerformanceCreateInfoKHR * pPerformanceQueryCreateInfo,uint32_t * pNumPasses)4204 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
4205     VkPhysicalDevice                            physicalDevice,
4206     const VkQueryPoolPerformanceCreateInfoKHR*  pPerformanceQueryCreateInfo,
4207     uint32_t*                                   pNumPasses) {
4208     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
4209     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
4210     if (NULL == icd_term->dispatch.GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR) {
4211         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
4212                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR");
4213         abort(); /* Intentionally fail so user can correct issue. */
4214     }
4215     icd_term->dispatch.GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(phys_dev_term->phys_dev, pPerformanceQueryCreateInfo, pNumPasses);
4216 }
4217 
AcquireProfilingLockKHR(VkDevice device,const VkAcquireProfilingLockInfoKHR * pInfo)4218 VKAPI_ATTR VkResult VKAPI_CALL AcquireProfilingLockKHR(
4219     VkDevice                                    device,
4220     const VkAcquireProfilingLockInfoKHR*        pInfo) {
4221     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4222     if (NULL == disp) {
4223         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4224                    "vkAcquireProfilingLockKHR: Invalid device "
4225                    "[VUID-vkAcquireProfilingLockKHR-device-parameter]");
4226         abort(); /* Intentionally fail so user can correct issue. */
4227     }
4228     return disp->AcquireProfilingLockKHR(device, pInfo);
4229 }
4230 
ReleaseProfilingLockKHR(VkDevice device)4231 VKAPI_ATTR void VKAPI_CALL ReleaseProfilingLockKHR(
4232     VkDevice                                    device) {
4233     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4234     if (NULL == disp) {
4235         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4236                    "vkReleaseProfilingLockKHR: Invalid device "
4237                    "[VUID-vkReleaseProfilingLockKHR-device-parameter]");
4238         abort(); /* Intentionally fail so user can correct issue. */
4239     }
4240     disp->ReleaseProfilingLockKHR(device);
4241 }
4242 
4243 
4244 // ---- VK_KHR_get_memory_requirements2 extension trampoline/terminators
4245 
GetImageMemoryRequirements2KHR(VkDevice device,const VkImageMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)4246 VKAPI_ATTR void VKAPI_CALL GetImageMemoryRequirements2KHR(
4247     VkDevice                                    device,
4248     const VkImageMemoryRequirementsInfo2*       pInfo,
4249     VkMemoryRequirements2*                      pMemoryRequirements) {
4250     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4251     if (NULL == disp) {
4252         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4253                    "vkGetImageMemoryRequirements2KHR: Invalid device "
4254                    "[VUID-vkGetImageMemoryRequirements2KHR-device-parameter]");
4255         abort(); /* Intentionally fail so user can correct issue. */
4256     }
4257     disp->GetImageMemoryRequirements2KHR(device, pInfo, pMemoryRequirements);
4258 }
4259 
GetBufferMemoryRequirements2KHR(VkDevice device,const VkBufferMemoryRequirementsInfo2 * pInfo,VkMemoryRequirements2 * pMemoryRequirements)4260 VKAPI_ATTR void VKAPI_CALL GetBufferMemoryRequirements2KHR(
4261     VkDevice                                    device,
4262     const VkBufferMemoryRequirementsInfo2*      pInfo,
4263     VkMemoryRequirements2*                      pMemoryRequirements) {
4264     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4265     if (NULL == disp) {
4266         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4267                    "vkGetBufferMemoryRequirements2KHR: Invalid device "
4268                    "[VUID-vkGetBufferMemoryRequirements2KHR-device-parameter]");
4269         abort(); /* Intentionally fail so user can correct issue. */
4270     }
4271     disp->GetBufferMemoryRequirements2KHR(device, pInfo, pMemoryRequirements);
4272 }
4273 
GetImageSparseMemoryRequirements2KHR(VkDevice device,const VkImageSparseMemoryRequirementsInfo2 * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)4274 VKAPI_ATTR void VKAPI_CALL GetImageSparseMemoryRequirements2KHR(
4275     VkDevice                                    device,
4276     const VkImageSparseMemoryRequirementsInfo2* pInfo,
4277     uint32_t*                                   pSparseMemoryRequirementCount,
4278     VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements) {
4279     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4280     if (NULL == disp) {
4281         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4282                    "vkGetImageSparseMemoryRequirements2KHR: Invalid device "
4283                    "[VUID-vkGetImageSparseMemoryRequirements2KHR-device-parameter]");
4284         abort(); /* Intentionally fail so user can correct issue. */
4285     }
4286     disp->GetImageSparseMemoryRequirements2KHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
4287 }
4288 
4289 
4290 // ---- VK_KHR_sampler_ycbcr_conversion extension trampoline/terminators
4291 
CreateSamplerYcbcrConversionKHR(VkDevice device,const VkSamplerYcbcrConversionCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkSamplerYcbcrConversion * pYcbcrConversion)4292 VKAPI_ATTR VkResult VKAPI_CALL CreateSamplerYcbcrConversionKHR(
4293     VkDevice                                    device,
4294     const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
4295     const VkAllocationCallbacks*                pAllocator,
4296     VkSamplerYcbcrConversion*                   pYcbcrConversion) {
4297     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4298     if (NULL == disp) {
4299         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4300                    "vkCreateSamplerYcbcrConversionKHR: Invalid device "
4301                    "[VUID-vkCreateSamplerYcbcrConversionKHR-device-parameter]");
4302         abort(); /* Intentionally fail so user can correct issue. */
4303     }
4304     return disp->CreateSamplerYcbcrConversionKHR(device, pCreateInfo, pAllocator, pYcbcrConversion);
4305 }
4306 
DestroySamplerYcbcrConversionKHR(VkDevice device,VkSamplerYcbcrConversion ycbcrConversion,const VkAllocationCallbacks * pAllocator)4307 VKAPI_ATTR void VKAPI_CALL DestroySamplerYcbcrConversionKHR(
4308     VkDevice                                    device,
4309     VkSamplerYcbcrConversion                    ycbcrConversion,
4310     const VkAllocationCallbacks*                pAllocator) {
4311     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4312     if (NULL == disp) {
4313         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4314                    "vkDestroySamplerYcbcrConversionKHR: Invalid device "
4315                    "[VUID-vkDestroySamplerYcbcrConversionKHR-device-parameter]");
4316         abort(); /* Intentionally fail so user can correct issue. */
4317     }
4318     disp->DestroySamplerYcbcrConversionKHR(device, ycbcrConversion, pAllocator);
4319 }
4320 
4321 
4322 // ---- VK_KHR_bind_memory2 extension trampoline/terminators
4323 
BindBufferMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindBufferMemoryInfo * pBindInfos)4324 VKAPI_ATTR VkResult VKAPI_CALL BindBufferMemory2KHR(
4325     VkDevice                                    device,
4326     uint32_t                                    bindInfoCount,
4327     const VkBindBufferMemoryInfo*               pBindInfos) {
4328     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4329     if (NULL == disp) {
4330         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4331                    "vkBindBufferMemory2KHR: Invalid device "
4332                    "[VUID-vkBindBufferMemory2KHR-device-parameter]");
4333         abort(); /* Intentionally fail so user can correct issue. */
4334     }
4335     return disp->BindBufferMemory2KHR(device, bindInfoCount, pBindInfos);
4336 }
4337 
BindImageMemory2KHR(VkDevice device,uint32_t bindInfoCount,const VkBindImageMemoryInfo * pBindInfos)4338 VKAPI_ATTR VkResult VKAPI_CALL BindImageMemory2KHR(
4339     VkDevice                                    device,
4340     uint32_t                                    bindInfoCount,
4341     const VkBindImageMemoryInfo*                pBindInfos) {
4342     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4343     if (NULL == disp) {
4344         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4345                    "vkBindImageMemory2KHR: Invalid device "
4346                    "[VUID-vkBindImageMemory2KHR-device-parameter]");
4347         abort(); /* Intentionally fail so user can correct issue. */
4348     }
4349     return disp->BindImageMemory2KHR(device, bindInfoCount, pBindInfos);
4350 }
4351 
4352 
4353 // ---- VK_KHR_maintenance3 extension trampoline/terminators
4354 
GetDescriptorSetLayoutSupportKHR(VkDevice device,const VkDescriptorSetLayoutCreateInfo * pCreateInfo,VkDescriptorSetLayoutSupport * pSupport)4355 VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSupportKHR(
4356     VkDevice                                    device,
4357     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
4358     VkDescriptorSetLayoutSupport*               pSupport) {
4359     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4360     if (NULL == disp) {
4361         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4362                    "vkGetDescriptorSetLayoutSupportKHR: Invalid device "
4363                    "[VUID-vkGetDescriptorSetLayoutSupportKHR-device-parameter]");
4364         abort(); /* Intentionally fail so user can correct issue. */
4365     }
4366     disp->GetDescriptorSetLayoutSupportKHR(device, pCreateInfo, pSupport);
4367 }
4368 
4369 
4370 // ---- VK_KHR_draw_indirect_count extension trampoline/terminators
4371 
CmdDrawIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)4372 VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCountKHR(
4373     VkCommandBuffer                             commandBuffer,
4374     VkBuffer                                    buffer,
4375     VkDeviceSize                                offset,
4376     VkBuffer                                    countBuffer,
4377     VkDeviceSize                                countBufferOffset,
4378     uint32_t                                    maxDrawCount,
4379     uint32_t                                    stride) {
4380     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4381     if (NULL == disp) {
4382         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4383                    "vkCmdDrawIndirectCountKHR: Invalid commandBuffer "
4384                    "[VUID-vkCmdDrawIndirectCountKHR-commandBuffer-parameter]");
4385         abort(); /* Intentionally fail so user can correct issue. */
4386     }
4387     disp->CmdDrawIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
4388 }
4389 
CmdDrawIndexedIndirectCountKHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)4390 VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCountKHR(
4391     VkCommandBuffer                             commandBuffer,
4392     VkBuffer                                    buffer,
4393     VkDeviceSize                                offset,
4394     VkBuffer                                    countBuffer,
4395     VkDeviceSize                                countBufferOffset,
4396     uint32_t                                    maxDrawCount,
4397     uint32_t                                    stride) {
4398     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4399     if (NULL == disp) {
4400         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4401                    "vkCmdDrawIndexedIndirectCountKHR: Invalid commandBuffer "
4402                    "[VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-parameter]");
4403         abort(); /* Intentionally fail so user can correct issue. */
4404     }
4405     disp->CmdDrawIndexedIndirectCountKHR(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
4406 }
4407 
4408 
4409 // ---- VK_KHR_timeline_semaphore extension trampoline/terminators
4410 
GetSemaphoreCounterValueKHR(VkDevice device,VkSemaphore semaphore,uint64_t * pValue)4411 VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreCounterValueKHR(
4412     VkDevice                                    device,
4413     VkSemaphore                                 semaphore,
4414     uint64_t*                                   pValue) {
4415     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4416     if (NULL == disp) {
4417         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4418                    "vkGetSemaphoreCounterValueKHR: Invalid device "
4419                    "[VUID-vkGetSemaphoreCounterValueKHR-device-parameter]");
4420         abort(); /* Intentionally fail so user can correct issue. */
4421     }
4422     return disp->GetSemaphoreCounterValueKHR(device, semaphore, pValue);
4423 }
4424 
WaitSemaphoresKHR(VkDevice device,const VkSemaphoreWaitInfo * pWaitInfo,uint64_t timeout)4425 VKAPI_ATTR VkResult VKAPI_CALL WaitSemaphoresKHR(
4426     VkDevice                                    device,
4427     const VkSemaphoreWaitInfo*                  pWaitInfo,
4428     uint64_t                                    timeout) {
4429     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4430     if (NULL == disp) {
4431         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4432                    "vkWaitSemaphoresKHR: Invalid device "
4433                    "[VUID-vkWaitSemaphoresKHR-device-parameter]");
4434         abort(); /* Intentionally fail so user can correct issue. */
4435     }
4436     return disp->WaitSemaphoresKHR(device, pWaitInfo, timeout);
4437 }
4438 
SignalSemaphoreKHR(VkDevice device,const VkSemaphoreSignalInfo * pSignalInfo)4439 VKAPI_ATTR VkResult VKAPI_CALL SignalSemaphoreKHR(
4440     VkDevice                                    device,
4441     const VkSemaphoreSignalInfo*                pSignalInfo) {
4442     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4443     if (NULL == disp) {
4444         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4445                    "vkSignalSemaphoreKHR: Invalid device "
4446                    "[VUID-vkSignalSemaphoreKHR-device-parameter]");
4447         abort(); /* Intentionally fail so user can correct issue. */
4448     }
4449     return disp->SignalSemaphoreKHR(device, pSignalInfo);
4450 }
4451 
4452 
4453 // ---- VK_KHR_fragment_shading_rate extension trampoline/terminators
4454 
GetPhysicalDeviceFragmentShadingRatesKHR(VkPhysicalDevice physicalDevice,uint32_t * pFragmentShadingRateCount,VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates)4455 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceFragmentShadingRatesKHR(
4456     VkPhysicalDevice                            physicalDevice,
4457     uint32_t*                                   pFragmentShadingRateCount,
4458     VkPhysicalDeviceFragmentShadingRateKHR*     pFragmentShadingRates) {
4459     const VkLayerInstanceDispatchTable *disp;
4460     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
4461     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
4462         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4463                    "vkGetPhysicalDeviceFragmentShadingRatesKHR: Invalid physicalDevice "
4464                    "[VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-physicalDevice-parameter]");
4465         abort(); /* Intentionally fail so user can correct issue. */
4466     }
4467     disp = loader_get_instance_layer_dispatch(physicalDevice);
4468     return disp->GetPhysicalDeviceFragmentShadingRatesKHR(unwrapped_phys_dev, pFragmentShadingRateCount, pFragmentShadingRates);
4469 }
4470 
terminator_GetPhysicalDeviceFragmentShadingRatesKHR(VkPhysicalDevice physicalDevice,uint32_t * pFragmentShadingRateCount,VkPhysicalDeviceFragmentShadingRateKHR * pFragmentShadingRates)4471 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceFragmentShadingRatesKHR(
4472     VkPhysicalDevice                            physicalDevice,
4473     uint32_t*                                   pFragmentShadingRateCount,
4474     VkPhysicalDeviceFragmentShadingRateKHR*     pFragmentShadingRates) {
4475     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
4476     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
4477     if (NULL == icd_term->dispatch.GetPhysicalDeviceFragmentShadingRatesKHR) {
4478         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
4479                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceFragmentShadingRatesKHR");
4480         abort(); /* Intentionally fail so user can correct issue. */
4481     }
4482     return icd_term->dispatch.GetPhysicalDeviceFragmentShadingRatesKHR(phys_dev_term->phys_dev, pFragmentShadingRateCount, pFragmentShadingRates);
4483 }
4484 
CmdSetFragmentShadingRateKHR(VkCommandBuffer commandBuffer,const VkExtent2D * pFragmentSize,const VkFragmentShadingRateCombinerOpKHR combinerOps[2])4485 VKAPI_ATTR void VKAPI_CALL CmdSetFragmentShadingRateKHR(
4486     VkCommandBuffer                             commandBuffer,
4487     const VkExtent2D*                           pFragmentSize,
4488     const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]) {
4489     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4490     if (NULL == disp) {
4491         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4492                    "vkCmdSetFragmentShadingRateKHR: Invalid commandBuffer "
4493                    "[VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-parameter]");
4494         abort(); /* Intentionally fail so user can correct issue. */
4495     }
4496     disp->CmdSetFragmentShadingRateKHR(commandBuffer, pFragmentSize, combinerOps);
4497 }
4498 
4499 
4500 // ---- VK_KHR_dynamic_rendering_local_read extension trampoline/terminators
4501 
CmdSetRenderingAttachmentLocationsKHR(VkCommandBuffer commandBuffer,const VkRenderingAttachmentLocationInfo * pLocationInfo)4502 VKAPI_ATTR void VKAPI_CALL CmdSetRenderingAttachmentLocationsKHR(
4503     VkCommandBuffer                             commandBuffer,
4504     const VkRenderingAttachmentLocationInfo*    pLocationInfo) {
4505     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4506     if (NULL == disp) {
4507         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4508                    "vkCmdSetRenderingAttachmentLocationsKHR: Invalid commandBuffer "
4509                    "[VUID-vkCmdSetRenderingAttachmentLocationsKHR-commandBuffer-parameter]");
4510         abort(); /* Intentionally fail so user can correct issue. */
4511     }
4512     disp->CmdSetRenderingAttachmentLocationsKHR(commandBuffer, pLocationInfo);
4513 }
4514 
CmdSetRenderingInputAttachmentIndicesKHR(VkCommandBuffer commandBuffer,const VkRenderingInputAttachmentIndexInfo * pInputAttachmentIndexInfo)4515 VKAPI_ATTR void VKAPI_CALL CmdSetRenderingInputAttachmentIndicesKHR(
4516     VkCommandBuffer                             commandBuffer,
4517     const VkRenderingInputAttachmentIndexInfo*  pInputAttachmentIndexInfo) {
4518     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4519     if (NULL == disp) {
4520         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4521                    "vkCmdSetRenderingInputAttachmentIndicesKHR: Invalid commandBuffer "
4522                    "[VUID-vkCmdSetRenderingInputAttachmentIndicesKHR-commandBuffer-parameter]");
4523         abort(); /* Intentionally fail so user can correct issue. */
4524     }
4525     disp->CmdSetRenderingInputAttachmentIndicesKHR(commandBuffer, pInputAttachmentIndexInfo);
4526 }
4527 
4528 
4529 // ---- VK_KHR_present_wait extension trampoline/terminators
4530 
WaitForPresentKHR(VkDevice device,VkSwapchainKHR swapchain,uint64_t presentId,uint64_t timeout)4531 VKAPI_ATTR VkResult VKAPI_CALL WaitForPresentKHR(
4532     VkDevice                                    device,
4533     VkSwapchainKHR                              swapchain,
4534     uint64_t                                    presentId,
4535     uint64_t                                    timeout) {
4536     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4537     if (NULL == disp) {
4538         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4539                    "vkWaitForPresentKHR: Invalid device "
4540                    "[VUID-vkWaitForPresentKHR-device-parameter]");
4541         abort(); /* Intentionally fail so user can correct issue. */
4542     }
4543     return disp->WaitForPresentKHR(device, swapchain, presentId, timeout);
4544 }
4545 
4546 
4547 // ---- VK_KHR_buffer_device_address extension trampoline/terminators
4548 
GetBufferDeviceAddressKHR(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)4549 VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressKHR(
4550     VkDevice                                    device,
4551     const VkBufferDeviceAddressInfo*            pInfo) {
4552     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4553     if (NULL == disp) {
4554         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4555                    "vkGetBufferDeviceAddressKHR: Invalid device "
4556                    "[VUID-vkGetBufferDeviceAddressKHR-device-parameter]");
4557         abort(); /* Intentionally fail so user can correct issue. */
4558     }
4559     return disp->GetBufferDeviceAddressKHR(device, pInfo);
4560 }
4561 
GetBufferOpaqueCaptureAddressKHR(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)4562 VKAPI_ATTR uint64_t VKAPI_CALL GetBufferOpaqueCaptureAddressKHR(
4563     VkDevice                                    device,
4564     const VkBufferDeviceAddressInfo*            pInfo) {
4565     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4566     if (NULL == disp) {
4567         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4568                    "vkGetBufferOpaqueCaptureAddressKHR: Invalid device "
4569                    "[VUID-vkGetBufferOpaqueCaptureAddressKHR-device-parameter]");
4570         abort(); /* Intentionally fail so user can correct issue. */
4571     }
4572     return disp->GetBufferOpaqueCaptureAddressKHR(device, pInfo);
4573 }
4574 
GetDeviceMemoryOpaqueCaptureAddressKHR(VkDevice device,const VkDeviceMemoryOpaqueCaptureAddressInfo * pInfo)4575 VKAPI_ATTR uint64_t VKAPI_CALL GetDeviceMemoryOpaqueCaptureAddressKHR(
4576     VkDevice                                    device,
4577     const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo) {
4578     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4579     if (NULL == disp) {
4580         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4581                    "vkGetDeviceMemoryOpaqueCaptureAddressKHR: Invalid device "
4582                    "[VUID-vkGetDeviceMemoryOpaqueCaptureAddressKHR-device-parameter]");
4583         abort(); /* Intentionally fail so user can correct issue. */
4584     }
4585     return disp->GetDeviceMemoryOpaqueCaptureAddressKHR(device, pInfo);
4586 }
4587 
4588 
4589 // ---- VK_KHR_deferred_host_operations extension trampoline/terminators
4590 
CreateDeferredOperationKHR(VkDevice device,const VkAllocationCallbacks * pAllocator,VkDeferredOperationKHR * pDeferredOperation)4591 VKAPI_ATTR VkResult VKAPI_CALL CreateDeferredOperationKHR(
4592     VkDevice                                    device,
4593     const VkAllocationCallbacks*                pAllocator,
4594     VkDeferredOperationKHR*                     pDeferredOperation) {
4595     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4596     if (NULL == disp) {
4597         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4598                    "vkCreateDeferredOperationKHR: Invalid device "
4599                    "[VUID-vkCreateDeferredOperationKHR-device-parameter]");
4600         abort(); /* Intentionally fail so user can correct issue. */
4601     }
4602     return disp->CreateDeferredOperationKHR(device, pAllocator, pDeferredOperation);
4603 }
4604 
DestroyDeferredOperationKHR(VkDevice device,VkDeferredOperationKHR operation,const VkAllocationCallbacks * pAllocator)4605 VKAPI_ATTR void VKAPI_CALL DestroyDeferredOperationKHR(
4606     VkDevice                                    device,
4607     VkDeferredOperationKHR                      operation,
4608     const VkAllocationCallbacks*                pAllocator) {
4609     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4610     if (NULL == disp) {
4611         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4612                    "vkDestroyDeferredOperationKHR: Invalid device "
4613                    "[VUID-vkDestroyDeferredOperationKHR-device-parameter]");
4614         abort(); /* Intentionally fail so user can correct issue. */
4615     }
4616     disp->DestroyDeferredOperationKHR(device, operation, pAllocator);
4617 }
4618 
GetDeferredOperationMaxConcurrencyKHR(VkDevice device,VkDeferredOperationKHR operation)4619 VKAPI_ATTR uint32_t VKAPI_CALL GetDeferredOperationMaxConcurrencyKHR(
4620     VkDevice                                    device,
4621     VkDeferredOperationKHR                      operation) {
4622     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4623     if (NULL == disp) {
4624         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4625                    "vkGetDeferredOperationMaxConcurrencyKHR: Invalid device "
4626                    "[VUID-vkGetDeferredOperationMaxConcurrencyKHR-device-parameter]");
4627         abort(); /* Intentionally fail so user can correct issue. */
4628     }
4629     return disp->GetDeferredOperationMaxConcurrencyKHR(device, operation);
4630 }
4631 
GetDeferredOperationResultKHR(VkDevice device,VkDeferredOperationKHR operation)4632 VKAPI_ATTR VkResult VKAPI_CALL GetDeferredOperationResultKHR(
4633     VkDevice                                    device,
4634     VkDeferredOperationKHR                      operation) {
4635     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4636     if (NULL == disp) {
4637         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4638                    "vkGetDeferredOperationResultKHR: Invalid device "
4639                    "[VUID-vkGetDeferredOperationResultKHR-device-parameter]");
4640         abort(); /* Intentionally fail so user can correct issue. */
4641     }
4642     return disp->GetDeferredOperationResultKHR(device, operation);
4643 }
4644 
DeferredOperationJoinKHR(VkDevice device,VkDeferredOperationKHR operation)4645 VKAPI_ATTR VkResult VKAPI_CALL DeferredOperationJoinKHR(
4646     VkDevice                                    device,
4647     VkDeferredOperationKHR                      operation) {
4648     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4649     if (NULL == disp) {
4650         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4651                    "vkDeferredOperationJoinKHR: Invalid device "
4652                    "[VUID-vkDeferredOperationJoinKHR-device-parameter]");
4653         abort(); /* Intentionally fail so user can correct issue. */
4654     }
4655     return disp->DeferredOperationJoinKHR(device, operation);
4656 }
4657 
4658 
4659 // ---- VK_KHR_pipeline_executable_properties extension trampoline/terminators
4660 
GetPipelineExecutablePropertiesKHR(VkDevice device,const VkPipelineInfoKHR * pPipelineInfo,uint32_t * pExecutableCount,VkPipelineExecutablePropertiesKHR * pProperties)4661 VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutablePropertiesKHR(
4662     VkDevice                                    device,
4663     const VkPipelineInfoKHR*                    pPipelineInfo,
4664     uint32_t*                                   pExecutableCount,
4665     VkPipelineExecutablePropertiesKHR*          pProperties) {
4666     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4667     if (NULL == disp) {
4668         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4669                    "vkGetPipelineExecutablePropertiesKHR: Invalid device "
4670                    "[VUID-vkGetPipelineExecutablePropertiesKHR-device-parameter]");
4671         abort(); /* Intentionally fail so user can correct issue. */
4672     }
4673     return disp->GetPipelineExecutablePropertiesKHR(device, pPipelineInfo, pExecutableCount, pProperties);
4674 }
4675 
GetPipelineExecutableStatisticsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pStatisticCount,VkPipelineExecutableStatisticKHR * pStatistics)4676 VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutableStatisticsKHR(
4677     VkDevice                                    device,
4678     const VkPipelineExecutableInfoKHR*          pExecutableInfo,
4679     uint32_t*                                   pStatisticCount,
4680     VkPipelineExecutableStatisticKHR*           pStatistics) {
4681     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4682     if (NULL == disp) {
4683         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4684                    "vkGetPipelineExecutableStatisticsKHR: Invalid device "
4685                    "[VUID-vkGetPipelineExecutableStatisticsKHR-device-parameter]");
4686         abort(); /* Intentionally fail so user can correct issue. */
4687     }
4688     return disp->GetPipelineExecutableStatisticsKHR(device, pExecutableInfo, pStatisticCount, pStatistics);
4689 }
4690 
GetPipelineExecutableInternalRepresentationsKHR(VkDevice device,const VkPipelineExecutableInfoKHR * pExecutableInfo,uint32_t * pInternalRepresentationCount,VkPipelineExecutableInternalRepresentationKHR * pInternalRepresentations)4691 VKAPI_ATTR VkResult VKAPI_CALL GetPipelineExecutableInternalRepresentationsKHR(
4692     VkDevice                                    device,
4693     const VkPipelineExecutableInfoKHR*          pExecutableInfo,
4694     uint32_t*                                   pInternalRepresentationCount,
4695     VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) {
4696     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4697     if (NULL == disp) {
4698         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4699                    "vkGetPipelineExecutableInternalRepresentationsKHR: Invalid device "
4700                    "[VUID-vkGetPipelineExecutableInternalRepresentationsKHR-device-parameter]");
4701         abort(); /* Intentionally fail so user can correct issue. */
4702     }
4703     return disp->GetPipelineExecutableInternalRepresentationsKHR(device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations);
4704 }
4705 
4706 
4707 // ---- VK_KHR_map_memory2 extension trampoline/terminators
4708 
MapMemory2KHR(VkDevice device,const VkMemoryMapInfo * pMemoryMapInfo,void ** ppData)4709 VKAPI_ATTR VkResult VKAPI_CALL MapMemory2KHR(
4710     VkDevice                                    device,
4711     const VkMemoryMapInfo*                      pMemoryMapInfo,
4712     void**                                      ppData) {
4713     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4714     if (NULL == disp) {
4715         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4716                    "vkMapMemory2KHR: Invalid device "
4717                    "[VUID-vkMapMemory2KHR-device-parameter]");
4718         abort(); /* Intentionally fail so user can correct issue. */
4719     }
4720     return disp->MapMemory2KHR(device, pMemoryMapInfo, ppData);
4721 }
4722 
UnmapMemory2KHR(VkDevice device,const VkMemoryUnmapInfo * pMemoryUnmapInfo)4723 VKAPI_ATTR VkResult VKAPI_CALL UnmapMemory2KHR(
4724     VkDevice                                    device,
4725     const VkMemoryUnmapInfo*                    pMemoryUnmapInfo) {
4726     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4727     if (NULL == disp) {
4728         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4729                    "vkUnmapMemory2KHR: Invalid device "
4730                    "[VUID-vkUnmapMemory2KHR-device-parameter]");
4731         abort(); /* Intentionally fail so user can correct issue. */
4732     }
4733     return disp->UnmapMemory2KHR(device, pMemoryUnmapInfo);
4734 }
4735 
4736 
4737 // ---- VK_KHR_video_encode_queue extension trampoline/terminators
4738 
GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR * pQualityLevelInfo,VkVideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties)4739 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(
4740     VkPhysicalDevice                            physicalDevice,
4741     const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR* pQualityLevelInfo,
4742     VkVideoEncodeQualityLevelPropertiesKHR*     pQualityLevelProperties) {
4743     const VkLayerInstanceDispatchTable *disp;
4744     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
4745     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
4746         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4747                    "vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR: Invalid physicalDevice "
4748                    "[VUID-vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR-physicalDevice-parameter]");
4749         abort(); /* Intentionally fail so user can correct issue. */
4750     }
4751     disp = loader_get_instance_layer_dispatch(physicalDevice);
4752     return disp->GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(unwrapped_phys_dev, pQualityLevelInfo, pQualityLevelProperties);
4753 }
4754 
terminator_GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(VkPhysicalDevice physicalDevice,const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR * pQualityLevelInfo,VkVideoEncodeQualityLevelPropertiesKHR * pQualityLevelProperties)4755 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(
4756     VkPhysicalDevice                            physicalDevice,
4757     const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR* pQualityLevelInfo,
4758     VkVideoEncodeQualityLevelPropertiesKHR*     pQualityLevelProperties) {
4759     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
4760     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
4761     if (NULL == icd_term->dispatch.GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR) {
4762         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
4763                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR");
4764         abort(); /* Intentionally fail so user can correct issue. */
4765     }
4766     return icd_term->dispatch.GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(phys_dev_term->phys_dev, pQualityLevelInfo, pQualityLevelProperties);
4767 }
4768 
GetEncodedVideoSessionParametersKHR(VkDevice device,const VkVideoEncodeSessionParametersGetInfoKHR * pVideoSessionParametersInfo,VkVideoEncodeSessionParametersFeedbackInfoKHR * pFeedbackInfo,size_t * pDataSize,void * pData)4769 VKAPI_ATTR VkResult VKAPI_CALL GetEncodedVideoSessionParametersKHR(
4770     VkDevice                                    device,
4771     const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo,
4772     VkVideoEncodeSessionParametersFeedbackInfoKHR* pFeedbackInfo,
4773     size_t*                                     pDataSize,
4774     void*                                       pData) {
4775     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4776     if (NULL == disp) {
4777         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4778                    "vkGetEncodedVideoSessionParametersKHR: Invalid device "
4779                    "[VUID-vkGetEncodedVideoSessionParametersKHR-device-parameter]");
4780         abort(); /* Intentionally fail so user can correct issue. */
4781     }
4782     return disp->GetEncodedVideoSessionParametersKHR(device, pVideoSessionParametersInfo, pFeedbackInfo, pDataSize, pData);
4783 }
4784 
CmdEncodeVideoKHR(VkCommandBuffer commandBuffer,const VkVideoEncodeInfoKHR * pEncodeInfo)4785 VKAPI_ATTR void VKAPI_CALL CmdEncodeVideoKHR(
4786     VkCommandBuffer                             commandBuffer,
4787     const VkVideoEncodeInfoKHR*                 pEncodeInfo) {
4788     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4789     if (NULL == disp) {
4790         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4791                    "vkCmdEncodeVideoKHR: Invalid commandBuffer "
4792                    "[VUID-vkCmdEncodeVideoKHR-commandBuffer-parameter]");
4793         abort(); /* Intentionally fail so user can correct issue. */
4794     }
4795     disp->CmdEncodeVideoKHR(commandBuffer, pEncodeInfo);
4796 }
4797 
4798 
4799 // ---- VK_KHR_synchronization2 extension trampoline/terminators
4800 
CmdSetEvent2KHR(VkCommandBuffer commandBuffer,VkEvent event,const VkDependencyInfo * pDependencyInfo)4801 VKAPI_ATTR void VKAPI_CALL CmdSetEvent2KHR(
4802     VkCommandBuffer                             commandBuffer,
4803     VkEvent                                     event,
4804     const VkDependencyInfo*                     pDependencyInfo) {
4805     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4806     if (NULL == disp) {
4807         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4808                    "vkCmdSetEvent2KHR: Invalid commandBuffer "
4809                    "[VUID-vkCmdSetEvent2KHR-commandBuffer-parameter]");
4810         abort(); /* Intentionally fail so user can correct issue. */
4811     }
4812     disp->CmdSetEvent2KHR(commandBuffer, event, pDependencyInfo);
4813 }
4814 
CmdResetEvent2KHR(VkCommandBuffer commandBuffer,VkEvent event,VkPipelineStageFlags2 stageMask)4815 VKAPI_ATTR void VKAPI_CALL CmdResetEvent2KHR(
4816     VkCommandBuffer                             commandBuffer,
4817     VkEvent                                     event,
4818     VkPipelineStageFlags2                       stageMask) {
4819     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4820     if (NULL == disp) {
4821         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4822                    "vkCmdResetEvent2KHR: Invalid commandBuffer "
4823                    "[VUID-vkCmdResetEvent2KHR-commandBuffer-parameter]");
4824         abort(); /* Intentionally fail so user can correct issue. */
4825     }
4826     disp->CmdResetEvent2KHR(commandBuffer, event, stageMask);
4827 }
4828 
CmdWaitEvents2KHR(VkCommandBuffer commandBuffer,uint32_t eventCount,const VkEvent * pEvents,const VkDependencyInfo * pDependencyInfos)4829 VKAPI_ATTR void VKAPI_CALL CmdWaitEvents2KHR(
4830     VkCommandBuffer                             commandBuffer,
4831     uint32_t                                    eventCount,
4832     const VkEvent*                              pEvents,
4833     const VkDependencyInfo*                     pDependencyInfos) {
4834     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4835     if (NULL == disp) {
4836         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4837                    "vkCmdWaitEvents2KHR: Invalid commandBuffer "
4838                    "[VUID-vkCmdWaitEvents2KHR-commandBuffer-parameter]");
4839         abort(); /* Intentionally fail so user can correct issue. */
4840     }
4841     disp->CmdWaitEvents2KHR(commandBuffer, eventCount, pEvents, pDependencyInfos);
4842 }
4843 
CmdPipelineBarrier2KHR(VkCommandBuffer commandBuffer,const VkDependencyInfo * pDependencyInfo)4844 VKAPI_ATTR void VKAPI_CALL CmdPipelineBarrier2KHR(
4845     VkCommandBuffer                             commandBuffer,
4846     const VkDependencyInfo*                     pDependencyInfo) {
4847     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4848     if (NULL == disp) {
4849         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4850                    "vkCmdPipelineBarrier2KHR: Invalid commandBuffer "
4851                    "[VUID-vkCmdPipelineBarrier2KHR-commandBuffer-parameter]");
4852         abort(); /* Intentionally fail so user can correct issue. */
4853     }
4854     disp->CmdPipelineBarrier2KHR(commandBuffer, pDependencyInfo);
4855 }
4856 
CmdWriteTimestamp2KHR(VkCommandBuffer commandBuffer,VkPipelineStageFlags2 stage,VkQueryPool queryPool,uint32_t query)4857 VKAPI_ATTR void VKAPI_CALL CmdWriteTimestamp2KHR(
4858     VkCommandBuffer                             commandBuffer,
4859     VkPipelineStageFlags2                       stage,
4860     VkQueryPool                                 queryPool,
4861     uint32_t                                    query) {
4862     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4863     if (NULL == disp) {
4864         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4865                    "vkCmdWriteTimestamp2KHR: Invalid commandBuffer "
4866                    "[VUID-vkCmdWriteTimestamp2KHR-commandBuffer-parameter]");
4867         abort(); /* Intentionally fail so user can correct issue. */
4868     }
4869     disp->CmdWriteTimestamp2KHR(commandBuffer, stage, queryPool, query);
4870 }
4871 
QueueSubmit2KHR(VkQueue queue,uint32_t submitCount,const VkSubmitInfo2 * pSubmits,VkFence fence)4872 VKAPI_ATTR VkResult VKAPI_CALL QueueSubmit2KHR(
4873     VkQueue                                     queue,
4874     uint32_t                                    submitCount,
4875     const VkSubmitInfo2*                        pSubmits,
4876     VkFence                                     fence) {
4877     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
4878     if (NULL == disp) {
4879         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4880                    "vkQueueSubmit2KHR: Invalid queue "
4881                    "[VUID-vkQueueSubmit2KHR-queue-parameter]");
4882         abort(); /* Intentionally fail so user can correct issue. */
4883     }
4884     return disp->QueueSubmit2KHR(queue, submitCount, pSubmits, fence);
4885 }
4886 
4887 
4888 // ---- VK_KHR_copy_commands2 extension trampoline/terminators
4889 
CmdCopyBuffer2KHR(VkCommandBuffer commandBuffer,const VkCopyBufferInfo2 * pCopyBufferInfo)4890 VKAPI_ATTR void VKAPI_CALL CmdCopyBuffer2KHR(
4891     VkCommandBuffer                             commandBuffer,
4892     const VkCopyBufferInfo2*                    pCopyBufferInfo) {
4893     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4894     if (NULL == disp) {
4895         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4896                    "vkCmdCopyBuffer2KHR: Invalid commandBuffer "
4897                    "[VUID-vkCmdCopyBuffer2KHR-commandBuffer-parameter]");
4898         abort(); /* Intentionally fail so user can correct issue. */
4899     }
4900     disp->CmdCopyBuffer2KHR(commandBuffer, pCopyBufferInfo);
4901 }
4902 
CmdCopyImage2KHR(VkCommandBuffer commandBuffer,const VkCopyImageInfo2 * pCopyImageInfo)4903 VKAPI_ATTR void VKAPI_CALL CmdCopyImage2KHR(
4904     VkCommandBuffer                             commandBuffer,
4905     const VkCopyImageInfo2*                     pCopyImageInfo) {
4906     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4907     if (NULL == disp) {
4908         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4909                    "vkCmdCopyImage2KHR: Invalid commandBuffer "
4910                    "[VUID-vkCmdCopyImage2KHR-commandBuffer-parameter]");
4911         abort(); /* Intentionally fail so user can correct issue. */
4912     }
4913     disp->CmdCopyImage2KHR(commandBuffer, pCopyImageInfo);
4914 }
4915 
CmdCopyBufferToImage2KHR(VkCommandBuffer commandBuffer,const VkCopyBufferToImageInfo2 * pCopyBufferToImageInfo)4916 VKAPI_ATTR void VKAPI_CALL CmdCopyBufferToImage2KHR(
4917     VkCommandBuffer                             commandBuffer,
4918     const VkCopyBufferToImageInfo2*             pCopyBufferToImageInfo) {
4919     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4920     if (NULL == disp) {
4921         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4922                    "vkCmdCopyBufferToImage2KHR: Invalid commandBuffer "
4923                    "[VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-parameter]");
4924         abort(); /* Intentionally fail so user can correct issue. */
4925     }
4926     disp->CmdCopyBufferToImage2KHR(commandBuffer, pCopyBufferToImageInfo);
4927 }
4928 
CmdCopyImageToBuffer2KHR(VkCommandBuffer commandBuffer,const VkCopyImageToBufferInfo2 * pCopyImageToBufferInfo)4929 VKAPI_ATTR void VKAPI_CALL CmdCopyImageToBuffer2KHR(
4930     VkCommandBuffer                             commandBuffer,
4931     const VkCopyImageToBufferInfo2*             pCopyImageToBufferInfo) {
4932     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4933     if (NULL == disp) {
4934         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4935                    "vkCmdCopyImageToBuffer2KHR: Invalid commandBuffer "
4936                    "[VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-parameter]");
4937         abort(); /* Intentionally fail so user can correct issue. */
4938     }
4939     disp->CmdCopyImageToBuffer2KHR(commandBuffer, pCopyImageToBufferInfo);
4940 }
4941 
CmdBlitImage2KHR(VkCommandBuffer commandBuffer,const VkBlitImageInfo2 * pBlitImageInfo)4942 VKAPI_ATTR void VKAPI_CALL CmdBlitImage2KHR(
4943     VkCommandBuffer                             commandBuffer,
4944     const VkBlitImageInfo2*                     pBlitImageInfo) {
4945     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4946     if (NULL == disp) {
4947         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4948                    "vkCmdBlitImage2KHR: Invalid commandBuffer "
4949                    "[VUID-vkCmdBlitImage2KHR-commandBuffer-parameter]");
4950         abort(); /* Intentionally fail so user can correct issue. */
4951     }
4952     disp->CmdBlitImage2KHR(commandBuffer, pBlitImageInfo);
4953 }
4954 
CmdResolveImage2KHR(VkCommandBuffer commandBuffer,const VkResolveImageInfo2 * pResolveImageInfo)4955 VKAPI_ATTR void VKAPI_CALL CmdResolveImage2KHR(
4956     VkCommandBuffer                             commandBuffer,
4957     const VkResolveImageInfo2*                  pResolveImageInfo) {
4958     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4959     if (NULL == disp) {
4960         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4961                    "vkCmdResolveImage2KHR: Invalid commandBuffer "
4962                    "[VUID-vkCmdResolveImage2KHR-commandBuffer-parameter]");
4963         abort(); /* Intentionally fail so user can correct issue. */
4964     }
4965     disp->CmdResolveImage2KHR(commandBuffer, pResolveImageInfo);
4966 }
4967 
4968 
4969 // ---- VK_KHR_ray_tracing_maintenance1 extension trampoline/terminators
4970 
CmdTraceRaysIndirect2KHR(VkCommandBuffer commandBuffer,VkDeviceAddress indirectDeviceAddress)4971 VKAPI_ATTR void VKAPI_CALL CmdTraceRaysIndirect2KHR(
4972     VkCommandBuffer                             commandBuffer,
4973     VkDeviceAddress                             indirectDeviceAddress) {
4974     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
4975     if (NULL == disp) {
4976         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4977                    "vkCmdTraceRaysIndirect2KHR: Invalid commandBuffer "
4978                    "[VUID-vkCmdTraceRaysIndirect2KHR-commandBuffer-parameter]");
4979         abort(); /* Intentionally fail so user can correct issue. */
4980     }
4981     disp->CmdTraceRaysIndirect2KHR(commandBuffer, indirectDeviceAddress);
4982 }
4983 
4984 
4985 // ---- VK_KHR_maintenance4 extension trampoline/terminators
4986 
GetDeviceBufferMemoryRequirementsKHR(VkDevice device,const VkDeviceBufferMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)4987 VKAPI_ATTR void VKAPI_CALL GetDeviceBufferMemoryRequirementsKHR(
4988     VkDevice                                    device,
4989     const VkDeviceBufferMemoryRequirements*     pInfo,
4990     VkMemoryRequirements2*                      pMemoryRequirements) {
4991     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
4992     if (NULL == disp) {
4993         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
4994                    "vkGetDeviceBufferMemoryRequirementsKHR: Invalid device "
4995                    "[VUID-vkGetDeviceBufferMemoryRequirementsKHR-device-parameter]");
4996         abort(); /* Intentionally fail so user can correct issue. */
4997     }
4998     disp->GetDeviceBufferMemoryRequirementsKHR(device, pInfo, pMemoryRequirements);
4999 }
5000 
GetDeviceImageMemoryRequirementsKHR(VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,VkMemoryRequirements2 * pMemoryRequirements)5001 VKAPI_ATTR void VKAPI_CALL GetDeviceImageMemoryRequirementsKHR(
5002     VkDevice                                    device,
5003     const VkDeviceImageMemoryRequirements*      pInfo,
5004     VkMemoryRequirements2*                      pMemoryRequirements) {
5005     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5006     if (NULL == disp) {
5007         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5008                    "vkGetDeviceImageMemoryRequirementsKHR: Invalid device "
5009                    "[VUID-vkGetDeviceImageMemoryRequirementsKHR-device-parameter]");
5010         abort(); /* Intentionally fail so user can correct issue. */
5011     }
5012     disp->GetDeviceImageMemoryRequirementsKHR(device, pInfo, pMemoryRequirements);
5013 }
5014 
GetDeviceImageSparseMemoryRequirementsKHR(VkDevice device,const VkDeviceImageMemoryRequirements * pInfo,uint32_t * pSparseMemoryRequirementCount,VkSparseImageMemoryRequirements2 * pSparseMemoryRequirements)5015 VKAPI_ATTR void VKAPI_CALL GetDeviceImageSparseMemoryRequirementsKHR(
5016     VkDevice                                    device,
5017     const VkDeviceImageMemoryRequirements*      pInfo,
5018     uint32_t*                                   pSparseMemoryRequirementCount,
5019     VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements) {
5020     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5021     if (NULL == disp) {
5022         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5023                    "vkGetDeviceImageSparseMemoryRequirementsKHR: Invalid device "
5024                    "[VUID-vkGetDeviceImageSparseMemoryRequirementsKHR-device-parameter]");
5025         abort(); /* Intentionally fail so user can correct issue. */
5026     }
5027     disp->GetDeviceImageSparseMemoryRequirementsKHR(device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements);
5028 }
5029 
5030 
5031 // ---- VK_KHR_maintenance5 extension trampoline/terminators
5032 
CmdBindIndexBuffer2KHR(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkDeviceSize size,VkIndexType indexType)5033 VKAPI_ATTR void VKAPI_CALL CmdBindIndexBuffer2KHR(
5034     VkCommandBuffer                             commandBuffer,
5035     VkBuffer                                    buffer,
5036     VkDeviceSize                                offset,
5037     VkDeviceSize                                size,
5038     VkIndexType                                 indexType) {
5039     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5040     if (NULL == disp) {
5041         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5042                    "vkCmdBindIndexBuffer2KHR: Invalid commandBuffer "
5043                    "[VUID-vkCmdBindIndexBuffer2KHR-commandBuffer-parameter]");
5044         abort(); /* Intentionally fail so user can correct issue. */
5045     }
5046     disp->CmdBindIndexBuffer2KHR(commandBuffer, buffer, offset, size, indexType);
5047 }
5048 
GetRenderingAreaGranularityKHR(VkDevice device,const VkRenderingAreaInfo * pRenderingAreaInfo,VkExtent2D * pGranularity)5049 VKAPI_ATTR void VKAPI_CALL GetRenderingAreaGranularityKHR(
5050     VkDevice                                    device,
5051     const VkRenderingAreaInfo*                  pRenderingAreaInfo,
5052     VkExtent2D*                                 pGranularity) {
5053     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5054     if (NULL == disp) {
5055         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5056                    "vkGetRenderingAreaGranularityKHR: Invalid device "
5057                    "[VUID-vkGetRenderingAreaGranularityKHR-device-parameter]");
5058         abort(); /* Intentionally fail so user can correct issue. */
5059     }
5060     disp->GetRenderingAreaGranularityKHR(device, pRenderingAreaInfo, pGranularity);
5061 }
5062 
GetDeviceImageSubresourceLayoutKHR(VkDevice device,const VkDeviceImageSubresourceInfo * pInfo,VkSubresourceLayout2 * pLayout)5063 VKAPI_ATTR void VKAPI_CALL GetDeviceImageSubresourceLayoutKHR(
5064     VkDevice                                    device,
5065     const VkDeviceImageSubresourceInfo*         pInfo,
5066     VkSubresourceLayout2*                       pLayout) {
5067     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5068     if (NULL == disp) {
5069         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5070                    "vkGetDeviceImageSubresourceLayoutKHR: Invalid device "
5071                    "[VUID-vkGetDeviceImageSubresourceLayoutKHR-device-parameter]");
5072         abort(); /* Intentionally fail so user can correct issue. */
5073     }
5074     disp->GetDeviceImageSubresourceLayoutKHR(device, pInfo, pLayout);
5075 }
5076 
GetImageSubresourceLayout2KHR(VkDevice device,VkImage image,const VkImageSubresource2 * pSubresource,VkSubresourceLayout2 * pLayout)5077 VKAPI_ATTR void VKAPI_CALL GetImageSubresourceLayout2KHR(
5078     VkDevice                                    device,
5079     VkImage                                     image,
5080     const VkImageSubresource2*                  pSubresource,
5081     VkSubresourceLayout2*                       pLayout) {
5082     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5083     if (NULL == disp) {
5084         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5085                    "vkGetImageSubresourceLayout2KHR: Invalid device "
5086                    "[VUID-vkGetImageSubresourceLayout2KHR-device-parameter]");
5087         abort(); /* Intentionally fail so user can correct issue. */
5088     }
5089     disp->GetImageSubresourceLayout2KHR(device, image, pSubresource, pLayout);
5090 }
5091 
5092 
5093 // ---- VK_KHR_pipeline_binary extension trampoline/terminators
5094 
CreatePipelineBinariesKHR(VkDevice device,const VkPipelineBinaryCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPipelineBinaryHandlesInfoKHR * pBinaries)5095 VKAPI_ATTR VkResult VKAPI_CALL CreatePipelineBinariesKHR(
5096     VkDevice                                    device,
5097     const VkPipelineBinaryCreateInfoKHR*        pCreateInfo,
5098     const VkAllocationCallbacks*                pAllocator,
5099     VkPipelineBinaryHandlesInfoKHR*             pBinaries) {
5100     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5101     if (NULL == disp) {
5102         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5103                    "vkCreatePipelineBinariesKHR: Invalid device "
5104                    "[VUID-vkCreatePipelineBinariesKHR-device-parameter]");
5105         abort(); /* Intentionally fail so user can correct issue. */
5106     }
5107     return disp->CreatePipelineBinariesKHR(device, pCreateInfo, pAllocator, pBinaries);
5108 }
5109 
DestroyPipelineBinaryKHR(VkDevice device,VkPipelineBinaryKHR pipelineBinary,const VkAllocationCallbacks * pAllocator)5110 VKAPI_ATTR void VKAPI_CALL DestroyPipelineBinaryKHR(
5111     VkDevice                                    device,
5112     VkPipelineBinaryKHR                         pipelineBinary,
5113     const VkAllocationCallbacks*                pAllocator) {
5114     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5115     if (NULL == disp) {
5116         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5117                    "vkDestroyPipelineBinaryKHR: Invalid device "
5118                    "[VUID-vkDestroyPipelineBinaryKHR-device-parameter]");
5119         abort(); /* Intentionally fail so user can correct issue. */
5120     }
5121     disp->DestroyPipelineBinaryKHR(device, pipelineBinary, pAllocator);
5122 }
5123 
GetPipelineKeyKHR(VkDevice device,const VkPipelineCreateInfoKHR * pPipelineCreateInfo,VkPipelineBinaryKeyKHR * pPipelineKey)5124 VKAPI_ATTR VkResult VKAPI_CALL GetPipelineKeyKHR(
5125     VkDevice                                    device,
5126     const VkPipelineCreateInfoKHR*              pPipelineCreateInfo,
5127     VkPipelineBinaryKeyKHR*                     pPipelineKey) {
5128     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5129     if (NULL == disp) {
5130         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5131                    "vkGetPipelineKeyKHR: Invalid device "
5132                    "[VUID-vkGetPipelineKeyKHR-device-parameter]");
5133         abort(); /* Intentionally fail so user can correct issue. */
5134     }
5135     return disp->GetPipelineKeyKHR(device, pPipelineCreateInfo, pPipelineKey);
5136 }
5137 
GetPipelineBinaryDataKHR(VkDevice device,const VkPipelineBinaryDataInfoKHR * pInfo,VkPipelineBinaryKeyKHR * pPipelineBinaryKey,size_t * pPipelineBinaryDataSize,void * pPipelineBinaryData)5138 VKAPI_ATTR VkResult VKAPI_CALL GetPipelineBinaryDataKHR(
5139     VkDevice                                    device,
5140     const VkPipelineBinaryDataInfoKHR*          pInfo,
5141     VkPipelineBinaryKeyKHR*                     pPipelineBinaryKey,
5142     size_t*                                     pPipelineBinaryDataSize,
5143     void*                                       pPipelineBinaryData) {
5144     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5145     if (NULL == disp) {
5146         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5147                    "vkGetPipelineBinaryDataKHR: Invalid device "
5148                    "[VUID-vkGetPipelineBinaryDataKHR-device-parameter]");
5149         abort(); /* Intentionally fail so user can correct issue. */
5150     }
5151     return disp->GetPipelineBinaryDataKHR(device, pInfo, pPipelineBinaryKey, pPipelineBinaryDataSize, pPipelineBinaryData);
5152 }
5153 
ReleaseCapturedPipelineDataKHR(VkDevice device,const VkReleaseCapturedPipelineDataInfoKHR * pInfo,const VkAllocationCallbacks * pAllocator)5154 VKAPI_ATTR VkResult VKAPI_CALL ReleaseCapturedPipelineDataKHR(
5155     VkDevice                                    device,
5156     const VkReleaseCapturedPipelineDataInfoKHR* pInfo,
5157     const VkAllocationCallbacks*                pAllocator) {
5158     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5159     if (NULL == disp) {
5160         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5161                    "vkReleaseCapturedPipelineDataKHR: Invalid device "
5162                    "[VUID-vkReleaseCapturedPipelineDataKHR-device-parameter]");
5163         abort(); /* Intentionally fail so user can correct issue. */
5164     }
5165     return disp->ReleaseCapturedPipelineDataKHR(device, pInfo, pAllocator);
5166 }
5167 
5168 
5169 // ---- VK_KHR_cooperative_matrix extension trampoline/terminators
5170 
GetPhysicalDeviceCooperativeMatrixPropertiesKHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkCooperativeMatrixPropertiesKHR * pProperties)5171 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixPropertiesKHR(
5172     VkPhysicalDevice                            physicalDevice,
5173     uint32_t*                                   pPropertyCount,
5174     VkCooperativeMatrixPropertiesKHR*           pProperties) {
5175     const VkLayerInstanceDispatchTable *disp;
5176     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
5177     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
5178         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5179                    "vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR: Invalid physicalDevice "
5180                    "[VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR-physicalDevice-parameter]");
5181         abort(); /* Intentionally fail so user can correct issue. */
5182     }
5183     disp = loader_get_instance_layer_dispatch(physicalDevice);
5184     return disp->GetPhysicalDeviceCooperativeMatrixPropertiesKHR(unwrapped_phys_dev, pPropertyCount, pProperties);
5185 }
5186 
terminator_GetPhysicalDeviceCooperativeMatrixPropertiesKHR(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkCooperativeMatrixPropertiesKHR * pProperties)5187 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceCooperativeMatrixPropertiesKHR(
5188     VkPhysicalDevice                            physicalDevice,
5189     uint32_t*                                   pPropertyCount,
5190     VkCooperativeMatrixPropertiesKHR*           pProperties) {
5191     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
5192     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
5193     if (NULL == icd_term->dispatch.GetPhysicalDeviceCooperativeMatrixPropertiesKHR) {
5194         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
5195                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceCooperativeMatrixPropertiesKHR");
5196         abort(); /* Intentionally fail so user can correct issue. */
5197     }
5198     return icd_term->dispatch.GetPhysicalDeviceCooperativeMatrixPropertiesKHR(phys_dev_term->phys_dev, pPropertyCount, pProperties);
5199 }
5200 
5201 
5202 // ---- VK_KHR_line_rasterization extension trampoline/terminators
5203 
CmdSetLineStippleKHR(VkCommandBuffer commandBuffer,uint32_t lineStippleFactor,uint16_t lineStipplePattern)5204 VKAPI_ATTR void VKAPI_CALL CmdSetLineStippleKHR(
5205     VkCommandBuffer                             commandBuffer,
5206     uint32_t                                    lineStippleFactor,
5207     uint16_t                                    lineStipplePattern) {
5208     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5209     if (NULL == disp) {
5210         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5211                    "vkCmdSetLineStippleKHR: Invalid commandBuffer "
5212                    "[VUID-vkCmdSetLineStippleKHR-commandBuffer-parameter]");
5213         abort(); /* Intentionally fail so user can correct issue. */
5214     }
5215     disp->CmdSetLineStippleKHR(commandBuffer, lineStippleFactor, lineStipplePattern);
5216 }
5217 
5218 
5219 // ---- VK_KHR_calibrated_timestamps extension trampoline/terminators
5220 
GetPhysicalDeviceCalibrateableTimeDomainsKHR(VkPhysicalDevice physicalDevice,uint32_t * pTimeDomainCount,VkTimeDomainKHR * pTimeDomains)5221 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCalibrateableTimeDomainsKHR(
5222     VkPhysicalDevice                            physicalDevice,
5223     uint32_t*                                   pTimeDomainCount,
5224     VkTimeDomainKHR*                            pTimeDomains) {
5225     const VkLayerInstanceDispatchTable *disp;
5226     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
5227     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
5228         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5229                    "vkGetPhysicalDeviceCalibrateableTimeDomainsKHR: Invalid physicalDevice "
5230                    "[VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsKHR-physicalDevice-parameter]");
5231         abort(); /* Intentionally fail so user can correct issue. */
5232     }
5233     disp = loader_get_instance_layer_dispatch(physicalDevice);
5234     return disp->GetPhysicalDeviceCalibrateableTimeDomainsKHR(unwrapped_phys_dev, pTimeDomainCount, pTimeDomains);
5235 }
5236 
terminator_GetPhysicalDeviceCalibrateableTimeDomainsKHR(VkPhysicalDevice physicalDevice,uint32_t * pTimeDomainCount,VkTimeDomainKHR * pTimeDomains)5237 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceCalibrateableTimeDomainsKHR(
5238     VkPhysicalDevice                            physicalDevice,
5239     uint32_t*                                   pTimeDomainCount,
5240     VkTimeDomainKHR*                            pTimeDomains) {
5241     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
5242     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
5243     if (NULL == icd_term->dispatch.GetPhysicalDeviceCalibrateableTimeDomainsKHR) {
5244         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
5245                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceCalibrateableTimeDomainsKHR");
5246         abort(); /* Intentionally fail so user can correct issue. */
5247     }
5248     return icd_term->dispatch.GetPhysicalDeviceCalibrateableTimeDomainsKHR(phys_dev_term->phys_dev, pTimeDomainCount, pTimeDomains);
5249 }
5250 
GetCalibratedTimestampsKHR(VkDevice device,uint32_t timestampCount,const VkCalibratedTimestampInfoKHR * pTimestampInfos,uint64_t * pTimestamps,uint64_t * pMaxDeviation)5251 VKAPI_ATTR VkResult VKAPI_CALL GetCalibratedTimestampsKHR(
5252     VkDevice                                    device,
5253     uint32_t                                    timestampCount,
5254     const VkCalibratedTimestampInfoKHR*         pTimestampInfos,
5255     uint64_t*                                   pTimestamps,
5256     uint64_t*                                   pMaxDeviation) {
5257     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5258     if (NULL == disp) {
5259         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5260                    "vkGetCalibratedTimestampsKHR: Invalid device "
5261                    "[VUID-vkGetCalibratedTimestampsKHR-device-parameter]");
5262         abort(); /* Intentionally fail so user can correct issue. */
5263     }
5264     return disp->GetCalibratedTimestampsKHR(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation);
5265 }
5266 
5267 
5268 // ---- VK_KHR_maintenance6 extension trampoline/terminators
5269 
CmdBindDescriptorSets2KHR(VkCommandBuffer commandBuffer,const VkBindDescriptorSetsInfo * pBindDescriptorSetsInfo)5270 VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorSets2KHR(
5271     VkCommandBuffer                             commandBuffer,
5272     const VkBindDescriptorSetsInfo*             pBindDescriptorSetsInfo) {
5273     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5274     if (NULL == disp) {
5275         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5276                    "vkCmdBindDescriptorSets2KHR: Invalid commandBuffer "
5277                    "[VUID-vkCmdBindDescriptorSets2KHR-commandBuffer-parameter]");
5278         abort(); /* Intentionally fail so user can correct issue. */
5279     }
5280     disp->CmdBindDescriptorSets2KHR(commandBuffer, pBindDescriptorSetsInfo);
5281 }
5282 
CmdPushConstants2KHR(VkCommandBuffer commandBuffer,const VkPushConstantsInfo * pPushConstantsInfo)5283 VKAPI_ATTR void VKAPI_CALL CmdPushConstants2KHR(
5284     VkCommandBuffer                             commandBuffer,
5285     const VkPushConstantsInfo*                  pPushConstantsInfo) {
5286     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5287     if (NULL == disp) {
5288         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5289                    "vkCmdPushConstants2KHR: Invalid commandBuffer "
5290                    "[VUID-vkCmdPushConstants2KHR-commandBuffer-parameter]");
5291         abort(); /* Intentionally fail so user can correct issue. */
5292     }
5293     disp->CmdPushConstants2KHR(commandBuffer, pPushConstantsInfo);
5294 }
5295 
CmdPushDescriptorSet2KHR(VkCommandBuffer commandBuffer,const VkPushDescriptorSetInfo * pPushDescriptorSetInfo)5296 VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSet2KHR(
5297     VkCommandBuffer                             commandBuffer,
5298     const VkPushDescriptorSetInfo*              pPushDescriptorSetInfo) {
5299     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5300     if (NULL == disp) {
5301         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5302                    "vkCmdPushDescriptorSet2KHR: Invalid commandBuffer "
5303                    "[VUID-vkCmdPushDescriptorSet2KHR-commandBuffer-parameter]");
5304         abort(); /* Intentionally fail so user can correct issue. */
5305     }
5306     disp->CmdPushDescriptorSet2KHR(commandBuffer, pPushDescriptorSetInfo);
5307 }
5308 
CmdPushDescriptorSetWithTemplate2KHR(VkCommandBuffer commandBuffer,const VkPushDescriptorSetWithTemplateInfo * pPushDescriptorSetWithTemplateInfo)5309 VKAPI_ATTR void VKAPI_CALL CmdPushDescriptorSetWithTemplate2KHR(
5310     VkCommandBuffer                             commandBuffer,
5311     const VkPushDescriptorSetWithTemplateInfo*  pPushDescriptorSetWithTemplateInfo) {
5312     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5313     if (NULL == disp) {
5314         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5315                    "vkCmdPushDescriptorSetWithTemplate2KHR: Invalid commandBuffer "
5316                    "[VUID-vkCmdPushDescriptorSetWithTemplate2KHR-commandBuffer-parameter]");
5317         abort(); /* Intentionally fail so user can correct issue. */
5318     }
5319     disp->CmdPushDescriptorSetWithTemplate2KHR(commandBuffer, pPushDescriptorSetWithTemplateInfo);
5320 }
5321 
CmdSetDescriptorBufferOffsets2EXT(VkCommandBuffer commandBuffer,const VkSetDescriptorBufferOffsetsInfoEXT * pSetDescriptorBufferOffsetsInfo)5322 VKAPI_ATTR void VKAPI_CALL CmdSetDescriptorBufferOffsets2EXT(
5323     VkCommandBuffer                             commandBuffer,
5324     const VkSetDescriptorBufferOffsetsInfoEXT*  pSetDescriptorBufferOffsetsInfo) {
5325     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5326     if (NULL == disp) {
5327         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5328                    "vkCmdSetDescriptorBufferOffsets2EXT: Invalid commandBuffer "
5329                    "[VUID-vkCmdSetDescriptorBufferOffsets2EXT-commandBuffer-parameter]");
5330         abort(); /* Intentionally fail so user can correct issue. */
5331     }
5332     disp->CmdSetDescriptorBufferOffsets2EXT(commandBuffer, pSetDescriptorBufferOffsetsInfo);
5333 }
5334 
CmdBindDescriptorBufferEmbeddedSamplers2EXT(VkCommandBuffer commandBuffer,const VkBindDescriptorBufferEmbeddedSamplersInfoEXT * pBindDescriptorBufferEmbeddedSamplersInfo)5335 VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorBufferEmbeddedSamplers2EXT(
5336     VkCommandBuffer                             commandBuffer,
5337     const VkBindDescriptorBufferEmbeddedSamplersInfoEXT* pBindDescriptorBufferEmbeddedSamplersInfo) {
5338     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5339     if (NULL == disp) {
5340         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5341                    "vkCmdBindDescriptorBufferEmbeddedSamplers2EXT: Invalid commandBuffer "
5342                    "[VUID-vkCmdBindDescriptorBufferEmbeddedSamplers2EXT-commandBuffer-parameter]");
5343         abort(); /* Intentionally fail so user can correct issue. */
5344     }
5345     disp->CmdBindDescriptorBufferEmbeddedSamplers2EXT(commandBuffer, pBindDescriptorBufferEmbeddedSamplersInfo);
5346 }
5347 
5348 
5349 // ---- VK_EXT_debug_marker extension trampoline/terminators
5350 
DebugMarkerSetObjectTagEXT(VkDevice device,const VkDebugMarkerObjectTagInfoEXT * pTagInfo)5351 VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectTagEXT(
5352     VkDevice                                    device,
5353     const VkDebugMarkerObjectTagInfoEXT*        pTagInfo) {
5354     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5355     if (NULL == disp) {
5356         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5357                    "vkDebugMarkerSetObjectTagEXT: Invalid device "
5358                    "[VUID-vkDebugMarkerSetObjectTagEXT-device-parameter]");
5359         abort(); /* Intentionally fail so user can correct issue. */
5360     }
5361     VkDebugMarkerObjectTagInfoEXT local_tag_info;
5362     memcpy(&local_tag_info, pTagInfo, sizeof(VkDebugMarkerObjectTagInfoEXT));
5363     // If this is a physical device, we have to replace it with the proper one for the next call.
5364     if (pTagInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT) {
5365         struct loader_physical_device_tramp *phys_dev_tramp = (struct loader_physical_device_tramp *)(uintptr_t)pTagInfo->object;
5366         local_tag_info.object = (uint64_t)(uintptr_t)phys_dev_tramp->phys_dev;
5367     }
5368     if (pTagInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT) {
5369         struct loader_instance* instance = (struct loader_instance *)(uintptr_t)pTagInfo->object;
5370         local_tag_info.object = (uint64_t)(uintptr_t)instance->instance;
5371     }
5372     return disp->DebugMarkerSetObjectTagEXT(device, &local_tag_info);
5373 }
5374 
terminator_DebugMarkerSetObjectTagEXT(VkDevice device,const VkDebugMarkerObjectTagInfoEXT * pTagInfo)5375 VKAPI_ATTR VkResult VKAPI_CALL terminator_DebugMarkerSetObjectTagEXT(
5376     VkDevice                                    device,
5377     const VkDebugMarkerObjectTagInfoEXT*        pTagInfo) {
5378     struct loader_device *dev;
5379     struct loader_icd_term *icd_term = loader_get_icd_and_device(device, &dev);
5380     if (NULL == icd_term || NULL == dev) {
5381         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "DebugMarkerSetObjectTagEXT: Invalid device handle");
5382         abort(); /* Intentionally fail so user can correct issue. */
5383     }
5384     VkDebugMarkerObjectTagInfoEXT local_tag_info;
5385     memcpy(&local_tag_info, pTagInfo, sizeof(VkDebugMarkerObjectTagInfoEXT));
5386     // If this is a physical device, we have to replace it with the proper one for the next call.
5387     if (pTagInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT) {
5388         struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)(uintptr_t)pTagInfo->object;
5389         local_tag_info.object = (uint64_t)(uintptr_t)phys_dev_term->phys_dev;
5390     // 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.
5391     } else if (pTagInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT) {
5392         if (NULL != dev && NULL != dev->loader_dispatch.core_dispatch.CreateSwapchainKHR) {
5393             VkIcdSurface *icd_surface = (VkIcdSurface *)(uintptr_t)pTagInfo->object;
5394             if (NULL != icd_term->surface_list.list && icd_term->surface_list.capacity > icd_surface->surface_index * sizeof(VkSurfaceKHR)
5395                 && icd_term->surface_list.list[icd_surface->surface_index]) {
5396                 local_tag_info.object = (uint64_t)icd_term->surface_list.list[icd_surface->surface_index];
5397             }
5398         }
5399     // If this is an instance we have to replace it with the proper one for the next call.
5400     } else if (pTagInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT) {
5401         local_tag_info.object = (uint64_t)(uintptr_t)icd_term->instance;
5402     }
5403     // Exit early if the driver does not support the function - this can happen as a layer or the loader itself supports
5404     // debug utils but the driver does not.
5405     if (NULL == dev->loader_dispatch.extension_terminator_dispatch.DebugMarkerSetObjectTagEXT)
5406         return VK_SUCCESS;
5407     return dev->loader_dispatch.extension_terminator_dispatch.DebugMarkerSetObjectTagEXT(device, &local_tag_info);
5408 }
5409 
DebugMarkerSetObjectNameEXT(VkDevice device,const VkDebugMarkerObjectNameInfoEXT * pNameInfo)5410 VKAPI_ATTR VkResult VKAPI_CALL DebugMarkerSetObjectNameEXT(
5411     VkDevice                                    device,
5412     const VkDebugMarkerObjectNameInfoEXT*       pNameInfo) {
5413     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5414     if (NULL == disp) {
5415         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5416                    "vkDebugMarkerSetObjectNameEXT: Invalid device "
5417                    "[VUID-vkDebugMarkerSetObjectNameEXT-device-parameter]");
5418         abort(); /* Intentionally fail so user can correct issue. */
5419     }
5420     VkDebugMarkerObjectNameInfoEXT local_name_info;
5421     memcpy(&local_name_info, pNameInfo, sizeof(VkDebugMarkerObjectNameInfoEXT));
5422     // If this is a physical device, we have to replace it with the proper one for the next call.
5423     if (pNameInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT) {
5424         struct loader_physical_device_tramp *phys_dev_tramp = (struct loader_physical_device_tramp *)(uintptr_t)pNameInfo->object;
5425         local_name_info.object = (uint64_t)(uintptr_t)phys_dev_tramp->phys_dev;
5426     }
5427     if (pNameInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT) {
5428         struct loader_instance* instance = (struct loader_instance *)(uintptr_t)pNameInfo->object;
5429         local_name_info.object = (uint64_t)(uintptr_t)instance->instance;
5430     }
5431     return disp->DebugMarkerSetObjectNameEXT(device, &local_name_info);
5432 }
5433 
terminator_DebugMarkerSetObjectNameEXT(VkDevice device,const VkDebugMarkerObjectNameInfoEXT * pNameInfo)5434 VKAPI_ATTR VkResult VKAPI_CALL terminator_DebugMarkerSetObjectNameEXT(
5435     VkDevice                                    device,
5436     const VkDebugMarkerObjectNameInfoEXT*       pNameInfo) {
5437     struct loader_device *dev;
5438     struct loader_icd_term *icd_term = loader_get_icd_and_device(device, &dev);
5439     if (NULL == icd_term || NULL == dev) {
5440         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "DebugMarkerSetObjectNameEXT: Invalid device handle");
5441         abort(); /* Intentionally fail so user can correct issue. */
5442     }
5443     VkDebugMarkerObjectNameInfoEXT local_name_info;
5444     memcpy(&local_name_info, pNameInfo, sizeof(VkDebugMarkerObjectNameInfoEXT));
5445     // If this is a physical device, we have to replace it with the proper one for the next call.
5446     if (pNameInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT) {
5447         struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)(uintptr_t)pNameInfo->object;
5448         local_name_info.object = (uint64_t)(uintptr_t)phys_dev_term->phys_dev;
5449     // 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.
5450     } else if (pNameInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT) {
5451         if (NULL != dev && NULL != dev->loader_dispatch.core_dispatch.CreateSwapchainKHR) {
5452             VkIcdSurface *icd_surface = (VkIcdSurface *)(uintptr_t)pNameInfo->object;
5453             if (NULL != icd_term->surface_list.list && icd_term->surface_list.capacity > icd_surface->surface_index * sizeof(VkSurfaceKHR)
5454                 && icd_term->surface_list.list[icd_surface->surface_index]) {
5455                 local_name_info.object = (uint64_t)icd_term->surface_list.list[icd_surface->surface_index];
5456             }
5457         }
5458     // If this is an instance we have to replace it with the proper one for the next call.
5459     } else if (pNameInfo->objectType == VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT) {
5460         local_name_info.object = (uint64_t)(uintptr_t)icd_term->instance;
5461     }
5462     // Exit early if the driver does not support the function - this can happen as a layer or the loader itself supports
5463     // debug utils but the driver does not.
5464     if (NULL == dev->loader_dispatch.extension_terminator_dispatch.DebugMarkerSetObjectNameEXT)
5465         return VK_SUCCESS;
5466     return dev->loader_dispatch.extension_terminator_dispatch.DebugMarkerSetObjectNameEXT(device, &local_name_info);
5467 }
5468 
CmdDebugMarkerBeginEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)5469 VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerBeginEXT(
5470     VkCommandBuffer                             commandBuffer,
5471     const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo) {
5472     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5473     if (NULL == disp) {
5474         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5475                    "vkCmdDebugMarkerBeginEXT: Invalid commandBuffer "
5476                    "[VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-parameter]");
5477         abort(); /* Intentionally fail so user can correct issue. */
5478     }
5479     disp->CmdDebugMarkerBeginEXT(commandBuffer, pMarkerInfo);
5480 }
5481 
CmdDebugMarkerEndEXT(VkCommandBuffer commandBuffer)5482 VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerEndEXT(
5483     VkCommandBuffer                             commandBuffer) {
5484     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5485     if (NULL == disp) {
5486         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5487                    "vkCmdDebugMarkerEndEXT: Invalid commandBuffer "
5488                    "[VUID-vkCmdDebugMarkerEndEXT-commandBuffer-parameter]");
5489         abort(); /* Intentionally fail so user can correct issue. */
5490     }
5491     disp->CmdDebugMarkerEndEXT(commandBuffer);
5492 }
5493 
CmdDebugMarkerInsertEXT(VkCommandBuffer commandBuffer,const VkDebugMarkerMarkerInfoEXT * pMarkerInfo)5494 VKAPI_ATTR void VKAPI_CALL CmdDebugMarkerInsertEXT(
5495     VkCommandBuffer                             commandBuffer,
5496     const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo) {
5497     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5498     if (NULL == disp) {
5499         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5500                    "vkCmdDebugMarkerInsertEXT: Invalid commandBuffer "
5501                    "[VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-parameter]");
5502         abort(); /* Intentionally fail so user can correct issue. */
5503     }
5504     disp->CmdDebugMarkerInsertEXT(commandBuffer, pMarkerInfo);
5505 }
5506 
5507 
5508 // ---- VK_EXT_transform_feedback extension trampoline/terminators
5509 
CmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes)5510 VKAPI_ATTR void VKAPI_CALL CmdBindTransformFeedbackBuffersEXT(
5511     VkCommandBuffer                             commandBuffer,
5512     uint32_t                                    firstBinding,
5513     uint32_t                                    bindingCount,
5514     const VkBuffer*                             pBuffers,
5515     const VkDeviceSize*                         pOffsets,
5516     const VkDeviceSize*                         pSizes) {
5517     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5518     if (NULL == disp) {
5519         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5520                    "vkCmdBindTransformFeedbackBuffersEXT: Invalid commandBuffer "
5521                    "[VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-parameter]");
5522         abort(); /* Intentionally fail so user can correct issue. */
5523     }
5524     disp->CmdBindTransformFeedbackBuffersEXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes);
5525 }
5526 
CmdBeginTransformFeedbackEXT(VkCommandBuffer commandBuffer,uint32_t firstCounterBuffer,uint32_t counterBufferCount,const VkBuffer * pCounterBuffers,const VkDeviceSize * pCounterBufferOffsets)5527 VKAPI_ATTR void VKAPI_CALL CmdBeginTransformFeedbackEXT(
5528     VkCommandBuffer                             commandBuffer,
5529     uint32_t                                    firstCounterBuffer,
5530     uint32_t                                    counterBufferCount,
5531     const VkBuffer*                             pCounterBuffers,
5532     const VkDeviceSize*                         pCounterBufferOffsets) {
5533     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5534     if (NULL == disp) {
5535         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5536                    "vkCmdBeginTransformFeedbackEXT: Invalid commandBuffer "
5537                    "[VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-parameter]");
5538         abort(); /* Intentionally fail so user can correct issue. */
5539     }
5540     disp->CmdBeginTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets);
5541 }
5542 
CmdEndTransformFeedbackEXT(VkCommandBuffer commandBuffer,uint32_t firstCounterBuffer,uint32_t counterBufferCount,const VkBuffer * pCounterBuffers,const VkDeviceSize * pCounterBufferOffsets)5543 VKAPI_ATTR void VKAPI_CALL CmdEndTransformFeedbackEXT(
5544     VkCommandBuffer                             commandBuffer,
5545     uint32_t                                    firstCounterBuffer,
5546     uint32_t                                    counterBufferCount,
5547     const VkBuffer*                             pCounterBuffers,
5548     const VkDeviceSize*                         pCounterBufferOffsets) {
5549     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5550     if (NULL == disp) {
5551         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5552                    "vkCmdEndTransformFeedbackEXT: Invalid commandBuffer "
5553                    "[VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter]");
5554         abort(); /* Intentionally fail so user can correct issue. */
5555     }
5556     disp->CmdEndTransformFeedbackEXT(commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets);
5557 }
5558 
CmdBeginQueryIndexedEXT(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,VkQueryControlFlags flags,uint32_t index)5559 VKAPI_ATTR void VKAPI_CALL CmdBeginQueryIndexedEXT(
5560     VkCommandBuffer                             commandBuffer,
5561     VkQueryPool                                 queryPool,
5562     uint32_t                                    query,
5563     VkQueryControlFlags                         flags,
5564     uint32_t                                    index) {
5565     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5566     if (NULL == disp) {
5567         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5568                    "vkCmdBeginQueryIndexedEXT: Invalid commandBuffer "
5569                    "[VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter]");
5570         abort(); /* Intentionally fail so user can correct issue. */
5571     }
5572     disp->CmdBeginQueryIndexedEXT(commandBuffer, queryPool, query, flags, index);
5573 }
5574 
CmdEndQueryIndexedEXT(VkCommandBuffer commandBuffer,VkQueryPool queryPool,uint32_t query,uint32_t index)5575 VKAPI_ATTR void VKAPI_CALL CmdEndQueryIndexedEXT(
5576     VkCommandBuffer                             commandBuffer,
5577     VkQueryPool                                 queryPool,
5578     uint32_t                                    query,
5579     uint32_t                                    index) {
5580     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5581     if (NULL == disp) {
5582         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5583                    "vkCmdEndQueryIndexedEXT: Invalid commandBuffer "
5584                    "[VUID-vkCmdEndQueryIndexedEXT-commandBuffer-parameter]");
5585         abort(); /* Intentionally fail so user can correct issue. */
5586     }
5587     disp->CmdEndQueryIndexedEXT(commandBuffer, queryPool, query, index);
5588 }
5589 
CmdDrawIndirectByteCountEXT(VkCommandBuffer commandBuffer,uint32_t instanceCount,uint32_t firstInstance,VkBuffer counterBuffer,VkDeviceSize counterBufferOffset,uint32_t counterOffset,uint32_t vertexStride)5590 VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectByteCountEXT(
5591     VkCommandBuffer                             commandBuffer,
5592     uint32_t                                    instanceCount,
5593     uint32_t                                    firstInstance,
5594     VkBuffer                                    counterBuffer,
5595     VkDeviceSize                                counterBufferOffset,
5596     uint32_t                                    counterOffset,
5597     uint32_t                                    vertexStride) {
5598     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5599     if (NULL == disp) {
5600         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5601                    "vkCmdDrawIndirectByteCountEXT: Invalid commandBuffer "
5602                    "[VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter]");
5603         abort(); /* Intentionally fail so user can correct issue. */
5604     }
5605     disp->CmdDrawIndirectByteCountEXT(commandBuffer, instanceCount, firstInstance, counterBuffer, counterBufferOffset, counterOffset, vertexStride);
5606 }
5607 
5608 
5609 // ---- VK_NVX_binary_import extension trampoline/terminators
5610 
CreateCuModuleNVX(VkDevice device,const VkCuModuleCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCuModuleNVX * pModule)5611 VKAPI_ATTR VkResult VKAPI_CALL CreateCuModuleNVX(
5612     VkDevice                                    device,
5613     const VkCuModuleCreateInfoNVX*              pCreateInfo,
5614     const VkAllocationCallbacks*                pAllocator,
5615     VkCuModuleNVX*                              pModule) {
5616     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5617     if (NULL == disp) {
5618         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5619                    "vkCreateCuModuleNVX: Invalid device "
5620                    "[VUID-vkCreateCuModuleNVX-device-parameter]");
5621         abort(); /* Intentionally fail so user can correct issue. */
5622     }
5623     return disp->CreateCuModuleNVX(device, pCreateInfo, pAllocator, pModule);
5624 }
5625 
CreateCuFunctionNVX(VkDevice device,const VkCuFunctionCreateInfoNVX * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCuFunctionNVX * pFunction)5626 VKAPI_ATTR VkResult VKAPI_CALL CreateCuFunctionNVX(
5627     VkDevice                                    device,
5628     const VkCuFunctionCreateInfoNVX*            pCreateInfo,
5629     const VkAllocationCallbacks*                pAllocator,
5630     VkCuFunctionNVX*                            pFunction) {
5631     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5632     if (NULL == disp) {
5633         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5634                    "vkCreateCuFunctionNVX: Invalid device "
5635                    "[VUID-vkCreateCuFunctionNVX-device-parameter]");
5636         abort(); /* Intentionally fail so user can correct issue. */
5637     }
5638     return disp->CreateCuFunctionNVX(device, pCreateInfo, pAllocator, pFunction);
5639 }
5640 
DestroyCuModuleNVX(VkDevice device,VkCuModuleNVX module,const VkAllocationCallbacks * pAllocator)5641 VKAPI_ATTR void VKAPI_CALL DestroyCuModuleNVX(
5642     VkDevice                                    device,
5643     VkCuModuleNVX                               module,
5644     const VkAllocationCallbacks*                pAllocator) {
5645     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5646     if (NULL == disp) {
5647         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5648                    "vkDestroyCuModuleNVX: Invalid device "
5649                    "[VUID-vkDestroyCuModuleNVX-device-parameter]");
5650         abort(); /* Intentionally fail so user can correct issue. */
5651     }
5652     disp->DestroyCuModuleNVX(device, module, pAllocator);
5653 }
5654 
DestroyCuFunctionNVX(VkDevice device,VkCuFunctionNVX function,const VkAllocationCallbacks * pAllocator)5655 VKAPI_ATTR void VKAPI_CALL DestroyCuFunctionNVX(
5656     VkDevice                                    device,
5657     VkCuFunctionNVX                             function,
5658     const VkAllocationCallbacks*                pAllocator) {
5659     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5660     if (NULL == disp) {
5661         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5662                    "vkDestroyCuFunctionNVX: Invalid device "
5663                    "[VUID-vkDestroyCuFunctionNVX-device-parameter]");
5664         abort(); /* Intentionally fail so user can correct issue. */
5665     }
5666     disp->DestroyCuFunctionNVX(device, function, pAllocator);
5667 }
5668 
CmdCuLaunchKernelNVX(VkCommandBuffer commandBuffer,const VkCuLaunchInfoNVX * pLaunchInfo)5669 VKAPI_ATTR void VKAPI_CALL CmdCuLaunchKernelNVX(
5670     VkCommandBuffer                             commandBuffer,
5671     const VkCuLaunchInfoNVX*                    pLaunchInfo) {
5672     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5673     if (NULL == disp) {
5674         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5675                    "vkCmdCuLaunchKernelNVX: Invalid commandBuffer "
5676                    "[VUID-vkCmdCuLaunchKernelNVX-commandBuffer-parameter]");
5677         abort(); /* Intentionally fail so user can correct issue. */
5678     }
5679     disp->CmdCuLaunchKernelNVX(commandBuffer, pLaunchInfo);
5680 }
5681 
5682 
5683 // ---- VK_NVX_image_view_handle extension trampoline/terminators
5684 
GetImageViewHandleNVX(VkDevice device,const VkImageViewHandleInfoNVX * pInfo)5685 VKAPI_ATTR uint32_t VKAPI_CALL GetImageViewHandleNVX(
5686     VkDevice                                    device,
5687     const VkImageViewHandleInfoNVX*             pInfo) {
5688     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5689     if (NULL == disp) {
5690         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5691                    "vkGetImageViewHandleNVX: Invalid device "
5692                    "[VUID-vkGetImageViewHandleNVX-device-parameter]");
5693         abort(); /* Intentionally fail so user can correct issue. */
5694     }
5695     return disp->GetImageViewHandleNVX(device, pInfo);
5696 }
5697 
GetImageViewHandle64NVX(VkDevice device,const VkImageViewHandleInfoNVX * pInfo)5698 VKAPI_ATTR uint64_t VKAPI_CALL GetImageViewHandle64NVX(
5699     VkDevice                                    device,
5700     const VkImageViewHandleInfoNVX*             pInfo) {
5701     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5702     if (NULL == disp) {
5703         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5704                    "vkGetImageViewHandle64NVX: Invalid device "
5705                    "[VUID-vkGetImageViewHandle64NVX-device-parameter]");
5706         abort(); /* Intentionally fail so user can correct issue. */
5707     }
5708     return disp->GetImageViewHandle64NVX(device, pInfo);
5709 }
5710 
GetImageViewAddressNVX(VkDevice device,VkImageView imageView,VkImageViewAddressPropertiesNVX * pProperties)5711 VKAPI_ATTR VkResult VKAPI_CALL GetImageViewAddressNVX(
5712     VkDevice                                    device,
5713     VkImageView                                 imageView,
5714     VkImageViewAddressPropertiesNVX*            pProperties) {
5715     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5716     if (NULL == disp) {
5717         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5718                    "vkGetImageViewAddressNVX: Invalid device "
5719                    "[VUID-vkGetImageViewAddressNVX-device-parameter]");
5720         abort(); /* Intentionally fail so user can correct issue. */
5721     }
5722     return disp->GetImageViewAddressNVX(device, imageView, pProperties);
5723 }
5724 
5725 
5726 // ---- VK_AMD_draw_indirect_count extension trampoline/terminators
5727 
CmdDrawIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)5728 VKAPI_ATTR void VKAPI_CALL CmdDrawIndirectCountAMD(
5729     VkCommandBuffer                             commandBuffer,
5730     VkBuffer                                    buffer,
5731     VkDeviceSize                                offset,
5732     VkBuffer                                    countBuffer,
5733     VkDeviceSize                                countBufferOffset,
5734     uint32_t                                    maxDrawCount,
5735     uint32_t                                    stride) {
5736     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5737     if (NULL == disp) {
5738         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5739                    "vkCmdDrawIndirectCountAMD: Invalid commandBuffer "
5740                    "[VUID-vkCmdDrawIndirectCountAMD-commandBuffer-parameter]");
5741         abort(); /* Intentionally fail so user can correct issue. */
5742     }
5743     disp->CmdDrawIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
5744 }
5745 
CmdDrawIndexedIndirectCountAMD(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)5746 VKAPI_ATTR void VKAPI_CALL CmdDrawIndexedIndirectCountAMD(
5747     VkCommandBuffer                             commandBuffer,
5748     VkBuffer                                    buffer,
5749     VkDeviceSize                                offset,
5750     VkBuffer                                    countBuffer,
5751     VkDeviceSize                                countBufferOffset,
5752     uint32_t                                    maxDrawCount,
5753     uint32_t                                    stride) {
5754     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5755     if (NULL == disp) {
5756         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5757                    "vkCmdDrawIndexedIndirectCountAMD: Invalid commandBuffer "
5758                    "[VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-parameter]");
5759         abort(); /* Intentionally fail so user can correct issue. */
5760     }
5761     disp->CmdDrawIndexedIndirectCountAMD(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
5762 }
5763 
5764 
5765 // ---- VK_AMD_shader_info extension trampoline/terminators
5766 
GetShaderInfoAMD(VkDevice device,VkPipeline pipeline,VkShaderStageFlagBits shaderStage,VkShaderInfoTypeAMD infoType,size_t * pInfoSize,void * pInfo)5767 VKAPI_ATTR VkResult VKAPI_CALL GetShaderInfoAMD(
5768     VkDevice                                    device,
5769     VkPipeline                                  pipeline,
5770     VkShaderStageFlagBits                       shaderStage,
5771     VkShaderInfoTypeAMD                         infoType,
5772     size_t*                                     pInfoSize,
5773     void*                                       pInfo) {
5774     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5775     if (NULL == disp) {
5776         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5777                    "vkGetShaderInfoAMD: Invalid device "
5778                    "[VUID-vkGetShaderInfoAMD-device-parameter]");
5779         abort(); /* Intentionally fail so user can correct issue. */
5780     }
5781     return disp->GetShaderInfoAMD(device, pipeline, shaderStage, infoType, pInfoSize, pInfo);
5782 }
5783 
5784 
5785 // ---- VK_NV_external_memory_win32 extension trampoline/terminators
5786 
5787 #if defined(VK_USE_PLATFORM_WIN32_KHR)
GetMemoryWin32HandleNV(VkDevice device,VkDeviceMemory memory,VkExternalMemoryHandleTypeFlagsNV handleType,HANDLE * pHandle)5788 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryWin32HandleNV(
5789     VkDevice                                    device,
5790     VkDeviceMemory                              memory,
5791     VkExternalMemoryHandleTypeFlagsNV           handleType,
5792     HANDLE*                                     pHandle) {
5793     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5794     if (NULL == disp) {
5795         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5796                    "vkGetMemoryWin32HandleNV: Invalid device "
5797                    "[VUID-vkGetMemoryWin32HandleNV-device-parameter]");
5798         abort(); /* Intentionally fail so user can correct issue. */
5799     }
5800     return disp->GetMemoryWin32HandleNV(device, memory, handleType, pHandle);
5801 }
5802 
5803 #endif // VK_USE_PLATFORM_WIN32_KHR
5804 
5805 // ---- VK_EXT_conditional_rendering extension trampoline/terminators
5806 
CmdBeginConditionalRenderingEXT(VkCommandBuffer commandBuffer,const VkConditionalRenderingBeginInfoEXT * pConditionalRenderingBegin)5807 VKAPI_ATTR void VKAPI_CALL CmdBeginConditionalRenderingEXT(
5808     VkCommandBuffer                             commandBuffer,
5809     const VkConditionalRenderingBeginInfoEXT*   pConditionalRenderingBegin) {
5810     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5811     if (NULL == disp) {
5812         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5813                    "vkCmdBeginConditionalRenderingEXT: Invalid commandBuffer "
5814                    "[VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-parameter]");
5815         abort(); /* Intentionally fail so user can correct issue. */
5816     }
5817     disp->CmdBeginConditionalRenderingEXT(commandBuffer, pConditionalRenderingBegin);
5818 }
5819 
CmdEndConditionalRenderingEXT(VkCommandBuffer commandBuffer)5820 VKAPI_ATTR void VKAPI_CALL CmdEndConditionalRenderingEXT(
5821     VkCommandBuffer                             commandBuffer) {
5822     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5823     if (NULL == disp) {
5824         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5825                    "vkCmdEndConditionalRenderingEXT: Invalid commandBuffer "
5826                    "[VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-parameter]");
5827         abort(); /* Intentionally fail so user can correct issue. */
5828     }
5829     disp->CmdEndConditionalRenderingEXT(commandBuffer);
5830 }
5831 
5832 
5833 // ---- VK_NV_clip_space_w_scaling extension trampoline/terminators
5834 
CmdSetViewportWScalingNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewportWScalingNV * pViewportWScalings)5835 VKAPI_ATTR void VKAPI_CALL CmdSetViewportWScalingNV(
5836     VkCommandBuffer                             commandBuffer,
5837     uint32_t                                    firstViewport,
5838     uint32_t                                    viewportCount,
5839     const VkViewportWScalingNV*                 pViewportWScalings) {
5840     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5841     if (NULL == disp) {
5842         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5843                    "vkCmdSetViewportWScalingNV: Invalid commandBuffer "
5844                    "[VUID-vkCmdSetViewportWScalingNV-commandBuffer-parameter]");
5845         abort(); /* Intentionally fail so user can correct issue. */
5846     }
5847     disp->CmdSetViewportWScalingNV(commandBuffer, firstViewport, viewportCount, pViewportWScalings);
5848 }
5849 
5850 
5851 // ---- VK_EXT_display_control extension trampoline/terminators
5852 
DisplayPowerControlEXT(VkDevice device,VkDisplayKHR display,const VkDisplayPowerInfoEXT * pDisplayPowerInfo)5853 VKAPI_ATTR VkResult VKAPI_CALL DisplayPowerControlEXT(
5854     VkDevice                                    device,
5855     VkDisplayKHR                                display,
5856     const VkDisplayPowerInfoEXT*                pDisplayPowerInfo) {
5857     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5858     if (NULL == disp) {
5859         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5860                    "vkDisplayPowerControlEXT: Invalid device "
5861                    "[VUID-vkDisplayPowerControlEXT-device-parameter]");
5862         abort(); /* Intentionally fail so user can correct issue. */
5863     }
5864     return disp->DisplayPowerControlEXT(device, display, pDisplayPowerInfo);
5865 }
5866 
RegisterDeviceEventEXT(VkDevice device,const VkDeviceEventInfoEXT * pDeviceEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)5867 VKAPI_ATTR VkResult VKAPI_CALL RegisterDeviceEventEXT(
5868     VkDevice                                    device,
5869     const VkDeviceEventInfoEXT*                 pDeviceEventInfo,
5870     const VkAllocationCallbacks*                pAllocator,
5871     VkFence*                                    pFence) {
5872     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5873     if (NULL == disp) {
5874         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5875                    "vkRegisterDeviceEventEXT: Invalid device "
5876                    "[VUID-vkRegisterDeviceEventEXT-device-parameter]");
5877         abort(); /* Intentionally fail so user can correct issue. */
5878     }
5879     return disp->RegisterDeviceEventEXT(device, pDeviceEventInfo, pAllocator, pFence);
5880 }
5881 
RegisterDisplayEventEXT(VkDevice device,VkDisplayKHR display,const VkDisplayEventInfoEXT * pDisplayEventInfo,const VkAllocationCallbacks * pAllocator,VkFence * pFence)5882 VKAPI_ATTR VkResult VKAPI_CALL RegisterDisplayEventEXT(
5883     VkDevice                                    device,
5884     VkDisplayKHR                                display,
5885     const VkDisplayEventInfoEXT*                pDisplayEventInfo,
5886     const VkAllocationCallbacks*                pAllocator,
5887     VkFence*                                    pFence) {
5888     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5889     if (NULL == disp) {
5890         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5891                    "vkRegisterDisplayEventEXT: Invalid device "
5892                    "[VUID-vkRegisterDisplayEventEXT-device-parameter]");
5893         abort(); /* Intentionally fail so user can correct issue. */
5894     }
5895     return disp->RegisterDisplayEventEXT(device, display, pDisplayEventInfo, pAllocator, pFence);
5896 }
5897 
GetSwapchainCounterEXT(VkDevice device,VkSwapchainKHR swapchain,VkSurfaceCounterFlagBitsEXT counter,uint64_t * pCounterValue)5898 VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainCounterEXT(
5899     VkDevice                                    device,
5900     VkSwapchainKHR                              swapchain,
5901     VkSurfaceCounterFlagBitsEXT                 counter,
5902     uint64_t*                                   pCounterValue) {
5903     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5904     if (NULL == disp) {
5905         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5906                    "vkGetSwapchainCounterEXT: Invalid device "
5907                    "[VUID-vkGetSwapchainCounterEXT-device-parameter]");
5908         abort(); /* Intentionally fail so user can correct issue. */
5909     }
5910     return disp->GetSwapchainCounterEXT(device, swapchain, counter, pCounterValue);
5911 }
5912 
5913 
5914 // ---- VK_GOOGLE_display_timing extension trampoline/terminators
5915 
GetRefreshCycleDurationGOOGLE(VkDevice device,VkSwapchainKHR swapchain,VkRefreshCycleDurationGOOGLE * pDisplayTimingProperties)5916 VKAPI_ATTR VkResult VKAPI_CALL GetRefreshCycleDurationGOOGLE(
5917     VkDevice                                    device,
5918     VkSwapchainKHR                              swapchain,
5919     VkRefreshCycleDurationGOOGLE*               pDisplayTimingProperties) {
5920     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5921     if (NULL == disp) {
5922         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5923                    "vkGetRefreshCycleDurationGOOGLE: Invalid device "
5924                    "[VUID-vkGetRefreshCycleDurationGOOGLE-device-parameter]");
5925         abort(); /* Intentionally fail so user can correct issue. */
5926     }
5927     return disp->GetRefreshCycleDurationGOOGLE(device, swapchain, pDisplayTimingProperties);
5928 }
5929 
GetPastPresentationTimingGOOGLE(VkDevice device,VkSwapchainKHR swapchain,uint32_t * pPresentationTimingCount,VkPastPresentationTimingGOOGLE * pPresentationTimings)5930 VKAPI_ATTR VkResult VKAPI_CALL GetPastPresentationTimingGOOGLE(
5931     VkDevice                                    device,
5932     VkSwapchainKHR                              swapchain,
5933     uint32_t*                                   pPresentationTimingCount,
5934     VkPastPresentationTimingGOOGLE*             pPresentationTimings) {
5935     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5936     if (NULL == disp) {
5937         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5938                    "vkGetPastPresentationTimingGOOGLE: Invalid device "
5939                    "[VUID-vkGetPastPresentationTimingGOOGLE-device-parameter]");
5940         abort(); /* Intentionally fail so user can correct issue. */
5941     }
5942     return disp->GetPastPresentationTimingGOOGLE(device, swapchain, pPresentationTimingCount, pPresentationTimings);
5943 }
5944 
5945 
5946 // ---- VK_EXT_discard_rectangles extension trampoline/terminators
5947 
CmdSetDiscardRectangleEXT(VkCommandBuffer commandBuffer,uint32_t firstDiscardRectangle,uint32_t discardRectangleCount,const VkRect2D * pDiscardRectangles)5948 VKAPI_ATTR void VKAPI_CALL CmdSetDiscardRectangleEXT(
5949     VkCommandBuffer                             commandBuffer,
5950     uint32_t                                    firstDiscardRectangle,
5951     uint32_t                                    discardRectangleCount,
5952     const VkRect2D*                             pDiscardRectangles) {
5953     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5954     if (NULL == disp) {
5955         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5956                    "vkCmdSetDiscardRectangleEXT: Invalid commandBuffer "
5957                    "[VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-parameter]");
5958         abort(); /* Intentionally fail so user can correct issue. */
5959     }
5960     disp->CmdSetDiscardRectangleEXT(commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles);
5961 }
5962 
CmdSetDiscardRectangleEnableEXT(VkCommandBuffer commandBuffer,VkBool32 discardRectangleEnable)5963 VKAPI_ATTR void VKAPI_CALL CmdSetDiscardRectangleEnableEXT(
5964     VkCommandBuffer                             commandBuffer,
5965     VkBool32                                    discardRectangleEnable) {
5966     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5967     if (NULL == disp) {
5968         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5969                    "vkCmdSetDiscardRectangleEnableEXT: Invalid commandBuffer "
5970                    "[VUID-vkCmdSetDiscardRectangleEnableEXT-commandBuffer-parameter]");
5971         abort(); /* Intentionally fail so user can correct issue. */
5972     }
5973     disp->CmdSetDiscardRectangleEnableEXT(commandBuffer, discardRectangleEnable);
5974 }
5975 
CmdSetDiscardRectangleModeEXT(VkCommandBuffer commandBuffer,VkDiscardRectangleModeEXT discardRectangleMode)5976 VKAPI_ATTR void VKAPI_CALL CmdSetDiscardRectangleModeEXT(
5977     VkCommandBuffer                             commandBuffer,
5978     VkDiscardRectangleModeEXT                   discardRectangleMode) {
5979     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
5980     if (NULL == disp) {
5981         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
5982                    "vkCmdSetDiscardRectangleModeEXT: Invalid commandBuffer "
5983                    "[VUID-vkCmdSetDiscardRectangleModeEXT-commandBuffer-parameter]");
5984         abort(); /* Intentionally fail so user can correct issue. */
5985     }
5986     disp->CmdSetDiscardRectangleModeEXT(commandBuffer, discardRectangleMode);
5987 }
5988 
5989 
5990 // ---- VK_EXT_hdr_metadata extension trampoline/terminators
5991 
SetHdrMetadataEXT(VkDevice device,uint32_t swapchainCount,const VkSwapchainKHR * pSwapchains,const VkHdrMetadataEXT * pMetadata)5992 VKAPI_ATTR void VKAPI_CALL SetHdrMetadataEXT(
5993     VkDevice                                    device,
5994     uint32_t                                    swapchainCount,
5995     const VkSwapchainKHR*                       pSwapchains,
5996     const VkHdrMetadataEXT*                     pMetadata) {
5997     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
5998     if (NULL == disp) {
5999         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6000                    "vkSetHdrMetadataEXT: Invalid device "
6001                    "[VUID-vkSetHdrMetadataEXT-device-parameter]");
6002         abort(); /* Intentionally fail so user can correct issue. */
6003     }
6004     disp->SetHdrMetadataEXT(device, swapchainCount, pSwapchains, pMetadata);
6005 }
6006 
6007 
6008 // ---- VK_EXT_debug_utils extension trampoline/terminators
6009 
SetDebugUtilsObjectNameEXT(VkDevice device,const VkDebugUtilsObjectNameInfoEXT * pNameInfo)6010 VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectNameEXT(
6011     VkDevice                                    device,
6012     const VkDebugUtilsObjectNameInfoEXT*        pNameInfo) {
6013     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6014     if (NULL == disp) {
6015         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6016                    "vkSetDebugUtilsObjectNameEXT: Invalid device "
6017                    "[VUID-vkSetDebugUtilsObjectNameEXT-device-parameter]");
6018         abort(); /* Intentionally fail so user can correct issue. */
6019     }
6020     VkDebugUtilsObjectNameInfoEXT local_name_info;
6021     memcpy(&local_name_info, pNameInfo, sizeof(VkDebugUtilsObjectNameInfoEXT));
6022     // If this is a physical device, we have to replace it with the proper one for the next call.
6023     if (pNameInfo->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {
6024         struct loader_physical_device_tramp *phys_dev_tramp = (struct loader_physical_device_tramp *)(uintptr_t)pNameInfo->objectHandle;
6025         local_name_info.objectHandle = (uint64_t)(uintptr_t)phys_dev_tramp->phys_dev;
6026     }
6027     if (pNameInfo->objectType == VK_OBJECT_TYPE_INSTANCE) {
6028         struct loader_instance* instance = (struct loader_instance *)(uintptr_t)pNameInfo->objectHandle;
6029         local_name_info.objectHandle = (uint64_t)(uintptr_t)instance->instance;
6030     }
6031     if (disp->SetDebugUtilsObjectNameEXT != NULL) {
6032         return disp->SetDebugUtilsObjectNameEXT(device, &local_name_info);
6033     } else {
6034         return VK_SUCCESS;
6035     }
6036 }
6037 
terminator_SetDebugUtilsObjectNameEXT(VkDevice device,const VkDebugUtilsObjectNameInfoEXT * pNameInfo)6038 VKAPI_ATTR VkResult VKAPI_CALL terminator_SetDebugUtilsObjectNameEXT(
6039     VkDevice                                    device,
6040     const VkDebugUtilsObjectNameInfoEXT*        pNameInfo) {
6041     struct loader_device *dev;
6042     struct loader_icd_term *icd_term = loader_get_icd_and_device(device, &dev);
6043     if (NULL == icd_term || NULL == dev) {
6044         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "SetDebugUtilsObjectNameEXT: Invalid device handle");
6045         abort(); /* Intentionally fail so user can correct issue. */
6046     }
6047     VkDebugUtilsObjectNameInfoEXT local_name_info;
6048     memcpy(&local_name_info, pNameInfo, sizeof(VkDebugUtilsObjectNameInfoEXT));
6049     // If this is a physical device, we have to replace it with the proper one for the next call.
6050     if (pNameInfo->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {
6051         struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)(uintptr_t)pNameInfo->objectHandle;
6052         local_name_info.objectHandle = (uint64_t)(uintptr_t)phys_dev_term->phys_dev;
6053     // 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.
6054     } else if (pNameInfo->objectType == VK_OBJECT_TYPE_SURFACE_KHR) {
6055         if (NULL != dev && NULL != dev->loader_dispatch.core_dispatch.CreateSwapchainKHR) {
6056             VkIcdSurface *icd_surface = (VkIcdSurface *)(uintptr_t)pNameInfo->objectHandle;
6057             if (NULL != icd_term->surface_list.list && icd_term->surface_list.capacity > icd_surface->surface_index * sizeof(VkSurfaceKHR)
6058                 && icd_term->surface_list.list[icd_surface->surface_index]) {
6059                 local_name_info.objectHandle = (uint64_t)icd_term->surface_list.list[icd_surface->surface_index];
6060             }
6061         }
6062     // If this is an instance we have to replace it with the proper one for the next call.
6063     } else if (pNameInfo->objectType == VK_OBJECT_TYPE_INSTANCE) {
6064         local_name_info.objectHandle = (uint64_t)(uintptr_t)icd_term->instance;
6065     }
6066     // Exit early if the driver does not support the function - this can happen as a layer or the loader itself supports
6067     // debug utils but the driver does not.
6068     if (NULL == dev->loader_dispatch.extension_terminator_dispatch.SetDebugUtilsObjectNameEXT)
6069         return VK_SUCCESS;
6070     return dev->loader_dispatch.extension_terminator_dispatch.SetDebugUtilsObjectNameEXT(device, &local_name_info);
6071 }
6072 
SetDebugUtilsObjectTagEXT(VkDevice device,const VkDebugUtilsObjectTagInfoEXT * pTagInfo)6073 VKAPI_ATTR VkResult VKAPI_CALL SetDebugUtilsObjectTagEXT(
6074     VkDevice                                    device,
6075     const VkDebugUtilsObjectTagInfoEXT*         pTagInfo) {
6076     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6077     if (NULL == disp) {
6078         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6079                    "vkSetDebugUtilsObjectTagEXT: Invalid device "
6080                    "[VUID-vkSetDebugUtilsObjectTagEXT-device-parameter]");
6081         abort(); /* Intentionally fail so user can correct issue. */
6082     }
6083     VkDebugUtilsObjectTagInfoEXT local_tag_info;
6084     memcpy(&local_tag_info, pTagInfo, sizeof(VkDebugUtilsObjectTagInfoEXT));
6085     // If this is a physical device, we have to replace it with the proper one for the next call.
6086     if (pTagInfo->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {
6087         struct loader_physical_device_tramp *phys_dev_tramp = (struct loader_physical_device_tramp *)(uintptr_t)pTagInfo->objectHandle;
6088         local_tag_info.objectHandle = (uint64_t)(uintptr_t)phys_dev_tramp->phys_dev;
6089     }
6090     if (pTagInfo->objectType == VK_OBJECT_TYPE_INSTANCE) {
6091         struct loader_instance* instance = (struct loader_instance *)(uintptr_t)pTagInfo->objectHandle;
6092         local_tag_info.objectHandle = (uint64_t)(uintptr_t)instance->instance;
6093     }
6094     if (disp->SetDebugUtilsObjectTagEXT != NULL) {
6095         return disp->SetDebugUtilsObjectTagEXT(device, &local_tag_info);
6096     } else {
6097         return VK_SUCCESS;
6098     }
6099 }
6100 
terminator_SetDebugUtilsObjectTagEXT(VkDevice device,const VkDebugUtilsObjectTagInfoEXT * pTagInfo)6101 VKAPI_ATTR VkResult VKAPI_CALL terminator_SetDebugUtilsObjectTagEXT(
6102     VkDevice                                    device,
6103     const VkDebugUtilsObjectTagInfoEXT*         pTagInfo) {
6104     struct loader_device *dev;
6105     struct loader_icd_term *icd_term = loader_get_icd_and_device(device, &dev);
6106     if (NULL == icd_term || NULL == dev) {
6107         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "SetDebugUtilsObjectTagEXT: Invalid device handle");
6108         abort(); /* Intentionally fail so user can correct issue. */
6109     }
6110     VkDebugUtilsObjectTagInfoEXT local_tag_info;
6111     memcpy(&local_tag_info, pTagInfo, sizeof(VkDebugUtilsObjectTagInfoEXT));
6112     // If this is a physical device, we have to replace it with the proper one for the next call.
6113     if (pTagInfo->objectType == VK_OBJECT_TYPE_PHYSICAL_DEVICE) {
6114         struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)(uintptr_t)pTagInfo->objectHandle;
6115         local_tag_info.objectHandle = (uint64_t)(uintptr_t)phys_dev_term->phys_dev;
6116     // 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.
6117     } else if (pTagInfo->objectType == VK_OBJECT_TYPE_SURFACE_KHR) {
6118         if (NULL != dev && NULL != dev->loader_dispatch.core_dispatch.CreateSwapchainKHR) {
6119             VkIcdSurface *icd_surface = (VkIcdSurface *)(uintptr_t)pTagInfo->objectHandle;
6120             if (NULL != icd_term->surface_list.list && icd_term->surface_list.capacity > icd_surface->surface_index * sizeof(VkSurfaceKHR)
6121                 && icd_term->surface_list.list[icd_surface->surface_index]) {
6122                 local_tag_info.objectHandle = (uint64_t)icd_term->surface_list.list[icd_surface->surface_index];
6123             }
6124         }
6125     // If this is an instance we have to replace it with the proper one for the next call.
6126     } else if (pTagInfo->objectType == VK_OBJECT_TYPE_INSTANCE) {
6127         local_tag_info.objectHandle = (uint64_t)(uintptr_t)icd_term->instance;
6128     }
6129     // Exit early if the driver does not support the function - this can happen as a layer or the loader itself supports
6130     // debug utils but the driver does not.
6131     if (NULL == dev->loader_dispatch.extension_terminator_dispatch.SetDebugUtilsObjectTagEXT)
6132         return VK_SUCCESS;
6133     return dev->loader_dispatch.extension_terminator_dispatch.SetDebugUtilsObjectTagEXT(device, &local_tag_info);
6134 }
6135 
QueueBeginDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)6136 VKAPI_ATTR void VKAPI_CALL QueueBeginDebugUtilsLabelEXT(
6137     VkQueue                                     queue,
6138     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
6139     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
6140     if (NULL == disp) {
6141         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6142                    "vkQueueBeginDebugUtilsLabelEXT: Invalid queue "
6143                    "[VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter]");
6144         abort(); /* Intentionally fail so user can correct issue. */
6145     }
6146     if (disp->QueueBeginDebugUtilsLabelEXT != NULL) {
6147         disp->QueueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
6148     }
6149 }
6150 
terminator_QueueBeginDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)6151 VKAPI_ATTR void VKAPI_CALL terminator_QueueBeginDebugUtilsLabelEXT(
6152     VkQueue                                     queue,
6153     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
6154     struct loader_dev_dispatch_table *dispatch_table = loader_get_dev_dispatch(queue);
6155     if (NULL == dispatch_table) {
6156         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "VK_EXT_debug_utils: Invalid device handle");
6157         abort(); /* Intentionally fail so user can correct issue. */
6158     }
6159     // Only call down if the device supports the function
6160     if (NULL != dispatch_table->extension_terminator_dispatch.QueueBeginDebugUtilsLabelEXT)
6161         dispatch_table->extension_terminator_dispatch.QueueBeginDebugUtilsLabelEXT(queue, pLabelInfo);
6162 }
6163 
QueueEndDebugUtilsLabelEXT(VkQueue queue)6164 VKAPI_ATTR void VKAPI_CALL QueueEndDebugUtilsLabelEXT(
6165     VkQueue                                     queue) {
6166     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
6167     if (NULL == disp) {
6168         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6169                    "vkQueueEndDebugUtilsLabelEXT: Invalid queue "
6170                    "[VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter]");
6171         abort(); /* Intentionally fail so user can correct issue. */
6172     }
6173     if (disp->QueueEndDebugUtilsLabelEXT != NULL) {
6174         disp->QueueEndDebugUtilsLabelEXT(queue);
6175     }
6176 }
6177 
terminator_QueueEndDebugUtilsLabelEXT(VkQueue queue)6178 VKAPI_ATTR void VKAPI_CALL terminator_QueueEndDebugUtilsLabelEXT(
6179     VkQueue                                     queue) {
6180     struct loader_dev_dispatch_table *dispatch_table = loader_get_dev_dispatch(queue);
6181     if (NULL == dispatch_table) {
6182         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "VK_EXT_debug_utils: Invalid device handle");
6183         abort(); /* Intentionally fail so user can correct issue. */
6184     }
6185     // Only call down if the device supports the function
6186     if (NULL != dispatch_table->extension_terminator_dispatch.QueueEndDebugUtilsLabelEXT)
6187         dispatch_table->extension_terminator_dispatch.QueueEndDebugUtilsLabelEXT(queue);
6188 }
6189 
QueueInsertDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)6190 VKAPI_ATTR void VKAPI_CALL QueueInsertDebugUtilsLabelEXT(
6191     VkQueue                                     queue,
6192     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
6193     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
6194     if (NULL == disp) {
6195         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6196                    "vkQueueInsertDebugUtilsLabelEXT: Invalid queue "
6197                    "[VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter]");
6198         abort(); /* Intentionally fail so user can correct issue. */
6199     }
6200     if (disp->QueueInsertDebugUtilsLabelEXT != NULL) {
6201         disp->QueueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
6202     }
6203 }
6204 
terminator_QueueInsertDebugUtilsLabelEXT(VkQueue queue,const VkDebugUtilsLabelEXT * pLabelInfo)6205 VKAPI_ATTR void VKAPI_CALL terminator_QueueInsertDebugUtilsLabelEXT(
6206     VkQueue                                     queue,
6207     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
6208     struct loader_dev_dispatch_table *dispatch_table = loader_get_dev_dispatch(queue);
6209     if (NULL == dispatch_table) {
6210         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "VK_EXT_debug_utils: Invalid device handle");
6211         abort(); /* Intentionally fail so user can correct issue. */
6212     }
6213     // Only call down if the device supports the function
6214     if (NULL != dispatch_table->extension_terminator_dispatch.QueueInsertDebugUtilsLabelEXT)
6215         dispatch_table->extension_terminator_dispatch.QueueInsertDebugUtilsLabelEXT(queue, pLabelInfo);
6216 }
6217 
CmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)6218 VKAPI_ATTR void VKAPI_CALL CmdBeginDebugUtilsLabelEXT(
6219     VkCommandBuffer                             commandBuffer,
6220     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
6221     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6222     if (NULL == disp) {
6223         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6224                    "vkCmdBeginDebugUtilsLabelEXT: Invalid commandBuffer "
6225                    "[VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-parameter]");
6226         abort(); /* Intentionally fail so user can correct issue. */
6227     }
6228     if (disp->CmdBeginDebugUtilsLabelEXT != NULL) {
6229         disp->CmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
6230     }
6231 }
6232 
terminator_CmdBeginDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)6233 VKAPI_ATTR void VKAPI_CALL terminator_CmdBeginDebugUtilsLabelEXT(
6234     VkCommandBuffer                             commandBuffer,
6235     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
6236     struct loader_dev_dispatch_table *dispatch_table = loader_get_dev_dispatch(commandBuffer);
6237     if (NULL == dispatch_table) {
6238         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "VK_EXT_debug_utils: Invalid device handle");
6239         abort(); /* Intentionally fail so user can correct issue. */
6240     }
6241     // Only call down if the device supports the function
6242     if (NULL != dispatch_table->extension_terminator_dispatch.CmdBeginDebugUtilsLabelEXT)
6243         dispatch_table->extension_terminator_dispatch.CmdBeginDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
6244 }
6245 
CmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer)6246 VKAPI_ATTR void VKAPI_CALL CmdEndDebugUtilsLabelEXT(
6247     VkCommandBuffer                             commandBuffer) {
6248     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6249     if (NULL == disp) {
6250         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6251                    "vkCmdEndDebugUtilsLabelEXT: Invalid commandBuffer "
6252                    "[VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-parameter]");
6253         abort(); /* Intentionally fail so user can correct issue. */
6254     }
6255     if (disp->CmdEndDebugUtilsLabelEXT != NULL) {
6256         disp->CmdEndDebugUtilsLabelEXT(commandBuffer);
6257     }
6258 }
6259 
terminator_CmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer)6260 VKAPI_ATTR void VKAPI_CALL terminator_CmdEndDebugUtilsLabelEXT(
6261     VkCommandBuffer                             commandBuffer) {
6262     struct loader_dev_dispatch_table *dispatch_table = loader_get_dev_dispatch(commandBuffer);
6263     if (NULL == dispatch_table) {
6264         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "VK_EXT_debug_utils: Invalid device handle");
6265         abort(); /* Intentionally fail so user can correct issue. */
6266     }
6267     // Only call down if the device supports the function
6268     if (NULL != dispatch_table->extension_terminator_dispatch.CmdEndDebugUtilsLabelEXT)
6269         dispatch_table->extension_terminator_dispatch.CmdEndDebugUtilsLabelEXT(commandBuffer);
6270 }
6271 
CmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)6272 VKAPI_ATTR void VKAPI_CALL CmdInsertDebugUtilsLabelEXT(
6273     VkCommandBuffer                             commandBuffer,
6274     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
6275     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6276     if (NULL == disp) {
6277         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6278                    "vkCmdInsertDebugUtilsLabelEXT: Invalid commandBuffer "
6279                    "[VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-parameter]");
6280         abort(); /* Intentionally fail so user can correct issue. */
6281     }
6282     if (disp->CmdInsertDebugUtilsLabelEXT != NULL) {
6283         disp->CmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
6284     }
6285 }
6286 
terminator_CmdInsertDebugUtilsLabelEXT(VkCommandBuffer commandBuffer,const VkDebugUtilsLabelEXT * pLabelInfo)6287 VKAPI_ATTR void VKAPI_CALL terminator_CmdInsertDebugUtilsLabelEXT(
6288     VkCommandBuffer                             commandBuffer,
6289     const VkDebugUtilsLabelEXT*                 pLabelInfo) {
6290     struct loader_dev_dispatch_table *dispatch_table = loader_get_dev_dispatch(commandBuffer);
6291     if (NULL == dispatch_table) {
6292         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0, "VK_EXT_debug_utils: Invalid device handle");
6293         abort(); /* Intentionally fail so user can correct issue. */
6294     }
6295     // Only call down if the device supports the function
6296     if (NULL != dispatch_table->extension_terminator_dispatch.CmdInsertDebugUtilsLabelEXT)
6297         dispatch_table->extension_terminator_dispatch.CmdInsertDebugUtilsLabelEXT(commandBuffer, pLabelInfo);
6298 }
6299 
6300 
6301 // ---- VK_ANDROID_external_memory_android_hardware_buffer extension trampoline/terminators
6302 
6303 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
GetAndroidHardwareBufferPropertiesANDROID(VkDevice device,const struct AHardwareBuffer * buffer,VkAndroidHardwareBufferPropertiesANDROID * pProperties)6304 VKAPI_ATTR VkResult VKAPI_CALL GetAndroidHardwareBufferPropertiesANDROID(
6305     VkDevice                                    device,
6306     const struct AHardwareBuffer*               buffer,
6307     VkAndroidHardwareBufferPropertiesANDROID*   pProperties) {
6308     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6309     if (NULL == disp) {
6310         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6311                    "vkGetAndroidHardwareBufferPropertiesANDROID: Invalid device "
6312                    "[VUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter]");
6313         abort(); /* Intentionally fail so user can correct issue. */
6314     }
6315     return disp->GetAndroidHardwareBufferPropertiesANDROID(device, buffer, pProperties);
6316 }
6317 
6318 #endif // VK_USE_PLATFORM_ANDROID_KHR
6319 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
GetMemoryAndroidHardwareBufferANDROID(VkDevice device,const VkMemoryGetAndroidHardwareBufferInfoANDROID * pInfo,struct AHardwareBuffer ** pBuffer)6320 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryAndroidHardwareBufferANDROID(
6321     VkDevice                                    device,
6322     const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
6323     struct AHardwareBuffer**                    pBuffer) {
6324     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6325     if (NULL == disp) {
6326         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6327                    "vkGetMemoryAndroidHardwareBufferANDROID: Invalid device "
6328                    "[VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter]");
6329         abort(); /* Intentionally fail so user can correct issue. */
6330     }
6331     return disp->GetMemoryAndroidHardwareBufferANDROID(device, pInfo, pBuffer);
6332 }
6333 
6334 #endif // VK_USE_PLATFORM_ANDROID_KHR
6335 
6336 // ---- VK_AMDX_shader_enqueue extension trampoline/terminators
6337 
6338 #if defined(VK_ENABLE_BETA_EXTENSIONS)
CreateExecutionGraphPipelinesAMDX(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkExecutionGraphPipelineCreateInfoAMDX * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)6339 VKAPI_ATTR VkResult VKAPI_CALL CreateExecutionGraphPipelinesAMDX(
6340     VkDevice                                    device,
6341     VkPipelineCache                             pipelineCache,
6342     uint32_t                                    createInfoCount,
6343     const VkExecutionGraphPipelineCreateInfoAMDX* pCreateInfos,
6344     const VkAllocationCallbacks*                pAllocator,
6345     VkPipeline*                                 pPipelines) {
6346     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6347     if (NULL == disp) {
6348         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6349                    "vkCreateExecutionGraphPipelinesAMDX: Invalid device "
6350                    "[VUID-vkCreateExecutionGraphPipelinesAMDX-device-parameter]");
6351         abort(); /* Intentionally fail so user can correct issue. */
6352     }
6353     return disp->CreateExecutionGraphPipelinesAMDX(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
6354 }
6355 
6356 #endif // VK_ENABLE_BETA_EXTENSIONS
6357 #if defined(VK_ENABLE_BETA_EXTENSIONS)
GetExecutionGraphPipelineScratchSizeAMDX(VkDevice device,VkPipeline executionGraph,VkExecutionGraphPipelineScratchSizeAMDX * pSizeInfo)6358 VKAPI_ATTR VkResult VKAPI_CALL GetExecutionGraphPipelineScratchSizeAMDX(
6359     VkDevice                                    device,
6360     VkPipeline                                  executionGraph,
6361     VkExecutionGraphPipelineScratchSizeAMDX*    pSizeInfo) {
6362     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6363     if (NULL == disp) {
6364         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6365                    "vkGetExecutionGraphPipelineScratchSizeAMDX: Invalid device "
6366                    "[VUID-vkGetExecutionGraphPipelineScratchSizeAMDX-device-parameter]");
6367         abort(); /* Intentionally fail so user can correct issue. */
6368     }
6369     return disp->GetExecutionGraphPipelineScratchSizeAMDX(device, executionGraph, pSizeInfo);
6370 }
6371 
6372 #endif // VK_ENABLE_BETA_EXTENSIONS
6373 #if defined(VK_ENABLE_BETA_EXTENSIONS)
GetExecutionGraphPipelineNodeIndexAMDX(VkDevice device,VkPipeline executionGraph,const VkPipelineShaderStageNodeCreateInfoAMDX * pNodeInfo,uint32_t * pNodeIndex)6374 VKAPI_ATTR VkResult VKAPI_CALL GetExecutionGraphPipelineNodeIndexAMDX(
6375     VkDevice                                    device,
6376     VkPipeline                                  executionGraph,
6377     const VkPipelineShaderStageNodeCreateInfoAMDX* pNodeInfo,
6378     uint32_t*                                   pNodeIndex) {
6379     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6380     if (NULL == disp) {
6381         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6382                    "vkGetExecutionGraphPipelineNodeIndexAMDX: Invalid device "
6383                    "[VUID-vkGetExecutionGraphPipelineNodeIndexAMDX-device-parameter]");
6384         abort(); /* Intentionally fail so user can correct issue. */
6385     }
6386     return disp->GetExecutionGraphPipelineNodeIndexAMDX(device, executionGraph, pNodeInfo, pNodeIndex);
6387 }
6388 
6389 #endif // VK_ENABLE_BETA_EXTENSIONS
6390 #if defined(VK_ENABLE_BETA_EXTENSIONS)
CmdInitializeGraphScratchMemoryAMDX(VkCommandBuffer commandBuffer,VkPipeline executionGraph,VkDeviceAddress scratch,VkDeviceSize scratchSize)6391 VKAPI_ATTR void VKAPI_CALL CmdInitializeGraphScratchMemoryAMDX(
6392     VkCommandBuffer                             commandBuffer,
6393     VkPipeline                                  executionGraph,
6394     VkDeviceAddress                             scratch,
6395     VkDeviceSize                                scratchSize) {
6396     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6397     if (NULL == disp) {
6398         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6399                    "vkCmdInitializeGraphScratchMemoryAMDX: Invalid commandBuffer "
6400                    "[VUID-vkCmdInitializeGraphScratchMemoryAMDX-commandBuffer-parameter]");
6401         abort(); /* Intentionally fail so user can correct issue. */
6402     }
6403     disp->CmdInitializeGraphScratchMemoryAMDX(commandBuffer, executionGraph, scratch, scratchSize);
6404 }
6405 
6406 #endif // VK_ENABLE_BETA_EXTENSIONS
6407 #if defined(VK_ENABLE_BETA_EXTENSIONS)
CmdDispatchGraphAMDX(VkCommandBuffer commandBuffer,VkDeviceAddress scratch,VkDeviceSize scratchSize,const VkDispatchGraphCountInfoAMDX * pCountInfo)6408 VKAPI_ATTR void VKAPI_CALL CmdDispatchGraphAMDX(
6409     VkCommandBuffer                             commandBuffer,
6410     VkDeviceAddress                             scratch,
6411     VkDeviceSize                                scratchSize,
6412     const VkDispatchGraphCountInfoAMDX*         pCountInfo) {
6413     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6414     if (NULL == disp) {
6415         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6416                    "vkCmdDispatchGraphAMDX: Invalid commandBuffer "
6417                    "[VUID-vkCmdDispatchGraphAMDX-commandBuffer-parameter]");
6418         abort(); /* Intentionally fail so user can correct issue. */
6419     }
6420     disp->CmdDispatchGraphAMDX(commandBuffer, scratch, scratchSize, pCountInfo);
6421 }
6422 
6423 #endif // VK_ENABLE_BETA_EXTENSIONS
6424 #if defined(VK_ENABLE_BETA_EXTENSIONS)
CmdDispatchGraphIndirectAMDX(VkCommandBuffer commandBuffer,VkDeviceAddress scratch,VkDeviceSize scratchSize,const VkDispatchGraphCountInfoAMDX * pCountInfo)6425 VKAPI_ATTR void VKAPI_CALL CmdDispatchGraphIndirectAMDX(
6426     VkCommandBuffer                             commandBuffer,
6427     VkDeviceAddress                             scratch,
6428     VkDeviceSize                                scratchSize,
6429     const VkDispatchGraphCountInfoAMDX*         pCountInfo) {
6430     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6431     if (NULL == disp) {
6432         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6433                    "vkCmdDispatchGraphIndirectAMDX: Invalid commandBuffer "
6434                    "[VUID-vkCmdDispatchGraphIndirectAMDX-commandBuffer-parameter]");
6435         abort(); /* Intentionally fail so user can correct issue. */
6436     }
6437     disp->CmdDispatchGraphIndirectAMDX(commandBuffer, scratch, scratchSize, pCountInfo);
6438 }
6439 
6440 #endif // VK_ENABLE_BETA_EXTENSIONS
6441 #if defined(VK_ENABLE_BETA_EXTENSIONS)
CmdDispatchGraphIndirectCountAMDX(VkCommandBuffer commandBuffer,VkDeviceAddress scratch,VkDeviceSize scratchSize,VkDeviceAddress countInfo)6442 VKAPI_ATTR void VKAPI_CALL CmdDispatchGraphIndirectCountAMDX(
6443     VkCommandBuffer                             commandBuffer,
6444     VkDeviceAddress                             scratch,
6445     VkDeviceSize                                scratchSize,
6446     VkDeviceAddress                             countInfo) {
6447     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6448     if (NULL == disp) {
6449         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6450                    "vkCmdDispatchGraphIndirectCountAMDX: Invalid commandBuffer "
6451                    "[VUID-vkCmdDispatchGraphIndirectCountAMDX-commandBuffer-parameter]");
6452         abort(); /* Intentionally fail so user can correct issue. */
6453     }
6454     disp->CmdDispatchGraphIndirectCountAMDX(commandBuffer, scratch, scratchSize, countInfo);
6455 }
6456 
6457 #endif // VK_ENABLE_BETA_EXTENSIONS
6458 
6459 // ---- VK_EXT_sample_locations extension trampoline/terminators
6460 
CmdSetSampleLocationsEXT(VkCommandBuffer commandBuffer,const VkSampleLocationsInfoEXT * pSampleLocationsInfo)6461 VKAPI_ATTR void VKAPI_CALL CmdSetSampleLocationsEXT(
6462     VkCommandBuffer                             commandBuffer,
6463     const VkSampleLocationsInfoEXT*             pSampleLocationsInfo) {
6464     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6465     if (NULL == disp) {
6466         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6467                    "vkCmdSetSampleLocationsEXT: Invalid commandBuffer "
6468                    "[VUID-vkCmdSetSampleLocationsEXT-commandBuffer-parameter]");
6469         abort(); /* Intentionally fail so user can correct issue. */
6470     }
6471     disp->CmdSetSampleLocationsEXT(commandBuffer, pSampleLocationsInfo);
6472 }
6473 
GetPhysicalDeviceMultisamplePropertiesEXT(VkPhysicalDevice physicalDevice,VkSampleCountFlagBits samples,VkMultisamplePropertiesEXT * pMultisampleProperties)6474 VKAPI_ATTR void VKAPI_CALL GetPhysicalDeviceMultisamplePropertiesEXT(
6475     VkPhysicalDevice                            physicalDevice,
6476     VkSampleCountFlagBits                       samples,
6477     VkMultisamplePropertiesEXT*                 pMultisampleProperties) {
6478     const VkLayerInstanceDispatchTable *disp;
6479     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
6480     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
6481         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6482                    "vkGetPhysicalDeviceMultisamplePropertiesEXT: Invalid physicalDevice "
6483                    "[VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-physicalDevice-parameter]");
6484         abort(); /* Intentionally fail so user can correct issue. */
6485     }
6486     disp = loader_get_instance_layer_dispatch(physicalDevice);
6487     disp->GetPhysicalDeviceMultisamplePropertiesEXT(unwrapped_phys_dev, samples, pMultisampleProperties);
6488 }
6489 
terminator_GetPhysicalDeviceMultisamplePropertiesEXT(VkPhysicalDevice physicalDevice,VkSampleCountFlagBits samples,VkMultisamplePropertiesEXT * pMultisampleProperties)6490 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceMultisamplePropertiesEXT(
6491     VkPhysicalDevice                            physicalDevice,
6492     VkSampleCountFlagBits                       samples,
6493     VkMultisamplePropertiesEXT*                 pMultisampleProperties) {
6494     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
6495     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
6496     if (NULL == icd_term->dispatch.GetPhysicalDeviceMultisamplePropertiesEXT) {
6497         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
6498                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceMultisamplePropertiesEXT");
6499         abort(); /* Intentionally fail so user can correct issue. */
6500     }
6501     icd_term->dispatch.GetPhysicalDeviceMultisamplePropertiesEXT(phys_dev_term->phys_dev, samples, pMultisampleProperties);
6502 }
6503 
6504 
6505 // ---- VK_EXT_image_drm_format_modifier extension trampoline/terminators
6506 
GetImageDrmFormatModifierPropertiesEXT(VkDevice device,VkImage image,VkImageDrmFormatModifierPropertiesEXT * pProperties)6507 VKAPI_ATTR VkResult VKAPI_CALL GetImageDrmFormatModifierPropertiesEXT(
6508     VkDevice                                    device,
6509     VkImage                                     image,
6510     VkImageDrmFormatModifierPropertiesEXT*      pProperties) {
6511     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6512     if (NULL == disp) {
6513         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6514                    "vkGetImageDrmFormatModifierPropertiesEXT: Invalid device "
6515                    "[VUID-vkGetImageDrmFormatModifierPropertiesEXT-device-parameter]");
6516         abort(); /* Intentionally fail so user can correct issue. */
6517     }
6518     return disp->GetImageDrmFormatModifierPropertiesEXT(device, image, pProperties);
6519 }
6520 
6521 
6522 // ---- VK_EXT_validation_cache extension trampoline/terminators
6523 
CreateValidationCacheEXT(VkDevice device,const VkValidationCacheCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkValidationCacheEXT * pValidationCache)6524 VKAPI_ATTR VkResult VKAPI_CALL CreateValidationCacheEXT(
6525     VkDevice                                    device,
6526     const VkValidationCacheCreateInfoEXT*       pCreateInfo,
6527     const VkAllocationCallbacks*                pAllocator,
6528     VkValidationCacheEXT*                       pValidationCache) {
6529     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6530     if (NULL == disp) {
6531         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6532                    "vkCreateValidationCacheEXT: Invalid device "
6533                    "[VUID-vkCreateValidationCacheEXT-device-parameter]");
6534         abort(); /* Intentionally fail so user can correct issue. */
6535     }
6536     return disp->CreateValidationCacheEXT(device, pCreateInfo, pAllocator, pValidationCache);
6537 }
6538 
DestroyValidationCacheEXT(VkDevice device,VkValidationCacheEXT validationCache,const VkAllocationCallbacks * pAllocator)6539 VKAPI_ATTR void VKAPI_CALL DestroyValidationCacheEXT(
6540     VkDevice                                    device,
6541     VkValidationCacheEXT                        validationCache,
6542     const VkAllocationCallbacks*                pAllocator) {
6543     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6544     if (NULL == disp) {
6545         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6546                    "vkDestroyValidationCacheEXT: Invalid device "
6547                    "[VUID-vkDestroyValidationCacheEXT-device-parameter]");
6548         abort(); /* Intentionally fail so user can correct issue. */
6549     }
6550     disp->DestroyValidationCacheEXT(device, validationCache, pAllocator);
6551 }
6552 
MergeValidationCachesEXT(VkDevice device,VkValidationCacheEXT dstCache,uint32_t srcCacheCount,const VkValidationCacheEXT * pSrcCaches)6553 VKAPI_ATTR VkResult VKAPI_CALL MergeValidationCachesEXT(
6554     VkDevice                                    device,
6555     VkValidationCacheEXT                        dstCache,
6556     uint32_t                                    srcCacheCount,
6557     const VkValidationCacheEXT*                 pSrcCaches) {
6558     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6559     if (NULL == disp) {
6560         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6561                    "vkMergeValidationCachesEXT: Invalid device "
6562                    "[VUID-vkMergeValidationCachesEXT-device-parameter]");
6563         abort(); /* Intentionally fail so user can correct issue. */
6564     }
6565     return disp->MergeValidationCachesEXT(device, dstCache, srcCacheCount, pSrcCaches);
6566 }
6567 
GetValidationCacheDataEXT(VkDevice device,VkValidationCacheEXT validationCache,size_t * pDataSize,void * pData)6568 VKAPI_ATTR VkResult VKAPI_CALL GetValidationCacheDataEXT(
6569     VkDevice                                    device,
6570     VkValidationCacheEXT                        validationCache,
6571     size_t*                                     pDataSize,
6572     void*                                       pData) {
6573     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6574     if (NULL == disp) {
6575         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6576                    "vkGetValidationCacheDataEXT: Invalid device "
6577                    "[VUID-vkGetValidationCacheDataEXT-device-parameter]");
6578         abort(); /* Intentionally fail so user can correct issue. */
6579     }
6580     return disp->GetValidationCacheDataEXT(device, validationCache, pDataSize, pData);
6581 }
6582 
6583 
6584 // ---- VK_NV_shading_rate_image extension trampoline/terminators
6585 
CmdBindShadingRateImageNV(VkCommandBuffer commandBuffer,VkImageView imageView,VkImageLayout imageLayout)6586 VKAPI_ATTR void VKAPI_CALL CmdBindShadingRateImageNV(
6587     VkCommandBuffer                             commandBuffer,
6588     VkImageView                                 imageView,
6589     VkImageLayout                               imageLayout) {
6590     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6591     if (NULL == disp) {
6592         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6593                    "vkCmdBindShadingRateImageNV: Invalid commandBuffer "
6594                    "[VUID-vkCmdBindShadingRateImageNV-commandBuffer-parameter]");
6595         abort(); /* Intentionally fail so user can correct issue. */
6596     }
6597     disp->CmdBindShadingRateImageNV(commandBuffer, imageView, imageLayout);
6598 }
6599 
CmdSetViewportShadingRatePaletteNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkShadingRatePaletteNV * pShadingRatePalettes)6600 VKAPI_ATTR void VKAPI_CALL CmdSetViewportShadingRatePaletteNV(
6601     VkCommandBuffer                             commandBuffer,
6602     uint32_t                                    firstViewport,
6603     uint32_t                                    viewportCount,
6604     const VkShadingRatePaletteNV*               pShadingRatePalettes) {
6605     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6606     if (NULL == disp) {
6607         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6608                    "vkCmdSetViewportShadingRatePaletteNV: Invalid commandBuffer "
6609                    "[VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-parameter]");
6610         abort(); /* Intentionally fail so user can correct issue. */
6611     }
6612     disp->CmdSetViewportShadingRatePaletteNV(commandBuffer, firstViewport, viewportCount, pShadingRatePalettes);
6613 }
6614 
CmdSetCoarseSampleOrderNV(VkCommandBuffer commandBuffer,VkCoarseSampleOrderTypeNV sampleOrderType,uint32_t customSampleOrderCount,const VkCoarseSampleOrderCustomNV * pCustomSampleOrders)6615 VKAPI_ATTR void VKAPI_CALL CmdSetCoarseSampleOrderNV(
6616     VkCommandBuffer                             commandBuffer,
6617     VkCoarseSampleOrderTypeNV                   sampleOrderType,
6618     uint32_t                                    customSampleOrderCount,
6619     const VkCoarseSampleOrderCustomNV*          pCustomSampleOrders) {
6620     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6621     if (NULL == disp) {
6622         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6623                    "vkCmdSetCoarseSampleOrderNV: Invalid commandBuffer "
6624                    "[VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-parameter]");
6625         abort(); /* Intentionally fail so user can correct issue. */
6626     }
6627     disp->CmdSetCoarseSampleOrderNV(commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders);
6628 }
6629 
6630 
6631 // ---- VK_NV_ray_tracing extension trampoline/terminators
6632 
CreateAccelerationStructureNV(VkDevice device,const VkAccelerationStructureCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkAccelerationStructureNV * pAccelerationStructure)6633 VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureNV(
6634     VkDevice                                    device,
6635     const VkAccelerationStructureCreateInfoNV*  pCreateInfo,
6636     const VkAllocationCallbacks*                pAllocator,
6637     VkAccelerationStructureNV*                  pAccelerationStructure) {
6638     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6639     if (NULL == disp) {
6640         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6641                    "vkCreateAccelerationStructureNV: Invalid device "
6642                    "[VUID-vkCreateAccelerationStructureNV-device-parameter]");
6643         abort(); /* Intentionally fail so user can correct issue. */
6644     }
6645     return disp->CreateAccelerationStructureNV(device, pCreateInfo, pAllocator, pAccelerationStructure);
6646 }
6647 
DestroyAccelerationStructureNV(VkDevice device,VkAccelerationStructureNV accelerationStructure,const VkAllocationCallbacks * pAllocator)6648 VKAPI_ATTR void VKAPI_CALL DestroyAccelerationStructureNV(
6649     VkDevice                                    device,
6650     VkAccelerationStructureNV                   accelerationStructure,
6651     const VkAllocationCallbacks*                pAllocator) {
6652     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6653     if (NULL == disp) {
6654         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6655                    "vkDestroyAccelerationStructureNV: Invalid device "
6656                    "[VUID-vkDestroyAccelerationStructureNV-device-parameter]");
6657         abort(); /* Intentionally fail so user can correct issue. */
6658     }
6659     disp->DestroyAccelerationStructureNV(device, accelerationStructure, pAllocator);
6660 }
6661 
GetAccelerationStructureMemoryRequirementsNV(VkDevice device,const VkAccelerationStructureMemoryRequirementsInfoNV * pInfo,VkMemoryRequirements2KHR * pMemoryRequirements)6662 VKAPI_ATTR void VKAPI_CALL GetAccelerationStructureMemoryRequirementsNV(
6663     VkDevice                                    device,
6664     const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
6665     VkMemoryRequirements2KHR*                   pMemoryRequirements) {
6666     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6667     if (NULL == disp) {
6668         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6669                    "vkGetAccelerationStructureMemoryRequirementsNV: Invalid device "
6670                    "[VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter]");
6671         abort(); /* Intentionally fail so user can correct issue. */
6672     }
6673     disp->GetAccelerationStructureMemoryRequirementsNV(device, pInfo, pMemoryRequirements);
6674 }
6675 
BindAccelerationStructureMemoryNV(VkDevice device,uint32_t bindInfoCount,const VkBindAccelerationStructureMemoryInfoNV * pBindInfos)6676 VKAPI_ATTR VkResult VKAPI_CALL BindAccelerationStructureMemoryNV(
6677     VkDevice                                    device,
6678     uint32_t                                    bindInfoCount,
6679     const VkBindAccelerationStructureMemoryInfoNV* pBindInfos) {
6680     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6681     if (NULL == disp) {
6682         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6683                    "vkBindAccelerationStructureMemoryNV: Invalid device "
6684                    "[VUID-vkBindAccelerationStructureMemoryNV-device-parameter]");
6685         abort(); /* Intentionally fail so user can correct issue. */
6686     }
6687     return disp->BindAccelerationStructureMemoryNV(device, bindInfoCount, pBindInfos);
6688 }
6689 
CmdBuildAccelerationStructureNV(VkCommandBuffer commandBuffer,const VkAccelerationStructureInfoNV * pInfo,VkBuffer instanceData,VkDeviceSize instanceOffset,VkBool32 update,VkAccelerationStructureNV dst,VkAccelerationStructureNV src,VkBuffer scratch,VkDeviceSize scratchOffset)6690 VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructureNV(
6691     VkCommandBuffer                             commandBuffer,
6692     const VkAccelerationStructureInfoNV*        pInfo,
6693     VkBuffer                                    instanceData,
6694     VkDeviceSize                                instanceOffset,
6695     VkBool32                                    update,
6696     VkAccelerationStructureNV                   dst,
6697     VkAccelerationStructureNV                   src,
6698     VkBuffer                                    scratch,
6699     VkDeviceSize                                scratchOffset) {
6700     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6701     if (NULL == disp) {
6702         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6703                    "vkCmdBuildAccelerationStructureNV: Invalid commandBuffer "
6704                    "[VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter]");
6705         abort(); /* Intentionally fail so user can correct issue. */
6706     }
6707     disp->CmdBuildAccelerationStructureNV(commandBuffer, pInfo, instanceData, instanceOffset, update, dst, src, scratch, scratchOffset);
6708 }
6709 
CmdCopyAccelerationStructureNV(VkCommandBuffer commandBuffer,VkAccelerationStructureNV dst,VkAccelerationStructureNV src,VkCopyAccelerationStructureModeKHR mode)6710 VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureNV(
6711     VkCommandBuffer                             commandBuffer,
6712     VkAccelerationStructureNV                   dst,
6713     VkAccelerationStructureNV                   src,
6714     VkCopyAccelerationStructureModeKHR          mode) {
6715     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6716     if (NULL == disp) {
6717         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6718                    "vkCmdCopyAccelerationStructureNV: Invalid commandBuffer "
6719                    "[VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter]");
6720         abort(); /* Intentionally fail so user can correct issue. */
6721     }
6722     disp->CmdCopyAccelerationStructureNV(commandBuffer, dst, src, mode);
6723 }
6724 
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)6725 VKAPI_ATTR void VKAPI_CALL CmdTraceRaysNV(
6726     VkCommandBuffer                             commandBuffer,
6727     VkBuffer                                    raygenShaderBindingTableBuffer,
6728     VkDeviceSize                                raygenShaderBindingOffset,
6729     VkBuffer                                    missShaderBindingTableBuffer,
6730     VkDeviceSize                                missShaderBindingOffset,
6731     VkDeviceSize                                missShaderBindingStride,
6732     VkBuffer                                    hitShaderBindingTableBuffer,
6733     VkDeviceSize                                hitShaderBindingOffset,
6734     VkDeviceSize                                hitShaderBindingStride,
6735     VkBuffer                                    callableShaderBindingTableBuffer,
6736     VkDeviceSize                                callableShaderBindingOffset,
6737     VkDeviceSize                                callableShaderBindingStride,
6738     uint32_t                                    width,
6739     uint32_t                                    height,
6740     uint32_t                                    depth) {
6741     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6742     if (NULL == disp) {
6743         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6744                    "vkCmdTraceRaysNV: Invalid commandBuffer "
6745                    "[VUID-vkCmdTraceRaysNV-commandBuffer-parameter]");
6746         abort(); /* Intentionally fail so user can correct issue. */
6747     }
6748     disp->CmdTraceRaysNV(commandBuffer, raygenShaderBindingTableBuffer, raygenShaderBindingOffset, missShaderBindingTableBuffer, missShaderBindingOffset, missShaderBindingStride, hitShaderBindingTableBuffer, hitShaderBindingOffset, hitShaderBindingStride, callableShaderBindingTableBuffer, callableShaderBindingOffset, callableShaderBindingStride, width, height, depth);
6749 }
6750 
CreateRayTracingPipelinesNV(VkDevice device,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkRayTracingPipelineCreateInfoNV * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)6751 VKAPI_ATTR VkResult VKAPI_CALL CreateRayTracingPipelinesNV(
6752     VkDevice                                    device,
6753     VkPipelineCache                             pipelineCache,
6754     uint32_t                                    createInfoCount,
6755     const VkRayTracingPipelineCreateInfoNV*     pCreateInfos,
6756     const VkAllocationCallbacks*                pAllocator,
6757     VkPipeline*                                 pPipelines) {
6758     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6759     if (NULL == disp) {
6760         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6761                    "vkCreateRayTracingPipelinesNV: Invalid device "
6762                    "[VUID-vkCreateRayTracingPipelinesNV-device-parameter]");
6763         abort(); /* Intentionally fail so user can correct issue. */
6764     }
6765     return disp->CreateRayTracingPipelinesNV(device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
6766 }
6767 
GetRayTracingShaderGroupHandlesKHR(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)6768 VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingShaderGroupHandlesKHR(
6769     VkDevice                                    device,
6770     VkPipeline                                  pipeline,
6771     uint32_t                                    firstGroup,
6772     uint32_t                                    groupCount,
6773     size_t                                      dataSize,
6774     void*                                       pData) {
6775     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6776     if (NULL == disp) {
6777         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6778                    "vkGetRayTracingShaderGroupHandlesKHR: Invalid device "
6779                    "[VUID-vkGetRayTracingShaderGroupHandlesKHR-device-parameter]");
6780         abort(); /* Intentionally fail so user can correct issue. */
6781     }
6782     return disp->GetRayTracingShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData);
6783 }
6784 
GetRayTracingShaderGroupHandlesNV(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)6785 VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingShaderGroupHandlesNV(
6786     VkDevice                                    device,
6787     VkPipeline                                  pipeline,
6788     uint32_t                                    firstGroup,
6789     uint32_t                                    groupCount,
6790     size_t                                      dataSize,
6791     void*                                       pData) {
6792     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6793     if (NULL == disp) {
6794         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6795                    "vkGetRayTracingShaderGroupHandlesNV: Invalid device "
6796                    "[VUID-vkGetRayTracingShaderGroupHandlesNV-device-parameter]");
6797         abort(); /* Intentionally fail so user can correct issue. */
6798     }
6799     return disp->GetRayTracingShaderGroupHandlesNV(device, pipeline, firstGroup, groupCount, dataSize, pData);
6800 }
6801 
GetAccelerationStructureHandleNV(VkDevice device,VkAccelerationStructureNV accelerationStructure,size_t dataSize,void * pData)6802 VKAPI_ATTR VkResult VKAPI_CALL GetAccelerationStructureHandleNV(
6803     VkDevice                                    device,
6804     VkAccelerationStructureNV                   accelerationStructure,
6805     size_t                                      dataSize,
6806     void*                                       pData) {
6807     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6808     if (NULL == disp) {
6809         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6810                    "vkGetAccelerationStructureHandleNV: Invalid device "
6811                    "[VUID-vkGetAccelerationStructureHandleNV-device-parameter]");
6812         abort(); /* Intentionally fail so user can correct issue. */
6813     }
6814     return disp->GetAccelerationStructureHandleNV(device, accelerationStructure, dataSize, pData);
6815 }
6816 
CmdWriteAccelerationStructuresPropertiesNV(VkCommandBuffer commandBuffer,uint32_t accelerationStructureCount,const VkAccelerationStructureNV * pAccelerationStructures,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)6817 VKAPI_ATTR void VKAPI_CALL CmdWriteAccelerationStructuresPropertiesNV(
6818     VkCommandBuffer                             commandBuffer,
6819     uint32_t                                    accelerationStructureCount,
6820     const VkAccelerationStructureNV*            pAccelerationStructures,
6821     VkQueryType                                 queryType,
6822     VkQueryPool                                 queryPool,
6823     uint32_t                                    firstQuery) {
6824     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6825     if (NULL == disp) {
6826         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6827                    "vkCmdWriteAccelerationStructuresPropertiesNV: Invalid commandBuffer "
6828                    "[VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-parameter]");
6829         abort(); /* Intentionally fail so user can correct issue. */
6830     }
6831     disp->CmdWriteAccelerationStructuresPropertiesNV(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery);
6832 }
6833 
CompileDeferredNV(VkDevice device,VkPipeline pipeline,uint32_t shader)6834 VKAPI_ATTR VkResult VKAPI_CALL CompileDeferredNV(
6835     VkDevice                                    device,
6836     VkPipeline                                  pipeline,
6837     uint32_t                                    shader) {
6838     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6839     if (NULL == disp) {
6840         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6841                    "vkCompileDeferredNV: Invalid device "
6842                    "[VUID-vkCompileDeferredNV-device-parameter]");
6843         abort(); /* Intentionally fail so user can correct issue. */
6844     }
6845     return disp->CompileDeferredNV(device, pipeline, shader);
6846 }
6847 
6848 
6849 // ---- VK_EXT_external_memory_host extension trampoline/terminators
6850 
GetMemoryHostPointerPropertiesEXT(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,const void * pHostPointer,VkMemoryHostPointerPropertiesEXT * pMemoryHostPointerProperties)6851 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryHostPointerPropertiesEXT(
6852     VkDevice                                    device,
6853     VkExternalMemoryHandleTypeFlagBits          handleType,
6854     const void*                                 pHostPointer,
6855     VkMemoryHostPointerPropertiesEXT*           pMemoryHostPointerProperties) {
6856     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6857     if (NULL == disp) {
6858         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6859                    "vkGetMemoryHostPointerPropertiesEXT: Invalid device "
6860                    "[VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter]");
6861         abort(); /* Intentionally fail so user can correct issue. */
6862     }
6863     return disp->GetMemoryHostPointerPropertiesEXT(device, handleType, pHostPointer, pMemoryHostPointerProperties);
6864 }
6865 
6866 
6867 // ---- VK_AMD_buffer_marker extension trampoline/terminators
6868 
CmdWriteBufferMarkerAMD(VkCommandBuffer commandBuffer,VkPipelineStageFlagBits pipelineStage,VkBuffer dstBuffer,VkDeviceSize dstOffset,uint32_t marker)6869 VKAPI_ATTR void VKAPI_CALL CmdWriteBufferMarkerAMD(
6870     VkCommandBuffer                             commandBuffer,
6871     VkPipelineStageFlagBits                     pipelineStage,
6872     VkBuffer                                    dstBuffer,
6873     VkDeviceSize                                dstOffset,
6874     uint32_t                                    marker) {
6875     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6876     if (NULL == disp) {
6877         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6878                    "vkCmdWriteBufferMarkerAMD: Invalid commandBuffer "
6879                    "[VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-parameter]");
6880         abort(); /* Intentionally fail so user can correct issue. */
6881     }
6882     disp->CmdWriteBufferMarkerAMD(commandBuffer, pipelineStage, dstBuffer, dstOffset, marker);
6883 }
6884 
CmdWriteBufferMarker2AMD(VkCommandBuffer commandBuffer,VkPipelineStageFlags2 stage,VkBuffer dstBuffer,VkDeviceSize dstOffset,uint32_t marker)6885 VKAPI_ATTR void VKAPI_CALL CmdWriteBufferMarker2AMD(
6886     VkCommandBuffer                             commandBuffer,
6887     VkPipelineStageFlags2                       stage,
6888     VkBuffer                                    dstBuffer,
6889     VkDeviceSize                                dstOffset,
6890     uint32_t                                    marker) {
6891     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6892     if (NULL == disp) {
6893         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6894                    "vkCmdWriteBufferMarker2AMD: Invalid commandBuffer "
6895                    "[VUID-vkCmdWriteBufferMarker2AMD-commandBuffer-parameter]");
6896         abort(); /* Intentionally fail so user can correct issue. */
6897     }
6898     disp->CmdWriteBufferMarker2AMD(commandBuffer, stage, dstBuffer, dstOffset, marker);
6899 }
6900 
6901 
6902 // ---- VK_EXT_calibrated_timestamps extension trampoline/terminators
6903 
GetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice physicalDevice,uint32_t * pTimeDomainCount,VkTimeDomainKHR * pTimeDomains)6904 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCalibrateableTimeDomainsEXT(
6905     VkPhysicalDevice                            physicalDevice,
6906     uint32_t*                                   pTimeDomainCount,
6907     VkTimeDomainKHR*                            pTimeDomains) {
6908     const VkLayerInstanceDispatchTable *disp;
6909     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
6910     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
6911         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6912                    "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT: Invalid physicalDevice "
6913                    "[VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-physicalDevice-parameter]");
6914         abort(); /* Intentionally fail so user can correct issue. */
6915     }
6916     disp = loader_get_instance_layer_dispatch(physicalDevice);
6917     return disp->GetPhysicalDeviceCalibrateableTimeDomainsEXT(unwrapped_phys_dev, pTimeDomainCount, pTimeDomains);
6918 }
6919 
terminator_GetPhysicalDeviceCalibrateableTimeDomainsEXT(VkPhysicalDevice physicalDevice,uint32_t * pTimeDomainCount,VkTimeDomainKHR * pTimeDomains)6920 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceCalibrateableTimeDomainsEXT(
6921     VkPhysicalDevice                            physicalDevice,
6922     uint32_t*                                   pTimeDomainCount,
6923     VkTimeDomainKHR*                            pTimeDomains) {
6924     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
6925     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
6926     if (NULL == icd_term->dispatch.GetPhysicalDeviceCalibrateableTimeDomainsEXT) {
6927         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
6928                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceCalibrateableTimeDomainsEXT");
6929         abort(); /* Intentionally fail so user can correct issue. */
6930     }
6931     return icd_term->dispatch.GetPhysicalDeviceCalibrateableTimeDomainsEXT(phys_dev_term->phys_dev, pTimeDomainCount, pTimeDomains);
6932 }
6933 
GetCalibratedTimestampsEXT(VkDevice device,uint32_t timestampCount,const VkCalibratedTimestampInfoKHR * pTimestampInfos,uint64_t * pTimestamps,uint64_t * pMaxDeviation)6934 VKAPI_ATTR VkResult VKAPI_CALL GetCalibratedTimestampsEXT(
6935     VkDevice                                    device,
6936     uint32_t                                    timestampCount,
6937     const VkCalibratedTimestampInfoKHR*         pTimestampInfos,
6938     uint64_t*                                   pTimestamps,
6939     uint64_t*                                   pMaxDeviation) {
6940     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
6941     if (NULL == disp) {
6942         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6943                    "vkGetCalibratedTimestampsEXT: Invalid device "
6944                    "[VUID-vkGetCalibratedTimestampsEXT-device-parameter]");
6945         abort(); /* Intentionally fail so user can correct issue. */
6946     }
6947     return disp->GetCalibratedTimestampsEXT(device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation);
6948 }
6949 
6950 
6951 // ---- VK_NV_mesh_shader extension trampoline/terminators
6952 
CmdDrawMeshTasksNV(VkCommandBuffer commandBuffer,uint32_t taskCount,uint32_t firstTask)6953 VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksNV(
6954     VkCommandBuffer                             commandBuffer,
6955     uint32_t                                    taskCount,
6956     uint32_t                                    firstTask) {
6957     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6958     if (NULL == disp) {
6959         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6960                    "vkCmdDrawMeshTasksNV: Invalid commandBuffer "
6961                    "[VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter]");
6962         abort(); /* Intentionally fail so user can correct issue. */
6963     }
6964     disp->CmdDrawMeshTasksNV(commandBuffer, taskCount, firstTask);
6965 }
6966 
CmdDrawMeshTasksIndirectNV(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)6967 VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectNV(
6968     VkCommandBuffer                             commandBuffer,
6969     VkBuffer                                    buffer,
6970     VkDeviceSize                                offset,
6971     uint32_t                                    drawCount,
6972     uint32_t                                    stride) {
6973     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6974     if (NULL == disp) {
6975         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6976                    "vkCmdDrawMeshTasksIndirectNV: Invalid commandBuffer "
6977                    "[VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-parameter]");
6978         abort(); /* Intentionally fail so user can correct issue. */
6979     }
6980     disp->CmdDrawMeshTasksIndirectNV(commandBuffer, buffer, offset, drawCount, stride);
6981 }
6982 
CmdDrawMeshTasksIndirectCountNV(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)6983 VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectCountNV(
6984     VkCommandBuffer                             commandBuffer,
6985     VkBuffer                                    buffer,
6986     VkDeviceSize                                offset,
6987     VkBuffer                                    countBuffer,
6988     VkDeviceSize                                countBufferOffset,
6989     uint32_t                                    maxDrawCount,
6990     uint32_t                                    stride) {
6991     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
6992     if (NULL == disp) {
6993         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
6994                    "vkCmdDrawMeshTasksIndirectCountNV: Invalid commandBuffer "
6995                    "[VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter]");
6996         abort(); /* Intentionally fail so user can correct issue. */
6997     }
6998     disp->CmdDrawMeshTasksIndirectCountNV(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
6999 }
7000 
7001 
7002 // ---- VK_NV_scissor_exclusive extension trampoline/terminators
7003 
CmdSetExclusiveScissorEnableNV(VkCommandBuffer commandBuffer,uint32_t firstExclusiveScissor,uint32_t exclusiveScissorCount,const VkBool32 * pExclusiveScissorEnables)7004 VKAPI_ATTR void VKAPI_CALL CmdSetExclusiveScissorEnableNV(
7005     VkCommandBuffer                             commandBuffer,
7006     uint32_t                                    firstExclusiveScissor,
7007     uint32_t                                    exclusiveScissorCount,
7008     const VkBool32*                             pExclusiveScissorEnables) {
7009     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7010     if (NULL == disp) {
7011         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7012                    "vkCmdSetExclusiveScissorEnableNV: Invalid commandBuffer "
7013                    "[VUID-vkCmdSetExclusiveScissorEnableNV-commandBuffer-parameter]");
7014         abort(); /* Intentionally fail so user can correct issue. */
7015     }
7016     disp->CmdSetExclusiveScissorEnableNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissorEnables);
7017 }
7018 
CmdSetExclusiveScissorNV(VkCommandBuffer commandBuffer,uint32_t firstExclusiveScissor,uint32_t exclusiveScissorCount,const VkRect2D * pExclusiveScissors)7019 VKAPI_ATTR void VKAPI_CALL CmdSetExclusiveScissorNV(
7020     VkCommandBuffer                             commandBuffer,
7021     uint32_t                                    firstExclusiveScissor,
7022     uint32_t                                    exclusiveScissorCount,
7023     const VkRect2D*                             pExclusiveScissors) {
7024     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7025     if (NULL == disp) {
7026         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7027                    "vkCmdSetExclusiveScissorNV: Invalid commandBuffer "
7028                    "[VUID-vkCmdSetExclusiveScissorNV-commandBuffer-parameter]");
7029         abort(); /* Intentionally fail so user can correct issue. */
7030     }
7031     disp->CmdSetExclusiveScissorNV(commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors);
7032 }
7033 
7034 
7035 // ---- VK_NV_device_diagnostic_checkpoints extension trampoline/terminators
7036 
CmdSetCheckpointNV(VkCommandBuffer commandBuffer,const void * pCheckpointMarker)7037 VKAPI_ATTR void VKAPI_CALL CmdSetCheckpointNV(
7038     VkCommandBuffer                             commandBuffer,
7039     const void*                                 pCheckpointMarker) {
7040     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7041     if (NULL == disp) {
7042         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7043                    "vkCmdSetCheckpointNV: Invalid commandBuffer "
7044                    "[VUID-vkCmdSetCheckpointNV-commandBuffer-parameter]");
7045         abort(); /* Intentionally fail so user can correct issue. */
7046     }
7047     disp->CmdSetCheckpointNV(commandBuffer, pCheckpointMarker);
7048 }
7049 
GetQueueCheckpointDataNV(VkQueue queue,uint32_t * pCheckpointDataCount,VkCheckpointDataNV * pCheckpointData)7050 VKAPI_ATTR void VKAPI_CALL GetQueueCheckpointDataNV(
7051     VkQueue                                     queue,
7052     uint32_t*                                   pCheckpointDataCount,
7053     VkCheckpointDataNV*                         pCheckpointData) {
7054     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
7055     if (NULL == disp) {
7056         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7057                    "vkGetQueueCheckpointDataNV: Invalid queue "
7058                    "[VUID-vkGetQueueCheckpointDataNV-queue-parameter]");
7059         abort(); /* Intentionally fail so user can correct issue. */
7060     }
7061     disp->GetQueueCheckpointDataNV(queue, pCheckpointDataCount, pCheckpointData);
7062 }
7063 
GetQueueCheckpointData2NV(VkQueue queue,uint32_t * pCheckpointDataCount,VkCheckpointData2NV * pCheckpointData)7064 VKAPI_ATTR void VKAPI_CALL GetQueueCheckpointData2NV(
7065     VkQueue                                     queue,
7066     uint32_t*                                   pCheckpointDataCount,
7067     VkCheckpointData2NV*                        pCheckpointData) {
7068     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
7069     if (NULL == disp) {
7070         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7071                    "vkGetQueueCheckpointData2NV: Invalid queue "
7072                    "[VUID-vkGetQueueCheckpointData2NV-queue-parameter]");
7073         abort(); /* Intentionally fail so user can correct issue. */
7074     }
7075     disp->GetQueueCheckpointData2NV(queue, pCheckpointDataCount, pCheckpointData);
7076 }
7077 
7078 
7079 // ---- VK_INTEL_performance_query extension trampoline/terminators
7080 
InitializePerformanceApiINTEL(VkDevice device,const VkInitializePerformanceApiInfoINTEL * pInitializeInfo)7081 VKAPI_ATTR VkResult VKAPI_CALL InitializePerformanceApiINTEL(
7082     VkDevice                                    device,
7083     const VkInitializePerformanceApiInfoINTEL*  pInitializeInfo) {
7084     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7085     if (NULL == disp) {
7086         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7087                    "vkInitializePerformanceApiINTEL: Invalid device "
7088                    "[VUID-vkInitializePerformanceApiINTEL-device-parameter]");
7089         abort(); /* Intentionally fail so user can correct issue. */
7090     }
7091     return disp->InitializePerformanceApiINTEL(device, pInitializeInfo);
7092 }
7093 
UninitializePerformanceApiINTEL(VkDevice device)7094 VKAPI_ATTR void VKAPI_CALL UninitializePerformanceApiINTEL(
7095     VkDevice                                    device) {
7096     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7097     if (NULL == disp) {
7098         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7099                    "vkUninitializePerformanceApiINTEL: Invalid device "
7100                    "[VUID-vkUninitializePerformanceApiINTEL-device-parameter]");
7101         abort(); /* Intentionally fail so user can correct issue. */
7102     }
7103     disp->UninitializePerformanceApiINTEL(device);
7104 }
7105 
CmdSetPerformanceMarkerINTEL(VkCommandBuffer commandBuffer,const VkPerformanceMarkerInfoINTEL * pMarkerInfo)7106 VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceMarkerINTEL(
7107     VkCommandBuffer                             commandBuffer,
7108     const VkPerformanceMarkerInfoINTEL*         pMarkerInfo) {
7109     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7110     if (NULL == disp) {
7111         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7112                    "vkCmdSetPerformanceMarkerINTEL: Invalid commandBuffer "
7113                    "[VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-parameter]");
7114         abort(); /* Intentionally fail so user can correct issue. */
7115     }
7116     return disp->CmdSetPerformanceMarkerINTEL(commandBuffer, pMarkerInfo);
7117 }
7118 
CmdSetPerformanceStreamMarkerINTEL(VkCommandBuffer commandBuffer,const VkPerformanceStreamMarkerInfoINTEL * pMarkerInfo)7119 VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceStreamMarkerINTEL(
7120     VkCommandBuffer                             commandBuffer,
7121     const VkPerformanceStreamMarkerInfoINTEL*   pMarkerInfo) {
7122     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7123     if (NULL == disp) {
7124         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7125                    "vkCmdSetPerformanceStreamMarkerINTEL: Invalid commandBuffer "
7126                    "[VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-parameter]");
7127         abort(); /* Intentionally fail so user can correct issue. */
7128     }
7129     return disp->CmdSetPerformanceStreamMarkerINTEL(commandBuffer, pMarkerInfo);
7130 }
7131 
CmdSetPerformanceOverrideINTEL(VkCommandBuffer commandBuffer,const VkPerformanceOverrideInfoINTEL * pOverrideInfo)7132 VKAPI_ATTR VkResult VKAPI_CALL CmdSetPerformanceOverrideINTEL(
7133     VkCommandBuffer                             commandBuffer,
7134     const VkPerformanceOverrideInfoINTEL*       pOverrideInfo) {
7135     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7136     if (NULL == disp) {
7137         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7138                    "vkCmdSetPerformanceOverrideINTEL: Invalid commandBuffer "
7139                    "[VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-parameter]");
7140         abort(); /* Intentionally fail so user can correct issue. */
7141     }
7142     return disp->CmdSetPerformanceOverrideINTEL(commandBuffer, pOverrideInfo);
7143 }
7144 
AcquirePerformanceConfigurationINTEL(VkDevice device,const VkPerformanceConfigurationAcquireInfoINTEL * pAcquireInfo,VkPerformanceConfigurationINTEL * pConfiguration)7145 VKAPI_ATTR VkResult VKAPI_CALL AcquirePerformanceConfigurationINTEL(
7146     VkDevice                                    device,
7147     const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
7148     VkPerformanceConfigurationINTEL*            pConfiguration) {
7149     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7150     if (NULL == disp) {
7151         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7152                    "vkAcquirePerformanceConfigurationINTEL: Invalid device "
7153                    "[VUID-vkAcquirePerformanceConfigurationINTEL-device-parameter]");
7154         abort(); /* Intentionally fail so user can correct issue. */
7155     }
7156     return disp->AcquirePerformanceConfigurationINTEL(device, pAcquireInfo, pConfiguration);
7157 }
7158 
ReleasePerformanceConfigurationINTEL(VkDevice device,VkPerformanceConfigurationINTEL configuration)7159 VKAPI_ATTR VkResult VKAPI_CALL ReleasePerformanceConfigurationINTEL(
7160     VkDevice                                    device,
7161     VkPerformanceConfigurationINTEL             configuration) {
7162     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7163     if (NULL == disp) {
7164         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7165                    "vkReleasePerformanceConfigurationINTEL: Invalid device "
7166                    "[VUID-vkReleasePerformanceConfigurationINTEL-device-parameter]");
7167         abort(); /* Intentionally fail so user can correct issue. */
7168     }
7169     return disp->ReleasePerformanceConfigurationINTEL(device, configuration);
7170 }
7171 
QueueSetPerformanceConfigurationINTEL(VkQueue queue,VkPerformanceConfigurationINTEL configuration)7172 VKAPI_ATTR VkResult VKAPI_CALL QueueSetPerformanceConfigurationINTEL(
7173     VkQueue                                     queue,
7174     VkPerformanceConfigurationINTEL             configuration) {
7175     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
7176     if (NULL == disp) {
7177         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7178                    "vkQueueSetPerformanceConfigurationINTEL: Invalid queue "
7179                    "[VUID-vkQueueSetPerformanceConfigurationINTEL-queue-parameter]");
7180         abort(); /* Intentionally fail so user can correct issue. */
7181     }
7182     return disp->QueueSetPerformanceConfigurationINTEL(queue, configuration);
7183 }
7184 
GetPerformanceParameterINTEL(VkDevice device,VkPerformanceParameterTypeINTEL parameter,VkPerformanceValueINTEL * pValue)7185 VKAPI_ATTR VkResult VKAPI_CALL GetPerformanceParameterINTEL(
7186     VkDevice                                    device,
7187     VkPerformanceParameterTypeINTEL             parameter,
7188     VkPerformanceValueINTEL*                    pValue) {
7189     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7190     if (NULL == disp) {
7191         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7192                    "vkGetPerformanceParameterINTEL: Invalid device "
7193                    "[VUID-vkGetPerformanceParameterINTEL-device-parameter]");
7194         abort(); /* Intentionally fail so user can correct issue. */
7195     }
7196     return disp->GetPerformanceParameterINTEL(device, parameter, pValue);
7197 }
7198 
7199 
7200 // ---- VK_AMD_display_native_hdr extension trampoline/terminators
7201 
SetLocalDimmingAMD(VkDevice device,VkSwapchainKHR swapChain,VkBool32 localDimmingEnable)7202 VKAPI_ATTR void VKAPI_CALL SetLocalDimmingAMD(
7203     VkDevice                                    device,
7204     VkSwapchainKHR                              swapChain,
7205     VkBool32                                    localDimmingEnable) {
7206     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7207     if (NULL == disp) {
7208         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7209                    "vkSetLocalDimmingAMD: Invalid device "
7210                    "[VUID-vkSetLocalDimmingAMD-device-parameter]");
7211         abort(); /* Intentionally fail so user can correct issue. */
7212     }
7213     disp->SetLocalDimmingAMD(device, swapChain, localDimmingEnable);
7214 }
7215 
7216 
7217 // ---- VK_EXT_buffer_device_address extension trampoline/terminators
7218 
GetBufferDeviceAddressEXT(VkDevice device,const VkBufferDeviceAddressInfo * pInfo)7219 VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetBufferDeviceAddressEXT(
7220     VkDevice                                    device,
7221     const VkBufferDeviceAddressInfo*            pInfo) {
7222     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7223     if (NULL == disp) {
7224         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7225                    "vkGetBufferDeviceAddressEXT: Invalid device "
7226                    "[VUID-vkGetBufferDeviceAddressEXT-device-parameter]");
7227         abort(); /* Intentionally fail so user can correct issue. */
7228     }
7229     return disp->GetBufferDeviceAddressEXT(device, pInfo);
7230 }
7231 
7232 
7233 // ---- VK_NV_cooperative_matrix extension trampoline/terminators
7234 
GetPhysicalDeviceCooperativeMatrixPropertiesNV(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkCooperativeMatrixPropertiesNV * pProperties)7235 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixPropertiesNV(
7236     VkPhysicalDevice                            physicalDevice,
7237     uint32_t*                                   pPropertyCount,
7238     VkCooperativeMatrixPropertiesNV*            pProperties) {
7239     const VkLayerInstanceDispatchTable *disp;
7240     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
7241     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
7242         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7243                    "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV: Invalid physicalDevice "
7244                    "[VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-physicalDevice-parameter]");
7245         abort(); /* Intentionally fail so user can correct issue. */
7246     }
7247     disp = loader_get_instance_layer_dispatch(physicalDevice);
7248     return disp->GetPhysicalDeviceCooperativeMatrixPropertiesNV(unwrapped_phys_dev, pPropertyCount, pProperties);
7249 }
7250 
terminator_GetPhysicalDeviceCooperativeMatrixPropertiesNV(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkCooperativeMatrixPropertiesNV * pProperties)7251 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceCooperativeMatrixPropertiesNV(
7252     VkPhysicalDevice                            physicalDevice,
7253     uint32_t*                                   pPropertyCount,
7254     VkCooperativeMatrixPropertiesNV*            pProperties) {
7255     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
7256     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
7257     if (NULL == icd_term->dispatch.GetPhysicalDeviceCooperativeMatrixPropertiesNV) {
7258         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
7259                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceCooperativeMatrixPropertiesNV");
7260         abort(); /* Intentionally fail so user can correct issue. */
7261     }
7262     return icd_term->dispatch.GetPhysicalDeviceCooperativeMatrixPropertiesNV(phys_dev_term->phys_dev, pPropertyCount, pProperties);
7263 }
7264 
7265 
7266 // ---- VK_NV_coverage_reduction_mode extension trampoline/terminators
7267 
GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(VkPhysicalDevice physicalDevice,uint32_t * pCombinationCount,VkFramebufferMixedSamplesCombinationNV * pCombinations)7268 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
7269     VkPhysicalDevice                            physicalDevice,
7270     uint32_t*                                   pCombinationCount,
7271     VkFramebufferMixedSamplesCombinationNV*     pCombinations) {
7272     const VkLayerInstanceDispatchTable *disp;
7273     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
7274     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
7275         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7276                    "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV: Invalid physicalDevice "
7277                    "[VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-physicalDevice-parameter]");
7278         abort(); /* Intentionally fail so user can correct issue. */
7279     }
7280     disp = loader_get_instance_layer_dispatch(physicalDevice);
7281     return disp->GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(unwrapped_phys_dev, pCombinationCount, pCombinations);
7282 }
7283 
terminator_GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(VkPhysicalDevice physicalDevice,uint32_t * pCombinationCount,VkFramebufferMixedSamplesCombinationNV * pCombinations)7284 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
7285     VkPhysicalDevice                            physicalDevice,
7286     uint32_t*                                   pCombinationCount,
7287     VkFramebufferMixedSamplesCombinationNV*     pCombinations) {
7288     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
7289     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
7290     if (NULL == icd_term->dispatch.GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV) {
7291         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
7292                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV");
7293         abort(); /* Intentionally fail so user can correct issue. */
7294     }
7295     return icd_term->dispatch.GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(phys_dev_term->phys_dev, pCombinationCount, pCombinations);
7296 }
7297 
7298 
7299 // ---- VK_EXT_full_screen_exclusive extension trampoline/terminators
7300 
7301 #if defined(VK_USE_PLATFORM_WIN32_KHR)
AcquireFullScreenExclusiveModeEXT(VkDevice device,VkSwapchainKHR swapchain)7302 VKAPI_ATTR VkResult VKAPI_CALL AcquireFullScreenExclusiveModeEXT(
7303     VkDevice                                    device,
7304     VkSwapchainKHR                              swapchain) {
7305     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7306     if (NULL == disp) {
7307         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7308                    "vkAcquireFullScreenExclusiveModeEXT: Invalid device "
7309                    "[VUID-vkAcquireFullScreenExclusiveModeEXT-device-parameter]");
7310         abort(); /* Intentionally fail so user can correct issue. */
7311     }
7312     return disp->AcquireFullScreenExclusiveModeEXT(device, swapchain);
7313 }
7314 
7315 #endif // VK_USE_PLATFORM_WIN32_KHR
7316 #if defined(VK_USE_PLATFORM_WIN32_KHR)
ReleaseFullScreenExclusiveModeEXT(VkDevice device,VkSwapchainKHR swapchain)7317 VKAPI_ATTR VkResult VKAPI_CALL ReleaseFullScreenExclusiveModeEXT(
7318     VkDevice                                    device,
7319     VkSwapchainKHR                              swapchain) {
7320     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7321     if (NULL == disp) {
7322         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7323                    "vkReleaseFullScreenExclusiveModeEXT: Invalid device "
7324                    "[VUID-vkReleaseFullScreenExclusiveModeEXT-device-parameter]");
7325         abort(); /* Intentionally fail so user can correct issue. */
7326     }
7327     return disp->ReleaseFullScreenExclusiveModeEXT(device, swapchain);
7328 }
7329 
7330 #endif // VK_USE_PLATFORM_WIN32_KHR
7331 
7332 // ---- VK_EXT_line_rasterization extension trampoline/terminators
7333 
CmdSetLineStippleEXT(VkCommandBuffer commandBuffer,uint32_t lineStippleFactor,uint16_t lineStipplePattern)7334 VKAPI_ATTR void VKAPI_CALL CmdSetLineStippleEXT(
7335     VkCommandBuffer                             commandBuffer,
7336     uint32_t                                    lineStippleFactor,
7337     uint16_t                                    lineStipplePattern) {
7338     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7339     if (NULL == disp) {
7340         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7341                    "vkCmdSetLineStippleEXT: Invalid commandBuffer "
7342                    "[VUID-vkCmdSetLineStippleEXT-commandBuffer-parameter]");
7343         abort(); /* Intentionally fail so user can correct issue. */
7344     }
7345     disp->CmdSetLineStippleEXT(commandBuffer, lineStippleFactor, lineStipplePattern);
7346 }
7347 
7348 
7349 // ---- VK_EXT_host_query_reset extension trampoline/terminators
7350 
ResetQueryPoolEXT(VkDevice device,VkQueryPool queryPool,uint32_t firstQuery,uint32_t queryCount)7351 VKAPI_ATTR void VKAPI_CALL ResetQueryPoolEXT(
7352     VkDevice                                    device,
7353     VkQueryPool                                 queryPool,
7354     uint32_t                                    firstQuery,
7355     uint32_t                                    queryCount) {
7356     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7357     if (NULL == disp) {
7358         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7359                    "vkResetQueryPoolEXT: Invalid device "
7360                    "[VUID-vkResetQueryPoolEXT-device-parameter]");
7361         abort(); /* Intentionally fail so user can correct issue. */
7362     }
7363     disp->ResetQueryPoolEXT(device, queryPool, firstQuery, queryCount);
7364 }
7365 
7366 
7367 // ---- VK_EXT_extended_dynamic_state extension trampoline/terminators
7368 
CmdSetCullModeEXT(VkCommandBuffer commandBuffer,VkCullModeFlags cullMode)7369 VKAPI_ATTR void VKAPI_CALL CmdSetCullModeEXT(
7370     VkCommandBuffer                             commandBuffer,
7371     VkCullModeFlags                             cullMode) {
7372     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7373     if (NULL == disp) {
7374         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7375                    "vkCmdSetCullModeEXT: Invalid commandBuffer "
7376                    "[VUID-vkCmdSetCullModeEXT-commandBuffer-parameter]");
7377         abort(); /* Intentionally fail so user can correct issue. */
7378     }
7379     disp->CmdSetCullModeEXT(commandBuffer, cullMode);
7380 }
7381 
CmdSetFrontFaceEXT(VkCommandBuffer commandBuffer,VkFrontFace frontFace)7382 VKAPI_ATTR void VKAPI_CALL CmdSetFrontFaceEXT(
7383     VkCommandBuffer                             commandBuffer,
7384     VkFrontFace                                 frontFace) {
7385     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7386     if (NULL == disp) {
7387         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7388                    "vkCmdSetFrontFaceEXT: Invalid commandBuffer "
7389                    "[VUID-vkCmdSetFrontFaceEXT-commandBuffer-parameter]");
7390         abort(); /* Intentionally fail so user can correct issue. */
7391     }
7392     disp->CmdSetFrontFaceEXT(commandBuffer, frontFace);
7393 }
7394 
CmdSetPrimitiveTopologyEXT(VkCommandBuffer commandBuffer,VkPrimitiveTopology primitiveTopology)7395 VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveTopologyEXT(
7396     VkCommandBuffer                             commandBuffer,
7397     VkPrimitiveTopology                         primitiveTopology) {
7398     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7399     if (NULL == disp) {
7400         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7401                    "vkCmdSetPrimitiveTopologyEXT: Invalid commandBuffer "
7402                    "[VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-parameter]");
7403         abort(); /* Intentionally fail so user can correct issue. */
7404     }
7405     disp->CmdSetPrimitiveTopologyEXT(commandBuffer, primitiveTopology);
7406 }
7407 
CmdSetViewportWithCountEXT(VkCommandBuffer commandBuffer,uint32_t viewportCount,const VkViewport * pViewports)7408 VKAPI_ATTR void VKAPI_CALL CmdSetViewportWithCountEXT(
7409     VkCommandBuffer                             commandBuffer,
7410     uint32_t                                    viewportCount,
7411     const VkViewport*                           pViewports) {
7412     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7413     if (NULL == disp) {
7414         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7415                    "vkCmdSetViewportWithCountEXT: Invalid commandBuffer "
7416                    "[VUID-vkCmdSetViewportWithCountEXT-commandBuffer-parameter]");
7417         abort(); /* Intentionally fail so user can correct issue. */
7418     }
7419     disp->CmdSetViewportWithCountEXT(commandBuffer, viewportCount, pViewports);
7420 }
7421 
CmdSetScissorWithCountEXT(VkCommandBuffer commandBuffer,uint32_t scissorCount,const VkRect2D * pScissors)7422 VKAPI_ATTR void VKAPI_CALL CmdSetScissorWithCountEXT(
7423     VkCommandBuffer                             commandBuffer,
7424     uint32_t                                    scissorCount,
7425     const VkRect2D*                             pScissors) {
7426     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7427     if (NULL == disp) {
7428         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7429                    "vkCmdSetScissorWithCountEXT: Invalid commandBuffer "
7430                    "[VUID-vkCmdSetScissorWithCountEXT-commandBuffer-parameter]");
7431         abort(); /* Intentionally fail so user can correct issue. */
7432     }
7433     disp->CmdSetScissorWithCountEXT(commandBuffer, scissorCount, pScissors);
7434 }
7435 
CmdBindVertexBuffers2EXT(VkCommandBuffer commandBuffer,uint32_t firstBinding,uint32_t bindingCount,const VkBuffer * pBuffers,const VkDeviceSize * pOffsets,const VkDeviceSize * pSizes,const VkDeviceSize * pStrides)7436 VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers2EXT(
7437     VkCommandBuffer                             commandBuffer,
7438     uint32_t                                    firstBinding,
7439     uint32_t                                    bindingCount,
7440     const VkBuffer*                             pBuffers,
7441     const VkDeviceSize*                         pOffsets,
7442     const VkDeviceSize*                         pSizes,
7443     const VkDeviceSize*                         pStrides) {
7444     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7445     if (NULL == disp) {
7446         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7447                    "vkCmdBindVertexBuffers2EXT: Invalid commandBuffer "
7448                    "[VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-parameter]");
7449         abort(); /* Intentionally fail so user can correct issue. */
7450     }
7451     disp->CmdBindVertexBuffers2EXT(commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides);
7452 }
7453 
CmdSetDepthTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthTestEnable)7454 VKAPI_ATTR void VKAPI_CALL CmdSetDepthTestEnableEXT(
7455     VkCommandBuffer                             commandBuffer,
7456     VkBool32                                    depthTestEnable) {
7457     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7458     if (NULL == disp) {
7459         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7460                    "vkCmdSetDepthTestEnableEXT: Invalid commandBuffer "
7461                    "[VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-parameter]");
7462         abort(); /* Intentionally fail so user can correct issue. */
7463     }
7464     disp->CmdSetDepthTestEnableEXT(commandBuffer, depthTestEnable);
7465 }
7466 
CmdSetDepthWriteEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthWriteEnable)7467 VKAPI_ATTR void VKAPI_CALL CmdSetDepthWriteEnableEXT(
7468     VkCommandBuffer                             commandBuffer,
7469     VkBool32                                    depthWriteEnable) {
7470     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7471     if (NULL == disp) {
7472         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7473                    "vkCmdSetDepthWriteEnableEXT: Invalid commandBuffer "
7474                    "[VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-parameter]");
7475         abort(); /* Intentionally fail so user can correct issue. */
7476     }
7477     disp->CmdSetDepthWriteEnableEXT(commandBuffer, depthWriteEnable);
7478 }
7479 
CmdSetDepthCompareOpEXT(VkCommandBuffer commandBuffer,VkCompareOp depthCompareOp)7480 VKAPI_ATTR void VKAPI_CALL CmdSetDepthCompareOpEXT(
7481     VkCommandBuffer                             commandBuffer,
7482     VkCompareOp                                 depthCompareOp) {
7483     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7484     if (NULL == disp) {
7485         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7486                    "vkCmdSetDepthCompareOpEXT: Invalid commandBuffer "
7487                    "[VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-parameter]");
7488         abort(); /* Intentionally fail so user can correct issue. */
7489     }
7490     disp->CmdSetDepthCompareOpEXT(commandBuffer, depthCompareOp);
7491 }
7492 
CmdSetDepthBoundsTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthBoundsTestEnable)7493 VKAPI_ATTR void VKAPI_CALL CmdSetDepthBoundsTestEnableEXT(
7494     VkCommandBuffer                             commandBuffer,
7495     VkBool32                                    depthBoundsTestEnable) {
7496     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7497     if (NULL == disp) {
7498         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7499                    "vkCmdSetDepthBoundsTestEnableEXT: Invalid commandBuffer "
7500                    "[VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-parameter]");
7501         abort(); /* Intentionally fail so user can correct issue. */
7502     }
7503     disp->CmdSetDepthBoundsTestEnableEXT(commandBuffer, depthBoundsTestEnable);
7504 }
7505 
CmdSetStencilTestEnableEXT(VkCommandBuffer commandBuffer,VkBool32 stencilTestEnable)7506 VKAPI_ATTR void VKAPI_CALL CmdSetStencilTestEnableEXT(
7507     VkCommandBuffer                             commandBuffer,
7508     VkBool32                                    stencilTestEnable) {
7509     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7510     if (NULL == disp) {
7511         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7512                    "vkCmdSetStencilTestEnableEXT: Invalid commandBuffer "
7513                    "[VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-parameter]");
7514         abort(); /* Intentionally fail so user can correct issue. */
7515     }
7516     disp->CmdSetStencilTestEnableEXT(commandBuffer, stencilTestEnable);
7517 }
7518 
CmdSetStencilOpEXT(VkCommandBuffer commandBuffer,VkStencilFaceFlags faceMask,VkStencilOp failOp,VkStencilOp passOp,VkStencilOp depthFailOp,VkCompareOp compareOp)7519 VKAPI_ATTR void VKAPI_CALL CmdSetStencilOpEXT(
7520     VkCommandBuffer                             commandBuffer,
7521     VkStencilFaceFlags                          faceMask,
7522     VkStencilOp                                 failOp,
7523     VkStencilOp                                 passOp,
7524     VkStencilOp                                 depthFailOp,
7525     VkCompareOp                                 compareOp) {
7526     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7527     if (NULL == disp) {
7528         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7529                    "vkCmdSetStencilOpEXT: Invalid commandBuffer "
7530                    "[VUID-vkCmdSetStencilOpEXT-commandBuffer-parameter]");
7531         abort(); /* Intentionally fail so user can correct issue. */
7532     }
7533     disp->CmdSetStencilOpEXT(commandBuffer, faceMask, failOp, passOp, depthFailOp, compareOp);
7534 }
7535 
7536 
7537 // ---- VK_EXT_host_image_copy extension trampoline/terminators
7538 
CopyMemoryToImageEXT(VkDevice device,const VkCopyMemoryToImageInfo * pCopyMemoryToImageInfo)7539 VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToImageEXT(
7540     VkDevice                                    device,
7541     const VkCopyMemoryToImageInfo*              pCopyMemoryToImageInfo) {
7542     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7543     if (NULL == disp) {
7544         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7545                    "vkCopyMemoryToImageEXT: Invalid device "
7546                    "[VUID-vkCopyMemoryToImageEXT-device-parameter]");
7547         abort(); /* Intentionally fail so user can correct issue. */
7548     }
7549     return disp->CopyMemoryToImageEXT(device, pCopyMemoryToImageInfo);
7550 }
7551 
CopyImageToMemoryEXT(VkDevice device,const VkCopyImageToMemoryInfo * pCopyImageToMemoryInfo)7552 VKAPI_ATTR VkResult VKAPI_CALL CopyImageToMemoryEXT(
7553     VkDevice                                    device,
7554     const VkCopyImageToMemoryInfo*              pCopyImageToMemoryInfo) {
7555     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7556     if (NULL == disp) {
7557         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7558                    "vkCopyImageToMemoryEXT: Invalid device "
7559                    "[VUID-vkCopyImageToMemoryEXT-device-parameter]");
7560         abort(); /* Intentionally fail so user can correct issue. */
7561     }
7562     return disp->CopyImageToMemoryEXT(device, pCopyImageToMemoryInfo);
7563 }
7564 
CopyImageToImageEXT(VkDevice device,const VkCopyImageToImageInfo * pCopyImageToImageInfo)7565 VKAPI_ATTR VkResult VKAPI_CALL CopyImageToImageEXT(
7566     VkDevice                                    device,
7567     const VkCopyImageToImageInfo*               pCopyImageToImageInfo) {
7568     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7569     if (NULL == disp) {
7570         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7571                    "vkCopyImageToImageEXT: Invalid device "
7572                    "[VUID-vkCopyImageToImageEXT-device-parameter]");
7573         abort(); /* Intentionally fail so user can correct issue. */
7574     }
7575     return disp->CopyImageToImageEXT(device, pCopyImageToImageInfo);
7576 }
7577 
TransitionImageLayoutEXT(VkDevice device,uint32_t transitionCount,const VkHostImageLayoutTransitionInfo * pTransitions)7578 VKAPI_ATTR VkResult VKAPI_CALL TransitionImageLayoutEXT(
7579     VkDevice                                    device,
7580     uint32_t                                    transitionCount,
7581     const VkHostImageLayoutTransitionInfo*      pTransitions) {
7582     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7583     if (NULL == disp) {
7584         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7585                    "vkTransitionImageLayoutEXT: Invalid device "
7586                    "[VUID-vkTransitionImageLayoutEXT-device-parameter]");
7587         abort(); /* Intentionally fail so user can correct issue. */
7588     }
7589     return disp->TransitionImageLayoutEXT(device, transitionCount, pTransitions);
7590 }
7591 
GetImageSubresourceLayout2EXT(VkDevice device,VkImage image,const VkImageSubresource2 * pSubresource,VkSubresourceLayout2 * pLayout)7592 VKAPI_ATTR void VKAPI_CALL GetImageSubresourceLayout2EXT(
7593     VkDevice                                    device,
7594     VkImage                                     image,
7595     const VkImageSubresource2*                  pSubresource,
7596     VkSubresourceLayout2*                       pLayout) {
7597     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7598     if (NULL == disp) {
7599         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7600                    "vkGetImageSubresourceLayout2EXT: Invalid device "
7601                    "[VUID-vkGetImageSubresourceLayout2EXT-device-parameter]");
7602         abort(); /* Intentionally fail so user can correct issue. */
7603     }
7604     disp->GetImageSubresourceLayout2EXT(device, image, pSubresource, pLayout);
7605 }
7606 
7607 
7608 // ---- VK_EXT_swapchain_maintenance1 extension trampoline/terminators
7609 
ReleaseSwapchainImagesEXT(VkDevice device,const VkReleaseSwapchainImagesInfoEXT * pReleaseInfo)7610 VKAPI_ATTR VkResult VKAPI_CALL ReleaseSwapchainImagesEXT(
7611     VkDevice                                    device,
7612     const VkReleaseSwapchainImagesInfoEXT*      pReleaseInfo) {
7613     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7614     if (NULL == disp) {
7615         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7616                    "vkReleaseSwapchainImagesEXT: Invalid device "
7617                    "[VUID-vkReleaseSwapchainImagesEXT-device-parameter]");
7618         abort(); /* Intentionally fail so user can correct issue. */
7619     }
7620     return disp->ReleaseSwapchainImagesEXT(device, pReleaseInfo);
7621 }
7622 
7623 
7624 // ---- VK_NV_device_generated_commands extension trampoline/terminators
7625 
GetGeneratedCommandsMemoryRequirementsNV(VkDevice device,const VkGeneratedCommandsMemoryRequirementsInfoNV * pInfo,VkMemoryRequirements2 * pMemoryRequirements)7626 VKAPI_ATTR void VKAPI_CALL GetGeneratedCommandsMemoryRequirementsNV(
7627     VkDevice                                    device,
7628     const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
7629     VkMemoryRequirements2*                      pMemoryRequirements) {
7630     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7631     if (NULL == disp) {
7632         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7633                    "vkGetGeneratedCommandsMemoryRequirementsNV: Invalid device "
7634                    "[VUID-vkGetGeneratedCommandsMemoryRequirementsNV-device-parameter]");
7635         abort(); /* Intentionally fail so user can correct issue. */
7636     }
7637     disp->GetGeneratedCommandsMemoryRequirementsNV(device, pInfo, pMemoryRequirements);
7638 }
7639 
CmdPreprocessGeneratedCommandsNV(VkCommandBuffer commandBuffer,const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo)7640 VKAPI_ATTR void VKAPI_CALL CmdPreprocessGeneratedCommandsNV(
7641     VkCommandBuffer                             commandBuffer,
7642     const VkGeneratedCommandsInfoNV*            pGeneratedCommandsInfo) {
7643     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7644     if (NULL == disp) {
7645         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7646                    "vkCmdPreprocessGeneratedCommandsNV: Invalid commandBuffer "
7647                    "[VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-parameter]");
7648         abort(); /* Intentionally fail so user can correct issue. */
7649     }
7650     disp->CmdPreprocessGeneratedCommandsNV(commandBuffer, pGeneratedCommandsInfo);
7651 }
7652 
CmdExecuteGeneratedCommandsNV(VkCommandBuffer commandBuffer,VkBool32 isPreprocessed,const VkGeneratedCommandsInfoNV * pGeneratedCommandsInfo)7653 VKAPI_ATTR void VKAPI_CALL CmdExecuteGeneratedCommandsNV(
7654     VkCommandBuffer                             commandBuffer,
7655     VkBool32                                    isPreprocessed,
7656     const VkGeneratedCommandsInfoNV*            pGeneratedCommandsInfo) {
7657     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7658     if (NULL == disp) {
7659         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7660                    "vkCmdExecuteGeneratedCommandsNV: Invalid commandBuffer "
7661                    "[VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-parameter]");
7662         abort(); /* Intentionally fail so user can correct issue. */
7663     }
7664     disp->CmdExecuteGeneratedCommandsNV(commandBuffer, isPreprocessed, pGeneratedCommandsInfo);
7665 }
7666 
CmdBindPipelineShaderGroupNV(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipeline pipeline,uint32_t groupIndex)7667 VKAPI_ATTR void VKAPI_CALL CmdBindPipelineShaderGroupNV(
7668     VkCommandBuffer                             commandBuffer,
7669     VkPipelineBindPoint                         pipelineBindPoint,
7670     VkPipeline                                  pipeline,
7671     uint32_t                                    groupIndex) {
7672     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7673     if (NULL == disp) {
7674         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7675                    "vkCmdBindPipelineShaderGroupNV: Invalid commandBuffer "
7676                    "[VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-parameter]");
7677         abort(); /* Intentionally fail so user can correct issue. */
7678     }
7679     disp->CmdBindPipelineShaderGroupNV(commandBuffer, pipelineBindPoint, pipeline, groupIndex);
7680 }
7681 
CreateIndirectCommandsLayoutNV(VkDevice device,const VkIndirectCommandsLayoutCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkIndirectCommandsLayoutNV * pIndirectCommandsLayout)7682 VKAPI_ATTR VkResult VKAPI_CALL CreateIndirectCommandsLayoutNV(
7683     VkDevice                                    device,
7684     const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
7685     const VkAllocationCallbacks*                pAllocator,
7686     VkIndirectCommandsLayoutNV*                 pIndirectCommandsLayout) {
7687     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7688     if (NULL == disp) {
7689         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7690                    "vkCreateIndirectCommandsLayoutNV: Invalid device "
7691                    "[VUID-vkCreateIndirectCommandsLayoutNV-device-parameter]");
7692         abort(); /* Intentionally fail so user can correct issue. */
7693     }
7694     return disp->CreateIndirectCommandsLayoutNV(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
7695 }
7696 
DestroyIndirectCommandsLayoutNV(VkDevice device,VkIndirectCommandsLayoutNV indirectCommandsLayout,const VkAllocationCallbacks * pAllocator)7697 VKAPI_ATTR void VKAPI_CALL DestroyIndirectCommandsLayoutNV(
7698     VkDevice                                    device,
7699     VkIndirectCommandsLayoutNV                  indirectCommandsLayout,
7700     const VkAllocationCallbacks*                pAllocator) {
7701     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7702     if (NULL == disp) {
7703         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7704                    "vkDestroyIndirectCommandsLayoutNV: Invalid device "
7705                    "[VUID-vkDestroyIndirectCommandsLayoutNV-device-parameter]");
7706         abort(); /* Intentionally fail so user can correct issue. */
7707     }
7708     disp->DestroyIndirectCommandsLayoutNV(device, indirectCommandsLayout, pAllocator);
7709 }
7710 
7711 
7712 // ---- VK_EXT_depth_bias_control extension trampoline/terminators
7713 
CmdSetDepthBias2EXT(VkCommandBuffer commandBuffer,const VkDepthBiasInfoEXT * pDepthBiasInfo)7714 VKAPI_ATTR void VKAPI_CALL CmdSetDepthBias2EXT(
7715     VkCommandBuffer                             commandBuffer,
7716     const VkDepthBiasInfoEXT*                   pDepthBiasInfo) {
7717     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7718     if (NULL == disp) {
7719         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7720                    "vkCmdSetDepthBias2EXT: Invalid commandBuffer "
7721                    "[VUID-vkCmdSetDepthBias2EXT-commandBuffer-parameter]");
7722         abort(); /* Intentionally fail so user can correct issue. */
7723     }
7724     disp->CmdSetDepthBias2EXT(commandBuffer, pDepthBiasInfo);
7725 }
7726 
7727 
7728 // ---- VK_EXT_acquire_drm_display extension trampoline/terminators
7729 
AcquireDrmDisplayEXT(VkPhysicalDevice physicalDevice,int32_t drmFd,VkDisplayKHR display)7730 VKAPI_ATTR VkResult VKAPI_CALL AcquireDrmDisplayEXT(
7731     VkPhysicalDevice                            physicalDevice,
7732     int32_t                                     drmFd,
7733     VkDisplayKHR                                display) {
7734     const VkLayerInstanceDispatchTable *disp;
7735     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
7736     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
7737         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7738                    "vkAcquireDrmDisplayEXT: Invalid physicalDevice "
7739                    "[VUID-vkAcquireDrmDisplayEXT-physicalDevice-parameter]");
7740         abort(); /* Intentionally fail so user can correct issue. */
7741     }
7742     disp = loader_get_instance_layer_dispatch(physicalDevice);
7743     return disp->AcquireDrmDisplayEXT(unwrapped_phys_dev, drmFd, display);
7744 }
7745 
terminator_AcquireDrmDisplayEXT(VkPhysicalDevice physicalDevice,int32_t drmFd,VkDisplayKHR display)7746 VKAPI_ATTR VkResult VKAPI_CALL terminator_AcquireDrmDisplayEXT(
7747     VkPhysicalDevice                            physicalDevice,
7748     int32_t                                     drmFd,
7749     VkDisplayKHR                                display) {
7750     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
7751     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
7752     if (NULL == icd_term->dispatch.AcquireDrmDisplayEXT) {
7753         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
7754                    "ICD associated with VkPhysicalDevice does not support AcquireDrmDisplayEXT");
7755         return VK_ERROR_EXTENSION_NOT_PRESENT;
7756     }
7757     return icd_term->dispatch.AcquireDrmDisplayEXT(phys_dev_term->phys_dev, drmFd, display);
7758 }
7759 
GetDrmDisplayEXT(VkPhysicalDevice physicalDevice,int32_t drmFd,uint32_t connectorId,VkDisplayKHR * display)7760 VKAPI_ATTR VkResult VKAPI_CALL GetDrmDisplayEXT(
7761     VkPhysicalDevice                            physicalDevice,
7762     int32_t                                     drmFd,
7763     uint32_t                                    connectorId,
7764     VkDisplayKHR*                               display) {
7765     const VkLayerInstanceDispatchTable *disp;
7766     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
7767     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
7768         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7769                    "vkGetDrmDisplayEXT: Invalid physicalDevice "
7770                    "[VUID-vkGetDrmDisplayEXT-physicalDevice-parameter]");
7771         abort(); /* Intentionally fail so user can correct issue. */
7772     }
7773     disp = loader_get_instance_layer_dispatch(physicalDevice);
7774     return disp->GetDrmDisplayEXT(unwrapped_phys_dev, drmFd, connectorId, display);
7775 }
7776 
terminator_GetDrmDisplayEXT(VkPhysicalDevice physicalDevice,int32_t drmFd,uint32_t connectorId,VkDisplayKHR * display)7777 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetDrmDisplayEXT(
7778     VkPhysicalDevice                            physicalDevice,
7779     int32_t                                     drmFd,
7780     uint32_t                                    connectorId,
7781     VkDisplayKHR*                               display) {
7782     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
7783     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
7784     if (NULL == icd_term->dispatch.GetDrmDisplayEXT) {
7785         loader_log(icd_term->this_instance, VULKAN_LOADER_ERROR_BIT, 0,
7786                    "ICD associated with VkPhysicalDevice does not support GetDrmDisplayEXT");
7787         return VK_ERROR_EXTENSION_NOT_PRESENT;
7788     }
7789     return icd_term->dispatch.GetDrmDisplayEXT(phys_dev_term->phys_dev, drmFd, connectorId, display);
7790 }
7791 
7792 
7793 // ---- VK_EXT_private_data extension trampoline/terminators
7794 
CreatePrivateDataSlotEXT(VkDevice device,const VkPrivateDataSlotCreateInfo * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkPrivateDataSlot * pPrivateDataSlot)7795 VKAPI_ATTR VkResult VKAPI_CALL CreatePrivateDataSlotEXT(
7796     VkDevice                                    device,
7797     const VkPrivateDataSlotCreateInfo*          pCreateInfo,
7798     const VkAllocationCallbacks*                pAllocator,
7799     VkPrivateDataSlot*                          pPrivateDataSlot) {
7800     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7801     if (NULL == disp) {
7802         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7803                    "vkCreatePrivateDataSlotEXT: Invalid device "
7804                    "[VUID-vkCreatePrivateDataSlotEXT-device-parameter]");
7805         abort(); /* Intentionally fail so user can correct issue. */
7806     }
7807     return disp->CreatePrivateDataSlotEXT(device, pCreateInfo, pAllocator, pPrivateDataSlot);
7808 }
7809 
DestroyPrivateDataSlotEXT(VkDevice device,VkPrivateDataSlot privateDataSlot,const VkAllocationCallbacks * pAllocator)7810 VKAPI_ATTR void VKAPI_CALL DestroyPrivateDataSlotEXT(
7811     VkDevice                                    device,
7812     VkPrivateDataSlot                           privateDataSlot,
7813     const VkAllocationCallbacks*                pAllocator) {
7814     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7815     if (NULL == disp) {
7816         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7817                    "vkDestroyPrivateDataSlotEXT: Invalid device "
7818                    "[VUID-vkDestroyPrivateDataSlotEXT-device-parameter]");
7819         abort(); /* Intentionally fail so user can correct issue. */
7820     }
7821     disp->DestroyPrivateDataSlotEXT(device, privateDataSlot, pAllocator);
7822 }
7823 
SetPrivateDataEXT(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t data)7824 VKAPI_ATTR VkResult VKAPI_CALL SetPrivateDataEXT(
7825     VkDevice                                    device,
7826     VkObjectType                                objectType,
7827     uint64_t                                    objectHandle,
7828     VkPrivateDataSlot                           privateDataSlot,
7829     uint64_t                                    data) {
7830     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7831     if (NULL == disp) {
7832         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7833                    "vkSetPrivateDataEXT: Invalid device "
7834                    "[VUID-vkSetPrivateDataEXT-device-parameter]");
7835         abort(); /* Intentionally fail so user can correct issue. */
7836     }
7837     return disp->SetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, data);
7838 }
7839 
GetPrivateDataEXT(VkDevice device,VkObjectType objectType,uint64_t objectHandle,VkPrivateDataSlot privateDataSlot,uint64_t * pData)7840 VKAPI_ATTR void VKAPI_CALL GetPrivateDataEXT(
7841     VkDevice                                    device,
7842     VkObjectType                                objectType,
7843     uint64_t                                    objectHandle,
7844     VkPrivateDataSlot                           privateDataSlot,
7845     uint64_t*                                   pData) {
7846     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7847     if (NULL == disp) {
7848         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7849                    "vkGetPrivateDataEXT: Invalid device "
7850                    "[VUID-vkGetPrivateDataEXT-device-parameter]");
7851         abort(); /* Intentionally fail so user can correct issue. */
7852     }
7853     disp->GetPrivateDataEXT(device, objectType, objectHandle, privateDataSlot, pData);
7854 }
7855 
7856 
7857 // ---- VK_NV_cuda_kernel_launch extension trampoline/terminators
7858 
CreateCudaModuleNV(VkDevice device,const VkCudaModuleCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCudaModuleNV * pModule)7859 VKAPI_ATTR VkResult VKAPI_CALL CreateCudaModuleNV(
7860     VkDevice                                    device,
7861     const VkCudaModuleCreateInfoNV*             pCreateInfo,
7862     const VkAllocationCallbacks*                pAllocator,
7863     VkCudaModuleNV*                             pModule) {
7864     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7865     if (NULL == disp) {
7866         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7867                    "vkCreateCudaModuleNV: Invalid device "
7868                    "[VUID-vkCreateCudaModuleNV-device-parameter]");
7869         abort(); /* Intentionally fail so user can correct issue. */
7870     }
7871     return disp->CreateCudaModuleNV(device, pCreateInfo, pAllocator, pModule);
7872 }
7873 
GetCudaModuleCacheNV(VkDevice device,VkCudaModuleNV module,size_t * pCacheSize,void * pCacheData)7874 VKAPI_ATTR VkResult VKAPI_CALL GetCudaModuleCacheNV(
7875     VkDevice                                    device,
7876     VkCudaModuleNV                              module,
7877     size_t*                                     pCacheSize,
7878     void*                                       pCacheData) {
7879     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7880     if (NULL == disp) {
7881         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7882                    "vkGetCudaModuleCacheNV: Invalid device "
7883                    "[VUID-vkGetCudaModuleCacheNV-device-parameter]");
7884         abort(); /* Intentionally fail so user can correct issue. */
7885     }
7886     return disp->GetCudaModuleCacheNV(device, module, pCacheSize, pCacheData);
7887 }
7888 
CreateCudaFunctionNV(VkDevice device,const VkCudaFunctionCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkCudaFunctionNV * pFunction)7889 VKAPI_ATTR VkResult VKAPI_CALL CreateCudaFunctionNV(
7890     VkDevice                                    device,
7891     const VkCudaFunctionCreateInfoNV*           pCreateInfo,
7892     const VkAllocationCallbacks*                pAllocator,
7893     VkCudaFunctionNV*                           pFunction) {
7894     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7895     if (NULL == disp) {
7896         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7897                    "vkCreateCudaFunctionNV: Invalid device "
7898                    "[VUID-vkCreateCudaFunctionNV-device-parameter]");
7899         abort(); /* Intentionally fail so user can correct issue. */
7900     }
7901     return disp->CreateCudaFunctionNV(device, pCreateInfo, pAllocator, pFunction);
7902 }
7903 
DestroyCudaModuleNV(VkDevice device,VkCudaModuleNV module,const VkAllocationCallbacks * pAllocator)7904 VKAPI_ATTR void VKAPI_CALL DestroyCudaModuleNV(
7905     VkDevice                                    device,
7906     VkCudaModuleNV                              module,
7907     const VkAllocationCallbacks*                pAllocator) {
7908     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7909     if (NULL == disp) {
7910         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7911                    "vkDestroyCudaModuleNV: Invalid device "
7912                    "[VUID-vkDestroyCudaModuleNV-device-parameter]");
7913         abort(); /* Intentionally fail so user can correct issue. */
7914     }
7915     disp->DestroyCudaModuleNV(device, module, pAllocator);
7916 }
7917 
DestroyCudaFunctionNV(VkDevice device,VkCudaFunctionNV function,const VkAllocationCallbacks * pAllocator)7918 VKAPI_ATTR void VKAPI_CALL DestroyCudaFunctionNV(
7919     VkDevice                                    device,
7920     VkCudaFunctionNV                            function,
7921     const VkAllocationCallbacks*                pAllocator) {
7922     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7923     if (NULL == disp) {
7924         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7925                    "vkDestroyCudaFunctionNV: Invalid device "
7926                    "[VUID-vkDestroyCudaFunctionNV-device-parameter]");
7927         abort(); /* Intentionally fail so user can correct issue. */
7928     }
7929     disp->DestroyCudaFunctionNV(device, function, pAllocator);
7930 }
7931 
CmdCudaLaunchKernelNV(VkCommandBuffer commandBuffer,const VkCudaLaunchInfoNV * pLaunchInfo)7932 VKAPI_ATTR void VKAPI_CALL CmdCudaLaunchKernelNV(
7933     VkCommandBuffer                             commandBuffer,
7934     const VkCudaLaunchInfoNV*                   pLaunchInfo) {
7935     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
7936     if (NULL == disp) {
7937         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7938                    "vkCmdCudaLaunchKernelNV: Invalid commandBuffer "
7939                    "[VUID-vkCmdCudaLaunchKernelNV-commandBuffer-parameter]");
7940         abort(); /* Intentionally fail so user can correct issue. */
7941     }
7942     disp->CmdCudaLaunchKernelNV(commandBuffer, pLaunchInfo);
7943 }
7944 
7945 
7946 // ---- VK_EXT_metal_objects extension trampoline/terminators
7947 
7948 #if defined(VK_USE_PLATFORM_METAL_EXT)
ExportMetalObjectsEXT(VkDevice device,VkExportMetalObjectsInfoEXT * pMetalObjectsInfo)7949 VKAPI_ATTR void VKAPI_CALL ExportMetalObjectsEXT(
7950     VkDevice                                    device,
7951     VkExportMetalObjectsInfoEXT*                pMetalObjectsInfo) {
7952     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7953     if (NULL == disp) {
7954         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7955                    "vkExportMetalObjectsEXT: Invalid device "
7956                    "[VUID-vkExportMetalObjectsEXT-device-parameter]");
7957         abort(); /* Intentionally fail so user can correct issue. */
7958     }
7959     disp->ExportMetalObjectsEXT(device, pMetalObjectsInfo);
7960 }
7961 
7962 #endif // VK_USE_PLATFORM_METAL_EXT
7963 
7964 // ---- VK_EXT_descriptor_buffer extension trampoline/terminators
7965 
GetDescriptorSetLayoutSizeEXT(VkDevice device,VkDescriptorSetLayout layout,VkDeviceSize * pLayoutSizeInBytes)7966 VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutSizeEXT(
7967     VkDevice                                    device,
7968     VkDescriptorSetLayout                       layout,
7969     VkDeviceSize*                               pLayoutSizeInBytes) {
7970     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7971     if (NULL == disp) {
7972         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7973                    "vkGetDescriptorSetLayoutSizeEXT: Invalid device "
7974                    "[VUID-vkGetDescriptorSetLayoutSizeEXT-device-parameter]");
7975         abort(); /* Intentionally fail so user can correct issue. */
7976     }
7977     disp->GetDescriptorSetLayoutSizeEXT(device, layout, pLayoutSizeInBytes);
7978 }
7979 
GetDescriptorSetLayoutBindingOffsetEXT(VkDevice device,VkDescriptorSetLayout layout,uint32_t binding,VkDeviceSize * pOffset)7980 VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutBindingOffsetEXT(
7981     VkDevice                                    device,
7982     VkDescriptorSetLayout                       layout,
7983     uint32_t                                    binding,
7984     VkDeviceSize*                               pOffset) {
7985     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
7986     if (NULL == disp) {
7987         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
7988                    "vkGetDescriptorSetLayoutBindingOffsetEXT: Invalid device "
7989                    "[VUID-vkGetDescriptorSetLayoutBindingOffsetEXT-device-parameter]");
7990         abort(); /* Intentionally fail so user can correct issue. */
7991     }
7992     disp->GetDescriptorSetLayoutBindingOffsetEXT(device, layout, binding, pOffset);
7993 }
7994 
GetDescriptorEXT(VkDevice device,const VkDescriptorGetInfoEXT * pDescriptorInfo,size_t dataSize,void * pDescriptor)7995 VKAPI_ATTR void VKAPI_CALL GetDescriptorEXT(
7996     VkDevice                                    device,
7997     const VkDescriptorGetInfoEXT*               pDescriptorInfo,
7998     size_t                                      dataSize,
7999     void*                                       pDescriptor) {
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                    "vkGetDescriptorEXT: Invalid device "
8004                    "[VUID-vkGetDescriptorEXT-device-parameter]");
8005         abort(); /* Intentionally fail so user can correct issue. */
8006     }
8007     disp->GetDescriptorEXT(device, pDescriptorInfo, dataSize, pDescriptor);
8008 }
8009 
CmdBindDescriptorBuffersEXT(VkCommandBuffer commandBuffer,uint32_t bufferCount,const VkDescriptorBufferBindingInfoEXT * pBindingInfos)8010 VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorBuffersEXT(
8011     VkCommandBuffer                             commandBuffer,
8012     uint32_t                                    bufferCount,
8013     const VkDescriptorBufferBindingInfoEXT*     pBindingInfos) {
8014     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8015     if (NULL == disp) {
8016         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8017                    "vkCmdBindDescriptorBuffersEXT: Invalid commandBuffer "
8018                    "[VUID-vkCmdBindDescriptorBuffersEXT-commandBuffer-parameter]");
8019         abort(); /* Intentionally fail so user can correct issue. */
8020     }
8021     disp->CmdBindDescriptorBuffersEXT(commandBuffer, bufferCount, pBindingInfos);
8022 }
8023 
CmdSetDescriptorBufferOffsetsEXT(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t firstSet,uint32_t setCount,const uint32_t * pBufferIndices,const VkDeviceSize * pOffsets)8024 VKAPI_ATTR void VKAPI_CALL CmdSetDescriptorBufferOffsetsEXT(
8025     VkCommandBuffer                             commandBuffer,
8026     VkPipelineBindPoint                         pipelineBindPoint,
8027     VkPipelineLayout                            layout,
8028     uint32_t                                    firstSet,
8029     uint32_t                                    setCount,
8030     const uint32_t*                             pBufferIndices,
8031     const VkDeviceSize*                         pOffsets) {
8032     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8033     if (NULL == disp) {
8034         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8035                    "vkCmdSetDescriptorBufferOffsetsEXT: Invalid commandBuffer "
8036                    "[VUID-vkCmdSetDescriptorBufferOffsetsEXT-commandBuffer-parameter]");
8037         abort(); /* Intentionally fail so user can correct issue. */
8038     }
8039     disp->CmdSetDescriptorBufferOffsetsEXT(commandBuffer, pipelineBindPoint, layout, firstSet, setCount, pBufferIndices, pOffsets);
8040 }
8041 
CmdBindDescriptorBufferEmbeddedSamplersEXT(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipelineLayout layout,uint32_t set)8042 VKAPI_ATTR void VKAPI_CALL CmdBindDescriptorBufferEmbeddedSamplersEXT(
8043     VkCommandBuffer                             commandBuffer,
8044     VkPipelineBindPoint                         pipelineBindPoint,
8045     VkPipelineLayout                            layout,
8046     uint32_t                                    set) {
8047     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8048     if (NULL == disp) {
8049         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8050                    "vkCmdBindDescriptorBufferEmbeddedSamplersEXT: Invalid commandBuffer "
8051                    "[VUID-vkCmdBindDescriptorBufferEmbeddedSamplersEXT-commandBuffer-parameter]");
8052         abort(); /* Intentionally fail so user can correct issue. */
8053     }
8054     disp->CmdBindDescriptorBufferEmbeddedSamplersEXT(commandBuffer, pipelineBindPoint, layout, set);
8055 }
8056 
GetBufferOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkBufferCaptureDescriptorDataInfoEXT * pInfo,void * pData)8057 VKAPI_ATTR VkResult VKAPI_CALL GetBufferOpaqueCaptureDescriptorDataEXT(
8058     VkDevice                                    device,
8059     const VkBufferCaptureDescriptorDataInfoEXT* pInfo,
8060     void*                                       pData) {
8061     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8062     if (NULL == disp) {
8063         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8064                    "vkGetBufferOpaqueCaptureDescriptorDataEXT: Invalid device "
8065                    "[VUID-vkGetBufferOpaqueCaptureDescriptorDataEXT-device-parameter]");
8066         abort(); /* Intentionally fail so user can correct issue. */
8067     }
8068     return disp->GetBufferOpaqueCaptureDescriptorDataEXT(device, pInfo, pData);
8069 }
8070 
GetImageOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkImageCaptureDescriptorDataInfoEXT * pInfo,void * pData)8071 VKAPI_ATTR VkResult VKAPI_CALL GetImageOpaqueCaptureDescriptorDataEXT(
8072     VkDevice                                    device,
8073     const VkImageCaptureDescriptorDataInfoEXT*  pInfo,
8074     void*                                       pData) {
8075     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8076     if (NULL == disp) {
8077         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8078                    "vkGetImageOpaqueCaptureDescriptorDataEXT: Invalid device "
8079                    "[VUID-vkGetImageOpaqueCaptureDescriptorDataEXT-device-parameter]");
8080         abort(); /* Intentionally fail so user can correct issue. */
8081     }
8082     return disp->GetImageOpaqueCaptureDescriptorDataEXT(device, pInfo, pData);
8083 }
8084 
GetImageViewOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkImageViewCaptureDescriptorDataInfoEXT * pInfo,void * pData)8085 VKAPI_ATTR VkResult VKAPI_CALL GetImageViewOpaqueCaptureDescriptorDataEXT(
8086     VkDevice                                    device,
8087     const VkImageViewCaptureDescriptorDataInfoEXT* pInfo,
8088     void*                                       pData) {
8089     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8090     if (NULL == disp) {
8091         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8092                    "vkGetImageViewOpaqueCaptureDescriptorDataEXT: Invalid device "
8093                    "[VUID-vkGetImageViewOpaqueCaptureDescriptorDataEXT-device-parameter]");
8094         abort(); /* Intentionally fail so user can correct issue. */
8095     }
8096     return disp->GetImageViewOpaqueCaptureDescriptorDataEXT(device, pInfo, pData);
8097 }
8098 
GetSamplerOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkSamplerCaptureDescriptorDataInfoEXT * pInfo,void * pData)8099 VKAPI_ATTR VkResult VKAPI_CALL GetSamplerOpaqueCaptureDescriptorDataEXT(
8100     VkDevice                                    device,
8101     const VkSamplerCaptureDescriptorDataInfoEXT* pInfo,
8102     void*                                       pData) {
8103     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8104     if (NULL == disp) {
8105         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8106                    "vkGetSamplerOpaqueCaptureDescriptorDataEXT: Invalid device "
8107                    "[VUID-vkGetSamplerOpaqueCaptureDescriptorDataEXT-device-parameter]");
8108         abort(); /* Intentionally fail so user can correct issue. */
8109     }
8110     return disp->GetSamplerOpaqueCaptureDescriptorDataEXT(device, pInfo, pData);
8111 }
8112 
GetAccelerationStructureOpaqueCaptureDescriptorDataEXT(VkDevice device,const VkAccelerationStructureCaptureDescriptorDataInfoEXT * pInfo,void * pData)8113 VKAPI_ATTR VkResult VKAPI_CALL GetAccelerationStructureOpaqueCaptureDescriptorDataEXT(
8114     VkDevice                                    device,
8115     const VkAccelerationStructureCaptureDescriptorDataInfoEXT* pInfo,
8116     void*                                       pData) {
8117     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8118     if (NULL == disp) {
8119         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8120                    "vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT: Invalid device "
8121                    "[VUID-vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT-device-parameter]");
8122         abort(); /* Intentionally fail so user can correct issue. */
8123     }
8124     return disp->GetAccelerationStructureOpaqueCaptureDescriptorDataEXT(device, pInfo, pData);
8125 }
8126 
8127 
8128 // ---- VK_NV_fragment_shading_rate_enums extension trampoline/terminators
8129 
CmdSetFragmentShadingRateEnumNV(VkCommandBuffer commandBuffer,VkFragmentShadingRateNV shadingRate,const VkFragmentShadingRateCombinerOpKHR combinerOps[2])8130 VKAPI_ATTR void VKAPI_CALL CmdSetFragmentShadingRateEnumNV(
8131     VkCommandBuffer                             commandBuffer,
8132     VkFragmentShadingRateNV                     shadingRate,
8133     const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]) {
8134     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8135     if (NULL == disp) {
8136         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8137                    "vkCmdSetFragmentShadingRateEnumNV: Invalid commandBuffer "
8138                    "[VUID-vkCmdSetFragmentShadingRateEnumNV-commandBuffer-parameter]");
8139         abort(); /* Intentionally fail so user can correct issue. */
8140     }
8141     disp->CmdSetFragmentShadingRateEnumNV(commandBuffer, shadingRate, combinerOps);
8142 }
8143 
8144 
8145 // ---- VK_EXT_device_fault extension trampoline/terminators
8146 
GetDeviceFaultInfoEXT(VkDevice device,VkDeviceFaultCountsEXT * pFaultCounts,VkDeviceFaultInfoEXT * pFaultInfo)8147 VKAPI_ATTR VkResult VKAPI_CALL GetDeviceFaultInfoEXT(
8148     VkDevice                                    device,
8149     VkDeviceFaultCountsEXT*                     pFaultCounts,
8150     VkDeviceFaultInfoEXT*                       pFaultInfo) {
8151     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8152     if (NULL == disp) {
8153         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8154                    "vkGetDeviceFaultInfoEXT: Invalid device "
8155                    "[VUID-vkGetDeviceFaultInfoEXT-device-parameter]");
8156         abort(); /* Intentionally fail so user can correct issue. */
8157     }
8158     return disp->GetDeviceFaultInfoEXT(device, pFaultCounts, pFaultInfo);
8159 }
8160 
8161 
8162 // ---- VK_NV_acquire_winrt_display extension trampoline/terminators
8163 
8164 #if defined(VK_USE_PLATFORM_WIN32_KHR)
AcquireWinrtDisplayNV(VkPhysicalDevice physicalDevice,VkDisplayKHR display)8165 VKAPI_ATTR VkResult VKAPI_CALL AcquireWinrtDisplayNV(
8166     VkPhysicalDevice                            physicalDevice,
8167     VkDisplayKHR                                display) {
8168     const VkLayerInstanceDispatchTable *disp;
8169     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
8170     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
8171         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8172                    "vkAcquireWinrtDisplayNV: Invalid physicalDevice "
8173                    "[VUID-vkAcquireWinrtDisplayNV-physicalDevice-parameter]");
8174         abort(); /* Intentionally fail so user can correct issue. */
8175     }
8176     disp = loader_get_instance_layer_dispatch(physicalDevice);
8177     return disp->AcquireWinrtDisplayNV(unwrapped_phys_dev, display);
8178 }
8179 
terminator_AcquireWinrtDisplayNV(VkPhysicalDevice physicalDevice,VkDisplayKHR display)8180 VKAPI_ATTR VkResult VKAPI_CALL terminator_AcquireWinrtDisplayNV(
8181     VkPhysicalDevice                            physicalDevice,
8182     VkDisplayKHR                                display) {
8183     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
8184     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
8185     if (NULL == icd_term->dispatch.AcquireWinrtDisplayNV) {
8186         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
8187                    "ICD associated with VkPhysicalDevice does not support AcquireWinrtDisplayNV");
8188         abort(); /* Intentionally fail so user can correct issue. */
8189     }
8190     return icd_term->dispatch.AcquireWinrtDisplayNV(phys_dev_term->phys_dev, display);
8191 }
8192 
8193 #endif // VK_USE_PLATFORM_WIN32_KHR
8194 #if defined(VK_USE_PLATFORM_WIN32_KHR)
GetWinrtDisplayNV(VkPhysicalDevice physicalDevice,uint32_t deviceRelativeId,VkDisplayKHR * pDisplay)8195 VKAPI_ATTR VkResult VKAPI_CALL GetWinrtDisplayNV(
8196     VkPhysicalDevice                            physicalDevice,
8197     uint32_t                                    deviceRelativeId,
8198     VkDisplayKHR*                               pDisplay) {
8199     const VkLayerInstanceDispatchTable *disp;
8200     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
8201     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
8202         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8203                    "vkGetWinrtDisplayNV: Invalid physicalDevice "
8204                    "[VUID-vkGetWinrtDisplayNV-physicalDevice-parameter]");
8205         abort(); /* Intentionally fail so user can correct issue. */
8206     }
8207     disp = loader_get_instance_layer_dispatch(physicalDevice);
8208     return disp->GetWinrtDisplayNV(unwrapped_phys_dev, deviceRelativeId, pDisplay);
8209 }
8210 
terminator_GetWinrtDisplayNV(VkPhysicalDevice physicalDevice,uint32_t deviceRelativeId,VkDisplayKHR * pDisplay)8211 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetWinrtDisplayNV(
8212     VkPhysicalDevice                            physicalDevice,
8213     uint32_t                                    deviceRelativeId,
8214     VkDisplayKHR*                               pDisplay) {
8215     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
8216     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
8217     if (NULL == icd_term->dispatch.GetWinrtDisplayNV) {
8218         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
8219                    "ICD associated with VkPhysicalDevice does not support GetWinrtDisplayNV");
8220         abort(); /* Intentionally fail so user can correct issue. */
8221     }
8222     return icd_term->dispatch.GetWinrtDisplayNV(phys_dev_term->phys_dev, deviceRelativeId, pDisplay);
8223 }
8224 
8225 #endif // VK_USE_PLATFORM_WIN32_KHR
8226 
8227 // ---- VK_EXT_vertex_input_dynamic_state extension trampoline/terminators
8228 
CmdSetVertexInputEXT(VkCommandBuffer commandBuffer,uint32_t vertexBindingDescriptionCount,const VkVertexInputBindingDescription2EXT * pVertexBindingDescriptions,uint32_t vertexAttributeDescriptionCount,const VkVertexInputAttributeDescription2EXT * pVertexAttributeDescriptions)8229 VKAPI_ATTR void VKAPI_CALL CmdSetVertexInputEXT(
8230     VkCommandBuffer                             commandBuffer,
8231     uint32_t                                    vertexBindingDescriptionCount,
8232     const VkVertexInputBindingDescription2EXT*  pVertexBindingDescriptions,
8233     uint32_t                                    vertexAttributeDescriptionCount,
8234     const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions) {
8235     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8236     if (NULL == disp) {
8237         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8238                    "vkCmdSetVertexInputEXT: Invalid commandBuffer "
8239                    "[VUID-vkCmdSetVertexInputEXT-commandBuffer-parameter]");
8240         abort(); /* Intentionally fail so user can correct issue. */
8241     }
8242     disp->CmdSetVertexInputEXT(commandBuffer, vertexBindingDescriptionCount, pVertexBindingDescriptions, vertexAttributeDescriptionCount, pVertexAttributeDescriptions);
8243 }
8244 
8245 
8246 // ---- VK_FUCHSIA_external_memory extension trampoline/terminators
8247 
8248 #if defined(VK_USE_PLATFORM_FUCHSIA)
GetMemoryZirconHandleFUCHSIA(VkDevice device,const VkMemoryGetZirconHandleInfoFUCHSIA * pGetZirconHandleInfo,zx_handle_t * pZirconHandle)8249 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryZirconHandleFUCHSIA(
8250     VkDevice                                    device,
8251     const VkMemoryGetZirconHandleInfoFUCHSIA*   pGetZirconHandleInfo,
8252     zx_handle_t*                                pZirconHandle) {
8253     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8254     if (NULL == disp) {
8255         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8256                    "vkGetMemoryZirconHandleFUCHSIA: Invalid device "
8257                    "[VUID-vkGetMemoryZirconHandleFUCHSIA-device-parameter]");
8258         abort(); /* Intentionally fail so user can correct issue. */
8259     }
8260     return disp->GetMemoryZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle);
8261 }
8262 
8263 #endif // VK_USE_PLATFORM_FUCHSIA
8264 #if defined(VK_USE_PLATFORM_FUCHSIA)
GetMemoryZirconHandlePropertiesFUCHSIA(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,zx_handle_t zirconHandle,VkMemoryZirconHandlePropertiesFUCHSIA * pMemoryZirconHandleProperties)8265 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryZirconHandlePropertiesFUCHSIA(
8266     VkDevice                                    device,
8267     VkExternalMemoryHandleTypeFlagBits          handleType,
8268     zx_handle_t                                 zirconHandle,
8269     VkMemoryZirconHandlePropertiesFUCHSIA*      pMemoryZirconHandleProperties) {
8270     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8271     if (NULL == disp) {
8272         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8273                    "vkGetMemoryZirconHandlePropertiesFUCHSIA: Invalid device "
8274                    "[VUID-vkGetMemoryZirconHandlePropertiesFUCHSIA-device-parameter]");
8275         abort(); /* Intentionally fail so user can correct issue. */
8276     }
8277     return disp->GetMemoryZirconHandlePropertiesFUCHSIA(device, handleType, zirconHandle, pMemoryZirconHandleProperties);
8278 }
8279 
8280 #endif // VK_USE_PLATFORM_FUCHSIA
8281 
8282 // ---- VK_FUCHSIA_external_semaphore extension trampoline/terminators
8283 
8284 #if defined(VK_USE_PLATFORM_FUCHSIA)
ImportSemaphoreZirconHandleFUCHSIA(VkDevice device,const VkImportSemaphoreZirconHandleInfoFUCHSIA * pImportSemaphoreZirconHandleInfo)8285 VKAPI_ATTR VkResult VKAPI_CALL ImportSemaphoreZirconHandleFUCHSIA(
8286     VkDevice                                    device,
8287     const VkImportSemaphoreZirconHandleInfoFUCHSIA* pImportSemaphoreZirconHandleInfo) {
8288     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8289     if (NULL == disp) {
8290         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8291                    "vkImportSemaphoreZirconHandleFUCHSIA: Invalid device "
8292                    "[VUID-vkImportSemaphoreZirconHandleFUCHSIA-device-parameter]");
8293         abort(); /* Intentionally fail so user can correct issue. */
8294     }
8295     return disp->ImportSemaphoreZirconHandleFUCHSIA(device, pImportSemaphoreZirconHandleInfo);
8296 }
8297 
8298 #endif // VK_USE_PLATFORM_FUCHSIA
8299 #if defined(VK_USE_PLATFORM_FUCHSIA)
GetSemaphoreZirconHandleFUCHSIA(VkDevice device,const VkSemaphoreGetZirconHandleInfoFUCHSIA * pGetZirconHandleInfo,zx_handle_t * pZirconHandle)8300 VKAPI_ATTR VkResult VKAPI_CALL GetSemaphoreZirconHandleFUCHSIA(
8301     VkDevice                                    device,
8302     const VkSemaphoreGetZirconHandleInfoFUCHSIA* pGetZirconHandleInfo,
8303     zx_handle_t*                                pZirconHandle) {
8304     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8305     if (NULL == disp) {
8306         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8307                    "vkGetSemaphoreZirconHandleFUCHSIA: Invalid device "
8308                    "[VUID-vkGetSemaphoreZirconHandleFUCHSIA-device-parameter]");
8309         abort(); /* Intentionally fail so user can correct issue. */
8310     }
8311     return disp->GetSemaphoreZirconHandleFUCHSIA(device, pGetZirconHandleInfo, pZirconHandle);
8312 }
8313 
8314 #endif // VK_USE_PLATFORM_FUCHSIA
8315 
8316 // ---- VK_FUCHSIA_buffer_collection extension trampoline/terminators
8317 
8318 #if defined(VK_USE_PLATFORM_FUCHSIA)
CreateBufferCollectionFUCHSIA(VkDevice device,const VkBufferCollectionCreateInfoFUCHSIA * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkBufferCollectionFUCHSIA * pCollection)8319 VKAPI_ATTR VkResult VKAPI_CALL CreateBufferCollectionFUCHSIA(
8320     VkDevice                                    device,
8321     const VkBufferCollectionCreateInfoFUCHSIA*  pCreateInfo,
8322     const VkAllocationCallbacks*                pAllocator,
8323     VkBufferCollectionFUCHSIA*                  pCollection) {
8324     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8325     if (NULL == disp) {
8326         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8327                    "vkCreateBufferCollectionFUCHSIA: Invalid device "
8328                    "[VUID-vkCreateBufferCollectionFUCHSIA-device-parameter]");
8329         abort(); /* Intentionally fail so user can correct issue. */
8330     }
8331     return disp->CreateBufferCollectionFUCHSIA(device, pCreateInfo, pAllocator, pCollection);
8332 }
8333 
8334 #endif // VK_USE_PLATFORM_FUCHSIA
8335 #if defined(VK_USE_PLATFORM_FUCHSIA)
SetBufferCollectionImageConstraintsFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,const VkImageConstraintsInfoFUCHSIA * pImageConstraintsInfo)8336 VKAPI_ATTR VkResult VKAPI_CALL SetBufferCollectionImageConstraintsFUCHSIA(
8337     VkDevice                                    device,
8338     VkBufferCollectionFUCHSIA                   collection,
8339     const VkImageConstraintsInfoFUCHSIA*        pImageConstraintsInfo) {
8340     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8341     if (NULL == disp) {
8342         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8343                    "vkSetBufferCollectionImageConstraintsFUCHSIA: Invalid device "
8344                    "[VUID-vkSetBufferCollectionImageConstraintsFUCHSIA-device-parameter]");
8345         abort(); /* Intentionally fail so user can correct issue. */
8346     }
8347     return disp->SetBufferCollectionImageConstraintsFUCHSIA(device, collection, pImageConstraintsInfo);
8348 }
8349 
8350 #endif // VK_USE_PLATFORM_FUCHSIA
8351 #if defined(VK_USE_PLATFORM_FUCHSIA)
SetBufferCollectionBufferConstraintsFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,const VkBufferConstraintsInfoFUCHSIA * pBufferConstraintsInfo)8352 VKAPI_ATTR VkResult VKAPI_CALL SetBufferCollectionBufferConstraintsFUCHSIA(
8353     VkDevice                                    device,
8354     VkBufferCollectionFUCHSIA                   collection,
8355     const VkBufferConstraintsInfoFUCHSIA*       pBufferConstraintsInfo) {
8356     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8357     if (NULL == disp) {
8358         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8359                    "vkSetBufferCollectionBufferConstraintsFUCHSIA: Invalid device "
8360                    "[VUID-vkSetBufferCollectionBufferConstraintsFUCHSIA-device-parameter]");
8361         abort(); /* Intentionally fail so user can correct issue. */
8362     }
8363     return disp->SetBufferCollectionBufferConstraintsFUCHSIA(device, collection, pBufferConstraintsInfo);
8364 }
8365 
8366 #endif // VK_USE_PLATFORM_FUCHSIA
8367 #if defined(VK_USE_PLATFORM_FUCHSIA)
DestroyBufferCollectionFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,const VkAllocationCallbacks * pAllocator)8368 VKAPI_ATTR void VKAPI_CALL DestroyBufferCollectionFUCHSIA(
8369     VkDevice                                    device,
8370     VkBufferCollectionFUCHSIA                   collection,
8371     const VkAllocationCallbacks*                pAllocator) {
8372     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8373     if (NULL == disp) {
8374         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8375                    "vkDestroyBufferCollectionFUCHSIA: Invalid device "
8376                    "[VUID-vkDestroyBufferCollectionFUCHSIA-device-parameter]");
8377         abort(); /* Intentionally fail so user can correct issue. */
8378     }
8379     disp->DestroyBufferCollectionFUCHSIA(device, collection, pAllocator);
8380 }
8381 
8382 #endif // VK_USE_PLATFORM_FUCHSIA
8383 #if defined(VK_USE_PLATFORM_FUCHSIA)
GetBufferCollectionPropertiesFUCHSIA(VkDevice device,VkBufferCollectionFUCHSIA collection,VkBufferCollectionPropertiesFUCHSIA * pProperties)8384 VKAPI_ATTR VkResult VKAPI_CALL GetBufferCollectionPropertiesFUCHSIA(
8385     VkDevice                                    device,
8386     VkBufferCollectionFUCHSIA                   collection,
8387     VkBufferCollectionPropertiesFUCHSIA*        pProperties) {
8388     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8389     if (NULL == disp) {
8390         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8391                    "vkGetBufferCollectionPropertiesFUCHSIA: Invalid device "
8392                    "[VUID-vkGetBufferCollectionPropertiesFUCHSIA-device-parameter]");
8393         abort(); /* Intentionally fail so user can correct issue. */
8394     }
8395     return disp->GetBufferCollectionPropertiesFUCHSIA(device, collection, pProperties);
8396 }
8397 
8398 #endif // VK_USE_PLATFORM_FUCHSIA
8399 
8400 // ---- VK_HUAWEI_subpass_shading extension trampoline/terminators
8401 
GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(VkDevice device,VkRenderPass renderpass,VkExtent2D * pMaxWorkgroupSize)8402 VKAPI_ATTR VkResult VKAPI_CALL GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
8403     VkDevice                                    device,
8404     VkRenderPass                                renderpass,
8405     VkExtent2D*                                 pMaxWorkgroupSize) {
8406     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8407     if (NULL == disp) {
8408         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8409                    "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI: Invalid device "
8410                    "[VUID-vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI-device-parameter]");
8411         abort(); /* Intentionally fail so user can correct issue. */
8412     }
8413     return disp->GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(device, renderpass, pMaxWorkgroupSize);
8414 }
8415 
CmdSubpassShadingHUAWEI(VkCommandBuffer commandBuffer)8416 VKAPI_ATTR void VKAPI_CALL CmdSubpassShadingHUAWEI(
8417     VkCommandBuffer                             commandBuffer) {
8418     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8419     if (NULL == disp) {
8420         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8421                    "vkCmdSubpassShadingHUAWEI: Invalid commandBuffer "
8422                    "[VUID-vkCmdSubpassShadingHUAWEI-commandBuffer-parameter]");
8423         abort(); /* Intentionally fail so user can correct issue. */
8424     }
8425     disp->CmdSubpassShadingHUAWEI(commandBuffer);
8426 }
8427 
8428 
8429 // ---- VK_HUAWEI_invocation_mask extension trampoline/terminators
8430 
CmdBindInvocationMaskHUAWEI(VkCommandBuffer commandBuffer,VkImageView imageView,VkImageLayout imageLayout)8431 VKAPI_ATTR void VKAPI_CALL CmdBindInvocationMaskHUAWEI(
8432     VkCommandBuffer                             commandBuffer,
8433     VkImageView                                 imageView,
8434     VkImageLayout                               imageLayout) {
8435     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8436     if (NULL == disp) {
8437         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8438                    "vkCmdBindInvocationMaskHUAWEI: Invalid commandBuffer "
8439                    "[VUID-vkCmdBindInvocationMaskHUAWEI-commandBuffer-parameter]");
8440         abort(); /* Intentionally fail so user can correct issue. */
8441     }
8442     disp->CmdBindInvocationMaskHUAWEI(commandBuffer, imageView, imageLayout);
8443 }
8444 
8445 
8446 // ---- VK_NV_external_memory_rdma extension trampoline/terminators
8447 
GetMemoryRemoteAddressNV(VkDevice device,const VkMemoryGetRemoteAddressInfoNV * pMemoryGetRemoteAddressInfo,VkRemoteAddressNV * pAddress)8448 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryRemoteAddressNV(
8449     VkDevice                                    device,
8450     const VkMemoryGetRemoteAddressInfoNV*       pMemoryGetRemoteAddressInfo,
8451     VkRemoteAddressNV*                          pAddress) {
8452     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8453     if (NULL == disp) {
8454         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8455                    "vkGetMemoryRemoteAddressNV: Invalid device "
8456                    "[VUID-vkGetMemoryRemoteAddressNV-device-parameter]");
8457         abort(); /* Intentionally fail so user can correct issue. */
8458     }
8459     return disp->GetMemoryRemoteAddressNV(device, pMemoryGetRemoteAddressInfo, pAddress);
8460 }
8461 
8462 
8463 // ---- VK_EXT_pipeline_properties extension trampoline/terminators
8464 
GetPipelinePropertiesEXT(VkDevice device,const VkPipelineInfoEXT * pPipelineInfo,VkBaseOutStructure * pPipelineProperties)8465 VKAPI_ATTR VkResult VKAPI_CALL GetPipelinePropertiesEXT(
8466     VkDevice                                    device,
8467     const VkPipelineInfoEXT*                    pPipelineInfo,
8468     VkBaseOutStructure*                         pPipelineProperties) {
8469     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8470     if (NULL == disp) {
8471         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8472                    "vkGetPipelinePropertiesEXT: Invalid device "
8473                    "[VUID-vkGetPipelinePropertiesEXT-device-parameter]");
8474         abort(); /* Intentionally fail so user can correct issue. */
8475     }
8476     return disp->GetPipelinePropertiesEXT(device, pPipelineInfo, pPipelineProperties);
8477 }
8478 
8479 
8480 // ---- VK_EXT_extended_dynamic_state2 extension trampoline/terminators
8481 
CmdSetPatchControlPointsEXT(VkCommandBuffer commandBuffer,uint32_t patchControlPoints)8482 VKAPI_ATTR void VKAPI_CALL CmdSetPatchControlPointsEXT(
8483     VkCommandBuffer                             commandBuffer,
8484     uint32_t                                    patchControlPoints) {
8485     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8486     if (NULL == disp) {
8487         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8488                    "vkCmdSetPatchControlPointsEXT: Invalid commandBuffer "
8489                    "[VUID-vkCmdSetPatchControlPointsEXT-commandBuffer-parameter]");
8490         abort(); /* Intentionally fail so user can correct issue. */
8491     }
8492     disp->CmdSetPatchControlPointsEXT(commandBuffer, patchControlPoints);
8493 }
8494 
CmdSetRasterizerDiscardEnableEXT(VkCommandBuffer commandBuffer,VkBool32 rasterizerDiscardEnable)8495 VKAPI_ATTR void VKAPI_CALL CmdSetRasterizerDiscardEnableEXT(
8496     VkCommandBuffer                             commandBuffer,
8497     VkBool32                                    rasterizerDiscardEnable) {
8498     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8499     if (NULL == disp) {
8500         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8501                    "vkCmdSetRasterizerDiscardEnableEXT: Invalid commandBuffer "
8502                    "[VUID-vkCmdSetRasterizerDiscardEnableEXT-commandBuffer-parameter]");
8503         abort(); /* Intentionally fail so user can correct issue. */
8504     }
8505     disp->CmdSetRasterizerDiscardEnableEXT(commandBuffer, rasterizerDiscardEnable);
8506 }
8507 
CmdSetDepthBiasEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthBiasEnable)8508 VKAPI_ATTR void VKAPI_CALL CmdSetDepthBiasEnableEXT(
8509     VkCommandBuffer                             commandBuffer,
8510     VkBool32                                    depthBiasEnable) {
8511     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8512     if (NULL == disp) {
8513         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8514                    "vkCmdSetDepthBiasEnableEXT: Invalid commandBuffer "
8515                    "[VUID-vkCmdSetDepthBiasEnableEXT-commandBuffer-parameter]");
8516         abort(); /* Intentionally fail so user can correct issue. */
8517     }
8518     disp->CmdSetDepthBiasEnableEXT(commandBuffer, depthBiasEnable);
8519 }
8520 
CmdSetLogicOpEXT(VkCommandBuffer commandBuffer,VkLogicOp logicOp)8521 VKAPI_ATTR void VKAPI_CALL CmdSetLogicOpEXT(
8522     VkCommandBuffer                             commandBuffer,
8523     VkLogicOp                                   logicOp) {
8524     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8525     if (NULL == disp) {
8526         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8527                    "vkCmdSetLogicOpEXT: Invalid commandBuffer "
8528                    "[VUID-vkCmdSetLogicOpEXT-commandBuffer-parameter]");
8529         abort(); /* Intentionally fail so user can correct issue. */
8530     }
8531     disp->CmdSetLogicOpEXT(commandBuffer, logicOp);
8532 }
8533 
CmdSetPrimitiveRestartEnableEXT(VkCommandBuffer commandBuffer,VkBool32 primitiveRestartEnable)8534 VKAPI_ATTR void VKAPI_CALL CmdSetPrimitiveRestartEnableEXT(
8535     VkCommandBuffer                             commandBuffer,
8536     VkBool32                                    primitiveRestartEnable) {
8537     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8538     if (NULL == disp) {
8539         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8540                    "vkCmdSetPrimitiveRestartEnableEXT: Invalid commandBuffer "
8541                    "[VUID-vkCmdSetPrimitiveRestartEnableEXT-commandBuffer-parameter]");
8542         abort(); /* Intentionally fail so user can correct issue. */
8543     }
8544     disp->CmdSetPrimitiveRestartEnableEXT(commandBuffer, primitiveRestartEnable);
8545 }
8546 
8547 
8548 // ---- VK_EXT_color_write_enable extension trampoline/terminators
8549 
CmdSetColorWriteEnableEXT(VkCommandBuffer commandBuffer,uint32_t attachmentCount,const VkBool32 * pColorWriteEnables)8550 VKAPI_ATTR void                                    VKAPI_CALL CmdSetColorWriteEnableEXT(
8551     VkCommandBuffer                             commandBuffer,
8552     uint32_t                                    attachmentCount,
8553     const VkBool32*                             pColorWriteEnables) {
8554     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8555     if (NULL == disp) {
8556         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8557                    "vkCmdSetColorWriteEnableEXT: Invalid commandBuffer "
8558                    "[VUID-vkCmdSetColorWriteEnableEXT-commandBuffer-parameter]");
8559         abort(); /* Intentionally fail so user can correct issue. */
8560     }
8561     disp->CmdSetColorWriteEnableEXT(commandBuffer, attachmentCount, pColorWriteEnables);
8562 }
8563 
8564 
8565 // ---- VK_EXT_multi_draw extension trampoline/terminators
8566 
CmdDrawMultiEXT(VkCommandBuffer commandBuffer,uint32_t drawCount,const VkMultiDrawInfoEXT * pVertexInfo,uint32_t instanceCount,uint32_t firstInstance,uint32_t stride)8567 VKAPI_ATTR void VKAPI_CALL CmdDrawMultiEXT(
8568     VkCommandBuffer                             commandBuffer,
8569     uint32_t                                    drawCount,
8570     const VkMultiDrawInfoEXT*                   pVertexInfo,
8571     uint32_t                                    instanceCount,
8572     uint32_t                                    firstInstance,
8573     uint32_t                                    stride) {
8574     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8575     if (NULL == disp) {
8576         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8577                    "vkCmdDrawMultiEXT: Invalid commandBuffer "
8578                    "[VUID-vkCmdDrawMultiEXT-commandBuffer-parameter]");
8579         abort(); /* Intentionally fail so user can correct issue. */
8580     }
8581     disp->CmdDrawMultiEXT(commandBuffer, drawCount, pVertexInfo, instanceCount, firstInstance, stride);
8582 }
8583 
CmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer,uint32_t drawCount,const VkMultiDrawIndexedInfoEXT * pIndexInfo,uint32_t instanceCount,uint32_t firstInstance,uint32_t stride,const int32_t * pVertexOffset)8584 VKAPI_ATTR void VKAPI_CALL CmdDrawMultiIndexedEXT(
8585     VkCommandBuffer                             commandBuffer,
8586     uint32_t                                    drawCount,
8587     const VkMultiDrawIndexedInfoEXT*            pIndexInfo,
8588     uint32_t                                    instanceCount,
8589     uint32_t                                    firstInstance,
8590     uint32_t                                    stride,
8591     const int32_t*                              pVertexOffset) {
8592     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8593     if (NULL == disp) {
8594         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8595                    "vkCmdDrawMultiIndexedEXT: Invalid commandBuffer "
8596                    "[VUID-vkCmdDrawMultiIndexedEXT-commandBuffer-parameter]");
8597         abort(); /* Intentionally fail so user can correct issue. */
8598     }
8599     disp->CmdDrawMultiIndexedEXT(commandBuffer, drawCount, pIndexInfo, instanceCount, firstInstance, stride, pVertexOffset);
8600 }
8601 
8602 
8603 // ---- VK_EXT_opacity_micromap extension trampoline/terminators
8604 
CreateMicromapEXT(VkDevice device,const VkMicromapCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkMicromapEXT * pMicromap)8605 VKAPI_ATTR VkResult VKAPI_CALL CreateMicromapEXT(
8606     VkDevice                                    device,
8607     const VkMicromapCreateInfoEXT*              pCreateInfo,
8608     const VkAllocationCallbacks*                pAllocator,
8609     VkMicromapEXT*                              pMicromap) {
8610     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8611     if (NULL == disp) {
8612         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8613                    "vkCreateMicromapEXT: Invalid device "
8614                    "[VUID-vkCreateMicromapEXT-device-parameter]");
8615         abort(); /* Intentionally fail so user can correct issue. */
8616     }
8617     return disp->CreateMicromapEXT(device, pCreateInfo, pAllocator, pMicromap);
8618 }
8619 
DestroyMicromapEXT(VkDevice device,VkMicromapEXT micromap,const VkAllocationCallbacks * pAllocator)8620 VKAPI_ATTR void VKAPI_CALL DestroyMicromapEXT(
8621     VkDevice                                    device,
8622     VkMicromapEXT                               micromap,
8623     const VkAllocationCallbacks*                pAllocator) {
8624     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8625     if (NULL == disp) {
8626         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8627                    "vkDestroyMicromapEXT: Invalid device "
8628                    "[VUID-vkDestroyMicromapEXT-device-parameter]");
8629         abort(); /* Intentionally fail so user can correct issue. */
8630     }
8631     disp->DestroyMicromapEXT(device, micromap, pAllocator);
8632 }
8633 
CmdBuildMicromapsEXT(VkCommandBuffer commandBuffer,uint32_t infoCount,const VkMicromapBuildInfoEXT * pInfos)8634 VKAPI_ATTR void VKAPI_CALL CmdBuildMicromapsEXT(
8635     VkCommandBuffer                             commandBuffer,
8636     uint32_t                                    infoCount,
8637     const VkMicromapBuildInfoEXT*               pInfos) {
8638     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8639     if (NULL == disp) {
8640         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8641                    "vkCmdBuildMicromapsEXT: Invalid commandBuffer "
8642                    "[VUID-vkCmdBuildMicromapsEXT-commandBuffer-parameter]");
8643         abort(); /* Intentionally fail so user can correct issue. */
8644     }
8645     disp->CmdBuildMicromapsEXT(commandBuffer, infoCount, pInfos);
8646 }
8647 
BuildMicromapsEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,uint32_t infoCount,const VkMicromapBuildInfoEXT * pInfos)8648 VKAPI_ATTR VkResult VKAPI_CALL BuildMicromapsEXT(
8649     VkDevice                                    device,
8650     VkDeferredOperationKHR                      deferredOperation,
8651     uint32_t                                    infoCount,
8652     const VkMicromapBuildInfoEXT*               pInfos) {
8653     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8654     if (NULL == disp) {
8655         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8656                    "vkBuildMicromapsEXT: Invalid device "
8657                    "[VUID-vkBuildMicromapsEXT-device-parameter]");
8658         abort(); /* Intentionally fail so user can correct issue. */
8659     }
8660     return disp->BuildMicromapsEXT(device, deferredOperation, infoCount, pInfos);
8661 }
8662 
CopyMicromapEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMicromapInfoEXT * pInfo)8663 VKAPI_ATTR VkResult VKAPI_CALL CopyMicromapEXT(
8664     VkDevice                                    device,
8665     VkDeferredOperationKHR                      deferredOperation,
8666     const VkCopyMicromapInfoEXT*                pInfo) {
8667     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8668     if (NULL == disp) {
8669         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8670                    "vkCopyMicromapEXT: Invalid device "
8671                    "[VUID-vkCopyMicromapEXT-device-parameter]");
8672         abort(); /* Intentionally fail so user can correct issue. */
8673     }
8674     return disp->CopyMicromapEXT(device, deferredOperation, pInfo);
8675 }
8676 
CopyMicromapToMemoryEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMicromapToMemoryInfoEXT * pInfo)8677 VKAPI_ATTR VkResult VKAPI_CALL CopyMicromapToMemoryEXT(
8678     VkDevice                                    device,
8679     VkDeferredOperationKHR                      deferredOperation,
8680     const VkCopyMicromapToMemoryInfoEXT*        pInfo) {
8681     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8682     if (NULL == disp) {
8683         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8684                    "vkCopyMicromapToMemoryEXT: Invalid device "
8685                    "[VUID-vkCopyMicromapToMemoryEXT-device-parameter]");
8686         abort(); /* Intentionally fail so user can correct issue. */
8687     }
8688     return disp->CopyMicromapToMemoryEXT(device, deferredOperation, pInfo);
8689 }
8690 
CopyMemoryToMicromapEXT(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMemoryToMicromapInfoEXT * pInfo)8691 VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToMicromapEXT(
8692     VkDevice                                    device,
8693     VkDeferredOperationKHR                      deferredOperation,
8694     const VkCopyMemoryToMicromapInfoEXT*        pInfo) {
8695     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8696     if (NULL == disp) {
8697         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8698                    "vkCopyMemoryToMicromapEXT: Invalid device "
8699                    "[VUID-vkCopyMemoryToMicromapEXT-device-parameter]");
8700         abort(); /* Intentionally fail so user can correct issue. */
8701     }
8702     return disp->CopyMemoryToMicromapEXT(device, deferredOperation, pInfo);
8703 }
8704 
WriteMicromapsPropertiesEXT(VkDevice device,uint32_t micromapCount,const VkMicromapEXT * pMicromaps,VkQueryType queryType,size_t dataSize,void * pData,size_t stride)8705 VKAPI_ATTR VkResult VKAPI_CALL WriteMicromapsPropertiesEXT(
8706     VkDevice                                    device,
8707     uint32_t                                    micromapCount,
8708     const VkMicromapEXT*                        pMicromaps,
8709     VkQueryType                                 queryType,
8710     size_t                                      dataSize,
8711     void*                                       pData,
8712     size_t                                      stride) {
8713     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8714     if (NULL == disp) {
8715         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8716                    "vkWriteMicromapsPropertiesEXT: Invalid device "
8717                    "[VUID-vkWriteMicromapsPropertiesEXT-device-parameter]");
8718         abort(); /* Intentionally fail so user can correct issue. */
8719     }
8720     return disp->WriteMicromapsPropertiesEXT(device, micromapCount, pMicromaps, queryType, dataSize, pData, stride);
8721 }
8722 
CmdCopyMicromapEXT(VkCommandBuffer commandBuffer,const VkCopyMicromapInfoEXT * pInfo)8723 VKAPI_ATTR void VKAPI_CALL CmdCopyMicromapEXT(
8724     VkCommandBuffer                             commandBuffer,
8725     const VkCopyMicromapInfoEXT*                pInfo) {
8726     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8727     if (NULL == disp) {
8728         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8729                    "vkCmdCopyMicromapEXT: Invalid commandBuffer "
8730                    "[VUID-vkCmdCopyMicromapEXT-commandBuffer-parameter]");
8731         abort(); /* Intentionally fail so user can correct issue. */
8732     }
8733     disp->CmdCopyMicromapEXT(commandBuffer, pInfo);
8734 }
8735 
CmdCopyMicromapToMemoryEXT(VkCommandBuffer commandBuffer,const VkCopyMicromapToMemoryInfoEXT * pInfo)8736 VKAPI_ATTR void VKAPI_CALL CmdCopyMicromapToMemoryEXT(
8737     VkCommandBuffer                             commandBuffer,
8738     const VkCopyMicromapToMemoryInfoEXT*        pInfo) {
8739     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8740     if (NULL == disp) {
8741         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8742                    "vkCmdCopyMicromapToMemoryEXT: Invalid commandBuffer "
8743                    "[VUID-vkCmdCopyMicromapToMemoryEXT-commandBuffer-parameter]");
8744         abort(); /* Intentionally fail so user can correct issue. */
8745     }
8746     disp->CmdCopyMicromapToMemoryEXT(commandBuffer, pInfo);
8747 }
8748 
CmdCopyMemoryToMicromapEXT(VkCommandBuffer commandBuffer,const VkCopyMemoryToMicromapInfoEXT * pInfo)8749 VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryToMicromapEXT(
8750     VkCommandBuffer                             commandBuffer,
8751     const VkCopyMemoryToMicromapInfoEXT*        pInfo) {
8752     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8753     if (NULL == disp) {
8754         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8755                    "vkCmdCopyMemoryToMicromapEXT: Invalid commandBuffer "
8756                    "[VUID-vkCmdCopyMemoryToMicromapEXT-commandBuffer-parameter]");
8757         abort(); /* Intentionally fail so user can correct issue. */
8758     }
8759     disp->CmdCopyMemoryToMicromapEXT(commandBuffer, pInfo);
8760 }
8761 
CmdWriteMicromapsPropertiesEXT(VkCommandBuffer commandBuffer,uint32_t micromapCount,const VkMicromapEXT * pMicromaps,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)8762 VKAPI_ATTR void VKAPI_CALL CmdWriteMicromapsPropertiesEXT(
8763     VkCommandBuffer                             commandBuffer,
8764     uint32_t                                    micromapCount,
8765     const VkMicromapEXT*                        pMicromaps,
8766     VkQueryType                                 queryType,
8767     VkQueryPool                                 queryPool,
8768     uint32_t                                    firstQuery) {
8769     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8770     if (NULL == disp) {
8771         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8772                    "vkCmdWriteMicromapsPropertiesEXT: Invalid commandBuffer "
8773                    "[VUID-vkCmdWriteMicromapsPropertiesEXT-commandBuffer-parameter]");
8774         abort(); /* Intentionally fail so user can correct issue. */
8775     }
8776     disp->CmdWriteMicromapsPropertiesEXT(commandBuffer, micromapCount, pMicromaps, queryType, queryPool, firstQuery);
8777 }
8778 
GetDeviceMicromapCompatibilityEXT(VkDevice device,const VkMicromapVersionInfoEXT * pVersionInfo,VkAccelerationStructureCompatibilityKHR * pCompatibility)8779 VKAPI_ATTR void VKAPI_CALL GetDeviceMicromapCompatibilityEXT(
8780     VkDevice                                    device,
8781     const VkMicromapVersionInfoEXT*             pVersionInfo,
8782     VkAccelerationStructureCompatibilityKHR*    pCompatibility) {
8783     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8784     if (NULL == disp) {
8785         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8786                    "vkGetDeviceMicromapCompatibilityEXT: Invalid device "
8787                    "[VUID-vkGetDeviceMicromapCompatibilityEXT-device-parameter]");
8788         abort(); /* Intentionally fail so user can correct issue. */
8789     }
8790     disp->GetDeviceMicromapCompatibilityEXT(device, pVersionInfo, pCompatibility);
8791 }
8792 
GetMicromapBuildSizesEXT(VkDevice device,VkAccelerationStructureBuildTypeKHR buildType,const VkMicromapBuildInfoEXT * pBuildInfo,VkMicromapBuildSizesInfoEXT * pSizeInfo)8793 VKAPI_ATTR void VKAPI_CALL GetMicromapBuildSizesEXT(
8794     VkDevice                                    device,
8795     VkAccelerationStructureBuildTypeKHR         buildType,
8796     const VkMicromapBuildInfoEXT*               pBuildInfo,
8797     VkMicromapBuildSizesInfoEXT*                pSizeInfo) {
8798     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8799     if (NULL == disp) {
8800         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8801                    "vkGetMicromapBuildSizesEXT: Invalid device "
8802                    "[VUID-vkGetMicromapBuildSizesEXT-device-parameter]");
8803         abort(); /* Intentionally fail so user can correct issue. */
8804     }
8805     disp->GetMicromapBuildSizesEXT(device, buildType, pBuildInfo, pSizeInfo);
8806 }
8807 
8808 
8809 // ---- VK_HUAWEI_cluster_culling_shader extension trampoline/terminators
8810 
CmdDrawClusterHUAWEI(VkCommandBuffer commandBuffer,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)8811 VKAPI_ATTR void VKAPI_CALL CmdDrawClusterHUAWEI(
8812     VkCommandBuffer                             commandBuffer,
8813     uint32_t                                    groupCountX,
8814     uint32_t                                    groupCountY,
8815     uint32_t                                    groupCountZ) {
8816     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8817     if (NULL == disp) {
8818         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8819                    "vkCmdDrawClusterHUAWEI: Invalid commandBuffer "
8820                    "[VUID-vkCmdDrawClusterHUAWEI-commandBuffer-parameter]");
8821         abort(); /* Intentionally fail so user can correct issue. */
8822     }
8823     disp->CmdDrawClusterHUAWEI(commandBuffer, groupCountX, groupCountY, groupCountZ);
8824 }
8825 
CmdDrawClusterIndirectHUAWEI(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset)8826 VKAPI_ATTR void VKAPI_CALL CmdDrawClusterIndirectHUAWEI(
8827     VkCommandBuffer                             commandBuffer,
8828     VkBuffer                                    buffer,
8829     VkDeviceSize                                offset) {
8830     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8831     if (NULL == disp) {
8832         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8833                    "vkCmdDrawClusterIndirectHUAWEI: Invalid commandBuffer "
8834                    "[VUID-vkCmdDrawClusterIndirectHUAWEI-commandBuffer-parameter]");
8835         abort(); /* Intentionally fail so user can correct issue. */
8836     }
8837     disp->CmdDrawClusterIndirectHUAWEI(commandBuffer, buffer, offset);
8838 }
8839 
8840 
8841 // ---- VK_EXT_pageable_device_local_memory extension trampoline/terminators
8842 
SetDeviceMemoryPriorityEXT(VkDevice device,VkDeviceMemory memory,float priority)8843 VKAPI_ATTR void VKAPI_CALL SetDeviceMemoryPriorityEXT(
8844     VkDevice                                    device,
8845     VkDeviceMemory                              memory,
8846     float                                       priority) {
8847     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8848     if (NULL == disp) {
8849         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8850                    "vkSetDeviceMemoryPriorityEXT: Invalid device "
8851                    "[VUID-vkSetDeviceMemoryPriorityEXT-device-parameter]");
8852         abort(); /* Intentionally fail so user can correct issue. */
8853     }
8854     disp->SetDeviceMemoryPriorityEXT(device, memory, priority);
8855 }
8856 
8857 
8858 // ---- VK_VALVE_descriptor_set_host_mapping extension trampoline/terminators
8859 
GetDescriptorSetLayoutHostMappingInfoVALVE(VkDevice device,const VkDescriptorSetBindingReferenceVALVE * pBindingReference,VkDescriptorSetLayoutHostMappingInfoVALVE * pHostMapping)8860 VKAPI_ATTR void VKAPI_CALL GetDescriptorSetLayoutHostMappingInfoVALVE(
8861     VkDevice                                    device,
8862     const VkDescriptorSetBindingReferenceVALVE* pBindingReference,
8863     VkDescriptorSetLayoutHostMappingInfoVALVE*  pHostMapping) {
8864     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8865     if (NULL == disp) {
8866         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8867                    "vkGetDescriptorSetLayoutHostMappingInfoVALVE: Invalid device "
8868                    "[VUID-vkGetDescriptorSetLayoutHostMappingInfoVALVE-device-parameter]");
8869         abort(); /* Intentionally fail so user can correct issue. */
8870     }
8871     disp->GetDescriptorSetLayoutHostMappingInfoVALVE(device, pBindingReference, pHostMapping);
8872 }
8873 
GetDescriptorSetHostMappingVALVE(VkDevice device,VkDescriptorSet descriptorSet,void ** ppData)8874 VKAPI_ATTR void VKAPI_CALL GetDescriptorSetHostMappingVALVE(
8875     VkDevice                                    device,
8876     VkDescriptorSet                             descriptorSet,
8877     void**                                      ppData) {
8878     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8879     if (NULL == disp) {
8880         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8881                    "vkGetDescriptorSetHostMappingVALVE: Invalid device "
8882                    "[VUID-vkGetDescriptorSetHostMappingVALVE-device-parameter]");
8883         abort(); /* Intentionally fail so user can correct issue. */
8884     }
8885     disp->GetDescriptorSetHostMappingVALVE(device, descriptorSet, ppData);
8886 }
8887 
8888 
8889 // ---- VK_NV_copy_memory_indirect extension trampoline/terminators
8890 
CmdCopyMemoryIndirectNV(VkCommandBuffer commandBuffer,VkDeviceAddress copyBufferAddress,uint32_t copyCount,uint32_t stride)8891 VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryIndirectNV(
8892     VkCommandBuffer                             commandBuffer,
8893     VkDeviceAddress                             copyBufferAddress,
8894     uint32_t                                    copyCount,
8895     uint32_t                                    stride) {
8896     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8897     if (NULL == disp) {
8898         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8899                    "vkCmdCopyMemoryIndirectNV: Invalid commandBuffer "
8900                    "[VUID-vkCmdCopyMemoryIndirectNV-commandBuffer-parameter]");
8901         abort(); /* Intentionally fail so user can correct issue. */
8902     }
8903     disp->CmdCopyMemoryIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride);
8904 }
8905 
CmdCopyMemoryToImageIndirectNV(VkCommandBuffer commandBuffer,VkDeviceAddress copyBufferAddress,uint32_t copyCount,uint32_t stride,VkImage dstImage,VkImageLayout dstImageLayout,const VkImageSubresourceLayers * pImageSubresources)8906 VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryToImageIndirectNV(
8907     VkCommandBuffer                             commandBuffer,
8908     VkDeviceAddress                             copyBufferAddress,
8909     uint32_t                                    copyCount,
8910     uint32_t                                    stride,
8911     VkImage                                     dstImage,
8912     VkImageLayout                               dstImageLayout,
8913     const VkImageSubresourceLayers*             pImageSubresources) {
8914     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8915     if (NULL == disp) {
8916         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8917                    "vkCmdCopyMemoryToImageIndirectNV: Invalid commandBuffer "
8918                    "[VUID-vkCmdCopyMemoryToImageIndirectNV-commandBuffer-parameter]");
8919         abort(); /* Intentionally fail so user can correct issue. */
8920     }
8921     disp->CmdCopyMemoryToImageIndirectNV(commandBuffer, copyBufferAddress, copyCount, stride, dstImage, dstImageLayout, pImageSubresources);
8922 }
8923 
8924 
8925 // ---- VK_NV_memory_decompression extension trampoline/terminators
8926 
CmdDecompressMemoryNV(VkCommandBuffer commandBuffer,uint32_t decompressRegionCount,const VkDecompressMemoryRegionNV * pDecompressMemoryRegions)8927 VKAPI_ATTR void VKAPI_CALL CmdDecompressMemoryNV(
8928     VkCommandBuffer                             commandBuffer,
8929     uint32_t                                    decompressRegionCount,
8930     const VkDecompressMemoryRegionNV*           pDecompressMemoryRegions) {
8931     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8932     if (NULL == disp) {
8933         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8934                    "vkCmdDecompressMemoryNV: Invalid commandBuffer "
8935                    "[VUID-vkCmdDecompressMemoryNV-commandBuffer-parameter]");
8936         abort(); /* Intentionally fail so user can correct issue. */
8937     }
8938     disp->CmdDecompressMemoryNV(commandBuffer, decompressRegionCount, pDecompressMemoryRegions);
8939 }
8940 
CmdDecompressMemoryIndirectCountNV(VkCommandBuffer commandBuffer,VkDeviceAddress indirectCommandsAddress,VkDeviceAddress indirectCommandsCountAddress,uint32_t stride)8941 VKAPI_ATTR void VKAPI_CALL CmdDecompressMemoryIndirectCountNV(
8942     VkCommandBuffer                             commandBuffer,
8943     VkDeviceAddress                             indirectCommandsAddress,
8944     VkDeviceAddress                             indirectCommandsCountAddress,
8945     uint32_t                                    stride) {
8946     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8947     if (NULL == disp) {
8948         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8949                    "vkCmdDecompressMemoryIndirectCountNV: Invalid commandBuffer "
8950                    "[VUID-vkCmdDecompressMemoryIndirectCountNV-commandBuffer-parameter]");
8951         abort(); /* Intentionally fail so user can correct issue. */
8952     }
8953     disp->CmdDecompressMemoryIndirectCountNV(commandBuffer, indirectCommandsAddress, indirectCommandsCountAddress, stride);
8954 }
8955 
8956 
8957 // ---- VK_NV_device_generated_commands_compute extension trampoline/terminators
8958 
GetPipelineIndirectMemoryRequirementsNV(VkDevice device,const VkComputePipelineCreateInfo * pCreateInfo,VkMemoryRequirements2 * pMemoryRequirements)8959 VKAPI_ATTR void VKAPI_CALL GetPipelineIndirectMemoryRequirementsNV(
8960     VkDevice                                    device,
8961     const VkComputePipelineCreateInfo*          pCreateInfo,
8962     VkMemoryRequirements2*                      pMemoryRequirements) {
8963     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8964     if (NULL == disp) {
8965         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8966                    "vkGetPipelineIndirectMemoryRequirementsNV: Invalid device "
8967                    "[VUID-vkGetPipelineIndirectMemoryRequirementsNV-device-parameter]");
8968         abort(); /* Intentionally fail so user can correct issue. */
8969     }
8970     disp->GetPipelineIndirectMemoryRequirementsNV(device, pCreateInfo, pMemoryRequirements);
8971 }
8972 
CmdUpdatePipelineIndirectBufferNV(VkCommandBuffer commandBuffer,VkPipelineBindPoint pipelineBindPoint,VkPipeline pipeline)8973 VKAPI_ATTR void VKAPI_CALL CmdUpdatePipelineIndirectBufferNV(
8974     VkCommandBuffer                             commandBuffer,
8975     VkPipelineBindPoint                         pipelineBindPoint,
8976     VkPipeline                                  pipeline) {
8977     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
8978     if (NULL == disp) {
8979         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8980                    "vkCmdUpdatePipelineIndirectBufferNV: Invalid commandBuffer "
8981                    "[VUID-vkCmdUpdatePipelineIndirectBufferNV-commandBuffer-parameter]");
8982         abort(); /* Intentionally fail so user can correct issue. */
8983     }
8984     disp->CmdUpdatePipelineIndirectBufferNV(commandBuffer, pipelineBindPoint, pipeline);
8985 }
8986 
GetPipelineIndirectDeviceAddressNV(VkDevice device,const VkPipelineIndirectDeviceAddressInfoNV * pInfo)8987 VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetPipelineIndirectDeviceAddressNV(
8988     VkDevice                                    device,
8989     const VkPipelineIndirectDeviceAddressInfoNV* pInfo) {
8990     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
8991     if (NULL == disp) {
8992         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
8993                    "vkGetPipelineIndirectDeviceAddressNV: Invalid device "
8994                    "[VUID-vkGetPipelineIndirectDeviceAddressNV-device-parameter]");
8995         abort(); /* Intentionally fail so user can correct issue. */
8996     }
8997     return disp->GetPipelineIndirectDeviceAddressNV(device, pInfo);
8998 }
8999 
9000 
9001 // ---- VK_EXT_extended_dynamic_state3 extension trampoline/terminators
9002 
CmdSetDepthClampEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthClampEnable)9003 VKAPI_ATTR void VKAPI_CALL CmdSetDepthClampEnableEXT(
9004     VkCommandBuffer                             commandBuffer,
9005     VkBool32                                    depthClampEnable) {
9006     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9007     if (NULL == disp) {
9008         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9009                    "vkCmdSetDepthClampEnableEXT: Invalid commandBuffer "
9010                    "[VUID-vkCmdSetDepthClampEnableEXT-commandBuffer-parameter]");
9011         abort(); /* Intentionally fail so user can correct issue. */
9012     }
9013     disp->CmdSetDepthClampEnableEXT(commandBuffer, depthClampEnable);
9014 }
9015 
CmdSetPolygonModeEXT(VkCommandBuffer commandBuffer,VkPolygonMode polygonMode)9016 VKAPI_ATTR void VKAPI_CALL CmdSetPolygonModeEXT(
9017     VkCommandBuffer                             commandBuffer,
9018     VkPolygonMode                               polygonMode) {
9019     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9020     if (NULL == disp) {
9021         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9022                    "vkCmdSetPolygonModeEXT: Invalid commandBuffer "
9023                    "[VUID-vkCmdSetPolygonModeEXT-commandBuffer-parameter]");
9024         abort(); /* Intentionally fail so user can correct issue. */
9025     }
9026     disp->CmdSetPolygonModeEXT(commandBuffer, polygonMode);
9027 }
9028 
CmdSetRasterizationSamplesEXT(VkCommandBuffer commandBuffer,VkSampleCountFlagBits rasterizationSamples)9029 VKAPI_ATTR void VKAPI_CALL CmdSetRasterizationSamplesEXT(
9030     VkCommandBuffer                             commandBuffer,
9031     VkSampleCountFlagBits                       rasterizationSamples) {
9032     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9033     if (NULL == disp) {
9034         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9035                    "vkCmdSetRasterizationSamplesEXT: Invalid commandBuffer "
9036                    "[VUID-vkCmdSetRasterizationSamplesEXT-commandBuffer-parameter]");
9037         abort(); /* Intentionally fail so user can correct issue. */
9038     }
9039     disp->CmdSetRasterizationSamplesEXT(commandBuffer, rasterizationSamples);
9040 }
9041 
CmdSetSampleMaskEXT(VkCommandBuffer commandBuffer,VkSampleCountFlagBits samples,const VkSampleMask * pSampleMask)9042 VKAPI_ATTR void VKAPI_CALL CmdSetSampleMaskEXT(
9043     VkCommandBuffer                             commandBuffer,
9044     VkSampleCountFlagBits                       samples,
9045     const VkSampleMask*                         pSampleMask) {
9046     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9047     if (NULL == disp) {
9048         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9049                    "vkCmdSetSampleMaskEXT: Invalid commandBuffer "
9050                    "[VUID-vkCmdSetSampleMaskEXT-commandBuffer-parameter]");
9051         abort(); /* Intentionally fail so user can correct issue. */
9052     }
9053     disp->CmdSetSampleMaskEXT(commandBuffer, samples, pSampleMask);
9054 }
9055 
CmdSetAlphaToCoverageEnableEXT(VkCommandBuffer commandBuffer,VkBool32 alphaToCoverageEnable)9056 VKAPI_ATTR void VKAPI_CALL CmdSetAlphaToCoverageEnableEXT(
9057     VkCommandBuffer                             commandBuffer,
9058     VkBool32                                    alphaToCoverageEnable) {
9059     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9060     if (NULL == disp) {
9061         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9062                    "vkCmdSetAlphaToCoverageEnableEXT: Invalid commandBuffer "
9063                    "[VUID-vkCmdSetAlphaToCoverageEnableEXT-commandBuffer-parameter]");
9064         abort(); /* Intentionally fail so user can correct issue. */
9065     }
9066     disp->CmdSetAlphaToCoverageEnableEXT(commandBuffer, alphaToCoverageEnable);
9067 }
9068 
CmdSetAlphaToOneEnableEXT(VkCommandBuffer commandBuffer,VkBool32 alphaToOneEnable)9069 VKAPI_ATTR void VKAPI_CALL CmdSetAlphaToOneEnableEXT(
9070     VkCommandBuffer                             commandBuffer,
9071     VkBool32                                    alphaToOneEnable) {
9072     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9073     if (NULL == disp) {
9074         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9075                    "vkCmdSetAlphaToOneEnableEXT: Invalid commandBuffer "
9076                    "[VUID-vkCmdSetAlphaToOneEnableEXT-commandBuffer-parameter]");
9077         abort(); /* Intentionally fail so user can correct issue. */
9078     }
9079     disp->CmdSetAlphaToOneEnableEXT(commandBuffer, alphaToOneEnable);
9080 }
9081 
CmdSetLogicOpEnableEXT(VkCommandBuffer commandBuffer,VkBool32 logicOpEnable)9082 VKAPI_ATTR void VKAPI_CALL CmdSetLogicOpEnableEXT(
9083     VkCommandBuffer                             commandBuffer,
9084     VkBool32                                    logicOpEnable) {
9085     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9086     if (NULL == disp) {
9087         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9088                    "vkCmdSetLogicOpEnableEXT: Invalid commandBuffer "
9089                    "[VUID-vkCmdSetLogicOpEnableEXT-commandBuffer-parameter]");
9090         abort(); /* Intentionally fail so user can correct issue. */
9091     }
9092     disp->CmdSetLogicOpEnableEXT(commandBuffer, logicOpEnable);
9093 }
9094 
CmdSetColorBlendEnableEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkBool32 * pColorBlendEnables)9095 VKAPI_ATTR void VKAPI_CALL CmdSetColorBlendEnableEXT(
9096     VkCommandBuffer                             commandBuffer,
9097     uint32_t                                    firstAttachment,
9098     uint32_t                                    attachmentCount,
9099     const VkBool32*                             pColorBlendEnables) {
9100     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9101     if (NULL == disp) {
9102         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9103                    "vkCmdSetColorBlendEnableEXT: Invalid commandBuffer "
9104                    "[VUID-vkCmdSetColorBlendEnableEXT-commandBuffer-parameter]");
9105         abort(); /* Intentionally fail so user can correct issue. */
9106     }
9107     disp->CmdSetColorBlendEnableEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEnables);
9108 }
9109 
CmdSetColorBlendEquationEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkColorBlendEquationEXT * pColorBlendEquations)9110 VKAPI_ATTR void VKAPI_CALL CmdSetColorBlendEquationEXT(
9111     VkCommandBuffer                             commandBuffer,
9112     uint32_t                                    firstAttachment,
9113     uint32_t                                    attachmentCount,
9114     const VkColorBlendEquationEXT*              pColorBlendEquations) {
9115     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9116     if (NULL == disp) {
9117         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9118                    "vkCmdSetColorBlendEquationEXT: Invalid commandBuffer "
9119                    "[VUID-vkCmdSetColorBlendEquationEXT-commandBuffer-parameter]");
9120         abort(); /* Intentionally fail so user can correct issue. */
9121     }
9122     disp->CmdSetColorBlendEquationEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendEquations);
9123 }
9124 
CmdSetColorWriteMaskEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkColorComponentFlags * pColorWriteMasks)9125 VKAPI_ATTR void VKAPI_CALL CmdSetColorWriteMaskEXT(
9126     VkCommandBuffer                             commandBuffer,
9127     uint32_t                                    firstAttachment,
9128     uint32_t                                    attachmentCount,
9129     const VkColorComponentFlags*                pColorWriteMasks) {
9130     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9131     if (NULL == disp) {
9132         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9133                    "vkCmdSetColorWriteMaskEXT: Invalid commandBuffer "
9134                    "[VUID-vkCmdSetColorWriteMaskEXT-commandBuffer-parameter]");
9135         abort(); /* Intentionally fail so user can correct issue. */
9136     }
9137     disp->CmdSetColorWriteMaskEXT(commandBuffer, firstAttachment, attachmentCount, pColorWriteMasks);
9138 }
9139 
CmdSetTessellationDomainOriginEXT(VkCommandBuffer commandBuffer,VkTessellationDomainOrigin domainOrigin)9140 VKAPI_ATTR void VKAPI_CALL CmdSetTessellationDomainOriginEXT(
9141     VkCommandBuffer                             commandBuffer,
9142     VkTessellationDomainOrigin                  domainOrigin) {
9143     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9144     if (NULL == disp) {
9145         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9146                    "vkCmdSetTessellationDomainOriginEXT: Invalid commandBuffer "
9147                    "[VUID-vkCmdSetTessellationDomainOriginEXT-commandBuffer-parameter]");
9148         abort(); /* Intentionally fail so user can correct issue. */
9149     }
9150     disp->CmdSetTessellationDomainOriginEXT(commandBuffer, domainOrigin);
9151 }
9152 
CmdSetRasterizationStreamEXT(VkCommandBuffer commandBuffer,uint32_t rasterizationStream)9153 VKAPI_ATTR void VKAPI_CALL CmdSetRasterizationStreamEXT(
9154     VkCommandBuffer                             commandBuffer,
9155     uint32_t                                    rasterizationStream) {
9156     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9157     if (NULL == disp) {
9158         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9159                    "vkCmdSetRasterizationStreamEXT: Invalid commandBuffer "
9160                    "[VUID-vkCmdSetRasterizationStreamEXT-commandBuffer-parameter]");
9161         abort(); /* Intentionally fail so user can correct issue. */
9162     }
9163     disp->CmdSetRasterizationStreamEXT(commandBuffer, rasterizationStream);
9164 }
9165 
CmdSetConservativeRasterizationModeEXT(VkCommandBuffer commandBuffer,VkConservativeRasterizationModeEXT conservativeRasterizationMode)9166 VKAPI_ATTR void VKAPI_CALL CmdSetConservativeRasterizationModeEXT(
9167     VkCommandBuffer                             commandBuffer,
9168     VkConservativeRasterizationModeEXT          conservativeRasterizationMode) {
9169     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9170     if (NULL == disp) {
9171         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9172                    "vkCmdSetConservativeRasterizationModeEXT: Invalid commandBuffer "
9173                    "[VUID-vkCmdSetConservativeRasterizationModeEXT-commandBuffer-parameter]");
9174         abort(); /* Intentionally fail so user can correct issue. */
9175     }
9176     disp->CmdSetConservativeRasterizationModeEXT(commandBuffer, conservativeRasterizationMode);
9177 }
9178 
CmdSetExtraPrimitiveOverestimationSizeEXT(VkCommandBuffer commandBuffer,float extraPrimitiveOverestimationSize)9179 VKAPI_ATTR void VKAPI_CALL CmdSetExtraPrimitiveOverestimationSizeEXT(
9180     VkCommandBuffer                             commandBuffer,
9181     float                                       extraPrimitiveOverestimationSize) {
9182     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9183     if (NULL == disp) {
9184         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9185                    "vkCmdSetExtraPrimitiveOverestimationSizeEXT: Invalid commandBuffer "
9186                    "[VUID-vkCmdSetExtraPrimitiveOverestimationSizeEXT-commandBuffer-parameter]");
9187         abort(); /* Intentionally fail so user can correct issue. */
9188     }
9189     disp->CmdSetExtraPrimitiveOverestimationSizeEXT(commandBuffer, extraPrimitiveOverestimationSize);
9190 }
9191 
CmdSetDepthClipEnableEXT(VkCommandBuffer commandBuffer,VkBool32 depthClipEnable)9192 VKAPI_ATTR void VKAPI_CALL CmdSetDepthClipEnableEXT(
9193     VkCommandBuffer                             commandBuffer,
9194     VkBool32                                    depthClipEnable) {
9195     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9196     if (NULL == disp) {
9197         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9198                    "vkCmdSetDepthClipEnableEXT: Invalid commandBuffer "
9199                    "[VUID-vkCmdSetDepthClipEnableEXT-commandBuffer-parameter]");
9200         abort(); /* Intentionally fail so user can correct issue. */
9201     }
9202     disp->CmdSetDepthClipEnableEXT(commandBuffer, depthClipEnable);
9203 }
9204 
CmdSetSampleLocationsEnableEXT(VkCommandBuffer commandBuffer,VkBool32 sampleLocationsEnable)9205 VKAPI_ATTR void VKAPI_CALL CmdSetSampleLocationsEnableEXT(
9206     VkCommandBuffer                             commandBuffer,
9207     VkBool32                                    sampleLocationsEnable) {
9208     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9209     if (NULL == disp) {
9210         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9211                    "vkCmdSetSampleLocationsEnableEXT: Invalid commandBuffer "
9212                    "[VUID-vkCmdSetSampleLocationsEnableEXT-commandBuffer-parameter]");
9213         abort(); /* Intentionally fail so user can correct issue. */
9214     }
9215     disp->CmdSetSampleLocationsEnableEXT(commandBuffer, sampleLocationsEnable);
9216 }
9217 
CmdSetColorBlendAdvancedEXT(VkCommandBuffer commandBuffer,uint32_t firstAttachment,uint32_t attachmentCount,const VkColorBlendAdvancedEXT * pColorBlendAdvanced)9218 VKAPI_ATTR void VKAPI_CALL CmdSetColorBlendAdvancedEXT(
9219     VkCommandBuffer                             commandBuffer,
9220     uint32_t                                    firstAttachment,
9221     uint32_t                                    attachmentCount,
9222     const VkColorBlendAdvancedEXT*              pColorBlendAdvanced) {
9223     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9224     if (NULL == disp) {
9225         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9226                    "vkCmdSetColorBlendAdvancedEXT: Invalid commandBuffer "
9227                    "[VUID-vkCmdSetColorBlendAdvancedEXT-commandBuffer-parameter]");
9228         abort(); /* Intentionally fail so user can correct issue. */
9229     }
9230     disp->CmdSetColorBlendAdvancedEXT(commandBuffer, firstAttachment, attachmentCount, pColorBlendAdvanced);
9231 }
9232 
CmdSetProvokingVertexModeEXT(VkCommandBuffer commandBuffer,VkProvokingVertexModeEXT provokingVertexMode)9233 VKAPI_ATTR void VKAPI_CALL CmdSetProvokingVertexModeEXT(
9234     VkCommandBuffer                             commandBuffer,
9235     VkProvokingVertexModeEXT                    provokingVertexMode) {
9236     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9237     if (NULL == disp) {
9238         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9239                    "vkCmdSetProvokingVertexModeEXT: Invalid commandBuffer "
9240                    "[VUID-vkCmdSetProvokingVertexModeEXT-commandBuffer-parameter]");
9241         abort(); /* Intentionally fail so user can correct issue. */
9242     }
9243     disp->CmdSetProvokingVertexModeEXT(commandBuffer, provokingVertexMode);
9244 }
9245 
CmdSetLineRasterizationModeEXT(VkCommandBuffer commandBuffer,VkLineRasterizationModeEXT lineRasterizationMode)9246 VKAPI_ATTR void VKAPI_CALL CmdSetLineRasterizationModeEXT(
9247     VkCommandBuffer                             commandBuffer,
9248     VkLineRasterizationModeEXT                  lineRasterizationMode) {
9249     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9250     if (NULL == disp) {
9251         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9252                    "vkCmdSetLineRasterizationModeEXT: Invalid commandBuffer "
9253                    "[VUID-vkCmdSetLineRasterizationModeEXT-commandBuffer-parameter]");
9254         abort(); /* Intentionally fail so user can correct issue. */
9255     }
9256     disp->CmdSetLineRasterizationModeEXT(commandBuffer, lineRasterizationMode);
9257 }
9258 
CmdSetLineStippleEnableEXT(VkCommandBuffer commandBuffer,VkBool32 stippledLineEnable)9259 VKAPI_ATTR void VKAPI_CALL CmdSetLineStippleEnableEXT(
9260     VkCommandBuffer                             commandBuffer,
9261     VkBool32                                    stippledLineEnable) {
9262     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9263     if (NULL == disp) {
9264         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9265                    "vkCmdSetLineStippleEnableEXT: Invalid commandBuffer "
9266                    "[VUID-vkCmdSetLineStippleEnableEXT-commandBuffer-parameter]");
9267         abort(); /* Intentionally fail so user can correct issue. */
9268     }
9269     disp->CmdSetLineStippleEnableEXT(commandBuffer, stippledLineEnable);
9270 }
9271 
CmdSetDepthClipNegativeOneToOneEXT(VkCommandBuffer commandBuffer,VkBool32 negativeOneToOne)9272 VKAPI_ATTR void VKAPI_CALL CmdSetDepthClipNegativeOneToOneEXT(
9273     VkCommandBuffer                             commandBuffer,
9274     VkBool32                                    negativeOneToOne) {
9275     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9276     if (NULL == disp) {
9277         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9278                    "vkCmdSetDepthClipNegativeOneToOneEXT: Invalid commandBuffer "
9279                    "[VUID-vkCmdSetDepthClipNegativeOneToOneEXT-commandBuffer-parameter]");
9280         abort(); /* Intentionally fail so user can correct issue. */
9281     }
9282     disp->CmdSetDepthClipNegativeOneToOneEXT(commandBuffer, negativeOneToOne);
9283 }
9284 
CmdSetViewportWScalingEnableNV(VkCommandBuffer commandBuffer,VkBool32 viewportWScalingEnable)9285 VKAPI_ATTR void VKAPI_CALL CmdSetViewportWScalingEnableNV(
9286     VkCommandBuffer                             commandBuffer,
9287     VkBool32                                    viewportWScalingEnable) {
9288     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9289     if (NULL == disp) {
9290         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9291                    "vkCmdSetViewportWScalingEnableNV: Invalid commandBuffer "
9292                    "[VUID-vkCmdSetViewportWScalingEnableNV-commandBuffer-parameter]");
9293         abort(); /* Intentionally fail so user can correct issue. */
9294     }
9295     disp->CmdSetViewportWScalingEnableNV(commandBuffer, viewportWScalingEnable);
9296 }
9297 
CmdSetViewportSwizzleNV(VkCommandBuffer commandBuffer,uint32_t firstViewport,uint32_t viewportCount,const VkViewportSwizzleNV * pViewportSwizzles)9298 VKAPI_ATTR void VKAPI_CALL CmdSetViewportSwizzleNV(
9299     VkCommandBuffer                             commandBuffer,
9300     uint32_t                                    firstViewport,
9301     uint32_t                                    viewportCount,
9302     const VkViewportSwizzleNV*                  pViewportSwizzles) {
9303     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9304     if (NULL == disp) {
9305         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9306                    "vkCmdSetViewportSwizzleNV: Invalid commandBuffer "
9307                    "[VUID-vkCmdSetViewportSwizzleNV-commandBuffer-parameter]");
9308         abort(); /* Intentionally fail so user can correct issue. */
9309     }
9310     disp->CmdSetViewportSwizzleNV(commandBuffer, firstViewport, viewportCount, pViewportSwizzles);
9311 }
9312 
CmdSetCoverageToColorEnableNV(VkCommandBuffer commandBuffer,VkBool32 coverageToColorEnable)9313 VKAPI_ATTR void VKAPI_CALL CmdSetCoverageToColorEnableNV(
9314     VkCommandBuffer                             commandBuffer,
9315     VkBool32                                    coverageToColorEnable) {
9316     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9317     if (NULL == disp) {
9318         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9319                    "vkCmdSetCoverageToColorEnableNV: Invalid commandBuffer "
9320                    "[VUID-vkCmdSetCoverageToColorEnableNV-commandBuffer-parameter]");
9321         abort(); /* Intentionally fail so user can correct issue. */
9322     }
9323     disp->CmdSetCoverageToColorEnableNV(commandBuffer, coverageToColorEnable);
9324 }
9325 
CmdSetCoverageToColorLocationNV(VkCommandBuffer commandBuffer,uint32_t coverageToColorLocation)9326 VKAPI_ATTR void VKAPI_CALL CmdSetCoverageToColorLocationNV(
9327     VkCommandBuffer                             commandBuffer,
9328     uint32_t                                    coverageToColorLocation) {
9329     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9330     if (NULL == disp) {
9331         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9332                    "vkCmdSetCoverageToColorLocationNV: Invalid commandBuffer "
9333                    "[VUID-vkCmdSetCoverageToColorLocationNV-commandBuffer-parameter]");
9334         abort(); /* Intentionally fail so user can correct issue. */
9335     }
9336     disp->CmdSetCoverageToColorLocationNV(commandBuffer, coverageToColorLocation);
9337 }
9338 
CmdSetCoverageModulationModeNV(VkCommandBuffer commandBuffer,VkCoverageModulationModeNV coverageModulationMode)9339 VKAPI_ATTR void VKAPI_CALL CmdSetCoverageModulationModeNV(
9340     VkCommandBuffer                             commandBuffer,
9341     VkCoverageModulationModeNV                  coverageModulationMode) {
9342     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9343     if (NULL == disp) {
9344         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9345                    "vkCmdSetCoverageModulationModeNV: Invalid commandBuffer "
9346                    "[VUID-vkCmdSetCoverageModulationModeNV-commandBuffer-parameter]");
9347         abort(); /* Intentionally fail so user can correct issue. */
9348     }
9349     disp->CmdSetCoverageModulationModeNV(commandBuffer, coverageModulationMode);
9350 }
9351 
CmdSetCoverageModulationTableEnableNV(VkCommandBuffer commandBuffer,VkBool32 coverageModulationTableEnable)9352 VKAPI_ATTR void VKAPI_CALL CmdSetCoverageModulationTableEnableNV(
9353     VkCommandBuffer                             commandBuffer,
9354     VkBool32                                    coverageModulationTableEnable) {
9355     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9356     if (NULL == disp) {
9357         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9358                    "vkCmdSetCoverageModulationTableEnableNV: Invalid commandBuffer "
9359                    "[VUID-vkCmdSetCoverageModulationTableEnableNV-commandBuffer-parameter]");
9360         abort(); /* Intentionally fail so user can correct issue. */
9361     }
9362     disp->CmdSetCoverageModulationTableEnableNV(commandBuffer, coverageModulationTableEnable);
9363 }
9364 
CmdSetCoverageModulationTableNV(VkCommandBuffer commandBuffer,uint32_t coverageModulationTableCount,const float * pCoverageModulationTable)9365 VKAPI_ATTR void VKAPI_CALL CmdSetCoverageModulationTableNV(
9366     VkCommandBuffer                             commandBuffer,
9367     uint32_t                                    coverageModulationTableCount,
9368     const float*                                pCoverageModulationTable) {
9369     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9370     if (NULL == disp) {
9371         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9372                    "vkCmdSetCoverageModulationTableNV: Invalid commandBuffer "
9373                    "[VUID-vkCmdSetCoverageModulationTableNV-commandBuffer-parameter]");
9374         abort(); /* Intentionally fail so user can correct issue. */
9375     }
9376     disp->CmdSetCoverageModulationTableNV(commandBuffer, coverageModulationTableCount, pCoverageModulationTable);
9377 }
9378 
CmdSetShadingRateImageEnableNV(VkCommandBuffer commandBuffer,VkBool32 shadingRateImageEnable)9379 VKAPI_ATTR void VKAPI_CALL CmdSetShadingRateImageEnableNV(
9380     VkCommandBuffer                             commandBuffer,
9381     VkBool32                                    shadingRateImageEnable) {
9382     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9383     if (NULL == disp) {
9384         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9385                    "vkCmdSetShadingRateImageEnableNV: Invalid commandBuffer "
9386                    "[VUID-vkCmdSetShadingRateImageEnableNV-commandBuffer-parameter]");
9387         abort(); /* Intentionally fail so user can correct issue. */
9388     }
9389     disp->CmdSetShadingRateImageEnableNV(commandBuffer, shadingRateImageEnable);
9390 }
9391 
CmdSetRepresentativeFragmentTestEnableNV(VkCommandBuffer commandBuffer,VkBool32 representativeFragmentTestEnable)9392 VKAPI_ATTR void VKAPI_CALL CmdSetRepresentativeFragmentTestEnableNV(
9393     VkCommandBuffer                             commandBuffer,
9394     VkBool32                                    representativeFragmentTestEnable) {
9395     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9396     if (NULL == disp) {
9397         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9398                    "vkCmdSetRepresentativeFragmentTestEnableNV: Invalid commandBuffer "
9399                    "[VUID-vkCmdSetRepresentativeFragmentTestEnableNV-commandBuffer-parameter]");
9400         abort(); /* Intentionally fail so user can correct issue. */
9401     }
9402     disp->CmdSetRepresentativeFragmentTestEnableNV(commandBuffer, representativeFragmentTestEnable);
9403 }
9404 
CmdSetCoverageReductionModeNV(VkCommandBuffer commandBuffer,VkCoverageReductionModeNV coverageReductionMode)9405 VKAPI_ATTR void VKAPI_CALL CmdSetCoverageReductionModeNV(
9406     VkCommandBuffer                             commandBuffer,
9407     VkCoverageReductionModeNV                   coverageReductionMode) {
9408     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9409     if (NULL == disp) {
9410         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9411                    "vkCmdSetCoverageReductionModeNV: Invalid commandBuffer "
9412                    "[VUID-vkCmdSetCoverageReductionModeNV-commandBuffer-parameter]");
9413         abort(); /* Intentionally fail so user can correct issue. */
9414     }
9415     disp->CmdSetCoverageReductionModeNV(commandBuffer, coverageReductionMode);
9416 }
9417 
9418 
9419 // ---- VK_EXT_shader_module_identifier extension trampoline/terminators
9420 
GetShaderModuleIdentifierEXT(VkDevice device,VkShaderModule shaderModule,VkShaderModuleIdentifierEXT * pIdentifier)9421 VKAPI_ATTR void VKAPI_CALL GetShaderModuleIdentifierEXT(
9422     VkDevice                                    device,
9423     VkShaderModule                              shaderModule,
9424     VkShaderModuleIdentifierEXT*                pIdentifier) {
9425     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9426     if (NULL == disp) {
9427         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9428                    "vkGetShaderModuleIdentifierEXT: Invalid device "
9429                    "[VUID-vkGetShaderModuleIdentifierEXT-device-parameter]");
9430         abort(); /* Intentionally fail so user can correct issue. */
9431     }
9432     disp->GetShaderModuleIdentifierEXT(device, shaderModule, pIdentifier);
9433 }
9434 
GetShaderModuleCreateInfoIdentifierEXT(VkDevice device,const VkShaderModuleCreateInfo * pCreateInfo,VkShaderModuleIdentifierEXT * pIdentifier)9435 VKAPI_ATTR void VKAPI_CALL GetShaderModuleCreateInfoIdentifierEXT(
9436     VkDevice                                    device,
9437     const VkShaderModuleCreateInfo*             pCreateInfo,
9438     VkShaderModuleIdentifierEXT*                pIdentifier) {
9439     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9440     if (NULL == disp) {
9441         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9442                    "vkGetShaderModuleCreateInfoIdentifierEXT: Invalid device "
9443                    "[VUID-vkGetShaderModuleCreateInfoIdentifierEXT-device-parameter]");
9444         abort(); /* Intentionally fail so user can correct issue. */
9445     }
9446     disp->GetShaderModuleCreateInfoIdentifierEXT(device, pCreateInfo, pIdentifier);
9447 }
9448 
9449 
9450 // ---- VK_NV_optical_flow extension trampoline/terminators
9451 
GetPhysicalDeviceOpticalFlowImageFormatsNV(VkPhysicalDevice physicalDevice,const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo,uint32_t * pFormatCount,VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties)9452 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceOpticalFlowImageFormatsNV(
9453     VkPhysicalDevice                            physicalDevice,
9454     const VkOpticalFlowImageFormatInfoNV*       pOpticalFlowImageFormatInfo,
9455     uint32_t*                                   pFormatCount,
9456     VkOpticalFlowImageFormatPropertiesNV*       pImageFormatProperties) {
9457     const VkLayerInstanceDispatchTable *disp;
9458     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
9459     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
9460         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9461                    "vkGetPhysicalDeviceOpticalFlowImageFormatsNV: Invalid physicalDevice "
9462                    "[VUID-vkGetPhysicalDeviceOpticalFlowImageFormatsNV-physicalDevice-parameter]");
9463         abort(); /* Intentionally fail so user can correct issue. */
9464     }
9465     disp = loader_get_instance_layer_dispatch(physicalDevice);
9466     return disp->GetPhysicalDeviceOpticalFlowImageFormatsNV(unwrapped_phys_dev, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties);
9467 }
9468 
terminator_GetPhysicalDeviceOpticalFlowImageFormatsNV(VkPhysicalDevice physicalDevice,const VkOpticalFlowImageFormatInfoNV * pOpticalFlowImageFormatInfo,uint32_t * pFormatCount,VkOpticalFlowImageFormatPropertiesNV * pImageFormatProperties)9469 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceOpticalFlowImageFormatsNV(
9470     VkPhysicalDevice                            physicalDevice,
9471     const VkOpticalFlowImageFormatInfoNV*       pOpticalFlowImageFormatInfo,
9472     uint32_t*                                   pFormatCount,
9473     VkOpticalFlowImageFormatPropertiesNV*       pImageFormatProperties) {
9474     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
9475     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
9476     if (NULL == icd_term->dispatch.GetPhysicalDeviceOpticalFlowImageFormatsNV) {
9477         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
9478                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceOpticalFlowImageFormatsNV");
9479         abort(); /* Intentionally fail so user can correct issue. */
9480     }
9481     return icd_term->dispatch.GetPhysicalDeviceOpticalFlowImageFormatsNV(phys_dev_term->phys_dev, pOpticalFlowImageFormatInfo, pFormatCount, pImageFormatProperties);
9482 }
9483 
CreateOpticalFlowSessionNV(VkDevice device,const VkOpticalFlowSessionCreateInfoNV * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkOpticalFlowSessionNV * pSession)9484 VKAPI_ATTR VkResult VKAPI_CALL CreateOpticalFlowSessionNV(
9485     VkDevice                                    device,
9486     const VkOpticalFlowSessionCreateInfoNV*     pCreateInfo,
9487     const VkAllocationCallbacks*                pAllocator,
9488     VkOpticalFlowSessionNV*                     pSession) {
9489     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9490     if (NULL == disp) {
9491         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9492                    "vkCreateOpticalFlowSessionNV: Invalid device "
9493                    "[VUID-vkCreateOpticalFlowSessionNV-device-parameter]");
9494         abort(); /* Intentionally fail so user can correct issue. */
9495     }
9496     return disp->CreateOpticalFlowSessionNV(device, pCreateInfo, pAllocator, pSession);
9497 }
9498 
DestroyOpticalFlowSessionNV(VkDevice device,VkOpticalFlowSessionNV session,const VkAllocationCallbacks * pAllocator)9499 VKAPI_ATTR void VKAPI_CALL DestroyOpticalFlowSessionNV(
9500     VkDevice                                    device,
9501     VkOpticalFlowSessionNV                      session,
9502     const VkAllocationCallbacks*                pAllocator) {
9503     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9504     if (NULL == disp) {
9505         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9506                    "vkDestroyOpticalFlowSessionNV: Invalid device "
9507                    "[VUID-vkDestroyOpticalFlowSessionNV-device-parameter]");
9508         abort(); /* Intentionally fail so user can correct issue. */
9509     }
9510     disp->DestroyOpticalFlowSessionNV(device, session, pAllocator);
9511 }
9512 
BindOpticalFlowSessionImageNV(VkDevice device,VkOpticalFlowSessionNV session,VkOpticalFlowSessionBindingPointNV bindingPoint,VkImageView view,VkImageLayout layout)9513 VKAPI_ATTR VkResult VKAPI_CALL BindOpticalFlowSessionImageNV(
9514     VkDevice                                    device,
9515     VkOpticalFlowSessionNV                      session,
9516     VkOpticalFlowSessionBindingPointNV          bindingPoint,
9517     VkImageView                                 view,
9518     VkImageLayout                               layout) {
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                    "vkBindOpticalFlowSessionImageNV: Invalid device "
9523                    "[VUID-vkBindOpticalFlowSessionImageNV-device-parameter]");
9524         abort(); /* Intentionally fail so user can correct issue. */
9525     }
9526     return disp->BindOpticalFlowSessionImageNV(device, session, bindingPoint, view, layout);
9527 }
9528 
CmdOpticalFlowExecuteNV(VkCommandBuffer commandBuffer,VkOpticalFlowSessionNV session,const VkOpticalFlowExecuteInfoNV * pExecuteInfo)9529 VKAPI_ATTR void VKAPI_CALL CmdOpticalFlowExecuteNV(
9530     VkCommandBuffer                             commandBuffer,
9531     VkOpticalFlowSessionNV                      session,
9532     const VkOpticalFlowExecuteInfoNV*           pExecuteInfo) {
9533     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9534     if (NULL == disp) {
9535         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9536                    "vkCmdOpticalFlowExecuteNV: Invalid commandBuffer "
9537                    "[VUID-vkCmdOpticalFlowExecuteNV-commandBuffer-parameter]");
9538         abort(); /* Intentionally fail so user can correct issue. */
9539     }
9540     disp->CmdOpticalFlowExecuteNV(commandBuffer, session, pExecuteInfo);
9541 }
9542 
9543 
9544 // ---- VK_AMD_anti_lag extension trampoline/terminators
9545 
AntiLagUpdateAMD(VkDevice device,const VkAntiLagDataAMD * pData)9546 VKAPI_ATTR void VKAPI_CALL AntiLagUpdateAMD(
9547     VkDevice                                    device,
9548     const VkAntiLagDataAMD*                     pData) {
9549     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9550     if (NULL == disp) {
9551         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9552                    "vkAntiLagUpdateAMD: Invalid device "
9553                    "[VUID-vkAntiLagUpdateAMD-device-parameter]");
9554         abort(); /* Intentionally fail so user can correct issue. */
9555     }
9556     disp->AntiLagUpdateAMD(device, pData);
9557 }
9558 
9559 
9560 // ---- VK_EXT_shader_object extension trampoline/terminators
9561 
CreateShadersEXT(VkDevice device,uint32_t createInfoCount,const VkShaderCreateInfoEXT * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkShaderEXT * pShaders)9562 VKAPI_ATTR VkResult VKAPI_CALL CreateShadersEXT(
9563     VkDevice                                    device,
9564     uint32_t                                    createInfoCount,
9565     const VkShaderCreateInfoEXT*                pCreateInfos,
9566     const VkAllocationCallbacks*                pAllocator,
9567     VkShaderEXT*                                pShaders) {
9568     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9569     if (NULL == disp) {
9570         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9571                    "vkCreateShadersEXT: Invalid device "
9572                    "[VUID-vkCreateShadersEXT-device-parameter]");
9573         abort(); /* Intentionally fail so user can correct issue. */
9574     }
9575     return disp->CreateShadersEXT(device, createInfoCount, pCreateInfos, pAllocator, pShaders);
9576 }
9577 
DestroyShaderEXT(VkDevice device,VkShaderEXT shader,const VkAllocationCallbacks * pAllocator)9578 VKAPI_ATTR void VKAPI_CALL DestroyShaderEXT(
9579     VkDevice                                    device,
9580     VkShaderEXT                                 shader,
9581     const VkAllocationCallbacks*                pAllocator) {
9582     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9583     if (NULL == disp) {
9584         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9585                    "vkDestroyShaderEXT: Invalid device "
9586                    "[VUID-vkDestroyShaderEXT-device-parameter]");
9587         abort(); /* Intentionally fail so user can correct issue. */
9588     }
9589     disp->DestroyShaderEXT(device, shader, pAllocator);
9590 }
9591 
GetShaderBinaryDataEXT(VkDevice device,VkShaderEXT shader,size_t * pDataSize,void * pData)9592 VKAPI_ATTR VkResult VKAPI_CALL GetShaderBinaryDataEXT(
9593     VkDevice                                    device,
9594     VkShaderEXT                                 shader,
9595     size_t*                                     pDataSize,
9596     void*                                       pData) {
9597     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9598     if (NULL == disp) {
9599         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9600                    "vkGetShaderBinaryDataEXT: Invalid device "
9601                    "[VUID-vkGetShaderBinaryDataEXT-device-parameter]");
9602         abort(); /* Intentionally fail so user can correct issue. */
9603     }
9604     return disp->GetShaderBinaryDataEXT(device, shader, pDataSize, pData);
9605 }
9606 
CmdBindShadersEXT(VkCommandBuffer commandBuffer,uint32_t stageCount,const VkShaderStageFlagBits * pStages,const VkShaderEXT * pShaders)9607 VKAPI_ATTR void VKAPI_CALL CmdBindShadersEXT(
9608     VkCommandBuffer                             commandBuffer,
9609     uint32_t                                    stageCount,
9610     const VkShaderStageFlagBits*                pStages,
9611     const VkShaderEXT*                          pShaders) {
9612     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9613     if (NULL == disp) {
9614         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9615                    "vkCmdBindShadersEXT: Invalid commandBuffer "
9616                    "[VUID-vkCmdBindShadersEXT-commandBuffer-parameter]");
9617         abort(); /* Intentionally fail so user can correct issue. */
9618     }
9619     disp->CmdBindShadersEXT(commandBuffer, stageCount, pStages, pShaders);
9620 }
9621 
CmdSetDepthClampRangeEXT(VkCommandBuffer commandBuffer,VkDepthClampModeEXT depthClampMode,const VkDepthClampRangeEXT * pDepthClampRange)9622 VKAPI_ATTR void VKAPI_CALL CmdSetDepthClampRangeEXT(
9623     VkCommandBuffer                             commandBuffer,
9624     VkDepthClampModeEXT                         depthClampMode,
9625     const VkDepthClampRangeEXT*                 pDepthClampRange) {
9626     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9627     if (NULL == disp) {
9628         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9629                    "vkCmdSetDepthClampRangeEXT: Invalid commandBuffer "
9630                    "[VUID-vkCmdSetDepthClampRangeEXT-commandBuffer-parameter]");
9631         abort(); /* Intentionally fail so user can correct issue. */
9632     }
9633     disp->CmdSetDepthClampRangeEXT(commandBuffer, depthClampMode, pDepthClampRange);
9634 }
9635 
9636 
9637 // ---- VK_QCOM_tile_properties extension trampoline/terminators
9638 
GetFramebufferTilePropertiesQCOM(VkDevice device,VkFramebuffer framebuffer,uint32_t * pPropertiesCount,VkTilePropertiesQCOM * pProperties)9639 VKAPI_ATTR VkResult VKAPI_CALL GetFramebufferTilePropertiesQCOM(
9640     VkDevice                                    device,
9641     VkFramebuffer                               framebuffer,
9642     uint32_t*                                   pPropertiesCount,
9643     VkTilePropertiesQCOM*                       pProperties) {
9644     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9645     if (NULL == disp) {
9646         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9647                    "vkGetFramebufferTilePropertiesQCOM: Invalid device "
9648                    "[VUID-vkGetFramebufferTilePropertiesQCOM-device-parameter]");
9649         abort(); /* Intentionally fail so user can correct issue. */
9650     }
9651     return disp->GetFramebufferTilePropertiesQCOM(device, framebuffer, pPropertiesCount, pProperties);
9652 }
9653 
GetDynamicRenderingTilePropertiesQCOM(VkDevice device,const VkRenderingInfo * pRenderingInfo,VkTilePropertiesQCOM * pProperties)9654 VKAPI_ATTR VkResult VKAPI_CALL GetDynamicRenderingTilePropertiesQCOM(
9655     VkDevice                                    device,
9656     const VkRenderingInfo*                      pRenderingInfo,
9657     VkTilePropertiesQCOM*                       pProperties) {
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                    "vkGetDynamicRenderingTilePropertiesQCOM: Invalid device "
9662                    "[VUID-vkGetDynamicRenderingTilePropertiesQCOM-device-parameter]");
9663         abort(); /* Intentionally fail so user can correct issue. */
9664     }
9665     return disp->GetDynamicRenderingTilePropertiesQCOM(device, pRenderingInfo, pProperties);
9666 }
9667 
9668 
9669 // ---- VK_NV_cooperative_vector extension trampoline/terminators
9670 
GetPhysicalDeviceCooperativeVectorPropertiesNV(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkCooperativeVectorPropertiesNV * pProperties)9671 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeVectorPropertiesNV(
9672     VkPhysicalDevice                            physicalDevice,
9673     uint32_t*                                   pPropertyCount,
9674     VkCooperativeVectorPropertiesNV*            pProperties) {
9675     const VkLayerInstanceDispatchTable *disp;
9676     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
9677     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
9678         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9679                    "vkGetPhysicalDeviceCooperativeVectorPropertiesNV: Invalid physicalDevice "
9680                    "[VUID-vkGetPhysicalDeviceCooperativeVectorPropertiesNV-physicalDevice-parameter]");
9681         abort(); /* Intentionally fail so user can correct issue. */
9682     }
9683     disp = loader_get_instance_layer_dispatch(physicalDevice);
9684     return disp->GetPhysicalDeviceCooperativeVectorPropertiesNV(unwrapped_phys_dev, pPropertyCount, pProperties);
9685 }
9686 
terminator_GetPhysicalDeviceCooperativeVectorPropertiesNV(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkCooperativeVectorPropertiesNV * pProperties)9687 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceCooperativeVectorPropertiesNV(
9688     VkPhysicalDevice                            physicalDevice,
9689     uint32_t*                                   pPropertyCount,
9690     VkCooperativeVectorPropertiesNV*            pProperties) {
9691     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
9692     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
9693     if (NULL == icd_term->dispatch.GetPhysicalDeviceCooperativeVectorPropertiesNV) {
9694         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
9695                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceCooperativeVectorPropertiesNV");
9696         abort(); /* Intentionally fail so user can correct issue. */
9697     }
9698     return icd_term->dispatch.GetPhysicalDeviceCooperativeVectorPropertiesNV(phys_dev_term->phys_dev, pPropertyCount, pProperties);
9699 }
9700 
ConvertCooperativeVectorMatrixNV(VkDevice device,const VkConvertCooperativeVectorMatrixInfoNV * pInfo)9701 VKAPI_ATTR VkResult VKAPI_CALL ConvertCooperativeVectorMatrixNV(
9702     VkDevice                                    device,
9703     const VkConvertCooperativeVectorMatrixInfoNV* pInfo) {
9704     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9705     if (NULL == disp) {
9706         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9707                    "vkConvertCooperativeVectorMatrixNV: Invalid device "
9708                    "[VUID-vkConvertCooperativeVectorMatrixNV-device-parameter]");
9709         abort(); /* Intentionally fail so user can correct issue. */
9710     }
9711     return disp->ConvertCooperativeVectorMatrixNV(device, pInfo);
9712 }
9713 
CmdConvertCooperativeVectorMatrixNV(VkCommandBuffer commandBuffer,uint32_t infoCount,const VkConvertCooperativeVectorMatrixInfoNV * pInfos)9714 VKAPI_ATTR void VKAPI_CALL CmdConvertCooperativeVectorMatrixNV(
9715     VkCommandBuffer                             commandBuffer,
9716     uint32_t                                    infoCount,
9717     const VkConvertCooperativeVectorMatrixInfoNV* pInfos) {
9718     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9719     if (NULL == disp) {
9720         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9721                    "vkCmdConvertCooperativeVectorMatrixNV: Invalid commandBuffer "
9722                    "[VUID-vkCmdConvertCooperativeVectorMatrixNV-commandBuffer-parameter]");
9723         abort(); /* Intentionally fail so user can correct issue. */
9724     }
9725     disp->CmdConvertCooperativeVectorMatrixNV(commandBuffer, infoCount, pInfos);
9726 }
9727 
9728 
9729 // ---- VK_NV_low_latency2 extension trampoline/terminators
9730 
SetLatencySleepModeNV(VkDevice device,VkSwapchainKHR swapchain,const VkLatencySleepModeInfoNV * pSleepModeInfo)9731 VKAPI_ATTR VkResult VKAPI_CALL SetLatencySleepModeNV(
9732     VkDevice                                    device,
9733     VkSwapchainKHR                              swapchain,
9734     const VkLatencySleepModeInfoNV*             pSleepModeInfo) {
9735     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9736     if (NULL == disp) {
9737         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9738                    "vkSetLatencySleepModeNV: Invalid device "
9739                    "[VUID-vkSetLatencySleepModeNV-device-parameter]");
9740         abort(); /* Intentionally fail so user can correct issue. */
9741     }
9742     return disp->SetLatencySleepModeNV(device, swapchain, pSleepModeInfo);
9743 }
9744 
LatencySleepNV(VkDevice device,VkSwapchainKHR swapchain,const VkLatencySleepInfoNV * pSleepInfo)9745 VKAPI_ATTR VkResult VKAPI_CALL LatencySleepNV(
9746     VkDevice                                    device,
9747     VkSwapchainKHR                              swapchain,
9748     const VkLatencySleepInfoNV*                 pSleepInfo) {
9749     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9750     if (NULL == disp) {
9751         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9752                    "vkLatencySleepNV: Invalid device "
9753                    "[VUID-vkLatencySleepNV-device-parameter]");
9754         abort(); /* Intentionally fail so user can correct issue. */
9755     }
9756     return disp->LatencySleepNV(device, swapchain, pSleepInfo);
9757 }
9758 
SetLatencyMarkerNV(VkDevice device,VkSwapchainKHR swapchain,const VkSetLatencyMarkerInfoNV * pLatencyMarkerInfo)9759 VKAPI_ATTR void VKAPI_CALL SetLatencyMarkerNV(
9760     VkDevice                                    device,
9761     VkSwapchainKHR                              swapchain,
9762     const VkSetLatencyMarkerInfoNV*             pLatencyMarkerInfo) {
9763     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9764     if (NULL == disp) {
9765         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9766                    "vkSetLatencyMarkerNV: Invalid device "
9767                    "[VUID-vkSetLatencyMarkerNV-device-parameter]");
9768         abort(); /* Intentionally fail so user can correct issue. */
9769     }
9770     disp->SetLatencyMarkerNV(device, swapchain, pLatencyMarkerInfo);
9771 }
9772 
GetLatencyTimingsNV(VkDevice device,VkSwapchainKHR swapchain,VkGetLatencyMarkerInfoNV * pLatencyMarkerInfo)9773 VKAPI_ATTR void VKAPI_CALL GetLatencyTimingsNV(
9774     VkDevice                                    device,
9775     VkSwapchainKHR                              swapchain,
9776     VkGetLatencyMarkerInfoNV*                   pLatencyMarkerInfo) {
9777     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9778     if (NULL == disp) {
9779         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9780                    "vkGetLatencyTimingsNV: Invalid device "
9781                    "[VUID-vkGetLatencyTimingsNV-device-parameter]");
9782         abort(); /* Intentionally fail so user can correct issue. */
9783     }
9784     disp->GetLatencyTimingsNV(device, swapchain, pLatencyMarkerInfo);
9785 }
9786 
QueueNotifyOutOfBandNV(VkQueue queue,const VkOutOfBandQueueTypeInfoNV * pQueueTypeInfo)9787 VKAPI_ATTR void VKAPI_CALL QueueNotifyOutOfBandNV(
9788     VkQueue                                     queue,
9789     const VkOutOfBandQueueTypeInfoNV*           pQueueTypeInfo) {
9790     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
9791     if (NULL == disp) {
9792         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9793                    "vkQueueNotifyOutOfBandNV: Invalid queue "
9794                    "[VUID-vkQueueNotifyOutOfBandNV-queue-parameter]");
9795         abort(); /* Intentionally fail so user can correct issue. */
9796     }
9797     disp->QueueNotifyOutOfBandNV(queue, pQueueTypeInfo);
9798 }
9799 
9800 
9801 // ---- VK_EXT_attachment_feedback_loop_dynamic_state extension trampoline/terminators
9802 
CmdSetAttachmentFeedbackLoopEnableEXT(VkCommandBuffer commandBuffer,VkImageAspectFlags aspectMask)9803 VKAPI_ATTR void VKAPI_CALL CmdSetAttachmentFeedbackLoopEnableEXT(
9804     VkCommandBuffer                             commandBuffer,
9805     VkImageAspectFlags                          aspectMask) {
9806     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9807     if (NULL == disp) {
9808         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9809                    "vkCmdSetAttachmentFeedbackLoopEnableEXT: Invalid commandBuffer "
9810                    "[VUID-vkCmdSetAttachmentFeedbackLoopEnableEXT-commandBuffer-parameter]");
9811         abort(); /* Intentionally fail so user can correct issue. */
9812     }
9813     disp->CmdSetAttachmentFeedbackLoopEnableEXT(commandBuffer, aspectMask);
9814 }
9815 
9816 
9817 // ---- VK_QNX_external_memory_screen_buffer extension trampoline/terminators
9818 
9819 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
GetScreenBufferPropertiesQNX(VkDevice device,const struct _screen_buffer * buffer,VkScreenBufferPropertiesQNX * pProperties)9820 VKAPI_ATTR VkResult VKAPI_CALL GetScreenBufferPropertiesQNX(
9821     VkDevice                                    device,
9822     const struct _screen_buffer*                buffer,
9823     VkScreenBufferPropertiesQNX*                pProperties) {
9824     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9825     if (NULL == disp) {
9826         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9827                    "vkGetScreenBufferPropertiesQNX: Invalid device "
9828                    "[VUID-vkGetScreenBufferPropertiesQNX-device-parameter]");
9829         abort(); /* Intentionally fail so user can correct issue. */
9830     }
9831     return disp->GetScreenBufferPropertiesQNX(device, buffer, pProperties);
9832 }
9833 
9834 #endif // VK_USE_PLATFORM_SCREEN_QNX
9835 
9836 // ---- VK_NV_cluster_acceleration_structure extension trampoline/terminators
9837 
GetClusterAccelerationStructureBuildSizesNV(VkDevice device,const VkClusterAccelerationStructureInputInfoNV * pInfo,VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo)9838 VKAPI_ATTR void VKAPI_CALL GetClusterAccelerationStructureBuildSizesNV(
9839     VkDevice                                    device,
9840     const VkClusterAccelerationStructureInputInfoNV* pInfo,
9841     VkAccelerationStructureBuildSizesInfoKHR*   pSizeInfo) {
9842     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9843     if (NULL == disp) {
9844         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9845                    "vkGetClusterAccelerationStructureBuildSizesNV: Invalid device "
9846                    "[VUID-vkGetClusterAccelerationStructureBuildSizesNV-device-parameter]");
9847         abort(); /* Intentionally fail so user can correct issue. */
9848     }
9849     disp->GetClusterAccelerationStructureBuildSizesNV(device, pInfo, pSizeInfo);
9850 }
9851 
CmdBuildClusterAccelerationStructureIndirectNV(VkCommandBuffer commandBuffer,const VkClusterAccelerationStructureCommandsInfoNV * pCommandInfos)9852 VKAPI_ATTR void VKAPI_CALL CmdBuildClusterAccelerationStructureIndirectNV(
9853     VkCommandBuffer                             commandBuffer,
9854     const VkClusterAccelerationStructureCommandsInfoNV* pCommandInfos) {
9855     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9856     if (NULL == disp) {
9857         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9858                    "vkCmdBuildClusterAccelerationStructureIndirectNV: Invalid commandBuffer "
9859                    "[VUID-vkCmdBuildClusterAccelerationStructureIndirectNV-commandBuffer-parameter]");
9860         abort(); /* Intentionally fail so user can correct issue. */
9861     }
9862     disp->CmdBuildClusterAccelerationStructureIndirectNV(commandBuffer, pCommandInfos);
9863 }
9864 
9865 
9866 // ---- VK_NV_partitioned_acceleration_structure extension trampoline/terminators
9867 
GetPartitionedAccelerationStructuresBuildSizesNV(VkDevice device,const VkPartitionedAccelerationStructureInstancesInputNV * pInfo,VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo)9868 VKAPI_ATTR void VKAPI_CALL GetPartitionedAccelerationStructuresBuildSizesNV(
9869     VkDevice                                    device,
9870     const VkPartitionedAccelerationStructureInstancesInputNV* pInfo,
9871     VkAccelerationStructureBuildSizesInfoKHR*   pSizeInfo) {
9872     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9873     if (NULL == disp) {
9874         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9875                    "vkGetPartitionedAccelerationStructuresBuildSizesNV: Invalid device "
9876                    "[VUID-vkGetPartitionedAccelerationStructuresBuildSizesNV-device-parameter]");
9877         abort(); /* Intentionally fail so user can correct issue. */
9878     }
9879     disp->GetPartitionedAccelerationStructuresBuildSizesNV(device, pInfo, pSizeInfo);
9880 }
9881 
CmdBuildPartitionedAccelerationStructuresNV(VkCommandBuffer commandBuffer,const VkBuildPartitionedAccelerationStructureInfoNV * pBuildInfo)9882 VKAPI_ATTR void VKAPI_CALL CmdBuildPartitionedAccelerationStructuresNV(
9883     VkCommandBuffer                             commandBuffer,
9884     const VkBuildPartitionedAccelerationStructureInfoNV* pBuildInfo) {
9885     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9886     if (NULL == disp) {
9887         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9888                    "vkCmdBuildPartitionedAccelerationStructuresNV: Invalid commandBuffer "
9889                    "[VUID-vkCmdBuildPartitionedAccelerationStructuresNV-commandBuffer-parameter]");
9890         abort(); /* Intentionally fail so user can correct issue. */
9891     }
9892     disp->CmdBuildPartitionedAccelerationStructuresNV(commandBuffer, pBuildInfo);
9893 }
9894 
9895 
9896 // ---- VK_EXT_device_generated_commands extension trampoline/terminators
9897 
GetGeneratedCommandsMemoryRequirementsEXT(VkDevice device,const VkGeneratedCommandsMemoryRequirementsInfoEXT * pInfo,VkMemoryRequirements2 * pMemoryRequirements)9898 VKAPI_ATTR void VKAPI_CALL GetGeneratedCommandsMemoryRequirementsEXT(
9899     VkDevice                                    device,
9900     const VkGeneratedCommandsMemoryRequirementsInfoEXT* pInfo,
9901     VkMemoryRequirements2*                      pMemoryRequirements) {
9902     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9903     if (NULL == disp) {
9904         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9905                    "vkGetGeneratedCommandsMemoryRequirementsEXT: Invalid device "
9906                    "[VUID-vkGetGeneratedCommandsMemoryRequirementsEXT-device-parameter]");
9907         abort(); /* Intentionally fail so user can correct issue. */
9908     }
9909     disp->GetGeneratedCommandsMemoryRequirementsEXT(device, pInfo, pMemoryRequirements);
9910 }
9911 
CmdPreprocessGeneratedCommandsEXT(VkCommandBuffer commandBuffer,const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo,VkCommandBuffer stateCommandBuffer)9912 VKAPI_ATTR void VKAPI_CALL CmdPreprocessGeneratedCommandsEXT(
9913     VkCommandBuffer                             commandBuffer,
9914     const VkGeneratedCommandsInfoEXT*           pGeneratedCommandsInfo,
9915     VkCommandBuffer                             stateCommandBuffer) {
9916     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9917     if (NULL == disp) {
9918         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9919                    "vkCmdPreprocessGeneratedCommandsEXT: Invalid commandBuffer "
9920                    "[VUID-vkCmdPreprocessGeneratedCommandsEXT-commandBuffer-parameter]");
9921         abort(); /* Intentionally fail so user can correct issue. */
9922     }
9923     disp->CmdPreprocessGeneratedCommandsEXT(commandBuffer, pGeneratedCommandsInfo, stateCommandBuffer);
9924 }
9925 
CmdExecuteGeneratedCommandsEXT(VkCommandBuffer commandBuffer,VkBool32 isPreprocessed,const VkGeneratedCommandsInfoEXT * pGeneratedCommandsInfo)9926 VKAPI_ATTR void VKAPI_CALL CmdExecuteGeneratedCommandsEXT(
9927     VkCommandBuffer                             commandBuffer,
9928     VkBool32                                    isPreprocessed,
9929     const VkGeneratedCommandsInfoEXT*           pGeneratedCommandsInfo) {
9930     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
9931     if (NULL == disp) {
9932         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9933                    "vkCmdExecuteGeneratedCommandsEXT: Invalid commandBuffer "
9934                    "[VUID-vkCmdExecuteGeneratedCommandsEXT-commandBuffer-parameter]");
9935         abort(); /* Intentionally fail so user can correct issue. */
9936     }
9937     disp->CmdExecuteGeneratedCommandsEXT(commandBuffer, isPreprocessed, pGeneratedCommandsInfo);
9938 }
9939 
CreateIndirectCommandsLayoutEXT(VkDevice device,const VkIndirectCommandsLayoutCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkIndirectCommandsLayoutEXT * pIndirectCommandsLayout)9940 VKAPI_ATTR VkResult VKAPI_CALL CreateIndirectCommandsLayoutEXT(
9941     VkDevice                                    device,
9942     const VkIndirectCommandsLayoutCreateInfoEXT* pCreateInfo,
9943     const VkAllocationCallbacks*                pAllocator,
9944     VkIndirectCommandsLayoutEXT*                pIndirectCommandsLayout) {
9945     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9946     if (NULL == disp) {
9947         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9948                    "vkCreateIndirectCommandsLayoutEXT: Invalid device "
9949                    "[VUID-vkCreateIndirectCommandsLayoutEXT-device-parameter]");
9950         abort(); /* Intentionally fail so user can correct issue. */
9951     }
9952     return disp->CreateIndirectCommandsLayoutEXT(device, pCreateInfo, pAllocator, pIndirectCommandsLayout);
9953 }
9954 
DestroyIndirectCommandsLayoutEXT(VkDevice device,VkIndirectCommandsLayoutEXT indirectCommandsLayout,const VkAllocationCallbacks * pAllocator)9955 VKAPI_ATTR void VKAPI_CALL DestroyIndirectCommandsLayoutEXT(
9956     VkDevice                                    device,
9957     VkIndirectCommandsLayoutEXT                 indirectCommandsLayout,
9958     const VkAllocationCallbacks*                pAllocator) {
9959     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9960     if (NULL == disp) {
9961         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9962                    "vkDestroyIndirectCommandsLayoutEXT: Invalid device "
9963                    "[VUID-vkDestroyIndirectCommandsLayoutEXT-device-parameter]");
9964         abort(); /* Intentionally fail so user can correct issue. */
9965     }
9966     disp->DestroyIndirectCommandsLayoutEXT(device, indirectCommandsLayout, pAllocator);
9967 }
9968 
CreateIndirectExecutionSetEXT(VkDevice device,const VkIndirectExecutionSetCreateInfoEXT * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkIndirectExecutionSetEXT * pIndirectExecutionSet)9969 VKAPI_ATTR VkResult VKAPI_CALL CreateIndirectExecutionSetEXT(
9970     VkDevice                                    device,
9971     const VkIndirectExecutionSetCreateInfoEXT*  pCreateInfo,
9972     const VkAllocationCallbacks*                pAllocator,
9973     VkIndirectExecutionSetEXT*                  pIndirectExecutionSet) {
9974     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9975     if (NULL == disp) {
9976         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9977                    "vkCreateIndirectExecutionSetEXT: Invalid device "
9978                    "[VUID-vkCreateIndirectExecutionSetEXT-device-parameter]");
9979         abort(); /* Intentionally fail so user can correct issue. */
9980     }
9981     return disp->CreateIndirectExecutionSetEXT(device, pCreateInfo, pAllocator, pIndirectExecutionSet);
9982 }
9983 
DestroyIndirectExecutionSetEXT(VkDevice device,VkIndirectExecutionSetEXT indirectExecutionSet,const VkAllocationCallbacks * pAllocator)9984 VKAPI_ATTR void VKAPI_CALL DestroyIndirectExecutionSetEXT(
9985     VkDevice                                    device,
9986     VkIndirectExecutionSetEXT                   indirectExecutionSet,
9987     const VkAllocationCallbacks*                pAllocator) {
9988     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
9989     if (NULL == disp) {
9990         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
9991                    "vkDestroyIndirectExecutionSetEXT: Invalid device "
9992                    "[VUID-vkDestroyIndirectExecutionSetEXT-device-parameter]");
9993         abort(); /* Intentionally fail so user can correct issue. */
9994     }
9995     disp->DestroyIndirectExecutionSetEXT(device, indirectExecutionSet, pAllocator);
9996 }
9997 
UpdateIndirectExecutionSetPipelineEXT(VkDevice device,VkIndirectExecutionSetEXT indirectExecutionSet,uint32_t executionSetWriteCount,const VkWriteIndirectExecutionSetPipelineEXT * pExecutionSetWrites)9998 VKAPI_ATTR void VKAPI_CALL UpdateIndirectExecutionSetPipelineEXT(
9999     VkDevice                                    device,
10000     VkIndirectExecutionSetEXT                   indirectExecutionSet,
10001     uint32_t                                    executionSetWriteCount,
10002     const VkWriteIndirectExecutionSetPipelineEXT* pExecutionSetWrites) {
10003     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10004     if (NULL == disp) {
10005         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10006                    "vkUpdateIndirectExecutionSetPipelineEXT: Invalid device "
10007                    "[VUID-vkUpdateIndirectExecutionSetPipelineEXT-device-parameter]");
10008         abort(); /* Intentionally fail so user can correct issue. */
10009     }
10010     disp->UpdateIndirectExecutionSetPipelineEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites);
10011 }
10012 
UpdateIndirectExecutionSetShaderEXT(VkDevice device,VkIndirectExecutionSetEXT indirectExecutionSet,uint32_t executionSetWriteCount,const VkWriteIndirectExecutionSetShaderEXT * pExecutionSetWrites)10013 VKAPI_ATTR void VKAPI_CALL UpdateIndirectExecutionSetShaderEXT(
10014     VkDevice                                    device,
10015     VkIndirectExecutionSetEXT                   indirectExecutionSet,
10016     uint32_t                                    executionSetWriteCount,
10017     const VkWriteIndirectExecutionSetShaderEXT* pExecutionSetWrites) {
10018     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10019     if (NULL == disp) {
10020         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10021                    "vkUpdateIndirectExecutionSetShaderEXT: Invalid device "
10022                    "[VUID-vkUpdateIndirectExecutionSetShaderEXT-device-parameter]");
10023         abort(); /* Intentionally fail so user can correct issue. */
10024     }
10025     disp->UpdateIndirectExecutionSetShaderEXT(device, indirectExecutionSet, executionSetWriteCount, pExecutionSetWrites);
10026 }
10027 
10028 
10029 // ---- VK_NV_cooperative_matrix2 extension trampoline/terminators
10030 
GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkCooperativeMatrixFlexibleDimensionsPropertiesNV * pProperties)10031 VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(
10032     VkPhysicalDevice                            physicalDevice,
10033     uint32_t*                                   pPropertyCount,
10034     VkCooperativeMatrixFlexibleDimensionsPropertiesNV* pProperties) {
10035     const VkLayerInstanceDispatchTable *disp;
10036     VkPhysicalDevice unwrapped_phys_dev = loader_unwrap_physical_device(physicalDevice);
10037     if (VK_NULL_HANDLE == unwrapped_phys_dev) {
10038         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10039                    "vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV: Invalid physicalDevice "
10040                    "[VUID-vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV-physicalDevice-parameter]");
10041         abort(); /* Intentionally fail so user can correct issue. */
10042     }
10043     disp = loader_get_instance_layer_dispatch(physicalDevice);
10044     return disp->GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(unwrapped_phys_dev, pPropertyCount, pProperties);
10045 }
10046 
terminator_GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(VkPhysicalDevice physicalDevice,uint32_t * pPropertyCount,VkCooperativeMatrixFlexibleDimensionsPropertiesNV * pProperties)10047 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(
10048     VkPhysicalDevice                            physicalDevice,
10049     uint32_t*                                   pPropertyCount,
10050     VkCooperativeMatrixFlexibleDimensionsPropertiesNV* pProperties) {
10051     struct loader_physical_device_term *phys_dev_term = (struct loader_physical_device_term *)physicalDevice;
10052     struct loader_icd_term *icd_term = phys_dev_term->this_icd_term;
10053     if (NULL == icd_term->dispatch.GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV) {
10054         loader_log(icd_term->this_instance, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT, 0,
10055                    "ICD associated with VkPhysicalDevice does not support GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV");
10056         abort(); /* Intentionally fail so user can correct issue. */
10057     }
10058     return icd_term->dispatch.GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV(phys_dev_term->phys_dev, pPropertyCount, pProperties);
10059 }
10060 
10061 
10062 // ---- VK_EXT_external_memory_metal extension trampoline/terminators
10063 
10064 #if defined(VK_USE_PLATFORM_METAL_EXT)
GetMemoryMetalHandleEXT(VkDevice device,const VkMemoryGetMetalHandleInfoEXT * pGetMetalHandleInfo,void ** pHandle)10065 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryMetalHandleEXT(
10066     VkDevice                                    device,
10067     const VkMemoryGetMetalHandleInfoEXT*        pGetMetalHandleInfo,
10068     void**                                      pHandle) {
10069     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10070     if (NULL == disp) {
10071         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10072                    "vkGetMemoryMetalHandleEXT: Invalid device "
10073                    "[VUID-vkGetMemoryMetalHandleEXT-device-parameter]");
10074         abort(); /* Intentionally fail so user can correct issue. */
10075     }
10076     return disp->GetMemoryMetalHandleEXT(device, pGetMetalHandleInfo, pHandle);
10077 }
10078 
10079 #endif // VK_USE_PLATFORM_METAL_EXT
10080 #if defined(VK_USE_PLATFORM_METAL_EXT)
GetMemoryMetalHandlePropertiesEXT(VkDevice device,VkExternalMemoryHandleTypeFlagBits handleType,const void * pHandle,VkMemoryMetalHandlePropertiesEXT * pMemoryMetalHandleProperties)10081 VKAPI_ATTR VkResult VKAPI_CALL GetMemoryMetalHandlePropertiesEXT(
10082     VkDevice                                    device,
10083     VkExternalMemoryHandleTypeFlagBits          handleType,
10084     const void*                                 pHandle,
10085     VkMemoryMetalHandlePropertiesEXT*           pMemoryMetalHandleProperties) {
10086     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10087     if (NULL == disp) {
10088         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10089                    "vkGetMemoryMetalHandlePropertiesEXT: Invalid device "
10090                    "[VUID-vkGetMemoryMetalHandlePropertiesEXT-device-parameter]");
10091         abort(); /* Intentionally fail so user can correct issue. */
10092     }
10093     return disp->GetMemoryMetalHandlePropertiesEXT(device, handleType, pHandle, pMemoryMetalHandleProperties);
10094 }
10095 
10096 #endif // VK_USE_PLATFORM_METAL_EXT
10097 
10098 // ---- VK_KHR_acceleration_structure extension trampoline/terminators
10099 
CreateAccelerationStructureKHR(VkDevice device,const VkAccelerationStructureCreateInfoKHR * pCreateInfo,const VkAllocationCallbacks * pAllocator,VkAccelerationStructureKHR * pAccelerationStructure)10100 VKAPI_ATTR VkResult VKAPI_CALL CreateAccelerationStructureKHR(
10101     VkDevice                                    device,
10102     const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
10103     const VkAllocationCallbacks*                pAllocator,
10104     VkAccelerationStructureKHR*                 pAccelerationStructure) {
10105     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10106     if (NULL == disp) {
10107         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10108                    "vkCreateAccelerationStructureKHR: Invalid device "
10109                    "[VUID-vkCreateAccelerationStructureKHR-device-parameter]");
10110         abort(); /* Intentionally fail so user can correct issue. */
10111     }
10112     return disp->CreateAccelerationStructureKHR(device, pCreateInfo, pAllocator, pAccelerationStructure);
10113 }
10114 
DestroyAccelerationStructureKHR(VkDevice device,VkAccelerationStructureKHR accelerationStructure,const VkAllocationCallbacks * pAllocator)10115 VKAPI_ATTR void VKAPI_CALL DestroyAccelerationStructureKHR(
10116     VkDevice                                    device,
10117     VkAccelerationStructureKHR                  accelerationStructure,
10118     const VkAllocationCallbacks*                pAllocator) {
10119     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10120     if (NULL == disp) {
10121         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10122                    "vkDestroyAccelerationStructureKHR: Invalid device "
10123                    "[VUID-vkDestroyAccelerationStructureKHR-device-parameter]");
10124         abort(); /* Intentionally fail so user can correct issue. */
10125     }
10126     disp->DestroyAccelerationStructureKHR(device, accelerationStructure, pAllocator);
10127 }
10128 
CmdBuildAccelerationStructuresKHR(VkCommandBuffer commandBuffer,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos)10129 VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructuresKHR(
10130     VkCommandBuffer                             commandBuffer,
10131     uint32_t                                    infoCount,
10132     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
10133     const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) {
10134     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
10135     if (NULL == disp) {
10136         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10137                    "vkCmdBuildAccelerationStructuresKHR: Invalid commandBuffer "
10138                    "[VUID-vkCmdBuildAccelerationStructuresKHR-commandBuffer-parameter]");
10139         abort(); /* Intentionally fail so user can correct issue. */
10140     }
10141     disp->CmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos);
10142 }
10143 
CmdBuildAccelerationStructuresIndirectKHR(VkCommandBuffer commandBuffer,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkDeviceAddress * pIndirectDeviceAddresses,const uint32_t * pIndirectStrides,const uint32_t * const * ppMaxPrimitiveCounts)10144 VKAPI_ATTR void VKAPI_CALL CmdBuildAccelerationStructuresIndirectKHR(
10145     VkCommandBuffer                             commandBuffer,
10146     uint32_t                                    infoCount,
10147     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
10148     const VkDeviceAddress*                      pIndirectDeviceAddresses,
10149     const uint32_t*                             pIndirectStrides,
10150     const uint32_t* const*                      ppMaxPrimitiveCounts) {
10151     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
10152     if (NULL == disp) {
10153         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10154                    "vkCmdBuildAccelerationStructuresIndirectKHR: Invalid commandBuffer "
10155                    "[VUID-vkCmdBuildAccelerationStructuresIndirectKHR-commandBuffer-parameter]");
10156         abort(); /* Intentionally fail so user can correct issue. */
10157     }
10158     disp->CmdBuildAccelerationStructuresIndirectKHR(commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts);
10159 }
10160 
BuildAccelerationStructuresKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,uint32_t infoCount,const VkAccelerationStructureBuildGeometryInfoKHR * pInfos,const VkAccelerationStructureBuildRangeInfoKHR * const * ppBuildRangeInfos)10161 VKAPI_ATTR VkResult VKAPI_CALL BuildAccelerationStructuresKHR(
10162     VkDevice                                    device,
10163     VkDeferredOperationKHR                      deferredOperation,
10164     uint32_t                                    infoCount,
10165     const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
10166     const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos) {
10167     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10168     if (NULL == disp) {
10169         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10170                    "vkBuildAccelerationStructuresKHR: Invalid device "
10171                    "[VUID-vkBuildAccelerationStructuresKHR-device-parameter]");
10172         abort(); /* Intentionally fail so user can correct issue. */
10173     }
10174     return disp->BuildAccelerationStructuresKHR(device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos);
10175 }
10176 
CopyAccelerationStructureKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyAccelerationStructureInfoKHR * pInfo)10177 VKAPI_ATTR VkResult VKAPI_CALL CopyAccelerationStructureKHR(
10178     VkDevice                                    device,
10179     VkDeferredOperationKHR                      deferredOperation,
10180     const VkCopyAccelerationStructureInfoKHR*   pInfo) {
10181     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10182     if (NULL == disp) {
10183         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10184                    "vkCopyAccelerationStructureKHR: Invalid device "
10185                    "[VUID-vkCopyAccelerationStructureKHR-device-parameter]");
10186         abort(); /* Intentionally fail so user can correct issue. */
10187     }
10188     return disp->CopyAccelerationStructureKHR(device, deferredOperation, pInfo);
10189 }
10190 
CopyAccelerationStructureToMemoryKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo)10191 VKAPI_ATTR VkResult VKAPI_CALL CopyAccelerationStructureToMemoryKHR(
10192     VkDevice                                    device,
10193     VkDeferredOperationKHR                      deferredOperation,
10194     const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) {
10195     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10196     if (NULL == disp) {
10197         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10198                    "vkCopyAccelerationStructureToMemoryKHR: Invalid device "
10199                    "[VUID-vkCopyAccelerationStructureToMemoryKHR-device-parameter]");
10200         abort(); /* Intentionally fail so user can correct issue. */
10201     }
10202     return disp->CopyAccelerationStructureToMemoryKHR(device, deferredOperation, pInfo);
10203 }
10204 
CopyMemoryToAccelerationStructureKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo)10205 VKAPI_ATTR VkResult VKAPI_CALL CopyMemoryToAccelerationStructureKHR(
10206     VkDevice                                    device,
10207     VkDeferredOperationKHR                      deferredOperation,
10208     const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) {
10209     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10210     if (NULL == disp) {
10211         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10212                    "vkCopyMemoryToAccelerationStructureKHR: Invalid device "
10213                    "[VUID-vkCopyMemoryToAccelerationStructureKHR-device-parameter]");
10214         abort(); /* Intentionally fail so user can correct issue. */
10215     }
10216     return disp->CopyMemoryToAccelerationStructureKHR(device, deferredOperation, pInfo);
10217 }
10218 
WriteAccelerationStructuresPropertiesKHR(VkDevice device,uint32_t accelerationStructureCount,const VkAccelerationStructureKHR * pAccelerationStructures,VkQueryType queryType,size_t dataSize,void * pData,size_t stride)10219 VKAPI_ATTR VkResult VKAPI_CALL WriteAccelerationStructuresPropertiesKHR(
10220     VkDevice                                    device,
10221     uint32_t                                    accelerationStructureCount,
10222     const VkAccelerationStructureKHR*           pAccelerationStructures,
10223     VkQueryType                                 queryType,
10224     size_t                                      dataSize,
10225     void*                                       pData,
10226     size_t                                      stride) {
10227     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10228     if (NULL == disp) {
10229         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10230                    "vkWriteAccelerationStructuresPropertiesKHR: Invalid device "
10231                    "[VUID-vkWriteAccelerationStructuresPropertiesKHR-device-parameter]");
10232         abort(); /* Intentionally fail so user can correct issue. */
10233     }
10234     return disp->WriteAccelerationStructuresPropertiesKHR(device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride);
10235 }
10236 
CmdCopyAccelerationStructureKHR(VkCommandBuffer commandBuffer,const VkCopyAccelerationStructureInfoKHR * pInfo)10237 VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureKHR(
10238     VkCommandBuffer                             commandBuffer,
10239     const VkCopyAccelerationStructureInfoKHR*   pInfo) {
10240     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
10241     if (NULL == disp) {
10242         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10243                    "vkCmdCopyAccelerationStructureKHR: Invalid commandBuffer "
10244                    "[VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-parameter]");
10245         abort(); /* Intentionally fail so user can correct issue. */
10246     }
10247     disp->CmdCopyAccelerationStructureKHR(commandBuffer, pInfo);
10248 }
10249 
CmdCopyAccelerationStructureToMemoryKHR(VkCommandBuffer commandBuffer,const VkCopyAccelerationStructureToMemoryInfoKHR * pInfo)10250 VKAPI_ATTR void VKAPI_CALL CmdCopyAccelerationStructureToMemoryKHR(
10251     VkCommandBuffer                             commandBuffer,
10252     const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) {
10253     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
10254     if (NULL == disp) {
10255         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10256                    "vkCmdCopyAccelerationStructureToMemoryKHR: Invalid commandBuffer "
10257                    "[VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-parameter]");
10258         abort(); /* Intentionally fail so user can correct issue. */
10259     }
10260     disp->CmdCopyAccelerationStructureToMemoryKHR(commandBuffer, pInfo);
10261 }
10262 
CmdCopyMemoryToAccelerationStructureKHR(VkCommandBuffer commandBuffer,const VkCopyMemoryToAccelerationStructureInfoKHR * pInfo)10263 VKAPI_ATTR void VKAPI_CALL CmdCopyMemoryToAccelerationStructureKHR(
10264     VkCommandBuffer                             commandBuffer,
10265     const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) {
10266     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
10267     if (NULL == disp) {
10268         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10269                    "vkCmdCopyMemoryToAccelerationStructureKHR: Invalid commandBuffer "
10270                    "[VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-parameter]");
10271         abort(); /* Intentionally fail so user can correct issue. */
10272     }
10273     disp->CmdCopyMemoryToAccelerationStructureKHR(commandBuffer, pInfo);
10274 }
10275 
GetAccelerationStructureDeviceAddressKHR(VkDevice device,const VkAccelerationStructureDeviceAddressInfoKHR * pInfo)10276 VKAPI_ATTR VkDeviceAddress VKAPI_CALL GetAccelerationStructureDeviceAddressKHR(
10277     VkDevice                                    device,
10278     const VkAccelerationStructureDeviceAddressInfoKHR* pInfo) {
10279     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10280     if (NULL == disp) {
10281         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10282                    "vkGetAccelerationStructureDeviceAddressKHR: Invalid device "
10283                    "[VUID-vkGetAccelerationStructureDeviceAddressKHR-device-parameter]");
10284         abort(); /* Intentionally fail so user can correct issue. */
10285     }
10286     return disp->GetAccelerationStructureDeviceAddressKHR(device, pInfo);
10287 }
10288 
CmdWriteAccelerationStructuresPropertiesKHR(VkCommandBuffer commandBuffer,uint32_t accelerationStructureCount,const VkAccelerationStructureKHR * pAccelerationStructures,VkQueryType queryType,VkQueryPool queryPool,uint32_t firstQuery)10289 VKAPI_ATTR void VKAPI_CALL CmdWriteAccelerationStructuresPropertiesKHR(
10290     VkCommandBuffer                             commandBuffer,
10291     uint32_t                                    accelerationStructureCount,
10292     const VkAccelerationStructureKHR*           pAccelerationStructures,
10293     VkQueryType                                 queryType,
10294     VkQueryPool                                 queryPool,
10295     uint32_t                                    firstQuery) {
10296     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
10297     if (NULL == disp) {
10298         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10299                    "vkCmdWriteAccelerationStructuresPropertiesKHR: Invalid commandBuffer "
10300                    "[VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-parameter]");
10301         abort(); /* Intentionally fail so user can correct issue. */
10302     }
10303     disp->CmdWriteAccelerationStructuresPropertiesKHR(commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery);
10304 }
10305 
GetDeviceAccelerationStructureCompatibilityKHR(VkDevice device,const VkAccelerationStructureVersionInfoKHR * pVersionInfo,VkAccelerationStructureCompatibilityKHR * pCompatibility)10306 VKAPI_ATTR void VKAPI_CALL GetDeviceAccelerationStructureCompatibilityKHR(
10307     VkDevice                                    device,
10308     const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
10309     VkAccelerationStructureCompatibilityKHR*    pCompatibility) {
10310     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10311     if (NULL == disp) {
10312         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10313                    "vkGetDeviceAccelerationStructureCompatibilityKHR: Invalid device "
10314                    "[VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-device-parameter]");
10315         abort(); /* Intentionally fail so user can correct issue. */
10316     }
10317     disp->GetDeviceAccelerationStructureCompatibilityKHR(device, pVersionInfo, pCompatibility);
10318 }
10319 
GetAccelerationStructureBuildSizesKHR(VkDevice device,VkAccelerationStructureBuildTypeKHR buildType,const VkAccelerationStructureBuildGeometryInfoKHR * pBuildInfo,const uint32_t * pMaxPrimitiveCounts,VkAccelerationStructureBuildSizesInfoKHR * pSizeInfo)10320 VKAPI_ATTR void VKAPI_CALL GetAccelerationStructureBuildSizesKHR(
10321     VkDevice                                    device,
10322     VkAccelerationStructureBuildTypeKHR         buildType,
10323     const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
10324     const uint32_t*                             pMaxPrimitiveCounts,
10325     VkAccelerationStructureBuildSizesInfoKHR*   pSizeInfo) {
10326     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10327     if (NULL == disp) {
10328         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10329                    "vkGetAccelerationStructureBuildSizesKHR: Invalid device "
10330                    "[VUID-vkGetAccelerationStructureBuildSizesKHR-device-parameter]");
10331         abort(); /* Intentionally fail so user can correct issue. */
10332     }
10333     disp->GetAccelerationStructureBuildSizesKHR(device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo);
10334 }
10335 
10336 
10337 // ---- VK_KHR_ray_tracing_pipeline extension trampoline/terminators
10338 
CmdTraceRaysKHR(VkCommandBuffer commandBuffer,const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable,uint32_t width,uint32_t height,uint32_t depth)10339 VKAPI_ATTR void VKAPI_CALL CmdTraceRaysKHR(
10340     VkCommandBuffer                             commandBuffer,
10341     const VkStridedDeviceAddressRegionKHR*      pRaygenShaderBindingTable,
10342     const VkStridedDeviceAddressRegionKHR*      pMissShaderBindingTable,
10343     const VkStridedDeviceAddressRegionKHR*      pHitShaderBindingTable,
10344     const VkStridedDeviceAddressRegionKHR*      pCallableShaderBindingTable,
10345     uint32_t                                    width,
10346     uint32_t                                    height,
10347     uint32_t                                    depth) {
10348     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
10349     if (NULL == disp) {
10350         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10351                    "vkCmdTraceRaysKHR: Invalid commandBuffer "
10352                    "[VUID-vkCmdTraceRaysKHR-commandBuffer-parameter]");
10353         abort(); /* Intentionally fail so user can correct issue. */
10354     }
10355     disp->CmdTraceRaysKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth);
10356 }
10357 
CreateRayTracingPipelinesKHR(VkDevice device,VkDeferredOperationKHR deferredOperation,VkPipelineCache pipelineCache,uint32_t createInfoCount,const VkRayTracingPipelineCreateInfoKHR * pCreateInfos,const VkAllocationCallbacks * pAllocator,VkPipeline * pPipelines)10358 VKAPI_ATTR VkResult VKAPI_CALL CreateRayTracingPipelinesKHR(
10359     VkDevice                                    device,
10360     VkDeferredOperationKHR                      deferredOperation,
10361     VkPipelineCache                             pipelineCache,
10362     uint32_t                                    createInfoCount,
10363     const VkRayTracingPipelineCreateInfoKHR*    pCreateInfos,
10364     const VkAllocationCallbacks*                pAllocator,
10365     VkPipeline*                                 pPipelines) {
10366     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10367     if (NULL == disp) {
10368         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10369                    "vkCreateRayTracingPipelinesKHR: Invalid device "
10370                    "[VUID-vkCreateRayTracingPipelinesKHR-device-parameter]");
10371         abort(); /* Intentionally fail so user can correct issue. */
10372     }
10373     return disp->CreateRayTracingPipelinesKHR(device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines);
10374 }
10375 
GetRayTracingCaptureReplayShaderGroupHandlesKHR(VkDevice device,VkPipeline pipeline,uint32_t firstGroup,uint32_t groupCount,size_t dataSize,void * pData)10376 VKAPI_ATTR VkResult VKAPI_CALL GetRayTracingCaptureReplayShaderGroupHandlesKHR(
10377     VkDevice                                    device,
10378     VkPipeline                                  pipeline,
10379     uint32_t                                    firstGroup,
10380     uint32_t                                    groupCount,
10381     size_t                                      dataSize,
10382     void*                                       pData) {
10383     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10384     if (NULL == disp) {
10385         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10386                    "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR: Invalid device "
10387                    "[VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-device-parameter]");
10388         abort(); /* Intentionally fail so user can correct issue. */
10389     }
10390     return disp->GetRayTracingCaptureReplayShaderGroupHandlesKHR(device, pipeline, firstGroup, groupCount, dataSize, pData);
10391 }
10392 
CmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer,const VkStridedDeviceAddressRegionKHR * pRaygenShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pMissShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pHitShaderBindingTable,const VkStridedDeviceAddressRegionKHR * pCallableShaderBindingTable,VkDeviceAddress indirectDeviceAddress)10393 VKAPI_ATTR void VKAPI_CALL CmdTraceRaysIndirectKHR(
10394     VkCommandBuffer                             commandBuffer,
10395     const VkStridedDeviceAddressRegionKHR*      pRaygenShaderBindingTable,
10396     const VkStridedDeviceAddressRegionKHR*      pMissShaderBindingTable,
10397     const VkStridedDeviceAddressRegionKHR*      pHitShaderBindingTable,
10398     const VkStridedDeviceAddressRegionKHR*      pCallableShaderBindingTable,
10399     VkDeviceAddress                             indirectDeviceAddress) {
10400     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
10401     if (NULL == disp) {
10402         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10403                    "vkCmdTraceRaysIndirectKHR: Invalid commandBuffer "
10404                    "[VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-parameter]");
10405         abort(); /* Intentionally fail so user can correct issue. */
10406     }
10407     disp->CmdTraceRaysIndirectKHR(commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress);
10408 }
10409 
GetRayTracingShaderGroupStackSizeKHR(VkDevice device,VkPipeline pipeline,uint32_t group,VkShaderGroupShaderKHR groupShader)10410 VKAPI_ATTR VkDeviceSize VKAPI_CALL GetRayTracingShaderGroupStackSizeKHR(
10411     VkDevice                                    device,
10412     VkPipeline                                  pipeline,
10413     uint32_t                                    group,
10414     VkShaderGroupShaderKHR                      groupShader) {
10415     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10416     if (NULL == disp) {
10417         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10418                    "vkGetRayTracingShaderGroupStackSizeKHR: Invalid device "
10419                    "[VUID-vkGetRayTracingShaderGroupStackSizeKHR-device-parameter]");
10420         abort(); /* Intentionally fail so user can correct issue. */
10421     }
10422     return disp->GetRayTracingShaderGroupStackSizeKHR(device, pipeline, group, groupShader);
10423 }
10424 
CmdSetRayTracingPipelineStackSizeKHR(VkCommandBuffer commandBuffer,uint32_t pipelineStackSize)10425 VKAPI_ATTR void VKAPI_CALL CmdSetRayTracingPipelineStackSizeKHR(
10426     VkCommandBuffer                             commandBuffer,
10427     uint32_t                                    pipelineStackSize) {
10428     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
10429     if (NULL == disp) {
10430         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10431                    "vkCmdSetRayTracingPipelineStackSizeKHR: Invalid commandBuffer "
10432                    "[VUID-vkCmdSetRayTracingPipelineStackSizeKHR-commandBuffer-parameter]");
10433         abort(); /* Intentionally fail so user can correct issue. */
10434     }
10435     disp->CmdSetRayTracingPipelineStackSizeKHR(commandBuffer, pipelineStackSize);
10436 }
10437 
10438 
10439 // ---- VK_EXT_mesh_shader extension trampoline/terminators
10440 
CmdDrawMeshTasksEXT(VkCommandBuffer commandBuffer,uint32_t groupCountX,uint32_t groupCountY,uint32_t groupCountZ)10441 VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksEXT(
10442     VkCommandBuffer                             commandBuffer,
10443     uint32_t                                    groupCountX,
10444     uint32_t                                    groupCountY,
10445     uint32_t                                    groupCountZ) {
10446     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
10447     if (NULL == disp) {
10448         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10449                    "vkCmdDrawMeshTasksEXT: Invalid commandBuffer "
10450                    "[VUID-vkCmdDrawMeshTasksEXT-commandBuffer-parameter]");
10451         abort(); /* Intentionally fail so user can correct issue. */
10452     }
10453     disp->CmdDrawMeshTasksEXT(commandBuffer, groupCountX, groupCountY, groupCountZ);
10454 }
10455 
CmdDrawMeshTasksIndirectEXT(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,uint32_t drawCount,uint32_t stride)10456 VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectEXT(
10457     VkCommandBuffer                             commandBuffer,
10458     VkBuffer                                    buffer,
10459     VkDeviceSize                                offset,
10460     uint32_t                                    drawCount,
10461     uint32_t                                    stride) {
10462     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
10463     if (NULL == disp) {
10464         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10465                    "vkCmdDrawMeshTasksIndirectEXT: Invalid commandBuffer "
10466                    "[VUID-vkCmdDrawMeshTasksIndirectEXT-commandBuffer-parameter]");
10467         abort(); /* Intentionally fail so user can correct issue. */
10468     }
10469     disp->CmdDrawMeshTasksIndirectEXT(commandBuffer, buffer, offset, drawCount, stride);
10470 }
10471 
CmdDrawMeshTasksIndirectCountEXT(VkCommandBuffer commandBuffer,VkBuffer buffer,VkDeviceSize offset,VkBuffer countBuffer,VkDeviceSize countBufferOffset,uint32_t maxDrawCount,uint32_t stride)10472 VKAPI_ATTR void VKAPI_CALL CmdDrawMeshTasksIndirectCountEXT(
10473     VkCommandBuffer                             commandBuffer,
10474     VkBuffer                                    buffer,
10475     VkDeviceSize                                offset,
10476     VkBuffer                                    countBuffer,
10477     VkDeviceSize                                countBufferOffset,
10478     uint32_t                                    maxDrawCount,
10479     uint32_t                                    stride) {
10480     const VkLayerDispatchTable *disp = loader_get_dispatch(commandBuffer);
10481     if (NULL == disp) {
10482         loader_log(NULL, VULKAN_LOADER_FATAL_ERROR_BIT | VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10483                    "vkCmdDrawMeshTasksIndirectCountEXT: Invalid commandBuffer "
10484                    "[VUID-vkCmdDrawMeshTasksIndirectCountEXT-commandBuffer-parameter]");
10485         abort(); /* Intentionally fail so user can correct issue. */
10486     }
10487     disp->CmdDrawMeshTasksIndirectCountEXT(commandBuffer, buffer, offset, countBuffer, countBufferOffset, maxDrawCount, stride);
10488 }
10489 
10490 // ---- VK_OHOS_native_buffer extension trampoline/terminators
10491 
10492 #ifdef VK_USE_PLATFORM_OHOS
GetSwapchainGrallocUsageOHOS(VkDevice device,VkFormat format,VkImageUsageFlags imageUsage,uint64_t * grallocUsage)10493 VKAPI_ATTR VkResult VKAPI_CALL GetSwapchainGrallocUsageOHOS(
10494     VkDevice                                    device,
10495     VkFormat                                    format,
10496     VkImageUsageFlags                           imageUsage,
10497     uint64_t*                                   grallocUsage) {
10498     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10499     if (NULL == disp) {
10500         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10501                    "vkGetSwapchainGrallocUsageOHOS: Invalid device "
10502                    "[VUID-vkGetSwapchainGrallocUsageOHOS-device-parameter]");
10503         abort(); /* Intentionally fail so user can correct issue. */
10504     }
10505     return disp->GetSwapchainGrallocUsageOHOS(device, format, imageUsage, grallocUsage);
10506 }
10507 
10508 #endif // VK_USE_PLATFORM_OHOS
10509 #ifdef VK_USE_PLATFORM_OHOS
AcquireImageOHOS(VkDevice device,VkImage image,int32_t nativeFenceFd,VkSemaphore semaphore,VkFence fence)10510 VKAPI_ATTR VkResult VKAPI_CALL AcquireImageOHOS(
10511     VkDevice                                    device,
10512     VkImage                                     image,
10513     int32_t                                     nativeFenceFd,
10514     VkSemaphore                                 semaphore,
10515     VkFence                                     fence) {
10516     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10517     if (NULL == disp) {
10518         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10519                    "vkAcquireImageOHOS: Invalid device "
10520                    "[VUID-vkAcquireImageOHOS-device-parameter]");
10521         abort(); /* Intentionally fail so user can correct issue. */
10522     }
10523     return disp->AcquireImageOHOS(device, image, nativeFenceFd, semaphore, fence);
10524 }
10525 
10526 #endif // VK_USE_PLATFORM_OHOS
10527 #ifdef VK_USE_PLATFORM_OHOS
QueueSignalReleaseImageOHOS(VkQueue queue,uint32_t waitSemaphoreCount,const VkSemaphore * pWaitSemaphores,VkImage image,int32_t * pNativeFenceFd)10528 VKAPI_ATTR VkResult VKAPI_CALL QueueSignalReleaseImageOHOS(
10529     VkQueue                                     queue,
10530     uint32_t                                    waitSemaphoreCount,
10531     const VkSemaphore*                          pWaitSemaphores,
10532     VkImage                                     image,
10533     int32_t*                                    pNativeFenceFd) {
10534     const VkLayerDispatchTable *disp = loader_get_dispatch(queue);
10535     if (NULL == disp) {
10536         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10537                    "vkQueueSignalReleaseImageOHOS: Invalid queue "
10538                    "[VUID-vkQueueSignalReleaseImageOHOS-queue-parameter]");
10539         abort(); /* Intentionally fail so user can correct issue. */
10540     }
10541     return disp->QueueSignalReleaseImageOHOS(queue, waitSemaphoreCount, pWaitSemaphores, image, pNativeFenceFd);
10542 }
10543 
10544 #endif // VK_USE_PLATFORM_OHOS
10545 
10546 // ---- VK_OHOS_external_memory extension trampoline/terminators
10547 
10548 #ifdef VK_USE_PLATFORM_OHOS
vkGetNativeBufferPropertiesOHOS(VkDevice device,const struct OH_NativeBuffer * buffer,VkNativeBufferPropertiesOHOS * pProperties)10549 VKAPI_ATTR VkResult VKAPI_CALL vkGetNativeBufferPropertiesOHOS(
10550     VkDevice                                    device,
10551     const struct OH_NativeBuffer*               buffer,
10552     VkNativeBufferPropertiesOHOS*               pProperties) {
10553     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10554     if (NULL == disp) {
10555         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10556                    "vkGetNativeBufferPropertiesOHOS: Invalid device "
10557                    "[VUID-vkGetNativeBufferPropertiesOHOS-device-parameter]");
10558         abort(); /* Intentionally fail so user can correct issue. */
10559     }
10560     return disp->GetNativeBufferPropertiesOHOS(device, buffer, pProperties);
10561 }
10562 
10563 #endif // VK_USE_PLATFORM_OHOS
10564 #ifdef VK_USE_PLATFORM_OHOS
vkGetMemoryNativeBufferOHOS(VkDevice device,const VkMemoryGetNativeBufferInfoOHOS * pInfo,struct OH_NativeBuffer ** pBuffer)10565 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryNativeBufferOHOS(
10566     VkDevice                                    device,
10567     const VkMemoryGetNativeBufferInfoOHOS*      pInfo,
10568     struct OH_NativeBuffer**                    pBuffer) {
10569     const VkLayerDispatchTable *disp = loader_get_dispatch(device);
10570     if (NULL == disp) {
10571         loader_log(NULL, VULKAN_LOADER_ERROR_BIT | VULKAN_LOADER_VALIDATION_BIT, 0,
10572                    "vkGetMemoryNativeBufferOHOS: Invalid device "
10573                    "[VUID-vkGetMemoryNativeBufferOHOS-device-parameter]");
10574         abort(); /* Intentionally fail so user can correct issue. */
10575     }
10576     return disp->GetMemoryNativeBufferOHOS(device, pInfo, pBuffer);
10577 }
10578 
10579 #endif // VK_USE_PLATFORM_OHOS
10580 
10581 // GPA helpers for extensions
extension_instance_gpa(struct loader_instance * ptr_instance,const char * name,void ** addr)10582 bool extension_instance_gpa(struct loader_instance *ptr_instance, const char *name, void **addr) {
10583     *addr = NULL;
10584 
10585 
10586     // ---- VK_KHR_video_queue extension commands
10587     if (!strcmp("vkGetPhysicalDeviceVideoCapabilitiesKHR", name)) {
10588         *addr = (void *)GetPhysicalDeviceVideoCapabilitiesKHR;
10589         return true;
10590     }
10591     if (!strcmp("vkGetPhysicalDeviceVideoFormatPropertiesKHR", name)) {
10592         *addr = (void *)GetPhysicalDeviceVideoFormatPropertiesKHR;
10593         return true;
10594     }
10595     if (!strcmp("vkCreateVideoSessionKHR", name)) {
10596         *addr = (void *)CreateVideoSessionKHR;
10597         return true;
10598     }
10599     if (!strcmp("vkDestroyVideoSessionKHR", name)) {
10600         *addr = (void *)DestroyVideoSessionKHR;
10601         return true;
10602     }
10603     if (!strcmp("vkGetVideoSessionMemoryRequirementsKHR", name)) {
10604         *addr = (void *)GetVideoSessionMemoryRequirementsKHR;
10605         return true;
10606     }
10607     if (!strcmp("vkBindVideoSessionMemoryKHR", name)) {
10608         *addr = (void *)BindVideoSessionMemoryKHR;
10609         return true;
10610     }
10611     if (!strcmp("vkCreateVideoSessionParametersKHR", name)) {
10612         *addr = (void *)CreateVideoSessionParametersKHR;
10613         return true;
10614     }
10615     if (!strcmp("vkUpdateVideoSessionParametersKHR", name)) {
10616         *addr = (void *)UpdateVideoSessionParametersKHR;
10617         return true;
10618     }
10619     if (!strcmp("vkDestroyVideoSessionParametersKHR", name)) {
10620         *addr = (void *)DestroyVideoSessionParametersKHR;
10621         return true;
10622     }
10623     if (!strcmp("vkCmdBeginVideoCodingKHR", name)) {
10624         *addr = (void *)CmdBeginVideoCodingKHR;
10625         return true;
10626     }
10627     if (!strcmp("vkCmdEndVideoCodingKHR", name)) {
10628         *addr = (void *)CmdEndVideoCodingKHR;
10629         return true;
10630     }
10631     if (!strcmp("vkCmdControlVideoCodingKHR", name)) {
10632         *addr = (void *)CmdControlVideoCodingKHR;
10633         return true;
10634     }
10635 
10636     // ---- VK_KHR_video_decode_queue extension commands
10637     if (!strcmp("vkCmdDecodeVideoKHR", name)) {
10638         *addr = (void *)CmdDecodeVideoKHR;
10639         return true;
10640     }
10641 
10642     // ---- VK_KHR_dynamic_rendering extension commands
10643     if (!strcmp("vkCmdBeginRenderingKHR", name)) {
10644         *addr = (void *)CmdBeginRenderingKHR;
10645         return true;
10646     }
10647     if (!strcmp("vkCmdEndRenderingKHR", name)) {
10648         *addr = (void *)CmdEndRenderingKHR;
10649         return true;
10650     }
10651 
10652     // ---- VK_KHR_get_physical_device_properties2 extension commands
10653     if (!strcmp("vkGetPhysicalDeviceFeatures2KHR", name)) {
10654         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
10655                      ? (void *)vkGetPhysicalDeviceFeatures2
10656                      : NULL;
10657         return true;
10658     }
10659     if (!strcmp("vkGetPhysicalDeviceProperties2KHR", name)) {
10660         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
10661                      ? (void *)vkGetPhysicalDeviceProperties2
10662                      : NULL;
10663         return true;
10664     }
10665     if (!strcmp("vkGetPhysicalDeviceFormatProperties2KHR", name)) {
10666         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
10667                      ? (void *)vkGetPhysicalDeviceFormatProperties2
10668                      : NULL;
10669         return true;
10670     }
10671     if (!strcmp("vkGetPhysicalDeviceImageFormatProperties2KHR", name)) {
10672         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
10673                      ? (void *)vkGetPhysicalDeviceImageFormatProperties2
10674                      : NULL;
10675         return true;
10676     }
10677     if (!strcmp("vkGetPhysicalDeviceQueueFamilyProperties2KHR", name)) {
10678         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
10679                      ? (void *)vkGetPhysicalDeviceQueueFamilyProperties2
10680                      : NULL;
10681         return true;
10682     }
10683     if (!strcmp("vkGetPhysicalDeviceMemoryProperties2KHR", name)) {
10684         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
10685                      ? (void *)vkGetPhysicalDeviceMemoryProperties2
10686                      : NULL;
10687         return true;
10688     }
10689     if (!strcmp("vkGetPhysicalDeviceSparseImageFormatProperties2KHR", name)) {
10690         *addr = (ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 == 1)
10691                      ? (void *)vkGetPhysicalDeviceSparseImageFormatProperties2
10692                      : NULL;
10693         return true;
10694     }
10695 
10696     // ---- VK_KHR_device_group extension commands
10697     if (!strcmp("vkGetDeviceGroupPeerMemoryFeaturesKHR", name)) {
10698         *addr = (void *)GetDeviceGroupPeerMemoryFeaturesKHR;
10699         return true;
10700     }
10701     if (!strcmp("vkCmdSetDeviceMaskKHR", name)) {
10702         *addr = (void *)CmdSetDeviceMaskKHR;
10703         return true;
10704     }
10705     if (!strcmp("vkCmdDispatchBaseKHR", name)) {
10706         *addr = (void *)CmdDispatchBaseKHR;
10707         return true;
10708     }
10709 
10710     // ---- VK_KHR_maintenance1 extension commands
10711     if (!strcmp("vkTrimCommandPoolKHR", name)) {
10712         *addr = (void *)TrimCommandPoolKHR;
10713         return true;
10714     }
10715 
10716     // ---- VK_KHR_device_group_creation extension commands
10717     if (!strcmp("vkEnumeratePhysicalDeviceGroupsKHR", name)) {
10718         *addr = (ptr_instance->enabled_known_extensions.khr_device_group_creation == 1)
10719                      ? (void *)vkEnumeratePhysicalDeviceGroups
10720                      : NULL;
10721         return true;
10722     }
10723 
10724     // ---- VK_KHR_external_memory_capabilities extension commands
10725     if (!strcmp("vkGetPhysicalDeviceExternalBufferPropertiesKHR", name)) {
10726         *addr = (ptr_instance->enabled_known_extensions.khr_external_memory_capabilities == 1)
10727                      ? (void *)vkGetPhysicalDeviceExternalBufferProperties
10728                      : NULL;
10729         return true;
10730     }
10731 
10732     // ---- VK_KHR_external_memory_win32 extension commands
10733 #if defined(VK_USE_PLATFORM_WIN32_KHR)
10734     if (!strcmp("vkGetMemoryWin32HandleKHR", name)) {
10735         *addr = (void *)GetMemoryWin32HandleKHR;
10736         return true;
10737     }
10738 #endif // VK_USE_PLATFORM_WIN32_KHR
10739 #if defined(VK_USE_PLATFORM_WIN32_KHR)
10740     if (!strcmp("vkGetMemoryWin32HandlePropertiesKHR", name)) {
10741         *addr = (void *)GetMemoryWin32HandlePropertiesKHR;
10742         return true;
10743     }
10744 #endif // VK_USE_PLATFORM_WIN32_KHR
10745 
10746     // ---- VK_KHR_external_memory_fd extension commands
10747     if (!strcmp("vkGetMemoryFdKHR", name)) {
10748         *addr = (void *)GetMemoryFdKHR;
10749         return true;
10750     }
10751     if (!strcmp("vkGetMemoryFdPropertiesKHR", name)) {
10752         *addr = (void *)GetMemoryFdPropertiesKHR;
10753         return true;
10754     }
10755 
10756     // ---- VK_KHR_external_semaphore_capabilities extension commands
10757     if (!strcmp("vkGetPhysicalDeviceExternalSemaphorePropertiesKHR", name)) {
10758         *addr = (ptr_instance->enabled_known_extensions.khr_external_semaphore_capabilities == 1)
10759                      ? (void *)vkGetPhysicalDeviceExternalSemaphoreProperties
10760                      : NULL;
10761         return true;
10762     }
10763 
10764     // ---- VK_KHR_external_semaphore_win32 extension commands
10765 #if defined(VK_USE_PLATFORM_WIN32_KHR)
10766     if (!strcmp("vkImportSemaphoreWin32HandleKHR", name)) {
10767         *addr = (void *)ImportSemaphoreWin32HandleKHR;
10768         return true;
10769     }
10770 #endif // VK_USE_PLATFORM_WIN32_KHR
10771 #if defined(VK_USE_PLATFORM_WIN32_KHR)
10772     if (!strcmp("vkGetSemaphoreWin32HandleKHR", name)) {
10773         *addr = (void *)GetSemaphoreWin32HandleKHR;
10774         return true;
10775     }
10776 #endif // VK_USE_PLATFORM_WIN32_KHR
10777 
10778     // ---- VK_KHR_external_semaphore_fd extension commands
10779     if (!strcmp("vkImportSemaphoreFdKHR", name)) {
10780         *addr = (void *)ImportSemaphoreFdKHR;
10781         return true;
10782     }
10783     if (!strcmp("vkGetSemaphoreFdKHR", name)) {
10784         *addr = (void *)GetSemaphoreFdKHR;
10785         return true;
10786     }
10787 
10788     // ---- VK_KHR_push_descriptor extension commands
10789     if (!strcmp("vkCmdPushDescriptorSetKHR", name)) {
10790         *addr = (void *)CmdPushDescriptorSetKHR;
10791         return true;
10792     }
10793     if (!strcmp("vkCmdPushDescriptorSetWithTemplateKHR", name)) {
10794         *addr = (void *)CmdPushDescriptorSetWithTemplateKHR;
10795         return true;
10796     }
10797 
10798     // ---- VK_KHR_descriptor_update_template extension commands
10799     if (!strcmp("vkCreateDescriptorUpdateTemplateKHR", name)) {
10800         *addr = (void *)CreateDescriptorUpdateTemplateKHR;
10801         return true;
10802     }
10803     if (!strcmp("vkDestroyDescriptorUpdateTemplateKHR", name)) {
10804         *addr = (void *)DestroyDescriptorUpdateTemplateKHR;
10805         return true;
10806     }
10807     if (!strcmp("vkUpdateDescriptorSetWithTemplateKHR", name)) {
10808         *addr = (void *)UpdateDescriptorSetWithTemplateKHR;
10809         return true;
10810     }
10811 
10812     // ---- VK_KHR_create_renderpass2 extension commands
10813     if (!strcmp("vkCreateRenderPass2KHR", name)) {
10814         *addr = (void *)CreateRenderPass2KHR;
10815         return true;
10816     }
10817     if (!strcmp("vkCmdBeginRenderPass2KHR", name)) {
10818         *addr = (void *)CmdBeginRenderPass2KHR;
10819         return true;
10820     }
10821     if (!strcmp("vkCmdNextSubpass2KHR", name)) {
10822         *addr = (void *)CmdNextSubpass2KHR;
10823         return true;
10824     }
10825     if (!strcmp("vkCmdEndRenderPass2KHR", name)) {
10826         *addr = (void *)CmdEndRenderPass2KHR;
10827         return true;
10828     }
10829 
10830     // ---- VK_KHR_shared_presentable_image extension commands
10831     if (!strcmp("vkGetSwapchainStatusKHR", name)) {
10832         *addr = (void *)GetSwapchainStatusKHR;
10833         return true;
10834     }
10835 
10836     // ---- VK_KHR_external_fence_capabilities extension commands
10837     if (!strcmp("vkGetPhysicalDeviceExternalFencePropertiesKHR", name)) {
10838         *addr = (ptr_instance->enabled_known_extensions.khr_external_fence_capabilities == 1)
10839                      ? (void *)vkGetPhysicalDeviceExternalFenceProperties
10840                      : NULL;
10841         return true;
10842     }
10843 
10844     // ---- VK_KHR_external_fence_win32 extension commands
10845 #if defined(VK_USE_PLATFORM_WIN32_KHR)
10846     if (!strcmp("vkImportFenceWin32HandleKHR", name)) {
10847         *addr = (void *)ImportFenceWin32HandleKHR;
10848         return true;
10849     }
10850 #endif // VK_USE_PLATFORM_WIN32_KHR
10851 #if defined(VK_USE_PLATFORM_WIN32_KHR)
10852     if (!strcmp("vkGetFenceWin32HandleKHR", name)) {
10853         *addr = (void *)GetFenceWin32HandleKHR;
10854         return true;
10855     }
10856 #endif // VK_USE_PLATFORM_WIN32_KHR
10857 
10858     // ---- VK_KHR_external_fence_fd extension commands
10859     if (!strcmp("vkImportFenceFdKHR", name)) {
10860         *addr = (void *)ImportFenceFdKHR;
10861         return true;
10862     }
10863     if (!strcmp("vkGetFenceFdKHR", name)) {
10864         *addr = (void *)GetFenceFdKHR;
10865         return true;
10866     }
10867 
10868     // ---- VK_KHR_performance_query extension commands
10869     if (!strcmp("vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR", name)) {
10870         *addr = (void *)EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR;
10871         return true;
10872     }
10873     if (!strcmp("vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR", name)) {
10874         *addr = (void *)GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR;
10875         return true;
10876     }
10877     if (!strcmp("vkAcquireProfilingLockKHR", name)) {
10878         *addr = (void *)AcquireProfilingLockKHR;
10879         return true;
10880     }
10881     if (!strcmp("vkReleaseProfilingLockKHR", name)) {
10882         *addr = (void *)ReleaseProfilingLockKHR;
10883         return true;
10884     }
10885 
10886     // ---- VK_KHR_get_memory_requirements2 extension commands
10887     if (!strcmp("vkGetImageMemoryRequirements2KHR", name)) {
10888         *addr = (void *)GetImageMemoryRequirements2KHR;
10889         return true;
10890     }
10891     if (!strcmp("vkGetBufferMemoryRequirements2KHR", name)) {
10892         *addr = (void *)GetBufferMemoryRequirements2KHR;
10893         return true;
10894     }
10895     if (!strcmp("vkGetImageSparseMemoryRequirements2KHR", name)) {
10896         *addr = (void *)GetImageSparseMemoryRequirements2KHR;
10897         return true;
10898     }
10899 
10900     // ---- VK_KHR_sampler_ycbcr_conversion extension commands
10901     if (!strcmp("vkCreateSamplerYcbcrConversionKHR", name)) {
10902         *addr = (void *)CreateSamplerYcbcrConversionKHR;
10903         return true;
10904     }
10905     if (!strcmp("vkDestroySamplerYcbcrConversionKHR", name)) {
10906         *addr = (void *)DestroySamplerYcbcrConversionKHR;
10907         return true;
10908     }
10909 
10910     // ---- VK_KHR_bind_memory2 extension commands
10911     if (!strcmp("vkBindBufferMemory2KHR", name)) {
10912         *addr = (void *)BindBufferMemory2KHR;
10913         return true;
10914     }
10915     if (!strcmp("vkBindImageMemory2KHR", name)) {
10916         *addr = (void *)BindImageMemory2KHR;
10917         return true;
10918     }
10919 
10920     // ---- VK_KHR_maintenance3 extension commands
10921     if (!strcmp("vkGetDescriptorSetLayoutSupportKHR", name)) {
10922         *addr = (void *)GetDescriptorSetLayoutSupportKHR;
10923         return true;
10924     }
10925 
10926     // ---- VK_KHR_draw_indirect_count extension commands
10927     if (!strcmp("vkCmdDrawIndirectCountKHR", name)) {
10928         *addr = (void *)CmdDrawIndirectCountKHR;
10929         return true;
10930     }
10931     if (!strcmp("vkCmdDrawIndexedIndirectCountKHR", name)) {
10932         *addr = (void *)CmdDrawIndexedIndirectCountKHR;
10933         return true;
10934     }
10935 
10936     // ---- VK_KHR_timeline_semaphore extension commands
10937     if (!strcmp("vkGetSemaphoreCounterValueKHR", name)) {
10938         *addr = (void *)GetSemaphoreCounterValueKHR;
10939         return true;
10940     }
10941     if (!strcmp("vkWaitSemaphoresKHR", name)) {
10942         *addr = (void *)WaitSemaphoresKHR;
10943         return true;
10944     }
10945     if (!strcmp("vkSignalSemaphoreKHR", name)) {
10946         *addr = (void *)SignalSemaphoreKHR;
10947         return true;
10948     }
10949 
10950     // ---- VK_KHR_fragment_shading_rate extension commands
10951     if (!strcmp("vkGetPhysicalDeviceFragmentShadingRatesKHR", name)) {
10952         *addr = (void *)GetPhysicalDeviceFragmentShadingRatesKHR;
10953         return true;
10954     }
10955     if (!strcmp("vkCmdSetFragmentShadingRateKHR", name)) {
10956         *addr = (void *)CmdSetFragmentShadingRateKHR;
10957         return true;
10958     }
10959 
10960     // ---- VK_KHR_dynamic_rendering_local_read extension commands
10961     if (!strcmp("vkCmdSetRenderingAttachmentLocationsKHR", name)) {
10962         *addr = (void *)CmdSetRenderingAttachmentLocationsKHR;
10963         return true;
10964     }
10965     if (!strcmp("vkCmdSetRenderingInputAttachmentIndicesKHR", name)) {
10966         *addr = (void *)CmdSetRenderingInputAttachmentIndicesKHR;
10967         return true;
10968     }
10969 
10970     // ---- VK_KHR_present_wait extension commands
10971     if (!strcmp("vkWaitForPresentKHR", name)) {
10972         *addr = (void *)WaitForPresentKHR;
10973         return true;
10974     }
10975 
10976     // ---- VK_KHR_buffer_device_address extension commands
10977     if (!strcmp("vkGetBufferDeviceAddressKHR", name)) {
10978         *addr = (void *)GetBufferDeviceAddressKHR;
10979         return true;
10980     }
10981     if (!strcmp("vkGetBufferOpaqueCaptureAddressKHR", name)) {
10982         *addr = (void *)GetBufferOpaqueCaptureAddressKHR;
10983         return true;
10984     }
10985     if (!strcmp("vkGetDeviceMemoryOpaqueCaptureAddressKHR", name)) {
10986         *addr = (void *)GetDeviceMemoryOpaqueCaptureAddressKHR;
10987         return true;
10988     }
10989 
10990     // ---- VK_KHR_deferred_host_operations extension commands
10991     if (!strcmp("vkCreateDeferredOperationKHR", name)) {
10992         *addr = (void *)CreateDeferredOperationKHR;
10993         return true;
10994     }
10995     if (!strcmp("vkDestroyDeferredOperationKHR", name)) {
10996         *addr = (void *)DestroyDeferredOperationKHR;
10997         return true;
10998     }
10999     if (!strcmp("vkGetDeferredOperationMaxConcurrencyKHR", name)) {
11000         *addr = (void *)GetDeferredOperationMaxConcurrencyKHR;
11001         return true;
11002     }
11003     if (!strcmp("vkGetDeferredOperationResultKHR", name)) {
11004         *addr = (void *)GetDeferredOperationResultKHR;
11005         return true;
11006     }
11007     if (!strcmp("vkDeferredOperationJoinKHR", name)) {
11008         *addr = (void *)DeferredOperationJoinKHR;
11009         return true;
11010     }
11011 
11012     // ---- VK_KHR_pipeline_executable_properties extension commands
11013     if (!strcmp("vkGetPipelineExecutablePropertiesKHR", name)) {
11014         *addr = (void *)GetPipelineExecutablePropertiesKHR;
11015         return true;
11016     }
11017     if (!strcmp("vkGetPipelineExecutableStatisticsKHR", name)) {
11018         *addr = (void *)GetPipelineExecutableStatisticsKHR;
11019         return true;
11020     }
11021     if (!strcmp("vkGetPipelineExecutableInternalRepresentationsKHR", name)) {
11022         *addr = (void *)GetPipelineExecutableInternalRepresentationsKHR;
11023         return true;
11024     }
11025 
11026     // ---- VK_KHR_map_memory2 extension commands
11027     if (!strcmp("vkMapMemory2KHR", name)) {
11028         *addr = (void *)MapMemory2KHR;
11029         return true;
11030     }
11031     if (!strcmp("vkUnmapMemory2KHR", name)) {
11032         *addr = (void *)UnmapMemory2KHR;
11033         return true;
11034     }
11035 
11036     // ---- VK_KHR_video_encode_queue extension commands
11037     if (!strcmp("vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR", name)) {
11038         *addr = (void *)GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR;
11039         return true;
11040     }
11041     if (!strcmp("vkGetEncodedVideoSessionParametersKHR", name)) {
11042         *addr = (void *)GetEncodedVideoSessionParametersKHR;
11043         return true;
11044     }
11045     if (!strcmp("vkCmdEncodeVideoKHR", name)) {
11046         *addr = (void *)CmdEncodeVideoKHR;
11047         return true;
11048     }
11049 
11050     // ---- VK_KHR_synchronization2 extension commands
11051     if (!strcmp("vkCmdSetEvent2KHR", name)) {
11052         *addr = (void *)CmdSetEvent2KHR;
11053         return true;
11054     }
11055     if (!strcmp("vkCmdResetEvent2KHR", name)) {
11056         *addr = (void *)CmdResetEvent2KHR;
11057         return true;
11058     }
11059     if (!strcmp("vkCmdWaitEvents2KHR", name)) {
11060         *addr = (void *)CmdWaitEvents2KHR;
11061         return true;
11062     }
11063     if (!strcmp("vkCmdPipelineBarrier2KHR", name)) {
11064         *addr = (void *)CmdPipelineBarrier2KHR;
11065         return true;
11066     }
11067     if (!strcmp("vkCmdWriteTimestamp2KHR", name)) {
11068         *addr = (void *)CmdWriteTimestamp2KHR;
11069         return true;
11070     }
11071     if (!strcmp("vkQueueSubmit2KHR", name)) {
11072         *addr = (void *)QueueSubmit2KHR;
11073         return true;
11074     }
11075 
11076     // ---- VK_KHR_copy_commands2 extension commands
11077     if (!strcmp("vkCmdCopyBuffer2KHR", name)) {
11078         *addr = (void *)CmdCopyBuffer2KHR;
11079         return true;
11080     }
11081     if (!strcmp("vkCmdCopyImage2KHR", name)) {
11082         *addr = (void *)CmdCopyImage2KHR;
11083         return true;
11084     }
11085     if (!strcmp("vkCmdCopyBufferToImage2KHR", name)) {
11086         *addr = (void *)CmdCopyBufferToImage2KHR;
11087         return true;
11088     }
11089     if (!strcmp("vkCmdCopyImageToBuffer2KHR", name)) {
11090         *addr = (void *)CmdCopyImageToBuffer2KHR;
11091         return true;
11092     }
11093     if (!strcmp("vkCmdBlitImage2KHR", name)) {
11094         *addr = (void *)CmdBlitImage2KHR;
11095         return true;
11096     }
11097     if (!strcmp("vkCmdResolveImage2KHR", name)) {
11098         *addr = (void *)CmdResolveImage2KHR;
11099         return true;
11100     }
11101 
11102     // ---- VK_KHR_ray_tracing_maintenance1 extension commands
11103     if (!strcmp("vkCmdTraceRaysIndirect2KHR", name)) {
11104         *addr = (void *)CmdTraceRaysIndirect2KHR;
11105         return true;
11106     }
11107 
11108     // ---- VK_KHR_maintenance4 extension commands
11109     if (!strcmp("vkGetDeviceBufferMemoryRequirementsKHR", name)) {
11110         *addr = (void *)GetDeviceBufferMemoryRequirementsKHR;
11111         return true;
11112     }
11113     if (!strcmp("vkGetDeviceImageMemoryRequirementsKHR", name)) {
11114         *addr = (void *)GetDeviceImageMemoryRequirementsKHR;
11115         return true;
11116     }
11117     if (!strcmp("vkGetDeviceImageSparseMemoryRequirementsKHR", name)) {
11118         *addr = (void *)GetDeviceImageSparseMemoryRequirementsKHR;
11119         return true;
11120     }
11121 
11122     // ---- VK_KHR_maintenance5 extension commands
11123     if (!strcmp("vkCmdBindIndexBuffer2KHR", name)) {
11124         *addr = (void *)CmdBindIndexBuffer2KHR;
11125         return true;
11126     }
11127     if (!strcmp("vkGetRenderingAreaGranularityKHR", name)) {
11128         *addr = (void *)GetRenderingAreaGranularityKHR;
11129         return true;
11130     }
11131     if (!strcmp("vkGetDeviceImageSubresourceLayoutKHR", name)) {
11132         *addr = (void *)GetDeviceImageSubresourceLayoutKHR;
11133         return true;
11134     }
11135     if (!strcmp("vkGetImageSubresourceLayout2KHR", name)) {
11136         *addr = (void *)GetImageSubresourceLayout2KHR;
11137         return true;
11138     }
11139 
11140     // ---- VK_KHR_pipeline_binary extension commands
11141     if (!strcmp("vkCreatePipelineBinariesKHR", name)) {
11142         *addr = (void *)CreatePipelineBinariesKHR;
11143         return true;
11144     }
11145     if (!strcmp("vkDestroyPipelineBinaryKHR", name)) {
11146         *addr = (void *)DestroyPipelineBinaryKHR;
11147         return true;
11148     }
11149     if (!strcmp("vkGetPipelineKeyKHR", name)) {
11150         *addr = (void *)GetPipelineKeyKHR;
11151         return true;
11152     }
11153     if (!strcmp("vkGetPipelineBinaryDataKHR", name)) {
11154         *addr = (void *)GetPipelineBinaryDataKHR;
11155         return true;
11156     }
11157     if (!strcmp("vkReleaseCapturedPipelineDataKHR", name)) {
11158         *addr = (void *)ReleaseCapturedPipelineDataKHR;
11159         return true;
11160     }
11161 
11162     // ---- VK_KHR_cooperative_matrix extension commands
11163     if (!strcmp("vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR", name)) {
11164         *addr = (void *)GetPhysicalDeviceCooperativeMatrixPropertiesKHR;
11165         return true;
11166     }
11167 
11168     // ---- VK_KHR_line_rasterization extension commands
11169     if (!strcmp("vkCmdSetLineStippleKHR", name)) {
11170         *addr = (void *)CmdSetLineStippleKHR;
11171         return true;
11172     }
11173 
11174     // ---- VK_KHR_calibrated_timestamps extension commands
11175     if (!strcmp("vkGetPhysicalDeviceCalibrateableTimeDomainsKHR", name)) {
11176         *addr = (void *)GetPhysicalDeviceCalibrateableTimeDomainsKHR;
11177         return true;
11178     }
11179     if (!strcmp("vkGetCalibratedTimestampsKHR", name)) {
11180         *addr = (void *)GetCalibratedTimestampsKHR;
11181         return true;
11182     }
11183 
11184     // ---- VK_KHR_maintenance6 extension commands
11185     if (!strcmp("vkCmdBindDescriptorSets2KHR", name)) {
11186         *addr = (void *)CmdBindDescriptorSets2KHR;
11187         return true;
11188     }
11189     if (!strcmp("vkCmdPushConstants2KHR", name)) {
11190         *addr = (void *)CmdPushConstants2KHR;
11191         return true;
11192     }
11193     if (!strcmp("vkCmdPushDescriptorSet2KHR", name)) {
11194         *addr = (void *)CmdPushDescriptorSet2KHR;
11195         return true;
11196     }
11197     if (!strcmp("vkCmdPushDescriptorSetWithTemplate2KHR", name)) {
11198         *addr = (void *)CmdPushDescriptorSetWithTemplate2KHR;
11199         return true;
11200     }
11201     if (!strcmp("vkCmdSetDescriptorBufferOffsets2EXT", name)) {
11202         *addr = (void *)CmdSetDescriptorBufferOffsets2EXT;
11203         return true;
11204     }
11205     if (!strcmp("vkCmdBindDescriptorBufferEmbeddedSamplers2EXT", name)) {
11206         *addr = (void *)CmdBindDescriptorBufferEmbeddedSamplers2EXT;
11207         return true;
11208     }
11209 
11210     // ---- VK_EXT_debug_marker extension commands
11211     if (!strcmp("vkDebugMarkerSetObjectTagEXT", name)) {
11212         *addr = (void *)DebugMarkerSetObjectTagEXT;
11213         return true;
11214     }
11215     if (!strcmp("vkDebugMarkerSetObjectNameEXT", name)) {
11216         *addr = (void *)DebugMarkerSetObjectNameEXT;
11217         return true;
11218     }
11219     if (!strcmp("vkCmdDebugMarkerBeginEXT", name)) {
11220         *addr = (void *)CmdDebugMarkerBeginEXT;
11221         return true;
11222     }
11223     if (!strcmp("vkCmdDebugMarkerEndEXT", name)) {
11224         *addr = (void *)CmdDebugMarkerEndEXT;
11225         return true;
11226     }
11227     if (!strcmp("vkCmdDebugMarkerInsertEXT", name)) {
11228         *addr = (void *)CmdDebugMarkerInsertEXT;
11229         return true;
11230     }
11231 
11232     // ---- VK_EXT_transform_feedback extension commands
11233     if (!strcmp("vkCmdBindTransformFeedbackBuffersEXT", name)) {
11234         *addr = (void *)CmdBindTransformFeedbackBuffersEXT;
11235         return true;
11236     }
11237     if (!strcmp("vkCmdBeginTransformFeedbackEXT", name)) {
11238         *addr = (void *)CmdBeginTransformFeedbackEXT;
11239         return true;
11240     }
11241     if (!strcmp("vkCmdEndTransformFeedbackEXT", name)) {
11242         *addr = (void *)CmdEndTransformFeedbackEXT;
11243         return true;
11244     }
11245     if (!strcmp("vkCmdBeginQueryIndexedEXT", name)) {
11246         *addr = (void *)CmdBeginQueryIndexedEXT;
11247         return true;
11248     }
11249     if (!strcmp("vkCmdEndQueryIndexedEXT", name)) {
11250         *addr = (void *)CmdEndQueryIndexedEXT;
11251         return true;
11252     }
11253     if (!strcmp("vkCmdDrawIndirectByteCountEXT", name)) {
11254         *addr = (void *)CmdDrawIndirectByteCountEXT;
11255         return true;
11256     }
11257 
11258     // ---- VK_NVX_binary_import extension commands
11259     if (!strcmp("vkCreateCuModuleNVX", name)) {
11260         *addr = (void *)CreateCuModuleNVX;
11261         return true;
11262     }
11263     if (!strcmp("vkCreateCuFunctionNVX", name)) {
11264         *addr = (void *)CreateCuFunctionNVX;
11265         return true;
11266     }
11267     if (!strcmp("vkDestroyCuModuleNVX", name)) {
11268         *addr = (void *)DestroyCuModuleNVX;
11269         return true;
11270     }
11271     if (!strcmp("vkDestroyCuFunctionNVX", name)) {
11272         *addr = (void *)DestroyCuFunctionNVX;
11273         return true;
11274     }
11275     if (!strcmp("vkCmdCuLaunchKernelNVX", name)) {
11276         *addr = (void *)CmdCuLaunchKernelNVX;
11277         return true;
11278     }
11279 
11280     // ---- VK_NVX_image_view_handle extension commands
11281     if (!strcmp("vkGetImageViewHandleNVX", name)) {
11282         *addr = (void *)GetImageViewHandleNVX;
11283         return true;
11284     }
11285     if (!strcmp("vkGetImageViewHandle64NVX", name)) {
11286         *addr = (void *)GetImageViewHandle64NVX;
11287         return true;
11288     }
11289     if (!strcmp("vkGetImageViewAddressNVX", name)) {
11290         *addr = (void *)GetImageViewAddressNVX;
11291         return true;
11292     }
11293 
11294     // ---- VK_AMD_draw_indirect_count extension commands
11295     if (!strcmp("vkCmdDrawIndirectCountAMD", name)) {
11296         *addr = (void *)CmdDrawIndirectCountAMD;
11297         return true;
11298     }
11299     if (!strcmp("vkCmdDrawIndexedIndirectCountAMD", name)) {
11300         *addr = (void *)CmdDrawIndexedIndirectCountAMD;
11301         return true;
11302     }
11303 
11304     // ---- VK_AMD_shader_info extension commands
11305     if (!strcmp("vkGetShaderInfoAMD", name)) {
11306         *addr = (void *)GetShaderInfoAMD;
11307         return true;
11308     }
11309 
11310     // ---- VK_NV_external_memory_capabilities extension commands
11311     if (!strcmp("vkGetPhysicalDeviceExternalImageFormatPropertiesNV", name)) {
11312         *addr = (ptr_instance->enabled_known_extensions.nv_external_memory_capabilities == 1)
11313                      ? (void *)GetPhysicalDeviceExternalImageFormatPropertiesNV
11314                      : NULL;
11315         return true;
11316     }
11317 
11318     // ---- VK_NV_external_memory_win32 extension commands
11319 #if defined(VK_USE_PLATFORM_WIN32_KHR)
11320     if (!strcmp("vkGetMemoryWin32HandleNV", name)) {
11321         *addr = (void *)GetMemoryWin32HandleNV;
11322         return true;
11323     }
11324 #endif // VK_USE_PLATFORM_WIN32_KHR
11325 
11326     // ---- VK_EXT_conditional_rendering extension commands
11327     if (!strcmp("vkCmdBeginConditionalRenderingEXT", name)) {
11328         *addr = (void *)CmdBeginConditionalRenderingEXT;
11329         return true;
11330     }
11331     if (!strcmp("vkCmdEndConditionalRenderingEXT", name)) {
11332         *addr = (void *)CmdEndConditionalRenderingEXT;
11333         return true;
11334     }
11335 
11336     // ---- VK_NV_clip_space_w_scaling extension commands
11337     if (!strcmp("vkCmdSetViewportWScalingNV", name)) {
11338         *addr = (void *)CmdSetViewportWScalingNV;
11339         return true;
11340     }
11341 
11342     // ---- VK_EXT_direct_mode_display extension commands
11343     if (!strcmp("vkReleaseDisplayEXT", name)) {
11344         *addr = (ptr_instance->enabled_known_extensions.ext_direct_mode_display == 1)
11345                      ? (void *)ReleaseDisplayEXT
11346                      : NULL;
11347         return true;
11348     }
11349 
11350     // ---- VK_EXT_acquire_xlib_display extension commands
11351 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
11352     if (!strcmp("vkAcquireXlibDisplayEXT", name)) {
11353         *addr = (ptr_instance->enabled_known_extensions.ext_acquire_xlib_display == 1)
11354                      ? (void *)AcquireXlibDisplayEXT
11355                      : NULL;
11356         return true;
11357     }
11358 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
11359 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
11360     if (!strcmp("vkGetRandROutputDisplayEXT", name)) {
11361         *addr = (ptr_instance->enabled_known_extensions.ext_acquire_xlib_display == 1)
11362                      ? (void *)GetRandROutputDisplayEXT
11363                      : NULL;
11364         return true;
11365     }
11366 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
11367 
11368     // ---- VK_EXT_display_surface_counter extension commands
11369     if (!strcmp("vkGetPhysicalDeviceSurfaceCapabilities2EXT", name)) {
11370         *addr = (ptr_instance->enabled_known_extensions.ext_display_surface_counter == 1)
11371                      ? (void *)GetPhysicalDeviceSurfaceCapabilities2EXT
11372                      : NULL;
11373         return true;
11374     }
11375 
11376     // ---- VK_EXT_display_control extension commands
11377     if (!strcmp("vkDisplayPowerControlEXT", name)) {
11378         *addr = (void *)DisplayPowerControlEXT;
11379         return true;
11380     }
11381     if (!strcmp("vkRegisterDeviceEventEXT", name)) {
11382         *addr = (void *)RegisterDeviceEventEXT;
11383         return true;
11384     }
11385     if (!strcmp("vkRegisterDisplayEventEXT", name)) {
11386         *addr = (void *)RegisterDisplayEventEXT;
11387         return true;
11388     }
11389     if (!strcmp("vkGetSwapchainCounterEXT", name)) {
11390         *addr = (void *)GetSwapchainCounterEXT;
11391         return true;
11392     }
11393 
11394     // ---- VK_GOOGLE_display_timing extension commands
11395     if (!strcmp("vkGetRefreshCycleDurationGOOGLE", name)) {
11396         *addr = (void *)GetRefreshCycleDurationGOOGLE;
11397         return true;
11398     }
11399     if (!strcmp("vkGetPastPresentationTimingGOOGLE", name)) {
11400         *addr = (void *)GetPastPresentationTimingGOOGLE;
11401         return true;
11402     }
11403 
11404     // ---- VK_EXT_discard_rectangles extension commands
11405     if (!strcmp("vkCmdSetDiscardRectangleEXT", name)) {
11406         *addr = (void *)CmdSetDiscardRectangleEXT;
11407         return true;
11408     }
11409     if (!strcmp("vkCmdSetDiscardRectangleEnableEXT", name)) {
11410         *addr = (void *)CmdSetDiscardRectangleEnableEXT;
11411         return true;
11412     }
11413     if (!strcmp("vkCmdSetDiscardRectangleModeEXT", name)) {
11414         *addr = (void *)CmdSetDiscardRectangleModeEXT;
11415         return true;
11416     }
11417 
11418     // ---- VK_EXT_hdr_metadata extension commands
11419     if (!strcmp("vkSetHdrMetadataEXT", name)) {
11420         *addr = (void *)SetHdrMetadataEXT;
11421         return true;
11422     }
11423 
11424     // ---- VK_EXT_debug_utils extension commands
11425     if (!strcmp("vkSetDebugUtilsObjectNameEXT", name)) {
11426         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
11427                      ? (void *)SetDebugUtilsObjectNameEXT
11428                      : NULL;
11429         return true;
11430     }
11431     if (!strcmp("vkSetDebugUtilsObjectTagEXT", name)) {
11432         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
11433                      ? (void *)SetDebugUtilsObjectTagEXT
11434                      : NULL;
11435         return true;
11436     }
11437     if (!strcmp("vkQueueBeginDebugUtilsLabelEXT", name)) {
11438         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
11439                      ? (void *)QueueBeginDebugUtilsLabelEXT
11440                      : NULL;
11441         return true;
11442     }
11443     if (!strcmp("vkQueueEndDebugUtilsLabelEXT", name)) {
11444         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
11445                      ? (void *)QueueEndDebugUtilsLabelEXT
11446                      : NULL;
11447         return true;
11448     }
11449     if (!strcmp("vkQueueInsertDebugUtilsLabelEXT", name)) {
11450         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
11451                      ? (void *)QueueInsertDebugUtilsLabelEXT
11452                      : NULL;
11453         return true;
11454     }
11455     if (!strcmp("vkCmdBeginDebugUtilsLabelEXT", name)) {
11456         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
11457                      ? (void *)CmdBeginDebugUtilsLabelEXT
11458                      : NULL;
11459         return true;
11460     }
11461     if (!strcmp("vkCmdEndDebugUtilsLabelEXT", name)) {
11462         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
11463                      ? (void *)CmdEndDebugUtilsLabelEXT
11464                      : NULL;
11465         return true;
11466     }
11467     if (!strcmp("vkCmdInsertDebugUtilsLabelEXT", name)) {
11468         *addr = (ptr_instance->enabled_known_extensions.ext_debug_utils == 1)
11469                      ? (void *)CmdInsertDebugUtilsLabelEXT
11470                      : NULL;
11471         return true;
11472     }
11473 
11474     // ---- VK_ANDROID_external_memory_android_hardware_buffer extension commands
11475 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
11476     if (!strcmp("vkGetAndroidHardwareBufferPropertiesANDROID", name)) {
11477         *addr = (void *)GetAndroidHardwareBufferPropertiesANDROID;
11478         return true;
11479     }
11480 #endif // VK_USE_PLATFORM_ANDROID_KHR
11481 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
11482     if (!strcmp("vkGetMemoryAndroidHardwareBufferANDROID", name)) {
11483         *addr = (void *)GetMemoryAndroidHardwareBufferANDROID;
11484         return true;
11485     }
11486 #endif // VK_USE_PLATFORM_ANDROID_KHR
11487 
11488     // ---- VK_AMDX_shader_enqueue extension commands
11489 #if defined(VK_ENABLE_BETA_EXTENSIONS)
11490     if (!strcmp("vkCreateExecutionGraphPipelinesAMDX", name)) {
11491         *addr = (void *)CreateExecutionGraphPipelinesAMDX;
11492         return true;
11493     }
11494 #endif // VK_ENABLE_BETA_EXTENSIONS
11495 #if defined(VK_ENABLE_BETA_EXTENSIONS)
11496     if (!strcmp("vkGetExecutionGraphPipelineScratchSizeAMDX", name)) {
11497         *addr = (void *)GetExecutionGraphPipelineScratchSizeAMDX;
11498         return true;
11499     }
11500 #endif // VK_ENABLE_BETA_EXTENSIONS
11501 #if defined(VK_ENABLE_BETA_EXTENSIONS)
11502     if (!strcmp("vkGetExecutionGraphPipelineNodeIndexAMDX", name)) {
11503         *addr = (void *)GetExecutionGraphPipelineNodeIndexAMDX;
11504         return true;
11505     }
11506 #endif // VK_ENABLE_BETA_EXTENSIONS
11507 #if defined(VK_ENABLE_BETA_EXTENSIONS)
11508     if (!strcmp("vkCmdInitializeGraphScratchMemoryAMDX", name)) {
11509         *addr = (void *)CmdInitializeGraphScratchMemoryAMDX;
11510         return true;
11511     }
11512 #endif // VK_ENABLE_BETA_EXTENSIONS
11513 #if defined(VK_ENABLE_BETA_EXTENSIONS)
11514     if (!strcmp("vkCmdDispatchGraphAMDX", name)) {
11515         *addr = (void *)CmdDispatchGraphAMDX;
11516         return true;
11517     }
11518 #endif // VK_ENABLE_BETA_EXTENSIONS
11519 #if defined(VK_ENABLE_BETA_EXTENSIONS)
11520     if (!strcmp("vkCmdDispatchGraphIndirectAMDX", name)) {
11521         *addr = (void *)CmdDispatchGraphIndirectAMDX;
11522         return true;
11523     }
11524 #endif // VK_ENABLE_BETA_EXTENSIONS
11525 #if defined(VK_ENABLE_BETA_EXTENSIONS)
11526     if (!strcmp("vkCmdDispatchGraphIndirectCountAMDX", name)) {
11527         *addr = (void *)CmdDispatchGraphIndirectCountAMDX;
11528         return true;
11529     }
11530 #endif // VK_ENABLE_BETA_EXTENSIONS
11531 
11532     // ---- VK_EXT_sample_locations extension commands
11533     if (!strcmp("vkCmdSetSampleLocationsEXT", name)) {
11534         *addr = (void *)CmdSetSampleLocationsEXT;
11535         return true;
11536     }
11537     if (!strcmp("vkGetPhysicalDeviceMultisamplePropertiesEXT", name)) {
11538         *addr = (void *)GetPhysicalDeviceMultisamplePropertiesEXT;
11539         return true;
11540     }
11541 
11542     // ---- VK_EXT_image_drm_format_modifier extension commands
11543     if (!strcmp("vkGetImageDrmFormatModifierPropertiesEXT", name)) {
11544         *addr = (void *)GetImageDrmFormatModifierPropertiesEXT;
11545         return true;
11546     }
11547 
11548     // ---- VK_EXT_validation_cache extension commands
11549     if (!strcmp("vkCreateValidationCacheEXT", name)) {
11550         *addr = (void *)CreateValidationCacheEXT;
11551         return true;
11552     }
11553     if (!strcmp("vkDestroyValidationCacheEXT", name)) {
11554         *addr = (void *)DestroyValidationCacheEXT;
11555         return true;
11556     }
11557     if (!strcmp("vkMergeValidationCachesEXT", name)) {
11558         *addr = (void *)MergeValidationCachesEXT;
11559         return true;
11560     }
11561     if (!strcmp("vkGetValidationCacheDataEXT", name)) {
11562         *addr = (void *)GetValidationCacheDataEXT;
11563         return true;
11564     }
11565 
11566     // ---- VK_NV_shading_rate_image extension commands
11567     if (!strcmp("vkCmdBindShadingRateImageNV", name)) {
11568         *addr = (void *)CmdBindShadingRateImageNV;
11569         return true;
11570     }
11571     if (!strcmp("vkCmdSetViewportShadingRatePaletteNV", name)) {
11572         *addr = (void *)CmdSetViewportShadingRatePaletteNV;
11573         return true;
11574     }
11575     if (!strcmp("vkCmdSetCoarseSampleOrderNV", name)) {
11576         *addr = (void *)CmdSetCoarseSampleOrderNV;
11577         return true;
11578     }
11579 
11580     // ---- VK_NV_ray_tracing extension commands
11581     if (!strcmp("vkCreateAccelerationStructureNV", name)) {
11582         *addr = (void *)CreateAccelerationStructureNV;
11583         return true;
11584     }
11585     if (!strcmp("vkDestroyAccelerationStructureNV", name)) {
11586         *addr = (void *)DestroyAccelerationStructureNV;
11587         return true;
11588     }
11589     if (!strcmp("vkGetAccelerationStructureMemoryRequirementsNV", name)) {
11590         *addr = (void *)GetAccelerationStructureMemoryRequirementsNV;
11591         return true;
11592     }
11593     if (!strcmp("vkBindAccelerationStructureMemoryNV", name)) {
11594         *addr = (void *)BindAccelerationStructureMemoryNV;
11595         return true;
11596     }
11597     if (!strcmp("vkCmdBuildAccelerationStructureNV", name)) {
11598         *addr = (void *)CmdBuildAccelerationStructureNV;
11599         return true;
11600     }
11601     if (!strcmp("vkCmdCopyAccelerationStructureNV", name)) {
11602         *addr = (void *)CmdCopyAccelerationStructureNV;
11603         return true;
11604     }
11605     if (!strcmp("vkCmdTraceRaysNV", name)) {
11606         *addr = (void *)CmdTraceRaysNV;
11607         return true;
11608     }
11609     if (!strcmp("vkCreateRayTracingPipelinesNV", name)) {
11610         *addr = (void *)CreateRayTracingPipelinesNV;
11611         return true;
11612     }
11613     if (!strcmp("vkGetRayTracingShaderGroupHandlesKHR", name)) {
11614         *addr = (void *)GetRayTracingShaderGroupHandlesKHR;
11615         return true;
11616     }
11617     if (!strcmp("vkGetRayTracingShaderGroupHandlesNV", name)) {
11618         *addr = (void *)GetRayTracingShaderGroupHandlesNV;
11619         return true;
11620     }
11621     if (!strcmp("vkGetAccelerationStructureHandleNV", name)) {
11622         *addr = (void *)GetAccelerationStructureHandleNV;
11623         return true;
11624     }
11625     if (!strcmp("vkCmdWriteAccelerationStructuresPropertiesNV", name)) {
11626         *addr = (void *)CmdWriteAccelerationStructuresPropertiesNV;
11627         return true;
11628     }
11629     if (!strcmp("vkCompileDeferredNV", name)) {
11630         *addr = (void *)CompileDeferredNV;
11631         return true;
11632     }
11633 
11634     // ---- VK_EXT_external_memory_host extension commands
11635     if (!strcmp("vkGetMemoryHostPointerPropertiesEXT", name)) {
11636         *addr = (void *)GetMemoryHostPointerPropertiesEXT;
11637         return true;
11638     }
11639 
11640     // ---- VK_AMD_buffer_marker extension commands
11641     if (!strcmp("vkCmdWriteBufferMarkerAMD", name)) {
11642         *addr = (void *)CmdWriteBufferMarkerAMD;
11643         return true;
11644     }
11645     if (!strcmp("vkCmdWriteBufferMarker2AMD", name)) {
11646         *addr = (void *)CmdWriteBufferMarker2AMD;
11647         return true;
11648     }
11649 
11650     // ---- VK_EXT_calibrated_timestamps extension commands
11651     if (!strcmp("vkGetPhysicalDeviceCalibrateableTimeDomainsEXT", name)) {
11652         *addr = (void *)GetPhysicalDeviceCalibrateableTimeDomainsEXT;
11653         return true;
11654     }
11655     if (!strcmp("vkGetCalibratedTimestampsEXT", name)) {
11656         *addr = (void *)GetCalibratedTimestampsEXT;
11657         return true;
11658     }
11659 
11660     // ---- VK_NV_mesh_shader extension commands
11661     if (!strcmp("vkCmdDrawMeshTasksNV", name)) {
11662         *addr = (void *)CmdDrawMeshTasksNV;
11663         return true;
11664     }
11665     if (!strcmp("vkCmdDrawMeshTasksIndirectNV", name)) {
11666         *addr = (void *)CmdDrawMeshTasksIndirectNV;
11667         return true;
11668     }
11669     if (!strcmp("vkCmdDrawMeshTasksIndirectCountNV", name)) {
11670         *addr = (void *)CmdDrawMeshTasksIndirectCountNV;
11671         return true;
11672     }
11673 
11674     // ---- VK_NV_scissor_exclusive extension commands
11675     if (!strcmp("vkCmdSetExclusiveScissorEnableNV", name)) {
11676         *addr = (void *)CmdSetExclusiveScissorEnableNV;
11677         return true;
11678     }
11679     if (!strcmp("vkCmdSetExclusiveScissorNV", name)) {
11680         *addr = (void *)CmdSetExclusiveScissorNV;
11681         return true;
11682     }
11683 
11684     // ---- VK_NV_device_diagnostic_checkpoints extension commands
11685     if (!strcmp("vkCmdSetCheckpointNV", name)) {
11686         *addr = (void *)CmdSetCheckpointNV;
11687         return true;
11688     }
11689     if (!strcmp("vkGetQueueCheckpointDataNV", name)) {
11690         *addr = (void *)GetQueueCheckpointDataNV;
11691         return true;
11692     }
11693     if (!strcmp("vkGetQueueCheckpointData2NV", name)) {
11694         *addr = (void *)GetQueueCheckpointData2NV;
11695         return true;
11696     }
11697 
11698     // ---- VK_INTEL_performance_query extension commands
11699     if (!strcmp("vkInitializePerformanceApiINTEL", name)) {
11700         *addr = (void *)InitializePerformanceApiINTEL;
11701         return true;
11702     }
11703     if (!strcmp("vkUninitializePerformanceApiINTEL", name)) {
11704         *addr = (void *)UninitializePerformanceApiINTEL;
11705         return true;
11706     }
11707     if (!strcmp("vkCmdSetPerformanceMarkerINTEL", name)) {
11708         *addr = (void *)CmdSetPerformanceMarkerINTEL;
11709         return true;
11710     }
11711     if (!strcmp("vkCmdSetPerformanceStreamMarkerINTEL", name)) {
11712         *addr = (void *)CmdSetPerformanceStreamMarkerINTEL;
11713         return true;
11714     }
11715     if (!strcmp("vkCmdSetPerformanceOverrideINTEL", name)) {
11716         *addr = (void *)CmdSetPerformanceOverrideINTEL;
11717         return true;
11718     }
11719     if (!strcmp("vkAcquirePerformanceConfigurationINTEL", name)) {
11720         *addr = (void *)AcquirePerformanceConfigurationINTEL;
11721         return true;
11722     }
11723     if (!strcmp("vkReleasePerformanceConfigurationINTEL", name)) {
11724         *addr = (void *)ReleasePerformanceConfigurationINTEL;
11725         return true;
11726     }
11727     if (!strcmp("vkQueueSetPerformanceConfigurationINTEL", name)) {
11728         *addr = (void *)QueueSetPerformanceConfigurationINTEL;
11729         return true;
11730     }
11731     if (!strcmp("vkGetPerformanceParameterINTEL", name)) {
11732         *addr = (void *)GetPerformanceParameterINTEL;
11733         return true;
11734     }
11735 
11736     // ---- VK_AMD_display_native_hdr extension commands
11737     if (!strcmp("vkSetLocalDimmingAMD", name)) {
11738         *addr = (void *)SetLocalDimmingAMD;
11739         return true;
11740     }
11741 
11742     // ---- VK_EXT_buffer_device_address extension commands
11743     if (!strcmp("vkGetBufferDeviceAddressEXT", name)) {
11744         *addr = (void *)GetBufferDeviceAddressEXT;
11745         return true;
11746     }
11747 
11748     // ---- VK_EXT_tooling_info extension commands
11749     if (!strcmp("vkGetPhysicalDeviceToolPropertiesEXT", name)) {
11750         *addr = (void *)GetPhysicalDeviceToolPropertiesEXT;
11751         return true;
11752     }
11753 
11754     // ---- VK_NV_cooperative_matrix extension commands
11755     if (!strcmp("vkGetPhysicalDeviceCooperativeMatrixPropertiesNV", name)) {
11756         *addr = (void *)GetPhysicalDeviceCooperativeMatrixPropertiesNV;
11757         return true;
11758     }
11759 
11760     // ---- VK_NV_coverage_reduction_mode extension commands
11761     if (!strcmp("vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV", name)) {
11762         *addr = (void *)GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV;
11763         return true;
11764     }
11765 
11766     // ---- VK_EXT_full_screen_exclusive extension commands
11767 #if defined(VK_USE_PLATFORM_WIN32_KHR)
11768     if (!strcmp("vkGetPhysicalDeviceSurfacePresentModes2EXT", name)) {
11769         *addr = (void *)GetPhysicalDeviceSurfacePresentModes2EXT;
11770         return true;
11771     }
11772 #endif // VK_USE_PLATFORM_WIN32_KHR
11773 #if defined(VK_USE_PLATFORM_WIN32_KHR)
11774     if (!strcmp("vkAcquireFullScreenExclusiveModeEXT", name)) {
11775         *addr = (void *)AcquireFullScreenExclusiveModeEXT;
11776         return true;
11777     }
11778 #endif // VK_USE_PLATFORM_WIN32_KHR
11779 #if defined(VK_USE_PLATFORM_WIN32_KHR)
11780     if (!strcmp("vkReleaseFullScreenExclusiveModeEXT", name)) {
11781         *addr = (void *)ReleaseFullScreenExclusiveModeEXT;
11782         return true;
11783     }
11784 #endif // VK_USE_PLATFORM_WIN32_KHR
11785 #if defined(VK_USE_PLATFORM_WIN32_KHR)
11786     if (!strcmp("vkGetDeviceGroupSurfacePresentModes2EXT", name)) {
11787         *addr = (void *)GetDeviceGroupSurfacePresentModes2EXT;
11788         return true;
11789     }
11790 #endif // VK_USE_PLATFORM_WIN32_KHR
11791 
11792     // ---- VK_EXT_line_rasterization extension commands
11793     if (!strcmp("vkCmdSetLineStippleEXT", name)) {
11794         *addr = (void *)CmdSetLineStippleEXT;
11795         return true;
11796     }
11797 
11798     // ---- VK_EXT_host_query_reset extension commands
11799     if (!strcmp("vkResetQueryPoolEXT", name)) {
11800         *addr = (void *)ResetQueryPoolEXT;
11801         return true;
11802     }
11803 
11804     // ---- VK_EXT_extended_dynamic_state extension commands
11805     if (!strcmp("vkCmdSetCullModeEXT", name)) {
11806         *addr = (void *)CmdSetCullModeEXT;
11807         return true;
11808     }
11809     if (!strcmp("vkCmdSetFrontFaceEXT", name)) {
11810         *addr = (void *)CmdSetFrontFaceEXT;
11811         return true;
11812     }
11813     if (!strcmp("vkCmdSetPrimitiveTopologyEXT", name)) {
11814         *addr = (void *)CmdSetPrimitiveTopologyEXT;
11815         return true;
11816     }
11817     if (!strcmp("vkCmdSetViewportWithCountEXT", name)) {
11818         *addr = (void *)CmdSetViewportWithCountEXT;
11819         return true;
11820     }
11821     if (!strcmp("vkCmdSetScissorWithCountEXT", name)) {
11822         *addr = (void *)CmdSetScissorWithCountEXT;
11823         return true;
11824     }
11825     if (!strcmp("vkCmdBindVertexBuffers2EXT", name)) {
11826         *addr = (void *)CmdBindVertexBuffers2EXT;
11827         return true;
11828     }
11829     if (!strcmp("vkCmdSetDepthTestEnableEXT", name)) {
11830         *addr = (void *)CmdSetDepthTestEnableEXT;
11831         return true;
11832     }
11833     if (!strcmp("vkCmdSetDepthWriteEnableEXT", name)) {
11834         *addr = (void *)CmdSetDepthWriteEnableEXT;
11835         return true;
11836     }
11837     if (!strcmp("vkCmdSetDepthCompareOpEXT", name)) {
11838         *addr = (void *)CmdSetDepthCompareOpEXT;
11839         return true;
11840     }
11841     if (!strcmp("vkCmdSetDepthBoundsTestEnableEXT", name)) {
11842         *addr = (void *)CmdSetDepthBoundsTestEnableEXT;
11843         return true;
11844     }
11845     if (!strcmp("vkCmdSetStencilTestEnableEXT", name)) {
11846         *addr = (void *)CmdSetStencilTestEnableEXT;
11847         return true;
11848     }
11849     if (!strcmp("vkCmdSetStencilOpEXT", name)) {
11850         *addr = (void *)CmdSetStencilOpEXT;
11851         return true;
11852     }
11853 
11854     // ---- VK_EXT_host_image_copy extension commands
11855     if (!strcmp("vkCopyMemoryToImageEXT", name)) {
11856         *addr = (void *)CopyMemoryToImageEXT;
11857         return true;
11858     }
11859     if (!strcmp("vkCopyImageToMemoryEXT", name)) {
11860         *addr = (void *)CopyImageToMemoryEXT;
11861         return true;
11862     }
11863     if (!strcmp("vkCopyImageToImageEXT", name)) {
11864         *addr = (void *)CopyImageToImageEXT;
11865         return true;
11866     }
11867     if (!strcmp("vkTransitionImageLayoutEXT", name)) {
11868         *addr = (void *)TransitionImageLayoutEXT;
11869         return true;
11870     }
11871     if (!strcmp("vkGetImageSubresourceLayout2EXT", name)) {
11872         *addr = (void *)GetImageSubresourceLayout2EXT;
11873         return true;
11874     }
11875 
11876     // ---- VK_EXT_swapchain_maintenance1 extension commands
11877     if (!strcmp("vkReleaseSwapchainImagesEXT", name)) {
11878         *addr = (void *)ReleaseSwapchainImagesEXT;
11879         return true;
11880     }
11881 
11882     // ---- VK_NV_device_generated_commands extension commands
11883     if (!strcmp("vkGetGeneratedCommandsMemoryRequirementsNV", name)) {
11884         *addr = (void *)GetGeneratedCommandsMemoryRequirementsNV;
11885         return true;
11886     }
11887     if (!strcmp("vkCmdPreprocessGeneratedCommandsNV", name)) {
11888         *addr = (void *)CmdPreprocessGeneratedCommandsNV;
11889         return true;
11890     }
11891     if (!strcmp("vkCmdExecuteGeneratedCommandsNV", name)) {
11892         *addr = (void *)CmdExecuteGeneratedCommandsNV;
11893         return true;
11894     }
11895     if (!strcmp("vkCmdBindPipelineShaderGroupNV", name)) {
11896         *addr = (void *)CmdBindPipelineShaderGroupNV;
11897         return true;
11898     }
11899     if (!strcmp("vkCreateIndirectCommandsLayoutNV", name)) {
11900         *addr = (void *)CreateIndirectCommandsLayoutNV;
11901         return true;
11902     }
11903     if (!strcmp("vkDestroyIndirectCommandsLayoutNV", name)) {
11904         *addr = (void *)DestroyIndirectCommandsLayoutNV;
11905         return true;
11906     }
11907 
11908     // ---- VK_EXT_depth_bias_control extension commands
11909     if (!strcmp("vkCmdSetDepthBias2EXT", name)) {
11910         *addr = (void *)CmdSetDepthBias2EXT;
11911         return true;
11912     }
11913 
11914     // ---- VK_EXT_acquire_drm_display extension commands
11915     if (!strcmp("vkAcquireDrmDisplayEXT", name)) {
11916         *addr = (ptr_instance->enabled_known_extensions.ext_acquire_drm_display == 1)
11917                      ? (void *)AcquireDrmDisplayEXT
11918                      : NULL;
11919         return true;
11920     }
11921     if (!strcmp("vkGetDrmDisplayEXT", name)) {
11922         *addr = (ptr_instance->enabled_known_extensions.ext_acquire_drm_display == 1)
11923                      ? (void *)GetDrmDisplayEXT
11924                      : NULL;
11925         return true;
11926     }
11927 
11928     // ---- VK_EXT_private_data extension commands
11929     if (!strcmp("vkCreatePrivateDataSlotEXT", name)) {
11930         *addr = (void *)CreatePrivateDataSlotEXT;
11931         return true;
11932     }
11933     if (!strcmp("vkDestroyPrivateDataSlotEXT", name)) {
11934         *addr = (void *)DestroyPrivateDataSlotEXT;
11935         return true;
11936     }
11937     if (!strcmp("vkSetPrivateDataEXT", name)) {
11938         *addr = (void *)SetPrivateDataEXT;
11939         return true;
11940     }
11941     if (!strcmp("vkGetPrivateDataEXT", name)) {
11942         *addr = (void *)GetPrivateDataEXT;
11943         return true;
11944     }
11945 
11946     // ---- VK_NV_cuda_kernel_launch extension commands
11947     if (!strcmp("vkCreateCudaModuleNV", name)) {
11948         *addr = (void *)CreateCudaModuleNV;
11949         return true;
11950     }
11951     if (!strcmp("vkGetCudaModuleCacheNV", name)) {
11952         *addr = (void *)GetCudaModuleCacheNV;
11953         return true;
11954     }
11955     if (!strcmp("vkCreateCudaFunctionNV", name)) {
11956         *addr = (void *)CreateCudaFunctionNV;
11957         return true;
11958     }
11959     if (!strcmp("vkDestroyCudaModuleNV", name)) {
11960         *addr = (void *)DestroyCudaModuleNV;
11961         return true;
11962     }
11963     if (!strcmp("vkDestroyCudaFunctionNV", name)) {
11964         *addr = (void *)DestroyCudaFunctionNV;
11965         return true;
11966     }
11967     if (!strcmp("vkCmdCudaLaunchKernelNV", name)) {
11968         *addr = (void *)CmdCudaLaunchKernelNV;
11969         return true;
11970     }
11971 
11972     // ---- VK_EXT_metal_objects extension commands
11973 #if defined(VK_USE_PLATFORM_METAL_EXT)
11974     if (!strcmp("vkExportMetalObjectsEXT", name)) {
11975         *addr = (void *)ExportMetalObjectsEXT;
11976         return true;
11977     }
11978 #endif // VK_USE_PLATFORM_METAL_EXT
11979 
11980     // ---- VK_EXT_descriptor_buffer extension commands
11981     if (!strcmp("vkGetDescriptorSetLayoutSizeEXT", name)) {
11982         *addr = (void *)GetDescriptorSetLayoutSizeEXT;
11983         return true;
11984     }
11985     if (!strcmp("vkGetDescriptorSetLayoutBindingOffsetEXT", name)) {
11986         *addr = (void *)GetDescriptorSetLayoutBindingOffsetEXT;
11987         return true;
11988     }
11989     if (!strcmp("vkGetDescriptorEXT", name)) {
11990         *addr = (void *)GetDescriptorEXT;
11991         return true;
11992     }
11993     if (!strcmp("vkCmdBindDescriptorBuffersEXT", name)) {
11994         *addr = (void *)CmdBindDescriptorBuffersEXT;
11995         return true;
11996     }
11997     if (!strcmp("vkCmdSetDescriptorBufferOffsetsEXT", name)) {
11998         *addr = (void *)CmdSetDescriptorBufferOffsetsEXT;
11999         return true;
12000     }
12001     if (!strcmp("vkCmdBindDescriptorBufferEmbeddedSamplersEXT", name)) {
12002         *addr = (void *)CmdBindDescriptorBufferEmbeddedSamplersEXT;
12003         return true;
12004     }
12005     if (!strcmp("vkGetBufferOpaqueCaptureDescriptorDataEXT", name)) {
12006         *addr = (void *)GetBufferOpaqueCaptureDescriptorDataEXT;
12007         return true;
12008     }
12009     if (!strcmp("vkGetImageOpaqueCaptureDescriptorDataEXT", name)) {
12010         *addr = (void *)GetImageOpaqueCaptureDescriptorDataEXT;
12011         return true;
12012     }
12013     if (!strcmp("vkGetImageViewOpaqueCaptureDescriptorDataEXT", name)) {
12014         *addr = (void *)GetImageViewOpaqueCaptureDescriptorDataEXT;
12015         return true;
12016     }
12017     if (!strcmp("vkGetSamplerOpaqueCaptureDescriptorDataEXT", name)) {
12018         *addr = (void *)GetSamplerOpaqueCaptureDescriptorDataEXT;
12019         return true;
12020     }
12021     if (!strcmp("vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT", name)) {
12022         *addr = (void *)GetAccelerationStructureOpaqueCaptureDescriptorDataEXT;
12023         return true;
12024     }
12025 
12026     // ---- VK_NV_fragment_shading_rate_enums extension commands
12027     if (!strcmp("vkCmdSetFragmentShadingRateEnumNV", name)) {
12028         *addr = (void *)CmdSetFragmentShadingRateEnumNV;
12029         return true;
12030     }
12031 
12032     // ---- VK_EXT_device_fault extension commands
12033     if (!strcmp("vkGetDeviceFaultInfoEXT", name)) {
12034         *addr = (void *)GetDeviceFaultInfoEXT;
12035         return true;
12036     }
12037 
12038     // ---- VK_NV_acquire_winrt_display extension commands
12039 #if defined(VK_USE_PLATFORM_WIN32_KHR)
12040     if (!strcmp("vkAcquireWinrtDisplayNV", name)) {
12041         *addr = (void *)AcquireWinrtDisplayNV;
12042         return true;
12043     }
12044 #endif // VK_USE_PLATFORM_WIN32_KHR
12045 #if defined(VK_USE_PLATFORM_WIN32_KHR)
12046     if (!strcmp("vkGetWinrtDisplayNV", name)) {
12047         *addr = (void *)GetWinrtDisplayNV;
12048         return true;
12049     }
12050 #endif // VK_USE_PLATFORM_WIN32_KHR
12051 
12052     // ---- VK_EXT_vertex_input_dynamic_state extension commands
12053     if (!strcmp("vkCmdSetVertexInputEXT", name)) {
12054         *addr = (void *)CmdSetVertexInputEXT;
12055         return true;
12056     }
12057 
12058     // ---- VK_FUCHSIA_external_memory extension commands
12059 #if defined(VK_USE_PLATFORM_FUCHSIA)
12060     if (!strcmp("vkGetMemoryZirconHandleFUCHSIA", name)) {
12061         *addr = (void *)GetMemoryZirconHandleFUCHSIA;
12062         return true;
12063     }
12064 #endif // VK_USE_PLATFORM_FUCHSIA
12065 #if defined(VK_USE_PLATFORM_FUCHSIA)
12066     if (!strcmp("vkGetMemoryZirconHandlePropertiesFUCHSIA", name)) {
12067         *addr = (void *)GetMemoryZirconHandlePropertiesFUCHSIA;
12068         return true;
12069     }
12070 #endif // VK_USE_PLATFORM_FUCHSIA
12071 
12072     // ---- VK_FUCHSIA_external_semaphore extension commands
12073 #if defined(VK_USE_PLATFORM_FUCHSIA)
12074     if (!strcmp("vkImportSemaphoreZirconHandleFUCHSIA", name)) {
12075         *addr = (void *)ImportSemaphoreZirconHandleFUCHSIA;
12076         return true;
12077     }
12078 #endif // VK_USE_PLATFORM_FUCHSIA
12079 #if defined(VK_USE_PLATFORM_FUCHSIA)
12080     if (!strcmp("vkGetSemaphoreZirconHandleFUCHSIA", name)) {
12081         *addr = (void *)GetSemaphoreZirconHandleFUCHSIA;
12082         return true;
12083     }
12084 #endif // VK_USE_PLATFORM_FUCHSIA
12085 
12086     // ---- VK_FUCHSIA_buffer_collection extension commands
12087 #if defined(VK_USE_PLATFORM_FUCHSIA)
12088     if (!strcmp("vkCreateBufferCollectionFUCHSIA", name)) {
12089         *addr = (void *)CreateBufferCollectionFUCHSIA;
12090         return true;
12091     }
12092 #endif // VK_USE_PLATFORM_FUCHSIA
12093 #if defined(VK_USE_PLATFORM_FUCHSIA)
12094     if (!strcmp("vkSetBufferCollectionImageConstraintsFUCHSIA", name)) {
12095         *addr = (void *)SetBufferCollectionImageConstraintsFUCHSIA;
12096         return true;
12097     }
12098 #endif // VK_USE_PLATFORM_FUCHSIA
12099 #if defined(VK_USE_PLATFORM_FUCHSIA)
12100     if (!strcmp("vkSetBufferCollectionBufferConstraintsFUCHSIA", name)) {
12101         *addr = (void *)SetBufferCollectionBufferConstraintsFUCHSIA;
12102         return true;
12103     }
12104 #endif // VK_USE_PLATFORM_FUCHSIA
12105 #if defined(VK_USE_PLATFORM_FUCHSIA)
12106     if (!strcmp("vkDestroyBufferCollectionFUCHSIA", name)) {
12107         *addr = (void *)DestroyBufferCollectionFUCHSIA;
12108         return true;
12109     }
12110 #endif // VK_USE_PLATFORM_FUCHSIA
12111 #if defined(VK_USE_PLATFORM_FUCHSIA)
12112     if (!strcmp("vkGetBufferCollectionPropertiesFUCHSIA", name)) {
12113         *addr = (void *)GetBufferCollectionPropertiesFUCHSIA;
12114         return true;
12115     }
12116 #endif // VK_USE_PLATFORM_FUCHSIA
12117 
12118     // ---- VK_HUAWEI_subpass_shading extension commands
12119     if (!strcmp("vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI", name)) {
12120         *addr = (void *)GetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
12121         return true;
12122     }
12123     if (!strcmp("vkCmdSubpassShadingHUAWEI", name)) {
12124         *addr = (void *)CmdSubpassShadingHUAWEI;
12125         return true;
12126     }
12127 
12128     // ---- VK_HUAWEI_invocation_mask extension commands
12129     if (!strcmp("vkCmdBindInvocationMaskHUAWEI", name)) {
12130         *addr = (void *)CmdBindInvocationMaskHUAWEI;
12131         return true;
12132     }
12133 
12134     // ---- VK_NV_external_memory_rdma extension commands
12135     if (!strcmp("vkGetMemoryRemoteAddressNV", name)) {
12136         *addr = (void *)GetMemoryRemoteAddressNV;
12137         return true;
12138     }
12139 
12140     // ---- VK_EXT_pipeline_properties extension commands
12141     if (!strcmp("vkGetPipelinePropertiesEXT", name)) {
12142         *addr = (void *)GetPipelinePropertiesEXT;
12143         return true;
12144     }
12145 
12146     // ---- VK_EXT_extended_dynamic_state2 extension commands
12147     if (!strcmp("vkCmdSetPatchControlPointsEXT", name)) {
12148         *addr = (void *)CmdSetPatchControlPointsEXT;
12149         return true;
12150     }
12151     if (!strcmp("vkCmdSetRasterizerDiscardEnableEXT", name)) {
12152         *addr = (void *)CmdSetRasterizerDiscardEnableEXT;
12153         return true;
12154     }
12155     if (!strcmp("vkCmdSetDepthBiasEnableEXT", name)) {
12156         *addr = (void *)CmdSetDepthBiasEnableEXT;
12157         return true;
12158     }
12159     if (!strcmp("vkCmdSetLogicOpEXT", name)) {
12160         *addr = (void *)CmdSetLogicOpEXT;
12161         return true;
12162     }
12163     if (!strcmp("vkCmdSetPrimitiveRestartEnableEXT", name)) {
12164         *addr = (void *)CmdSetPrimitiveRestartEnableEXT;
12165         return true;
12166     }
12167 
12168     // ---- VK_EXT_color_write_enable extension commands
12169     if (!strcmp("vkCmdSetColorWriteEnableEXT", name)) {
12170         *addr = (void *)CmdSetColorWriteEnableEXT;
12171         return true;
12172     }
12173 
12174     // ---- VK_EXT_multi_draw extension commands
12175     if (!strcmp("vkCmdDrawMultiEXT", name)) {
12176         *addr = (void *)CmdDrawMultiEXT;
12177         return true;
12178     }
12179     if (!strcmp("vkCmdDrawMultiIndexedEXT", name)) {
12180         *addr = (void *)CmdDrawMultiIndexedEXT;
12181         return true;
12182     }
12183 
12184     // ---- VK_EXT_opacity_micromap extension commands
12185     if (!strcmp("vkCreateMicromapEXT", name)) {
12186         *addr = (void *)CreateMicromapEXT;
12187         return true;
12188     }
12189     if (!strcmp("vkDestroyMicromapEXT", name)) {
12190         *addr = (void *)DestroyMicromapEXT;
12191         return true;
12192     }
12193     if (!strcmp("vkCmdBuildMicromapsEXT", name)) {
12194         *addr = (void *)CmdBuildMicromapsEXT;
12195         return true;
12196     }
12197     if (!strcmp("vkBuildMicromapsEXT", name)) {
12198         *addr = (void *)BuildMicromapsEXT;
12199         return true;
12200     }
12201     if (!strcmp("vkCopyMicromapEXT", name)) {
12202         *addr = (void *)CopyMicromapEXT;
12203         return true;
12204     }
12205     if (!strcmp("vkCopyMicromapToMemoryEXT", name)) {
12206         *addr = (void *)CopyMicromapToMemoryEXT;
12207         return true;
12208     }
12209     if (!strcmp("vkCopyMemoryToMicromapEXT", name)) {
12210         *addr = (void *)CopyMemoryToMicromapEXT;
12211         return true;
12212     }
12213     if (!strcmp("vkWriteMicromapsPropertiesEXT", name)) {
12214         *addr = (void *)WriteMicromapsPropertiesEXT;
12215         return true;
12216     }
12217     if (!strcmp("vkCmdCopyMicromapEXT", name)) {
12218         *addr = (void *)CmdCopyMicromapEXT;
12219         return true;
12220     }
12221     if (!strcmp("vkCmdCopyMicromapToMemoryEXT", name)) {
12222         *addr = (void *)CmdCopyMicromapToMemoryEXT;
12223         return true;
12224     }
12225     if (!strcmp("vkCmdCopyMemoryToMicromapEXT", name)) {
12226         *addr = (void *)CmdCopyMemoryToMicromapEXT;
12227         return true;
12228     }
12229     if (!strcmp("vkCmdWriteMicromapsPropertiesEXT", name)) {
12230         *addr = (void *)CmdWriteMicromapsPropertiesEXT;
12231         return true;
12232     }
12233     if (!strcmp("vkGetDeviceMicromapCompatibilityEXT", name)) {
12234         *addr = (void *)GetDeviceMicromapCompatibilityEXT;
12235         return true;
12236     }
12237     if (!strcmp("vkGetMicromapBuildSizesEXT", name)) {
12238         *addr = (void *)GetMicromapBuildSizesEXT;
12239         return true;
12240     }
12241 
12242     // ---- VK_HUAWEI_cluster_culling_shader extension commands
12243     if (!strcmp("vkCmdDrawClusterHUAWEI", name)) {
12244         *addr = (void *)CmdDrawClusterHUAWEI;
12245         return true;
12246     }
12247     if (!strcmp("vkCmdDrawClusterIndirectHUAWEI", name)) {
12248         *addr = (void *)CmdDrawClusterIndirectHUAWEI;
12249         return true;
12250     }
12251 
12252     // ---- VK_EXT_pageable_device_local_memory extension commands
12253     if (!strcmp("vkSetDeviceMemoryPriorityEXT", name)) {
12254         *addr = (void *)SetDeviceMemoryPriorityEXT;
12255         return true;
12256     }
12257 
12258     // ---- VK_VALVE_descriptor_set_host_mapping extension commands
12259     if (!strcmp("vkGetDescriptorSetLayoutHostMappingInfoVALVE", name)) {
12260         *addr = (void *)GetDescriptorSetLayoutHostMappingInfoVALVE;
12261         return true;
12262     }
12263     if (!strcmp("vkGetDescriptorSetHostMappingVALVE", name)) {
12264         *addr = (void *)GetDescriptorSetHostMappingVALVE;
12265         return true;
12266     }
12267 
12268     // ---- VK_NV_copy_memory_indirect extension commands
12269     if (!strcmp("vkCmdCopyMemoryIndirectNV", name)) {
12270         *addr = (void *)CmdCopyMemoryIndirectNV;
12271         return true;
12272     }
12273     if (!strcmp("vkCmdCopyMemoryToImageIndirectNV", name)) {
12274         *addr = (void *)CmdCopyMemoryToImageIndirectNV;
12275         return true;
12276     }
12277 
12278     // ---- VK_NV_memory_decompression extension commands
12279     if (!strcmp("vkCmdDecompressMemoryNV", name)) {
12280         *addr = (void *)CmdDecompressMemoryNV;
12281         return true;
12282     }
12283     if (!strcmp("vkCmdDecompressMemoryIndirectCountNV", name)) {
12284         *addr = (void *)CmdDecompressMemoryIndirectCountNV;
12285         return true;
12286     }
12287 
12288     // ---- VK_NV_device_generated_commands_compute extension commands
12289     if (!strcmp("vkGetPipelineIndirectMemoryRequirementsNV", name)) {
12290         *addr = (void *)GetPipelineIndirectMemoryRequirementsNV;
12291         return true;
12292     }
12293     if (!strcmp("vkCmdUpdatePipelineIndirectBufferNV", name)) {
12294         *addr = (void *)CmdUpdatePipelineIndirectBufferNV;
12295         return true;
12296     }
12297     if (!strcmp("vkGetPipelineIndirectDeviceAddressNV", name)) {
12298         *addr = (void *)GetPipelineIndirectDeviceAddressNV;
12299         return true;
12300     }
12301 
12302     // ---- VK_EXT_extended_dynamic_state3 extension commands
12303     if (!strcmp("vkCmdSetDepthClampEnableEXT", name)) {
12304         *addr = (void *)CmdSetDepthClampEnableEXT;
12305         return true;
12306     }
12307     if (!strcmp("vkCmdSetPolygonModeEXT", name)) {
12308         *addr = (void *)CmdSetPolygonModeEXT;
12309         return true;
12310     }
12311     if (!strcmp("vkCmdSetRasterizationSamplesEXT", name)) {
12312         *addr = (void *)CmdSetRasterizationSamplesEXT;
12313         return true;
12314     }
12315     if (!strcmp("vkCmdSetSampleMaskEXT", name)) {
12316         *addr = (void *)CmdSetSampleMaskEXT;
12317         return true;
12318     }
12319     if (!strcmp("vkCmdSetAlphaToCoverageEnableEXT", name)) {
12320         *addr = (void *)CmdSetAlphaToCoverageEnableEXT;
12321         return true;
12322     }
12323     if (!strcmp("vkCmdSetAlphaToOneEnableEXT", name)) {
12324         *addr = (void *)CmdSetAlphaToOneEnableEXT;
12325         return true;
12326     }
12327     if (!strcmp("vkCmdSetLogicOpEnableEXT", name)) {
12328         *addr = (void *)CmdSetLogicOpEnableEXT;
12329         return true;
12330     }
12331     if (!strcmp("vkCmdSetColorBlendEnableEXT", name)) {
12332         *addr = (void *)CmdSetColorBlendEnableEXT;
12333         return true;
12334     }
12335     if (!strcmp("vkCmdSetColorBlendEquationEXT", name)) {
12336         *addr = (void *)CmdSetColorBlendEquationEXT;
12337         return true;
12338     }
12339     if (!strcmp("vkCmdSetColorWriteMaskEXT", name)) {
12340         *addr = (void *)CmdSetColorWriteMaskEXT;
12341         return true;
12342     }
12343     if (!strcmp("vkCmdSetTessellationDomainOriginEXT", name)) {
12344         *addr = (void *)CmdSetTessellationDomainOriginEXT;
12345         return true;
12346     }
12347     if (!strcmp("vkCmdSetRasterizationStreamEXT", name)) {
12348         *addr = (void *)CmdSetRasterizationStreamEXT;
12349         return true;
12350     }
12351     if (!strcmp("vkCmdSetConservativeRasterizationModeEXT", name)) {
12352         *addr = (void *)CmdSetConservativeRasterizationModeEXT;
12353         return true;
12354     }
12355     if (!strcmp("vkCmdSetExtraPrimitiveOverestimationSizeEXT", name)) {
12356         *addr = (void *)CmdSetExtraPrimitiveOverestimationSizeEXT;
12357         return true;
12358     }
12359     if (!strcmp("vkCmdSetDepthClipEnableEXT", name)) {
12360         *addr = (void *)CmdSetDepthClipEnableEXT;
12361         return true;
12362     }
12363     if (!strcmp("vkCmdSetSampleLocationsEnableEXT", name)) {
12364         *addr = (void *)CmdSetSampleLocationsEnableEXT;
12365         return true;
12366     }
12367     if (!strcmp("vkCmdSetColorBlendAdvancedEXT", name)) {
12368         *addr = (void *)CmdSetColorBlendAdvancedEXT;
12369         return true;
12370     }
12371     if (!strcmp("vkCmdSetProvokingVertexModeEXT", name)) {
12372         *addr = (void *)CmdSetProvokingVertexModeEXT;
12373         return true;
12374     }
12375     if (!strcmp("vkCmdSetLineRasterizationModeEXT", name)) {
12376         *addr = (void *)CmdSetLineRasterizationModeEXT;
12377         return true;
12378     }
12379     if (!strcmp("vkCmdSetLineStippleEnableEXT", name)) {
12380         *addr = (void *)CmdSetLineStippleEnableEXT;
12381         return true;
12382     }
12383     if (!strcmp("vkCmdSetDepthClipNegativeOneToOneEXT", name)) {
12384         *addr = (void *)CmdSetDepthClipNegativeOneToOneEXT;
12385         return true;
12386     }
12387     if (!strcmp("vkCmdSetViewportWScalingEnableNV", name)) {
12388         *addr = (void *)CmdSetViewportWScalingEnableNV;
12389         return true;
12390     }
12391     if (!strcmp("vkCmdSetViewportSwizzleNV", name)) {
12392         *addr = (void *)CmdSetViewportSwizzleNV;
12393         return true;
12394     }
12395     if (!strcmp("vkCmdSetCoverageToColorEnableNV", name)) {
12396         *addr = (void *)CmdSetCoverageToColorEnableNV;
12397         return true;
12398     }
12399     if (!strcmp("vkCmdSetCoverageToColorLocationNV", name)) {
12400         *addr = (void *)CmdSetCoverageToColorLocationNV;
12401         return true;
12402     }
12403     if (!strcmp("vkCmdSetCoverageModulationModeNV", name)) {
12404         *addr = (void *)CmdSetCoverageModulationModeNV;
12405         return true;
12406     }
12407     if (!strcmp("vkCmdSetCoverageModulationTableEnableNV", name)) {
12408         *addr = (void *)CmdSetCoverageModulationTableEnableNV;
12409         return true;
12410     }
12411     if (!strcmp("vkCmdSetCoverageModulationTableNV", name)) {
12412         *addr = (void *)CmdSetCoverageModulationTableNV;
12413         return true;
12414     }
12415     if (!strcmp("vkCmdSetShadingRateImageEnableNV", name)) {
12416         *addr = (void *)CmdSetShadingRateImageEnableNV;
12417         return true;
12418     }
12419     if (!strcmp("vkCmdSetRepresentativeFragmentTestEnableNV", name)) {
12420         *addr = (void *)CmdSetRepresentativeFragmentTestEnableNV;
12421         return true;
12422     }
12423     if (!strcmp("vkCmdSetCoverageReductionModeNV", name)) {
12424         *addr = (void *)CmdSetCoverageReductionModeNV;
12425         return true;
12426     }
12427 
12428     // ---- VK_EXT_shader_module_identifier extension commands
12429     if (!strcmp("vkGetShaderModuleIdentifierEXT", name)) {
12430         *addr = (void *)GetShaderModuleIdentifierEXT;
12431         return true;
12432     }
12433     if (!strcmp("vkGetShaderModuleCreateInfoIdentifierEXT", name)) {
12434         *addr = (void *)GetShaderModuleCreateInfoIdentifierEXT;
12435         return true;
12436     }
12437 
12438     // ---- VK_NV_optical_flow extension commands
12439     if (!strcmp("vkGetPhysicalDeviceOpticalFlowImageFormatsNV", name)) {
12440         *addr = (void *)GetPhysicalDeviceOpticalFlowImageFormatsNV;
12441         return true;
12442     }
12443     if (!strcmp("vkCreateOpticalFlowSessionNV", name)) {
12444         *addr = (void *)CreateOpticalFlowSessionNV;
12445         return true;
12446     }
12447     if (!strcmp("vkDestroyOpticalFlowSessionNV", name)) {
12448         *addr = (void *)DestroyOpticalFlowSessionNV;
12449         return true;
12450     }
12451     if (!strcmp("vkBindOpticalFlowSessionImageNV", name)) {
12452         *addr = (void *)BindOpticalFlowSessionImageNV;
12453         return true;
12454     }
12455     if (!strcmp("vkCmdOpticalFlowExecuteNV", name)) {
12456         *addr = (void *)CmdOpticalFlowExecuteNV;
12457         return true;
12458     }
12459 
12460     // ---- VK_AMD_anti_lag extension commands
12461     if (!strcmp("vkAntiLagUpdateAMD", name)) {
12462         *addr = (void *)AntiLagUpdateAMD;
12463         return true;
12464     }
12465 
12466     // ---- VK_EXT_shader_object extension commands
12467     if (!strcmp("vkCreateShadersEXT", name)) {
12468         *addr = (void *)CreateShadersEXT;
12469         return true;
12470     }
12471     if (!strcmp("vkDestroyShaderEXT", name)) {
12472         *addr = (void *)DestroyShaderEXT;
12473         return true;
12474     }
12475     if (!strcmp("vkGetShaderBinaryDataEXT", name)) {
12476         *addr = (void *)GetShaderBinaryDataEXT;
12477         return true;
12478     }
12479     if (!strcmp("vkCmdBindShadersEXT", name)) {
12480         *addr = (void *)CmdBindShadersEXT;
12481         return true;
12482     }
12483     if (!strcmp("vkCmdSetDepthClampRangeEXT", name)) {
12484         *addr = (void *)CmdSetDepthClampRangeEXT;
12485         return true;
12486     }
12487 
12488     // ---- VK_QCOM_tile_properties extension commands
12489     if (!strcmp("vkGetFramebufferTilePropertiesQCOM", name)) {
12490         *addr = (void *)GetFramebufferTilePropertiesQCOM;
12491         return true;
12492     }
12493     if (!strcmp("vkGetDynamicRenderingTilePropertiesQCOM", name)) {
12494         *addr = (void *)GetDynamicRenderingTilePropertiesQCOM;
12495         return true;
12496     }
12497 
12498     // ---- VK_NV_cooperative_vector extension commands
12499     if (!strcmp("vkGetPhysicalDeviceCooperativeVectorPropertiesNV", name)) {
12500         *addr = (void *)GetPhysicalDeviceCooperativeVectorPropertiesNV;
12501         return true;
12502     }
12503     if (!strcmp("vkConvertCooperativeVectorMatrixNV", name)) {
12504         *addr = (void *)ConvertCooperativeVectorMatrixNV;
12505         return true;
12506     }
12507     if (!strcmp("vkCmdConvertCooperativeVectorMatrixNV", name)) {
12508         *addr = (void *)CmdConvertCooperativeVectorMatrixNV;
12509         return true;
12510     }
12511 
12512     // ---- VK_NV_low_latency2 extension commands
12513     if (!strcmp("vkSetLatencySleepModeNV", name)) {
12514         *addr = (void *)SetLatencySleepModeNV;
12515         return true;
12516     }
12517     if (!strcmp("vkLatencySleepNV", name)) {
12518         *addr = (void *)LatencySleepNV;
12519         return true;
12520     }
12521     if (!strcmp("vkSetLatencyMarkerNV", name)) {
12522         *addr = (void *)SetLatencyMarkerNV;
12523         return true;
12524     }
12525     if (!strcmp("vkGetLatencyTimingsNV", name)) {
12526         *addr = (void *)GetLatencyTimingsNV;
12527         return true;
12528     }
12529     if (!strcmp("vkQueueNotifyOutOfBandNV", name)) {
12530         *addr = (void *)QueueNotifyOutOfBandNV;
12531         return true;
12532     }
12533 
12534     // ---- VK_EXT_attachment_feedback_loop_dynamic_state extension commands
12535     if (!strcmp("vkCmdSetAttachmentFeedbackLoopEnableEXT", name)) {
12536         *addr = (void *)CmdSetAttachmentFeedbackLoopEnableEXT;
12537         return true;
12538     }
12539 
12540     // ---- VK_QNX_external_memory_screen_buffer extension commands
12541 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
12542     if (!strcmp("vkGetScreenBufferPropertiesQNX", name)) {
12543         *addr = (void *)GetScreenBufferPropertiesQNX;
12544         return true;
12545     }
12546 #endif // VK_USE_PLATFORM_SCREEN_QNX
12547 
12548     // ---- VK_NV_cluster_acceleration_structure extension commands
12549     if (!strcmp("vkGetClusterAccelerationStructureBuildSizesNV", name)) {
12550         *addr = (void *)GetClusterAccelerationStructureBuildSizesNV;
12551         return true;
12552     }
12553     if (!strcmp("vkCmdBuildClusterAccelerationStructureIndirectNV", name)) {
12554         *addr = (void *)CmdBuildClusterAccelerationStructureIndirectNV;
12555         return true;
12556     }
12557 
12558     // ---- VK_NV_partitioned_acceleration_structure extension commands
12559     if (!strcmp("vkGetPartitionedAccelerationStructuresBuildSizesNV", name)) {
12560         *addr = (void *)GetPartitionedAccelerationStructuresBuildSizesNV;
12561         return true;
12562     }
12563     if (!strcmp("vkCmdBuildPartitionedAccelerationStructuresNV", name)) {
12564         *addr = (void *)CmdBuildPartitionedAccelerationStructuresNV;
12565         return true;
12566     }
12567 
12568     // ---- VK_EXT_device_generated_commands extension commands
12569     if (!strcmp("vkGetGeneratedCommandsMemoryRequirementsEXT", name)) {
12570         *addr = (void *)GetGeneratedCommandsMemoryRequirementsEXT;
12571         return true;
12572     }
12573     if (!strcmp("vkCmdPreprocessGeneratedCommandsEXT", name)) {
12574         *addr = (void *)CmdPreprocessGeneratedCommandsEXT;
12575         return true;
12576     }
12577     if (!strcmp("vkCmdExecuteGeneratedCommandsEXT", name)) {
12578         *addr = (void *)CmdExecuteGeneratedCommandsEXT;
12579         return true;
12580     }
12581     if (!strcmp("vkCreateIndirectCommandsLayoutEXT", name)) {
12582         *addr = (void *)CreateIndirectCommandsLayoutEXT;
12583         return true;
12584     }
12585     if (!strcmp("vkDestroyIndirectCommandsLayoutEXT", name)) {
12586         *addr = (void *)DestroyIndirectCommandsLayoutEXT;
12587         return true;
12588     }
12589     if (!strcmp("vkCreateIndirectExecutionSetEXT", name)) {
12590         *addr = (void *)CreateIndirectExecutionSetEXT;
12591         return true;
12592     }
12593     if (!strcmp("vkDestroyIndirectExecutionSetEXT", name)) {
12594         *addr = (void *)DestroyIndirectExecutionSetEXT;
12595         return true;
12596     }
12597     if (!strcmp("vkUpdateIndirectExecutionSetPipelineEXT", name)) {
12598         *addr = (void *)UpdateIndirectExecutionSetPipelineEXT;
12599         return true;
12600     }
12601     if (!strcmp("vkUpdateIndirectExecutionSetShaderEXT", name)) {
12602         *addr = (void *)UpdateIndirectExecutionSetShaderEXT;
12603         return true;
12604     }
12605 
12606     // ---- VK_NV_cooperative_matrix2 extension commands
12607     if (!strcmp("vkGetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV", name)) {
12608         *addr = (void *)GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV;
12609         return true;
12610     }
12611 
12612     // ---- VK_EXT_external_memory_metal extension commands
12613 #if defined(VK_USE_PLATFORM_METAL_EXT)
12614     if (!strcmp("vkGetMemoryMetalHandleEXT", name)) {
12615         *addr = (void *)GetMemoryMetalHandleEXT;
12616         return true;
12617     }
12618 #endif // VK_USE_PLATFORM_METAL_EXT
12619 #if defined(VK_USE_PLATFORM_METAL_EXT)
12620     if (!strcmp("vkGetMemoryMetalHandlePropertiesEXT", name)) {
12621         *addr = (void *)GetMemoryMetalHandlePropertiesEXT;
12622         return true;
12623     }
12624 #endif // VK_USE_PLATFORM_METAL_EXT
12625 
12626     // ---- VK_KHR_acceleration_structure extension commands
12627     if (!strcmp("vkCreateAccelerationStructureKHR", name)) {
12628         *addr = (void *)CreateAccelerationStructureKHR;
12629         return true;
12630     }
12631     if (!strcmp("vkDestroyAccelerationStructureKHR", name)) {
12632         *addr = (void *)DestroyAccelerationStructureKHR;
12633         return true;
12634     }
12635     if (!strcmp("vkCmdBuildAccelerationStructuresKHR", name)) {
12636         *addr = (void *)CmdBuildAccelerationStructuresKHR;
12637         return true;
12638     }
12639     if (!strcmp("vkCmdBuildAccelerationStructuresIndirectKHR", name)) {
12640         *addr = (void *)CmdBuildAccelerationStructuresIndirectKHR;
12641         return true;
12642     }
12643     if (!strcmp("vkBuildAccelerationStructuresKHR", name)) {
12644         *addr = (void *)BuildAccelerationStructuresKHR;
12645         return true;
12646     }
12647     if (!strcmp("vkCopyAccelerationStructureKHR", name)) {
12648         *addr = (void *)CopyAccelerationStructureKHR;
12649         return true;
12650     }
12651     if (!strcmp("vkCopyAccelerationStructureToMemoryKHR", name)) {
12652         *addr = (void *)CopyAccelerationStructureToMemoryKHR;
12653         return true;
12654     }
12655     if (!strcmp("vkCopyMemoryToAccelerationStructureKHR", name)) {
12656         *addr = (void *)CopyMemoryToAccelerationStructureKHR;
12657         return true;
12658     }
12659     if (!strcmp("vkWriteAccelerationStructuresPropertiesKHR", name)) {
12660         *addr = (void *)WriteAccelerationStructuresPropertiesKHR;
12661         return true;
12662     }
12663     if (!strcmp("vkCmdCopyAccelerationStructureKHR", name)) {
12664         *addr = (void *)CmdCopyAccelerationStructureKHR;
12665         return true;
12666     }
12667     if (!strcmp("vkCmdCopyAccelerationStructureToMemoryKHR", name)) {
12668         *addr = (void *)CmdCopyAccelerationStructureToMemoryKHR;
12669         return true;
12670     }
12671     if (!strcmp("vkCmdCopyMemoryToAccelerationStructureKHR", name)) {
12672         *addr = (void *)CmdCopyMemoryToAccelerationStructureKHR;
12673         return true;
12674     }
12675     if (!strcmp("vkGetAccelerationStructureDeviceAddressKHR", name)) {
12676         *addr = (void *)GetAccelerationStructureDeviceAddressKHR;
12677         return true;
12678     }
12679     if (!strcmp("vkCmdWriteAccelerationStructuresPropertiesKHR", name)) {
12680         *addr = (void *)CmdWriteAccelerationStructuresPropertiesKHR;
12681         return true;
12682     }
12683     if (!strcmp("vkGetDeviceAccelerationStructureCompatibilityKHR", name)) {
12684         *addr = (void *)GetDeviceAccelerationStructureCompatibilityKHR;
12685         return true;
12686     }
12687     if (!strcmp("vkGetAccelerationStructureBuildSizesKHR", name)) {
12688         *addr = (void *)GetAccelerationStructureBuildSizesKHR;
12689         return true;
12690     }
12691 
12692     // ---- VK_KHR_ray_tracing_pipeline extension commands
12693     if (!strcmp("vkCmdTraceRaysKHR", name)) {
12694         *addr = (void *)CmdTraceRaysKHR;
12695         return true;
12696     }
12697     if (!strcmp("vkCreateRayTracingPipelinesKHR", name)) {
12698         *addr = (void *)CreateRayTracingPipelinesKHR;
12699         return true;
12700     }
12701     if (!strcmp("vkGetRayTracingCaptureReplayShaderGroupHandlesKHR", name)) {
12702         *addr = (void *)GetRayTracingCaptureReplayShaderGroupHandlesKHR;
12703         return true;
12704     }
12705     if (!strcmp("vkCmdTraceRaysIndirectKHR", name)) {
12706         *addr = (void *)CmdTraceRaysIndirectKHR;
12707         return true;
12708     }
12709     if (!strcmp("vkGetRayTracingShaderGroupStackSizeKHR", name)) {
12710         *addr = (void *)GetRayTracingShaderGroupStackSizeKHR;
12711         return true;
12712     }
12713     if (!strcmp("vkCmdSetRayTracingPipelineStackSizeKHR", name)) {
12714         *addr = (void *)CmdSetRayTracingPipelineStackSizeKHR;
12715         return true;
12716     }
12717 
12718     // ---- VK_EXT_mesh_shader extension commands
12719     if (!strcmp("vkCmdDrawMeshTasksEXT", name)) {
12720         *addr = (void *)CmdDrawMeshTasksEXT;
12721         return true;
12722     }
12723     if (!strcmp("vkCmdDrawMeshTasksIndirectEXT", name)) {
12724         *addr = (void *)CmdDrawMeshTasksIndirectEXT;
12725         return true;
12726     }
12727     if (!strcmp("vkCmdDrawMeshTasksIndirectCountEXT", name)) {
12728         *addr = (void *)CmdDrawMeshTasksIndirectCountEXT;
12729         return true;
12730     }
12731 
12732     // ---- VK_OHOS_native_buffer extension commands
12733 #ifdef VK_USE_PLATFORM_OHOS
12734     if (!strcmp("vkGetSwapchainGrallocUsageOHOS", name)) {
12735         *addr = (void *)GetSwapchainGrallocUsageOHOS;
12736         return true;
12737     }
12738 #endif // VK_USE_PLATFORM_OHOS
12739 #ifdef VK_USE_PLATFORM_OHOS
12740     if (!strcmp("vkAcquireImageOHOS", name)) {
12741         *addr = (void *)AcquireImageOHOS;
12742         return true;
12743     }
12744 #endif // VK_USE_PLATFORM_OHOS
12745 #ifdef VK_USE_PLATFORM_OHOS
12746     if (!strcmp("vkQueueSignalReleaseImageOHOS", name)) {
12747         *addr = (void *)QueueSignalReleaseImageOHOS;
12748         return true;
12749     }
12750 #endif // VK_USE_PLATFORM_OHOS
12751 
12752     // ---- VK_OHOS_external_memory extension commands
12753 #ifdef VK_USE_PLATFORM_OHOS
12754     if (!strcmp("vkGetNativeBufferPropertiesOHOS", name)) {
12755         *addr = (void *)vkGetNativeBufferPropertiesOHOS;
12756         return true;
12757     }
12758 #endif // VK_USE_PLATFORM_OHOS
12759 #ifdef VK_USE_PLATFORM_OHOS
12760     if (!strcmp("vkGetMemoryNativeBufferOHOS", name)) {
12761         *addr = (void *)vkGetMemoryNativeBufferOHOS;
12762         return true;
12763     }
12764 #endif // VK_USE_PLATFORM_OHOS
12765 
12766    return false;
12767 }
12768 
12769 // 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)12770 void extensions_create_instance(struct loader_instance *ptr_instance, const VkInstanceCreateInfo *pCreateInfo) {
12771     for (uint32_t i = 0; i < pCreateInfo->enabledExtensionCount; i++) {
12772 
12773     // ---- VK_KHR_get_physical_device_properties2 extension commands
12774         if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME)) {
12775             ptr_instance->enabled_known_extensions.khr_get_physical_device_properties2 = 1;
12776 
12777     // ---- VK_KHR_device_group_creation extension commands
12778         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME)) {
12779             ptr_instance->enabled_known_extensions.khr_device_group_creation = 1;
12780 
12781     // ---- VK_KHR_external_memory_capabilities extension commands
12782         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME)) {
12783             ptr_instance->enabled_known_extensions.khr_external_memory_capabilities = 1;
12784 
12785     // ---- VK_KHR_external_semaphore_capabilities extension commands
12786         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME)) {
12787             ptr_instance->enabled_known_extensions.khr_external_semaphore_capabilities = 1;
12788 
12789     // ---- VK_KHR_external_fence_capabilities extension commands
12790         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME)) {
12791             ptr_instance->enabled_known_extensions.khr_external_fence_capabilities = 1;
12792 
12793     // ---- VK_NV_external_memory_capabilities extension commands
12794         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME)) {
12795             ptr_instance->enabled_known_extensions.nv_external_memory_capabilities = 1;
12796 
12797     // ---- VK_EXT_direct_mode_display extension commands
12798         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME)) {
12799             ptr_instance->enabled_known_extensions.ext_direct_mode_display = 1;
12800 
12801     // ---- VK_EXT_acquire_xlib_display extension commands
12802 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
12803         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME)) {
12804             ptr_instance->enabled_known_extensions.ext_acquire_xlib_display = 1;
12805 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
12806 
12807     // ---- VK_EXT_display_surface_counter extension commands
12808         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME)) {
12809             ptr_instance->enabled_known_extensions.ext_display_surface_counter = 1;
12810 
12811     // ---- VK_EXT_debug_utils extension commands
12812         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_DEBUG_UTILS_EXTENSION_NAME)) {
12813             ptr_instance->enabled_known_extensions.ext_debug_utils = 1;
12814 
12815     // ---- VK_EXT_acquire_drm_display extension commands
12816         } else if (0 == strcmp(pCreateInfo->ppEnabledExtensionNames[i], VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME)) {
12817             ptr_instance->enabled_known_extensions.ext_acquire_drm_display = 1;
12818         }
12819     }
12820 }
12821 
12822 // Some device commands still need a terminator because the loader needs to unwrap something about them.
12823 // In many cases, the item needing unwrapping is a VkPhysicalDevice or VkSurfaceKHR object.  But there may be other items
12824 // in the future.
get_extension_device_proc_terminator(struct loader_device * dev,const char * name,bool * found_name)12825 PFN_vkVoidFunction get_extension_device_proc_terminator(struct loader_device *dev, const char *name, bool* found_name) {
12826     *found_name = false;
12827     if (!name || name[0] != 'v' || name[1] != 'k') {
12828         return NULL;
12829     }
12830     name += 2;
12831     // ---- VK_KHR_swapchain extension commands
12832     if (!strcmp(name, "CreateSwapchainKHR")) {
12833         *found_name = true;
12834         return dev->driver_extensions.khr_swapchain_enabled ?
12835             (PFN_vkVoidFunction)terminator_CreateSwapchainKHR : NULL;
12836     }
12837     if (!strcmp(name, "GetDeviceGroupSurfacePresentModesKHR")) {
12838         *found_name = true;
12839         return dev->driver_extensions.khr_swapchain_enabled ?
12840             (PFN_vkVoidFunction)terminator_GetDeviceGroupSurfacePresentModesKHR : NULL;
12841     }
12842     // ---- VK_KHR_display_swapchain extension commands
12843     if (!strcmp(name, "CreateSharedSwapchainsKHR")) {
12844         *found_name = true;
12845         return dev->driver_extensions.khr_display_swapchain_enabled ?
12846             (PFN_vkVoidFunction)terminator_CreateSharedSwapchainsKHR : NULL;
12847     }
12848     // ---- VK_EXT_debug_marker extension commands
12849     if (!strcmp(name, "DebugMarkerSetObjectTagEXT")) {
12850         *found_name = true;
12851         return dev->driver_extensions.ext_debug_marker_enabled ?
12852             (PFN_vkVoidFunction)terminator_DebugMarkerSetObjectTagEXT : NULL;
12853     }
12854     if (!strcmp(name, "DebugMarkerSetObjectNameEXT")) {
12855         *found_name = true;
12856         return dev->driver_extensions.ext_debug_marker_enabled ?
12857             (PFN_vkVoidFunction)terminator_DebugMarkerSetObjectNameEXT : NULL;
12858     }
12859     // ---- VK_EXT_debug_utils extension commands
12860     if (!strcmp(name, "SetDebugUtilsObjectNameEXT")) {
12861         *found_name = true;
12862         return dev->driver_extensions.ext_debug_utils_enabled ?
12863             (PFN_vkVoidFunction)terminator_SetDebugUtilsObjectNameEXT : NULL;
12864     }
12865     if (!strcmp(name, "SetDebugUtilsObjectTagEXT")) {
12866         *found_name = true;
12867         return dev->driver_extensions.ext_debug_utils_enabled ?
12868             (PFN_vkVoidFunction)terminator_SetDebugUtilsObjectTagEXT : NULL;
12869     }
12870     if (!strcmp(name, "QueueBeginDebugUtilsLabelEXT")) {
12871         *found_name = true;
12872         return dev->driver_extensions.ext_debug_utils_enabled ?
12873             (PFN_vkVoidFunction)terminator_QueueBeginDebugUtilsLabelEXT : NULL;
12874     }
12875     if (!strcmp(name, "QueueEndDebugUtilsLabelEXT")) {
12876         *found_name = true;
12877         return dev->driver_extensions.ext_debug_utils_enabled ?
12878             (PFN_vkVoidFunction)terminator_QueueEndDebugUtilsLabelEXT : NULL;
12879     }
12880     if (!strcmp(name, "QueueInsertDebugUtilsLabelEXT")) {
12881         *found_name = true;
12882         return dev->driver_extensions.ext_debug_utils_enabled ?
12883             (PFN_vkVoidFunction)terminator_QueueInsertDebugUtilsLabelEXT : NULL;
12884     }
12885     if (!strcmp(name, "CmdBeginDebugUtilsLabelEXT")) {
12886         *found_name = true;
12887         return dev->driver_extensions.ext_debug_utils_enabled ?
12888             (PFN_vkVoidFunction)terminator_CmdBeginDebugUtilsLabelEXT : NULL;
12889     }
12890     if (!strcmp(name, "CmdEndDebugUtilsLabelEXT")) {
12891         *found_name = true;
12892         return dev->driver_extensions.ext_debug_utils_enabled ?
12893             (PFN_vkVoidFunction)terminator_CmdEndDebugUtilsLabelEXT : NULL;
12894     }
12895     if (!strcmp(name, "CmdInsertDebugUtilsLabelEXT")) {
12896         *found_name = true;
12897         return dev->driver_extensions.ext_debug_utils_enabled ?
12898             (PFN_vkVoidFunction)terminator_CmdInsertDebugUtilsLabelEXT : NULL;
12899     }
12900 #if defined(VK_USE_PLATFORM_WIN32_KHR)
12901     // ---- VK_EXT_full_screen_exclusive extension commands
12902     if (!strcmp(name, "GetDeviceGroupSurfacePresentModes2EXT")) {
12903         *found_name = true;
12904         return (dev->driver_extensions.ext_full_screen_exclusive_enabled && (dev->driver_extensions.khr_device_group_enabled || dev->driver_extensions.version_1_1_enabled)) ?
12905             (PFN_vkVoidFunction)terminator_GetDeviceGroupSurfacePresentModes2EXT : NULL;
12906     }
12907 #endif // VK_USE_PLATFORM_WIN32_KHR
12908     return NULL;
12909 }
12910 
12911 // This table contains the loader's instance dispatch table, which contains
12912 // default functions if no instance layers are activated.  This contains
12913 // pointers to "terminator functions".
12914 const VkLayerInstanceDispatchTable instance_disp = {
12915 
12916     // ---- Core Vulkan 1.0 commands
12917     .DestroyInstance = terminator_DestroyInstance,
12918     .EnumeratePhysicalDevices = terminator_EnumeratePhysicalDevices,
12919     .GetPhysicalDeviceFeatures = terminator_GetPhysicalDeviceFeatures,
12920     .GetPhysicalDeviceFormatProperties = terminator_GetPhysicalDeviceFormatProperties,
12921     .GetPhysicalDeviceImageFormatProperties = terminator_GetPhysicalDeviceImageFormatProperties,
12922     .GetPhysicalDeviceProperties = terminator_GetPhysicalDeviceProperties,
12923     .GetPhysicalDeviceQueueFamilyProperties = terminator_GetPhysicalDeviceQueueFamilyProperties,
12924     .GetPhysicalDeviceMemoryProperties = terminator_GetPhysicalDeviceMemoryProperties,
12925     .GetInstanceProcAddr = vkGetInstanceProcAddr,
12926     .EnumerateDeviceExtensionProperties = terminator_EnumerateDeviceExtensionProperties,
12927     .EnumerateDeviceLayerProperties = terminator_EnumerateDeviceLayerProperties,
12928     .GetPhysicalDeviceSparseImageFormatProperties = terminator_GetPhysicalDeviceSparseImageFormatProperties,
12929 
12930     // ---- Core Vulkan 1.1 commands
12931     .EnumeratePhysicalDeviceGroups = terminator_EnumeratePhysicalDeviceGroups,
12932     .GetPhysicalDeviceFeatures2 = terminator_GetPhysicalDeviceFeatures2,
12933     .GetPhysicalDeviceProperties2 = terminator_GetPhysicalDeviceProperties2,
12934     .GetPhysicalDeviceFormatProperties2 = terminator_GetPhysicalDeviceFormatProperties2,
12935     .GetPhysicalDeviceImageFormatProperties2 = terminator_GetPhysicalDeviceImageFormatProperties2,
12936     .GetPhysicalDeviceQueueFamilyProperties2 = terminator_GetPhysicalDeviceQueueFamilyProperties2,
12937     .GetPhysicalDeviceMemoryProperties2 = terminator_GetPhysicalDeviceMemoryProperties2,
12938     .GetPhysicalDeviceSparseImageFormatProperties2 = terminator_GetPhysicalDeviceSparseImageFormatProperties2,
12939     .GetPhysicalDeviceExternalBufferProperties = terminator_GetPhysicalDeviceExternalBufferProperties,
12940     .GetPhysicalDeviceExternalFenceProperties = terminator_GetPhysicalDeviceExternalFenceProperties,
12941     .GetPhysicalDeviceExternalSemaphoreProperties = terminator_GetPhysicalDeviceExternalSemaphoreProperties,
12942 
12943     // ---- Core Vulkan 1.3 commands
12944     .GetPhysicalDeviceToolProperties = terminator_GetPhysicalDeviceToolProperties,
12945 
12946     // ---- VK_KHR_surface extension commands
12947     .DestroySurfaceKHR = terminator_DestroySurfaceKHR,
12948     .GetPhysicalDeviceSurfaceSupportKHR = terminator_GetPhysicalDeviceSurfaceSupportKHR,
12949     .GetPhysicalDeviceSurfaceCapabilitiesKHR = terminator_GetPhysicalDeviceSurfaceCapabilitiesKHR,
12950     .GetPhysicalDeviceSurfaceFormatsKHR = terminator_GetPhysicalDeviceSurfaceFormatsKHR,
12951     .GetPhysicalDeviceSurfacePresentModesKHR = terminator_GetPhysicalDeviceSurfacePresentModesKHR,
12952 
12953     // ---- VK_KHR_swapchain extension commands
12954     .GetPhysicalDevicePresentRectanglesKHR = terminator_GetPhysicalDevicePresentRectanglesKHR,
12955 
12956     // ---- VK_KHR_display extension commands
12957     .GetPhysicalDeviceDisplayPropertiesKHR = terminator_GetPhysicalDeviceDisplayPropertiesKHR,
12958     .GetPhysicalDeviceDisplayPlanePropertiesKHR = terminator_GetPhysicalDeviceDisplayPlanePropertiesKHR,
12959     .GetDisplayPlaneSupportedDisplaysKHR = terminator_GetDisplayPlaneSupportedDisplaysKHR,
12960     .GetDisplayModePropertiesKHR = terminator_GetDisplayModePropertiesKHR,
12961     .CreateDisplayModeKHR = terminator_CreateDisplayModeKHR,
12962     .GetDisplayPlaneCapabilitiesKHR = terminator_GetDisplayPlaneCapabilitiesKHR,
12963     .CreateDisplayPlaneSurfaceKHR = terminator_CreateDisplayPlaneSurfaceKHR,
12964 
12965     // ---- VK_KHR_xlib_surface extension commands
12966 #if defined(VK_USE_PLATFORM_XLIB_KHR)
12967     .CreateXlibSurfaceKHR = terminator_CreateXlibSurfaceKHR,
12968 #endif // VK_USE_PLATFORM_XLIB_KHR
12969 #if defined(VK_USE_PLATFORM_XLIB_KHR)
12970     .GetPhysicalDeviceXlibPresentationSupportKHR = terminator_GetPhysicalDeviceXlibPresentationSupportKHR,
12971 #endif // VK_USE_PLATFORM_XLIB_KHR
12972 
12973     // ---- VK_KHR_xcb_surface extension commands
12974 #if defined(VK_USE_PLATFORM_XCB_KHR)
12975     .CreateXcbSurfaceKHR = terminator_CreateXcbSurfaceKHR,
12976 #endif // VK_USE_PLATFORM_XCB_KHR
12977 #if defined(VK_USE_PLATFORM_XCB_KHR)
12978     .GetPhysicalDeviceXcbPresentationSupportKHR = terminator_GetPhysicalDeviceXcbPresentationSupportKHR,
12979 #endif // VK_USE_PLATFORM_XCB_KHR
12980 
12981     // ---- VK_KHR_wayland_surface extension commands
12982 #if defined(VK_USE_PLATFORM_WAYLAND_KHR)
12983     .CreateWaylandSurfaceKHR = terminator_CreateWaylandSurfaceKHR,
12984 #endif // VK_USE_PLATFORM_WAYLAND_KHR
12985 #if defined(VK_USE_PLATFORM_WAYLAND_KHR)
12986     .GetPhysicalDeviceWaylandPresentationSupportKHR = terminator_GetPhysicalDeviceWaylandPresentationSupportKHR,
12987 #endif // VK_USE_PLATFORM_WAYLAND_KHR
12988 
12989     // ---- VK_KHR_android_surface extension commands
12990 #if defined(VK_USE_PLATFORM_ANDROID_KHR)
12991     .CreateAndroidSurfaceKHR = terminator_CreateAndroidSurfaceKHR,
12992 #endif // VK_USE_PLATFORM_ANDROID_KHR
12993 
12994     // ---- VK_KHR_win32_surface extension commands
12995 #if defined(VK_USE_PLATFORM_WIN32_KHR)
12996     .CreateWin32SurfaceKHR = terminator_CreateWin32SurfaceKHR,
12997 #endif // VK_USE_PLATFORM_WIN32_KHR
12998 #if defined(VK_USE_PLATFORM_WIN32_KHR)
12999     .GetPhysicalDeviceWin32PresentationSupportKHR = terminator_GetPhysicalDeviceWin32PresentationSupportKHR,
13000 #endif // VK_USE_PLATFORM_WIN32_KHR
13001 
13002     // ---- VK_KHR_video_queue extension commands
13003     .GetPhysicalDeviceVideoCapabilitiesKHR = terminator_GetPhysicalDeviceVideoCapabilitiesKHR,
13004     .GetPhysicalDeviceVideoFormatPropertiesKHR = terminator_GetPhysicalDeviceVideoFormatPropertiesKHR,
13005 
13006     // ---- VK_KHR_get_physical_device_properties2 extension commands
13007     .GetPhysicalDeviceFeatures2KHR = terminator_GetPhysicalDeviceFeatures2,
13008     .GetPhysicalDeviceProperties2KHR = terminator_GetPhysicalDeviceProperties2,
13009     .GetPhysicalDeviceFormatProperties2KHR = terminator_GetPhysicalDeviceFormatProperties2,
13010     .GetPhysicalDeviceImageFormatProperties2KHR = terminator_GetPhysicalDeviceImageFormatProperties2,
13011     .GetPhysicalDeviceQueueFamilyProperties2KHR = terminator_GetPhysicalDeviceQueueFamilyProperties2,
13012     .GetPhysicalDeviceMemoryProperties2KHR = terminator_GetPhysicalDeviceMemoryProperties2,
13013     .GetPhysicalDeviceSparseImageFormatProperties2KHR = terminator_GetPhysicalDeviceSparseImageFormatProperties2,
13014 
13015     // ---- VK_KHR_device_group_creation extension commands
13016     .EnumeratePhysicalDeviceGroupsKHR = terminator_EnumeratePhysicalDeviceGroups,
13017 
13018     // ---- VK_KHR_external_memory_capabilities extension commands
13019     .GetPhysicalDeviceExternalBufferPropertiesKHR = terminator_GetPhysicalDeviceExternalBufferProperties,
13020 
13021     // ---- VK_KHR_external_semaphore_capabilities extension commands
13022     .GetPhysicalDeviceExternalSemaphorePropertiesKHR = terminator_GetPhysicalDeviceExternalSemaphoreProperties,
13023 
13024     // ---- VK_KHR_external_fence_capabilities extension commands
13025     .GetPhysicalDeviceExternalFencePropertiesKHR = terminator_GetPhysicalDeviceExternalFenceProperties,
13026 
13027     // ---- VK_KHR_performance_query extension commands
13028     .EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = terminator_EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR,
13029     .GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = terminator_GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR,
13030 
13031     // ---- VK_KHR_get_surface_capabilities2 extension commands
13032     .GetPhysicalDeviceSurfaceCapabilities2KHR = terminator_GetPhysicalDeviceSurfaceCapabilities2KHR,
13033     .GetPhysicalDeviceSurfaceFormats2KHR = terminator_GetPhysicalDeviceSurfaceFormats2KHR,
13034 
13035     // ---- VK_KHR_get_display_properties2 extension commands
13036     .GetPhysicalDeviceDisplayProperties2KHR = terminator_GetPhysicalDeviceDisplayProperties2KHR,
13037     .GetPhysicalDeviceDisplayPlaneProperties2KHR = terminator_GetPhysicalDeviceDisplayPlaneProperties2KHR,
13038     .GetDisplayModeProperties2KHR = terminator_GetDisplayModeProperties2KHR,
13039     .GetDisplayPlaneCapabilities2KHR = terminator_GetDisplayPlaneCapabilities2KHR,
13040 
13041     // ---- VK_KHR_fragment_shading_rate extension commands
13042     .GetPhysicalDeviceFragmentShadingRatesKHR = terminator_GetPhysicalDeviceFragmentShadingRatesKHR,
13043 
13044     // ---- VK_KHR_video_encode_queue extension commands
13045     .GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR = terminator_GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR,
13046 
13047     // ---- VK_KHR_cooperative_matrix extension commands
13048     .GetPhysicalDeviceCooperativeMatrixPropertiesKHR = terminator_GetPhysicalDeviceCooperativeMatrixPropertiesKHR,
13049 
13050     // ---- VK_KHR_calibrated_timestamps extension commands
13051     .GetPhysicalDeviceCalibrateableTimeDomainsKHR = terminator_GetPhysicalDeviceCalibrateableTimeDomainsKHR,
13052 
13053     // ---- VK_EXT_debug_report extension commands
13054     .CreateDebugReportCallbackEXT = terminator_CreateDebugReportCallbackEXT,
13055     .DestroyDebugReportCallbackEXT = terminator_DestroyDebugReportCallbackEXT,
13056     .DebugReportMessageEXT = terminator_DebugReportMessageEXT,
13057 
13058     // ---- VK_GGP_stream_descriptor_surface extension commands
13059 #if defined(VK_USE_PLATFORM_GGP)
13060     .CreateStreamDescriptorSurfaceGGP = terminator_CreateStreamDescriptorSurfaceGGP,
13061 #endif // VK_USE_PLATFORM_GGP
13062 
13063     // ---- VK_NV_external_memory_capabilities extension commands
13064     .GetPhysicalDeviceExternalImageFormatPropertiesNV = terminator_GetPhysicalDeviceExternalImageFormatPropertiesNV,
13065 
13066     // ---- VK_NN_vi_surface extension commands
13067 #if defined(VK_USE_PLATFORM_VI_NN)
13068     .CreateViSurfaceNN = terminator_CreateViSurfaceNN,
13069 #endif // VK_USE_PLATFORM_VI_NN
13070 
13071     // ---- VK_EXT_direct_mode_display extension commands
13072     .ReleaseDisplayEXT = terminator_ReleaseDisplayEXT,
13073 
13074     // ---- VK_EXT_acquire_xlib_display extension commands
13075 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
13076     .AcquireXlibDisplayEXT = terminator_AcquireXlibDisplayEXT,
13077 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
13078 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
13079     .GetRandROutputDisplayEXT = terminator_GetRandROutputDisplayEXT,
13080 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
13081 
13082     // ---- VK_EXT_display_surface_counter extension commands
13083     .GetPhysicalDeviceSurfaceCapabilities2EXT = terminator_GetPhysicalDeviceSurfaceCapabilities2EXT,
13084 
13085     // ---- VK_MVK_ios_surface extension commands
13086 #if defined(VK_USE_PLATFORM_IOS_MVK)
13087     .CreateIOSSurfaceMVK = terminator_CreateIOSSurfaceMVK,
13088 #endif // VK_USE_PLATFORM_IOS_MVK
13089 
13090     // ---- VK_MVK_macos_surface extension commands
13091 #if defined(VK_USE_PLATFORM_MACOS_MVK)
13092     .CreateMacOSSurfaceMVK = terminator_CreateMacOSSurfaceMVK,
13093 #endif // VK_USE_PLATFORM_MACOS_MVK
13094 
13095     // ---- VK_EXT_debug_utils extension commands
13096     .CreateDebugUtilsMessengerEXT = terminator_CreateDebugUtilsMessengerEXT,
13097     .DestroyDebugUtilsMessengerEXT = terminator_DestroyDebugUtilsMessengerEXT,
13098     .SubmitDebugUtilsMessageEXT = terminator_SubmitDebugUtilsMessageEXT,
13099 
13100     // ---- VK_EXT_sample_locations extension commands
13101     .GetPhysicalDeviceMultisamplePropertiesEXT = terminator_GetPhysicalDeviceMultisamplePropertiesEXT,
13102 
13103     // ---- VK_EXT_calibrated_timestamps extension commands
13104     .GetPhysicalDeviceCalibrateableTimeDomainsEXT = terminator_GetPhysicalDeviceCalibrateableTimeDomainsEXT,
13105 
13106     // ---- VK_FUCHSIA_imagepipe_surface extension commands
13107 #if defined(VK_USE_PLATFORM_FUCHSIA)
13108     .CreateImagePipeSurfaceFUCHSIA = terminator_CreateImagePipeSurfaceFUCHSIA,
13109 #endif // VK_USE_PLATFORM_FUCHSIA
13110 
13111     // ---- VK_EXT_metal_surface extension commands
13112 #if defined(VK_USE_PLATFORM_METAL_EXT)
13113     .CreateMetalSurfaceEXT = terminator_CreateMetalSurfaceEXT,
13114 #endif // VK_USE_PLATFORM_METAL_EXT
13115 
13116     // ---- VK_EXT_tooling_info extension commands
13117     .GetPhysicalDeviceToolPropertiesEXT = terminator_GetPhysicalDeviceToolPropertiesEXT,
13118 
13119     // ---- VK_NV_cooperative_matrix extension commands
13120     .GetPhysicalDeviceCooperativeMatrixPropertiesNV = terminator_GetPhysicalDeviceCooperativeMatrixPropertiesNV,
13121 
13122     // ---- VK_NV_coverage_reduction_mode extension commands
13123     .GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = terminator_GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV,
13124 
13125     // ---- VK_EXT_full_screen_exclusive extension commands
13126 #if defined(VK_USE_PLATFORM_WIN32_KHR)
13127     .GetPhysicalDeviceSurfacePresentModes2EXT = terminator_GetPhysicalDeviceSurfacePresentModes2EXT,
13128 #endif // VK_USE_PLATFORM_WIN32_KHR
13129 
13130     // ---- VK_EXT_headless_surface extension commands
13131     .CreateHeadlessSurfaceEXT = terminator_CreateHeadlessSurfaceEXT,
13132 
13133     // ---- VK_EXT_acquire_drm_display extension commands
13134     .AcquireDrmDisplayEXT = terminator_AcquireDrmDisplayEXT,
13135     .GetDrmDisplayEXT = terminator_GetDrmDisplayEXT,
13136 
13137     // ---- VK_NV_acquire_winrt_display extension commands
13138 #if defined(VK_USE_PLATFORM_WIN32_KHR)
13139     .AcquireWinrtDisplayNV = terminator_AcquireWinrtDisplayNV,
13140 #endif // VK_USE_PLATFORM_WIN32_KHR
13141 #if defined(VK_USE_PLATFORM_WIN32_KHR)
13142     .GetWinrtDisplayNV = terminator_GetWinrtDisplayNV,
13143 #endif // VK_USE_PLATFORM_WIN32_KHR
13144 
13145     // ---- VK_EXT_directfb_surface extension commands
13146 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
13147     .CreateDirectFBSurfaceEXT = terminator_CreateDirectFBSurfaceEXT,
13148 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
13149 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
13150     .GetPhysicalDeviceDirectFBPresentationSupportEXT = terminator_GetPhysicalDeviceDirectFBPresentationSupportEXT,
13151 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
13152 
13153     // ---- VK_QNX_screen_surface extension commands
13154 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
13155     .CreateScreenSurfaceQNX = terminator_CreateScreenSurfaceQNX,
13156 #endif // VK_USE_PLATFORM_SCREEN_QNX
13157 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
13158     .GetPhysicalDeviceScreenPresentationSupportQNX = terminator_GetPhysicalDeviceScreenPresentationSupportQNX,
13159 #endif // VK_USE_PLATFORM_SCREEN_QNX
13160 
13161     // ---- VK_NV_optical_flow extension commands
13162     .GetPhysicalDeviceOpticalFlowImageFormatsNV = terminator_GetPhysicalDeviceOpticalFlowImageFormatsNV,
13163 
13164 #if defined(VK_USE_PLATFORM_OHOS)
13165     .CreateSurfaceOHOS = terminator_CreateSurfaceOHOS,
13166 #endif // VK_USE_PLATFORM_OHOS
13167 
13168     // ---- VK_NV_cooperative_vector extension commands
13169     .GetPhysicalDeviceCooperativeVectorPropertiesNV = terminator_GetPhysicalDeviceCooperativeVectorPropertiesNV,
13170 
13171     // ---- VK_NV_cooperative_matrix2 extension commands
13172     .GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV = terminator_GetPhysicalDeviceCooperativeMatrixFlexibleDimensionsPropertiesNV,
13173 };
13174 
13175 // A null-terminated list of all of the instance extensions supported by the loader.
13176 // If an instance extension name is not in this list, but it is exported by one or more of the
13177 // ICDs detected by the loader, then the extension name not in the list will be filtered out
13178 // before passing the list of extensions to the application.
13179 const char *const LOADER_INSTANCE_EXTENSIONS[] = {
13180                                                   VK_KHR_SURFACE_EXTENSION_NAME,
13181                                                   VK_KHR_DISPLAY_EXTENSION_NAME,
13182 #if defined(VK_USE_PLATFORM_XLIB_KHR)
13183                                                   VK_KHR_XLIB_SURFACE_EXTENSION_NAME,
13184 #endif // VK_USE_PLATFORM_XLIB_KHR
13185 #if defined(VK_USE_PLATFORM_XCB_KHR)
13186                                                   VK_KHR_XCB_SURFACE_EXTENSION_NAME,
13187 #endif // VK_USE_PLATFORM_XCB_KHR
13188 #if defined(VK_USE_PLATFORM_WAYLAND_KHR)
13189                                                   VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME,
13190 #endif // VK_USE_PLATFORM_WAYLAND_KHR
13191 #if defined(VK_USE_PLATFORM_WIN32_KHR)
13192                                                   VK_KHR_WIN32_SURFACE_EXTENSION_NAME,
13193 #endif // VK_USE_PLATFORM_WIN32_KHR
13194                                                   VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME,
13195                                                   VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME,
13196                                                   VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
13197                                                   VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME,
13198                                                   VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME,
13199                                                   VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME,
13200                                                   VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME,
13201                                                   VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME,
13202                                                   VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME,
13203                                                   VK_EXT_DEBUG_REPORT_EXTENSION_NAME,
13204 #if defined(VK_USE_PLATFORM_GGP)
13205                                                   VK_GGP_STREAM_DESCRIPTOR_SURFACE_EXTENSION_NAME,
13206 #endif // VK_USE_PLATFORM_GGP
13207                                                   VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
13208                                                   VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME,
13209 #if defined(VK_USE_PLATFORM_VI_NN)
13210                                                   VK_NN_VI_SURFACE_EXTENSION_NAME,
13211 #endif // VK_USE_PLATFORM_VI_NN
13212                                                   VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME,
13213 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT)
13214                                                   VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME,
13215 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT
13216                                                   VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME,
13217                                                   VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME,
13218 #if defined(VK_USE_PLATFORM_IOS_MVK)
13219                                                   VK_MVK_IOS_SURFACE_EXTENSION_NAME,
13220 #endif // VK_USE_PLATFORM_IOS_MVK
13221 #if defined(VK_USE_PLATFORM_MACOS_MVK)
13222                                                   VK_MVK_MACOS_SURFACE_EXTENSION_NAME,
13223 #endif // VK_USE_PLATFORM_MACOS_MVK
13224                                                   VK_EXT_DEBUG_UTILS_EXTENSION_NAME,
13225 #if defined(VK_USE_PLATFORM_FUCHSIA)
13226                                                   VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME,
13227 #endif // VK_USE_PLATFORM_FUCHSIA
13228 #if defined(VK_USE_PLATFORM_METAL_EXT)
13229                                                   VK_EXT_METAL_SURFACE_EXTENSION_NAME,
13230 #endif // VK_USE_PLATFORM_METAL_EXT
13231                                                   VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME,
13232                                                   VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME,
13233                                                   VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME,
13234                                                   VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME,
13235 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT)
13236                                                   VK_EXT_DIRECTFB_SURFACE_EXTENSION_NAME,
13237 #endif // VK_USE_PLATFORM_DIRECTFB_EXT
13238 #if defined(VK_USE_PLATFORM_SCREEN_QNX)
13239                                                   VK_QNX_SCREEN_SURFACE_EXTENSION_NAME,
13240 #endif // VK_USE_PLATFORM_SCREEN_QNX
13241                                                   VK_GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME,
13242                                                   VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME,
13243                                                   VK_EXT_LAYER_SETTINGS_EXTENSION_NAME,
13244                                                   VK_NV_DISPLAY_STEREO_EXTENSION_NAME,
13245 #if defined(VK_USE_PLATFORM_OHOS)
13246                                                   VK_OHOS_SURFACE_EXTENSION_NAME,
13247 #endif // VK_USE_PLATFORM_OHOS
13248                                                   NULL };
13249 // clang-format on
13250