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 #pragma once 29 30 // Structures defined externally, but used here 31 struct loader_instance; 32 struct loader_device; 33 struct loader_icd_term; 34 struct loader_dev_dispatch_table; 35 36 // Device extension error function 37 VKAPI_ATTR VkResult VKAPI_CALL vkDevExtError(VkDevice dev); 38 39 // Extension interception for vkGetInstanceProcAddr function, so we can return 40 // the appropriate information for any instance extensions we know about. 41 bool extension_instance_gpa(struct loader_instance *ptr_instance, const char *name, void **addr); 42 43 // Extension interception for vkCreateInstance function, so we can properly 44 // detect and enable any instance extension information for extensions we know 45 // about. 46 void extensions_create_instance(struct loader_instance *ptr_instance, const VkInstanceCreateInfo *pCreateInfo); 47 48 // Extension interception for vkGetDeviceProcAddr function, so we can return 49 // an appropriate terminator if this is one of those few device commands requiring 50 // a terminator. 51 PFN_vkVoidFunction get_extension_device_proc_terminator(struct loader_device *dev, const char *name, bool* found_name); 52 53 // Dispatch table properly filled in with appropriate terminators for the 54 // supported extensions. 55 extern const VkLayerInstanceDispatchTable instance_disp; 56 57 // Array of extension strings for instance extensions we support. 58 extern const char *const LOADER_INSTANCE_EXTENSIONS[]; 59 60 VKAPI_ATTR bool VKAPI_CALL loader_icd_init_entries(struct loader_instance* inst, struct loader_icd_term *icd_term); 61 62 // Init Device function pointer dispatch table with core commands 63 VKAPI_ATTR void VKAPI_CALL loader_init_device_dispatch_table(struct loader_dev_dispatch_table *dev_table, PFN_vkGetDeviceProcAddr gpa, 64 VkDevice dev); 65 66 // Init Device function pointer dispatch table with extension commands 67 VKAPI_ATTR void VKAPI_CALL loader_init_device_extension_dispatch_table(struct loader_dev_dispatch_table *dev_table, 68 PFN_vkGetInstanceProcAddr gipa, 69 PFN_vkGetDeviceProcAddr gdpa, 70 VkInstance inst, 71 VkDevice dev); 72 73 // Init Instance function pointer dispatch table with core commands 74 VKAPI_ATTR void VKAPI_CALL loader_init_instance_core_dispatch_table(VkLayerInstanceDispatchTable *table, PFN_vkGetInstanceProcAddr gpa, 75 VkInstance inst); 76 77 // Init Instance function pointer dispatch table with core commands 78 VKAPI_ATTR void VKAPI_CALL loader_init_instance_extension_dispatch_table(VkLayerInstanceDispatchTable *table, PFN_vkGetInstanceProcAddr gpa, 79 VkInstance inst); 80 81 // Device command lookup function 82 VKAPI_ATTR void* VKAPI_CALL loader_lookup_device_dispatch_table(const VkLayerDispatchTable *table, const char *name, bool* name_found); 83 84 // Instance command lookup function 85 VKAPI_ATTR void* VKAPI_CALL loader_lookup_instance_dispatch_table(const VkLayerInstanceDispatchTable *table, const char *name, 86 bool *found_name); 87 88 // Loader core instance terminators 89 VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateInstance( 90 const VkInstanceCreateInfo* pCreateInfo, 91 const VkAllocationCallbacks* pAllocator, 92 VkInstance* pInstance); 93 VKAPI_ATTR void VKAPI_CALL terminator_DestroyInstance( 94 VkInstance instance, 95 const VkAllocationCallbacks* pAllocator); 96 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDevices( 97 VkInstance instance, 98 uint32_t* pPhysicalDeviceCount, 99 VkPhysicalDevice* pPhysicalDevices); 100 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFeatures( 101 VkPhysicalDevice physicalDevice, 102 VkPhysicalDeviceFeatures* pFeatures); 103 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFormatProperties( 104 VkPhysicalDevice physicalDevice, 105 VkFormat format, 106 VkFormatProperties* pFormatProperties); 107 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceImageFormatProperties( 108 VkPhysicalDevice physicalDevice, 109 VkFormat format, 110 VkImageType type, 111 VkImageTiling tiling, 112 VkImageUsageFlags usage, 113 VkImageCreateFlags flags, 114 VkImageFormatProperties* pImageFormatProperties); 115 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceProperties( 116 VkPhysicalDevice physicalDevice, 117 VkPhysicalDeviceProperties* pProperties); 118 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceQueueFamilyProperties( 119 VkPhysicalDevice physicalDevice, 120 uint32_t* pQueueFamilyPropertyCount, 121 VkQueueFamilyProperties* pQueueFamilyProperties); 122 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceMemoryProperties( 123 VkPhysicalDevice physicalDevice, 124 VkPhysicalDeviceMemoryProperties* pMemoryProperties); 125 VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL terminator_GetInstanceProcAddr( 126 VkInstance instance, 127 const char* pName); 128 VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDevice( 129 VkPhysicalDevice physicalDevice, 130 const VkDeviceCreateInfo* pCreateInfo, 131 const VkAllocationCallbacks* pAllocator, 132 VkDevice* pDevice); 133 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateInstanceExtensionProperties( 134 const VkEnumerateInstanceExtensionPropertiesChain* chain, 135 const char* pLayerName, 136 uint32_t* pPropertyCount, 137 VkExtensionProperties* pProperties); 138 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateDeviceExtensionProperties( 139 VkPhysicalDevice physicalDevice, 140 const char* pLayerName, 141 uint32_t* pPropertyCount, 142 VkExtensionProperties* pProperties); 143 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateInstanceLayerProperties( 144 const VkEnumerateInstanceLayerPropertiesChain* chain, 145 uint32_t* pPropertyCount, 146 VkLayerProperties* pProperties); 147 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateDeviceLayerProperties( 148 VkPhysicalDevice physicalDevice, 149 uint32_t* pPropertyCount, 150 VkLayerProperties* pProperties); 151 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceSparseImageFormatProperties( 152 VkPhysicalDevice physicalDevice, 153 VkFormat format, 154 VkImageType type, 155 VkSampleCountFlagBits samples, 156 VkImageUsageFlags usage, 157 VkImageTiling tiling, 158 uint32_t* pPropertyCount, 159 VkSparseImageFormatProperties* pProperties); 160 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateInstanceVersion( 161 const VkEnumerateInstanceVersionChain* chain, 162 uint32_t* pApiVersion); 163 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDeviceGroups( 164 VkInstance instance, 165 uint32_t* pPhysicalDeviceGroupCount, 166 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); 167 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFeatures2( 168 VkPhysicalDevice physicalDevice, 169 VkPhysicalDeviceFeatures2* pFeatures); 170 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceProperties2( 171 VkPhysicalDevice physicalDevice, 172 VkPhysicalDeviceProperties2* pProperties); 173 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFormatProperties2( 174 VkPhysicalDevice physicalDevice, 175 VkFormat format, 176 VkFormatProperties2* pFormatProperties); 177 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceImageFormatProperties2( 178 VkPhysicalDevice physicalDevice, 179 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, 180 VkImageFormatProperties2* pImageFormatProperties); 181 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceQueueFamilyProperties2( 182 VkPhysicalDevice physicalDevice, 183 uint32_t* pQueueFamilyPropertyCount, 184 VkQueueFamilyProperties2* pQueueFamilyProperties); 185 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceMemoryProperties2( 186 VkPhysicalDevice physicalDevice, 187 VkPhysicalDeviceMemoryProperties2* pMemoryProperties); 188 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceSparseImageFormatProperties2( 189 VkPhysicalDevice physicalDevice, 190 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, 191 uint32_t* pPropertyCount, 192 VkSparseImageFormatProperties2* pProperties); 193 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceExternalBufferProperties( 194 VkPhysicalDevice physicalDevice, 195 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, 196 VkExternalBufferProperties* pExternalBufferProperties); 197 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceExternalFenceProperties( 198 VkPhysicalDevice physicalDevice, 199 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, 200 VkExternalFenceProperties* pExternalFenceProperties); 201 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceExternalSemaphoreProperties( 202 VkPhysicalDevice physicalDevice, 203 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, 204 VkExternalSemaphoreProperties* pExternalSemaphoreProperties); 205 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceToolProperties( 206 VkPhysicalDevice physicalDevice, 207 uint32_t* pToolCount, 208 VkPhysicalDeviceToolProperties* pToolProperties); 209 210 // ICD function pointer dispatch table 211 struct loader_icd_term_dispatch { 212 213 // ---- Core Vulkan 1.0 commands 214 PFN_vkCreateInstance CreateInstance; 215 PFN_vkDestroyInstance DestroyInstance; 216 PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices; 217 PFN_vkGetPhysicalDeviceFeatures GetPhysicalDeviceFeatures; 218 PFN_vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties; 219 PFN_vkGetPhysicalDeviceImageFormatProperties GetPhysicalDeviceImageFormatProperties; 220 PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties; 221 PFN_vkGetPhysicalDeviceQueueFamilyProperties GetPhysicalDeviceQueueFamilyProperties; 222 PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties; 223 PFN_vkGetDeviceProcAddr GetDeviceProcAddr; 224 PFN_vkCreateDevice CreateDevice; 225 PFN_vkEnumerateInstanceExtensionProperties EnumerateInstanceExtensionProperties; 226 PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties; 227 PFN_vkEnumerateInstanceLayerProperties EnumerateInstanceLayerProperties; 228 PFN_vkGetPhysicalDeviceSparseImageFormatProperties GetPhysicalDeviceSparseImageFormatProperties; 229 230 // ---- Core Vulkan 1.1 commands 231 PFN_vkEnumerateInstanceVersion EnumerateInstanceVersion; 232 PFN_vkEnumeratePhysicalDeviceGroups EnumeratePhysicalDeviceGroups; 233 PFN_vkGetPhysicalDeviceFeatures2 GetPhysicalDeviceFeatures2; 234 PFN_vkGetPhysicalDeviceProperties2 GetPhysicalDeviceProperties2; 235 PFN_vkGetPhysicalDeviceFormatProperties2 GetPhysicalDeviceFormatProperties2; 236 PFN_vkGetPhysicalDeviceImageFormatProperties2 GetPhysicalDeviceImageFormatProperties2; 237 PFN_vkGetPhysicalDeviceQueueFamilyProperties2 GetPhysicalDeviceQueueFamilyProperties2; 238 PFN_vkGetPhysicalDeviceMemoryProperties2 GetPhysicalDeviceMemoryProperties2; 239 PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 GetPhysicalDeviceSparseImageFormatProperties2; 240 PFN_vkGetPhysicalDeviceExternalBufferProperties GetPhysicalDeviceExternalBufferProperties; 241 PFN_vkGetPhysicalDeviceExternalFenceProperties GetPhysicalDeviceExternalFenceProperties; 242 PFN_vkGetPhysicalDeviceExternalSemaphoreProperties GetPhysicalDeviceExternalSemaphoreProperties; 243 244 // ---- Core Vulkan 1.3 commands 245 PFN_vkGetPhysicalDeviceToolProperties GetPhysicalDeviceToolProperties; 246 247 // ---- VK_KHR_surface extension commands 248 PFN_vkDestroySurfaceKHR DestroySurfaceKHR; 249 PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR; 250 PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR GetPhysicalDeviceSurfaceCapabilitiesKHR; 251 PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR; 252 PFN_vkGetPhysicalDeviceSurfacePresentModesKHR GetPhysicalDeviceSurfacePresentModesKHR; 253 254 // ---- VK_KHR_swapchain extension commands 255 PFN_vkGetPhysicalDevicePresentRectanglesKHR GetPhysicalDevicePresentRectanglesKHR; 256 257 // ---- VK_KHR_display extension commands 258 PFN_vkGetPhysicalDeviceDisplayPropertiesKHR GetPhysicalDeviceDisplayPropertiesKHR; 259 PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR GetPhysicalDeviceDisplayPlanePropertiesKHR; 260 PFN_vkGetDisplayPlaneSupportedDisplaysKHR GetDisplayPlaneSupportedDisplaysKHR; 261 PFN_vkGetDisplayModePropertiesKHR GetDisplayModePropertiesKHR; 262 PFN_vkCreateDisplayModeKHR CreateDisplayModeKHR; 263 PFN_vkGetDisplayPlaneCapabilitiesKHR GetDisplayPlaneCapabilitiesKHR; 264 PFN_vkCreateDisplayPlaneSurfaceKHR CreateDisplayPlaneSurfaceKHR; 265 266 // ---- VK_KHR_xlib_surface extension commands 267 #if defined(VK_USE_PLATFORM_XLIB_KHR) 268 PFN_vkCreateXlibSurfaceKHR CreateXlibSurfaceKHR; 269 #endif // VK_USE_PLATFORM_XLIB_KHR 270 #if defined(VK_USE_PLATFORM_XLIB_KHR) 271 PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR GetPhysicalDeviceXlibPresentationSupportKHR; 272 #endif // VK_USE_PLATFORM_XLIB_KHR 273 274 // ---- VK_KHR_xcb_surface extension commands 275 #if defined(VK_USE_PLATFORM_XCB_KHR) 276 PFN_vkCreateXcbSurfaceKHR CreateXcbSurfaceKHR; 277 #endif // VK_USE_PLATFORM_XCB_KHR 278 #if defined(VK_USE_PLATFORM_XCB_KHR) 279 PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR GetPhysicalDeviceXcbPresentationSupportKHR; 280 #endif // VK_USE_PLATFORM_XCB_KHR 281 282 // ---- VK_KHR_wayland_surface extension commands 283 #if defined(VK_USE_PLATFORM_WAYLAND_KHR) 284 PFN_vkCreateWaylandSurfaceKHR CreateWaylandSurfaceKHR; 285 #endif // VK_USE_PLATFORM_WAYLAND_KHR 286 #if defined(VK_USE_PLATFORM_WAYLAND_KHR) 287 PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR GetPhysicalDeviceWaylandPresentationSupportKHR; 288 #endif // VK_USE_PLATFORM_WAYLAND_KHR 289 290 // ---- VK_KHR_android_surface extension commands 291 #if defined(VK_USE_PLATFORM_ANDROID_KHR) 292 PFN_vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR; 293 #endif // VK_USE_PLATFORM_ANDROID_KHR 294 295 // ---- VK_KHR_win32_surface extension commands 296 #if defined(VK_USE_PLATFORM_WIN32_KHR) 297 PFN_vkCreateWin32SurfaceKHR CreateWin32SurfaceKHR; 298 #endif // VK_USE_PLATFORM_WIN32_KHR 299 #if defined(VK_USE_PLATFORM_WIN32_KHR) 300 PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR GetPhysicalDeviceWin32PresentationSupportKHR; 301 #endif // VK_USE_PLATFORM_WIN32_KHR 302 303 // ---- VK_KHR_video_queue extension commands 304 PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR; 305 PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR; 306 307 // ---- VK_KHR_get_physical_device_properties2 extension commands 308 PFN_vkGetPhysicalDeviceFeatures2KHR GetPhysicalDeviceFeatures2KHR; 309 PFN_vkGetPhysicalDeviceProperties2KHR GetPhysicalDeviceProperties2KHR; 310 PFN_vkGetPhysicalDeviceFormatProperties2KHR GetPhysicalDeviceFormatProperties2KHR; 311 PFN_vkGetPhysicalDeviceImageFormatProperties2KHR GetPhysicalDeviceImageFormatProperties2KHR; 312 PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR GetPhysicalDeviceQueueFamilyProperties2KHR; 313 PFN_vkGetPhysicalDeviceMemoryProperties2KHR GetPhysicalDeviceMemoryProperties2KHR; 314 PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR GetPhysicalDeviceSparseImageFormatProperties2KHR; 315 316 // ---- VK_KHR_device_group_creation extension commands 317 PFN_vkEnumeratePhysicalDeviceGroupsKHR EnumeratePhysicalDeviceGroupsKHR; 318 319 // ---- VK_KHR_external_memory_capabilities extension commands 320 PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR GetPhysicalDeviceExternalBufferPropertiesKHR; 321 322 // ---- VK_KHR_external_semaphore_capabilities extension commands 323 PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR GetPhysicalDeviceExternalSemaphorePropertiesKHR; 324 325 // ---- VK_KHR_external_fence_capabilities extension commands 326 PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR GetPhysicalDeviceExternalFencePropertiesKHR; 327 328 // ---- VK_KHR_performance_query extension commands 329 PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR; 330 PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR; 331 332 // ---- VK_KHR_get_surface_capabilities2 extension commands 333 PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR GetPhysicalDeviceSurfaceCapabilities2KHR; 334 PFN_vkGetPhysicalDeviceSurfaceFormats2KHR GetPhysicalDeviceSurfaceFormats2KHR; 335 336 // ---- VK_KHR_get_display_properties2 extension commands 337 PFN_vkGetPhysicalDeviceDisplayProperties2KHR GetPhysicalDeviceDisplayProperties2KHR; 338 PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR GetPhysicalDeviceDisplayPlaneProperties2KHR; 339 PFN_vkGetDisplayModeProperties2KHR GetDisplayModeProperties2KHR; 340 PFN_vkGetDisplayPlaneCapabilities2KHR GetDisplayPlaneCapabilities2KHR; 341 342 // ---- VK_KHR_fragment_shading_rate extension commands 343 PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR GetPhysicalDeviceFragmentShadingRatesKHR; 344 345 // ---- VK_KHR_video_encode_queue extension commands 346 PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR GetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR; 347 348 // ---- VK_KHR_cooperative_matrix extension commands 349 PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR GetPhysicalDeviceCooperativeMatrixPropertiesKHR; 350 351 // ---- VK_KHR_calibrated_timestamps extension commands 352 PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR GetPhysicalDeviceCalibrateableTimeDomainsKHR; 353 354 // ---- VK_EXT_debug_report extension commands 355 PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT; 356 PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT; 357 PFN_vkDebugReportMessageEXT DebugReportMessageEXT; 358 359 // ---- VK_GGP_stream_descriptor_surface extension commands 360 #if defined(VK_USE_PLATFORM_GGP) 361 PFN_vkCreateStreamDescriptorSurfaceGGP CreateStreamDescriptorSurfaceGGP; 362 #endif // VK_USE_PLATFORM_GGP 363 364 // ---- VK_NV_external_memory_capabilities extension commands 365 PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV GetPhysicalDeviceExternalImageFormatPropertiesNV; 366 367 // ---- VK_NN_vi_surface extension commands 368 #if defined(VK_USE_PLATFORM_VI_NN) 369 PFN_vkCreateViSurfaceNN CreateViSurfaceNN; 370 #endif // VK_USE_PLATFORM_VI_NN 371 372 // ---- VK_EXT_direct_mode_display extension commands 373 PFN_vkReleaseDisplayEXT ReleaseDisplayEXT; 374 375 // ---- VK_EXT_acquire_xlib_display extension commands 376 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT) 377 PFN_vkAcquireXlibDisplayEXT AcquireXlibDisplayEXT; 378 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT 379 #if defined(VK_USE_PLATFORM_XLIB_XRANDR_EXT) 380 PFN_vkGetRandROutputDisplayEXT GetRandROutputDisplayEXT; 381 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT 382 383 // ---- VK_EXT_display_surface_counter extension commands 384 PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT GetPhysicalDeviceSurfaceCapabilities2EXT; 385 386 // ---- VK_MVK_ios_surface extension commands 387 #if defined(VK_USE_PLATFORM_IOS_MVK) 388 PFN_vkCreateIOSSurfaceMVK CreateIOSSurfaceMVK; 389 #endif // VK_USE_PLATFORM_IOS_MVK 390 391 // ---- VK_MVK_macos_surface extension commands 392 #if defined(VK_USE_PLATFORM_MACOS_MVK) 393 PFN_vkCreateMacOSSurfaceMVK CreateMacOSSurfaceMVK; 394 #endif // VK_USE_PLATFORM_MACOS_MVK 395 396 // ---- VK_EXT_debug_utils extension commands 397 PFN_vkCreateDebugUtilsMessengerEXT CreateDebugUtilsMessengerEXT; 398 PFN_vkDestroyDebugUtilsMessengerEXT DestroyDebugUtilsMessengerEXT; 399 PFN_vkSubmitDebugUtilsMessageEXT SubmitDebugUtilsMessageEXT; 400 401 // ---- VK_EXT_sample_locations extension commands 402 PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT GetPhysicalDeviceMultisamplePropertiesEXT; 403 404 // ---- VK_EXT_calibrated_timestamps extension commands 405 PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT GetPhysicalDeviceCalibrateableTimeDomainsEXT; 406 407 // ---- VK_FUCHSIA_imagepipe_surface extension commands 408 #if defined(VK_USE_PLATFORM_FUCHSIA) 409 PFN_vkCreateImagePipeSurfaceFUCHSIA CreateImagePipeSurfaceFUCHSIA; 410 #endif // VK_USE_PLATFORM_FUCHSIA 411 412 // ---- VK_EXT_metal_surface extension commands 413 #if defined(VK_USE_PLATFORM_METAL_EXT) 414 PFN_vkCreateMetalSurfaceEXT CreateMetalSurfaceEXT; 415 #endif // VK_USE_PLATFORM_METAL_EXT 416 417 // ---- VK_EXT_tooling_info extension commands 418 PFN_vkGetPhysicalDeviceToolPropertiesEXT GetPhysicalDeviceToolPropertiesEXT; 419 420 // ---- VK_NV_cooperative_matrix extension commands 421 PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV GetPhysicalDeviceCooperativeMatrixPropertiesNV; 422 423 // ---- VK_NV_coverage_reduction_mode extension commands 424 PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV; 425 426 // ---- VK_EXT_full_screen_exclusive extension commands 427 #if defined(VK_USE_PLATFORM_WIN32_KHR) 428 PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT GetPhysicalDeviceSurfacePresentModes2EXT; 429 #endif // VK_USE_PLATFORM_WIN32_KHR 430 431 // ---- VK_EXT_headless_surface extension commands 432 PFN_vkCreateHeadlessSurfaceEXT CreateHeadlessSurfaceEXT; 433 434 // ---- VK_EXT_acquire_drm_display extension commands 435 PFN_vkAcquireDrmDisplayEXT AcquireDrmDisplayEXT; 436 PFN_vkGetDrmDisplayEXT GetDrmDisplayEXT; 437 438 // ---- VK_NV_acquire_winrt_display extension commands 439 #if defined(VK_USE_PLATFORM_WIN32_KHR) 440 PFN_vkAcquireWinrtDisplayNV AcquireWinrtDisplayNV; 441 #endif // VK_USE_PLATFORM_WIN32_KHR 442 #if defined(VK_USE_PLATFORM_WIN32_KHR) 443 PFN_vkGetWinrtDisplayNV GetWinrtDisplayNV; 444 #endif // VK_USE_PLATFORM_WIN32_KHR 445 446 // ---- VK_EXT_directfb_surface extension commands 447 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT) 448 PFN_vkCreateDirectFBSurfaceEXT CreateDirectFBSurfaceEXT; 449 #endif // VK_USE_PLATFORM_DIRECTFB_EXT 450 #if defined(VK_USE_PLATFORM_DIRECTFB_EXT) 451 PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT GetPhysicalDeviceDirectFBPresentationSupportEXT; 452 #endif // VK_USE_PLATFORM_DIRECTFB_EXT 453 454 // ---- VK_QNX_screen_surface extension commands 455 #if defined(VK_USE_PLATFORM_SCREEN_QNX) 456 PFN_vkCreateScreenSurfaceQNX CreateScreenSurfaceQNX; 457 #endif // VK_USE_PLATFORM_SCREEN_QNX 458 #if defined(VK_USE_PLATFORM_SCREEN_QNX) 459 PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX GetPhysicalDeviceScreenPresentationSupportQNX; 460 #endif // VK_USE_PLATFORM_SCREEN_QNX 461 462 // ---- VK_NV_optical_flow extension commands 463 PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV GetPhysicalDeviceOpticalFlowImageFormatsNV; 464 465 // ---- VK_OHOS_surface extension commands 466 #ifdef VK_USE_PLATFORM_OHOS 467 PFN_vkCreateSurfaceOHOS CreateSurfaceOHOS; 468 #endif // VK_USE_PLATFORM_OHOS 469 }; 470 471 struct loader_instance_extension_enables { 472 uint8_t khr_get_physical_device_properties2; 473 uint8_t khr_device_group_creation; 474 uint8_t khr_external_memory_capabilities; 475 uint8_t khr_external_semaphore_capabilities; 476 uint8_t khr_external_fence_capabilities; 477 uint8_t ext_debug_report; 478 uint8_t nv_external_memory_capabilities; 479 uint8_t ext_direct_mode_display; 480 uint8_t ext_acquire_xlib_display; 481 uint8_t ext_display_surface_counter; 482 uint8_t ext_debug_utils; 483 uint8_t ext_acquire_drm_display; 484 }; 485 486 // Functions that required a terminator need to have a separate dispatch table which contains their corresponding 487 // device function. This is used in the terminators themselves. 488 struct loader_device_terminator_dispatch { 489 // ---- VK_KHR_swapchain extension commands 490 PFN_vkCreateSwapchainKHR CreateSwapchainKHR; 491 PFN_vkGetDeviceGroupSurfacePresentModesKHR GetDeviceGroupSurfacePresentModesKHR; 492 // ---- VK_KHR_display_swapchain extension commands 493 PFN_vkCreateSharedSwapchainsKHR CreateSharedSwapchainsKHR; 494 // ---- VK_EXT_debug_marker extension commands 495 PFN_vkDebugMarkerSetObjectTagEXT DebugMarkerSetObjectTagEXT; 496 PFN_vkDebugMarkerSetObjectNameEXT DebugMarkerSetObjectNameEXT; 497 // ---- VK_EXT_debug_utils extension commands 498 PFN_vkSetDebugUtilsObjectNameEXT SetDebugUtilsObjectNameEXT; 499 PFN_vkSetDebugUtilsObjectTagEXT SetDebugUtilsObjectTagEXT; 500 PFN_vkQueueBeginDebugUtilsLabelEXT QueueBeginDebugUtilsLabelEXT; 501 PFN_vkQueueEndDebugUtilsLabelEXT QueueEndDebugUtilsLabelEXT; 502 PFN_vkQueueInsertDebugUtilsLabelEXT QueueInsertDebugUtilsLabelEXT; 503 PFN_vkCmdBeginDebugUtilsLabelEXT CmdBeginDebugUtilsLabelEXT; 504 PFN_vkCmdEndDebugUtilsLabelEXT CmdEndDebugUtilsLabelEXT; 505 PFN_vkCmdInsertDebugUtilsLabelEXT CmdInsertDebugUtilsLabelEXT; 506 #if defined(VK_USE_PLATFORM_WIN32_KHR) 507 // ---- VK_EXT_full_screen_exclusive extension commands 508 PFN_vkGetDeviceGroupSurfacePresentModes2EXT GetDeviceGroupSurfacePresentModes2EXT; 509 #endif // VK_USE_PLATFORM_WIN32_KHR 510 }; 511 512 // clang-format on 513