1 // *** THIS FILE IS GENERATED - DO NOT EDIT *** 2 // See loader_extension_generator.py for modifications 3 4 /* 5 * Copyright (c) 2015-2021 The Khronos Group Inc. 6 * Copyright (c) 2015-2021 Valve Corporation 7 * Copyright (c) 2015-2021 LunarG, Inc. 8 * 9 * Licensed under the Apache License, Version 2.0 (the "License"); 10 * you may not use this file except in compliance with the License. 11 * You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, software 16 * distributed under the License is distributed on an "AS IS" BASIS, 17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 * See the License for the specific language governing permissions and 19 * limitations under the License. 20 * 21 * Author: Mark Lobodzinski <mark@lunarg.com> 22 * Author: Mark Young <marky@lunarg.com> 23 */ 24 25 #pragma once 26 27 // Structures defined externally, but used here 28 struct loader_instance; 29 struct loader_device; 30 struct loader_icd_term; 31 struct loader_dev_dispatch_table; 32 33 // Device extension error function 34 VKAPI_ATTR VkResult VKAPI_CALL vkDevExtError(VkDevice dev); 35 36 // Extension interception for vkGetInstanceProcAddr function, so we can return 37 // the appropriate information for any instance extensions we know about. 38 bool extension_instance_gpa(struct loader_instance *ptr_instance, const char *name, void **addr); 39 40 // Extension interception for vkCreateInstance function, so we can properly 41 // detect and enable any instance extension information for extensions we know 42 // about. 43 void extensions_create_instance(struct loader_instance *ptr_instance, const VkInstanceCreateInfo *pCreateInfo); 44 45 // Extension interception for vkGetDeviceProcAddr function, so we can return 46 // an appropriate terminator if this is one of those few device commands requiring 47 // a terminator. 48 PFN_vkVoidFunction get_extension_device_proc_terminator(struct loader_device *dev, const char *pName); 49 50 // Dispatch table properly filled in with appropriate terminators for the 51 // supported extensions. 52 extern const VkLayerInstanceDispatchTable instance_disp; 53 54 // Array of extension strings for instance extensions we support. 55 extern const char *const LOADER_INSTANCE_EXTENSIONS[]; 56 57 VKAPI_ATTR bool VKAPI_CALL loader_icd_init_entries(struct loader_icd_term *icd_term, VkInstance inst, 58 const PFN_vkGetInstanceProcAddr fp_gipa); 59 60 // Init Device function pointer dispatch table with core commands 61 VKAPI_ATTR void VKAPI_CALL loader_init_device_dispatch_table(struct loader_dev_dispatch_table *dev_table, PFN_vkGetDeviceProcAddr gpa, 62 VkDevice dev); 63 64 // Init Device function pointer dispatch table with extension commands 65 VKAPI_ATTR void VKAPI_CALL loader_init_device_extension_dispatch_table(struct loader_dev_dispatch_table *dev_table, 66 PFN_vkGetInstanceProcAddr gipa, 67 PFN_vkGetDeviceProcAddr gdpa, 68 VkInstance inst, 69 VkDevice dev); 70 71 // Init Instance function pointer dispatch table with core commands 72 VKAPI_ATTR void VKAPI_CALL loader_init_instance_core_dispatch_table(VkLayerInstanceDispatchTable *table, PFN_vkGetInstanceProcAddr gpa, 73 VkInstance inst); 74 75 // Init Instance function pointer dispatch table with core commands 76 VKAPI_ATTR void VKAPI_CALL loader_init_instance_extension_dispatch_table(VkLayerInstanceDispatchTable *table, PFN_vkGetInstanceProcAddr gpa, 77 VkInstance inst); 78 79 // Device command lookup function 80 VKAPI_ATTR void* VKAPI_CALL loader_lookup_device_dispatch_table(const VkLayerDispatchTable *table, const char *name); 81 82 // Instance command lookup function 83 VKAPI_ATTR void* VKAPI_CALL loader_lookup_instance_dispatch_table(const VkLayerInstanceDispatchTable *table, const char *name, 84 bool *found_name); 85 86 // Loader core instance terminators 87 VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateInstance( 88 const VkInstanceCreateInfo* pCreateInfo, 89 const VkAllocationCallbacks* pAllocator, 90 VkInstance* pInstance); 91 VKAPI_ATTR void VKAPI_CALL terminator_DestroyInstance( 92 VkInstance instance, 93 const VkAllocationCallbacks* pAllocator); 94 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDevices( 95 VkInstance instance, 96 uint32_t* pPhysicalDeviceCount, 97 VkPhysicalDevice* pPhysicalDevices); 98 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFeatures( 99 VkPhysicalDevice physicalDevice, 100 VkPhysicalDeviceFeatures* pFeatures); 101 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFormatProperties( 102 VkPhysicalDevice physicalDevice, 103 VkFormat format, 104 VkFormatProperties* pFormatProperties); 105 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceImageFormatProperties( 106 VkPhysicalDevice physicalDevice, 107 VkFormat format, 108 VkImageType type, 109 VkImageTiling tiling, 110 VkImageUsageFlags usage, 111 VkImageCreateFlags flags, 112 VkImageFormatProperties* pImageFormatProperties); 113 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceProperties( 114 VkPhysicalDevice physicalDevice, 115 VkPhysicalDeviceProperties* pProperties); 116 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceQueueFamilyProperties( 117 VkPhysicalDevice physicalDevice, 118 uint32_t* pQueueFamilyPropertyCount, 119 VkQueueFamilyProperties* pQueueFamilyProperties); 120 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceMemoryProperties( 121 VkPhysicalDevice physicalDevice, 122 VkPhysicalDeviceMemoryProperties* pMemoryProperties); 123 VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL terminator_GetInstanceProcAddr( 124 VkInstance instance, 125 const char* pName); 126 VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDevice( 127 VkPhysicalDevice physicalDevice, 128 const VkDeviceCreateInfo* pCreateInfo, 129 const VkAllocationCallbacks* pAllocator, 130 VkDevice* pDevice); 131 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateInstanceExtensionProperties( 132 const VkEnumerateInstanceExtensionPropertiesChain* chain, 133 const char* pLayerName, 134 uint32_t* pPropertyCount, 135 VkExtensionProperties* pProperties); 136 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateDeviceExtensionProperties( 137 VkPhysicalDevice physicalDevice, 138 const char* pLayerName, 139 uint32_t* pPropertyCount, 140 VkExtensionProperties* pProperties); 141 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateInstanceLayerProperties( 142 const VkEnumerateInstanceLayerPropertiesChain* chain, 143 uint32_t* pPropertyCount, 144 VkLayerProperties* pProperties); 145 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateDeviceLayerProperties( 146 VkPhysicalDevice physicalDevice, 147 uint32_t* pPropertyCount, 148 VkLayerProperties* pProperties); 149 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceSparseImageFormatProperties( 150 VkPhysicalDevice physicalDevice, 151 VkFormat format, 152 VkImageType type, 153 VkSampleCountFlagBits samples, 154 VkImageUsageFlags usage, 155 VkImageTiling tiling, 156 uint32_t* pPropertyCount, 157 VkSparseImageFormatProperties* pProperties); 158 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateInstanceVersion( 159 const VkEnumerateInstanceVersionChain* chain, 160 uint32_t* pApiVersion); 161 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDeviceGroups( 162 VkInstance instance, 163 uint32_t* pPhysicalDeviceGroupCount, 164 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); 165 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFeatures2( 166 VkPhysicalDevice physicalDevice, 167 VkPhysicalDeviceFeatures2* pFeatures); 168 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceProperties2( 169 VkPhysicalDevice physicalDevice, 170 VkPhysicalDeviceProperties2* pProperties); 171 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFormatProperties2( 172 VkPhysicalDevice physicalDevice, 173 VkFormat format, 174 VkFormatProperties2* pFormatProperties); 175 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceImageFormatProperties2( 176 VkPhysicalDevice physicalDevice, 177 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, 178 VkImageFormatProperties2* pImageFormatProperties); 179 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceQueueFamilyProperties2( 180 VkPhysicalDevice physicalDevice, 181 uint32_t* pQueueFamilyPropertyCount, 182 VkQueueFamilyProperties2* pQueueFamilyProperties); 183 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceMemoryProperties2( 184 VkPhysicalDevice physicalDevice, 185 VkPhysicalDeviceMemoryProperties2* pMemoryProperties); 186 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceSparseImageFormatProperties2( 187 VkPhysicalDevice physicalDevice, 188 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, 189 uint32_t* pPropertyCount, 190 VkSparseImageFormatProperties2* pProperties); 191 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceExternalBufferProperties( 192 VkPhysicalDevice physicalDevice, 193 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, 194 VkExternalBufferProperties* pExternalBufferProperties); 195 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceExternalFenceProperties( 196 VkPhysicalDevice physicalDevice, 197 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, 198 VkExternalFenceProperties* pExternalFenceProperties); 199 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceExternalSemaphoreProperties( 200 VkPhysicalDevice physicalDevice, 201 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, 202 VkExternalSemaphoreProperties* pExternalSemaphoreProperties); 203 204 // ICD function pointer dispatch table 205 struct loader_icd_term_dispatch { 206 207 // ---- Core 1_0 commands 208 PFN_vkCreateInstance CreateInstance; 209 PFN_vkDestroyInstance DestroyInstance; 210 PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices; 211 PFN_vkGetPhysicalDeviceFeatures GetPhysicalDeviceFeatures; 212 PFN_vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties; 213 PFN_vkGetPhysicalDeviceImageFormatProperties GetPhysicalDeviceImageFormatProperties; 214 PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties; 215 PFN_vkGetPhysicalDeviceQueueFamilyProperties GetPhysicalDeviceQueueFamilyProperties; 216 PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties; 217 PFN_vkGetDeviceProcAddr GetDeviceProcAddr; 218 PFN_vkCreateDevice CreateDevice; 219 PFN_vkEnumerateInstanceExtensionProperties EnumerateInstanceExtensionProperties; 220 PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties; 221 PFN_vkEnumerateInstanceLayerProperties EnumerateInstanceLayerProperties; 222 PFN_vkGetPhysicalDeviceSparseImageFormatProperties GetPhysicalDeviceSparseImageFormatProperties; 223 224 // ---- Core 1_1 commands 225 PFN_vkEnumerateInstanceVersion EnumerateInstanceVersion; 226 PFN_vkEnumeratePhysicalDeviceGroups EnumeratePhysicalDeviceGroups; 227 PFN_vkGetPhysicalDeviceFeatures2 GetPhysicalDeviceFeatures2; 228 PFN_vkGetPhysicalDeviceProperties2 GetPhysicalDeviceProperties2; 229 PFN_vkGetPhysicalDeviceFormatProperties2 GetPhysicalDeviceFormatProperties2; 230 PFN_vkGetPhysicalDeviceImageFormatProperties2 GetPhysicalDeviceImageFormatProperties2; 231 PFN_vkGetPhysicalDeviceQueueFamilyProperties2 GetPhysicalDeviceQueueFamilyProperties2; 232 PFN_vkGetPhysicalDeviceMemoryProperties2 GetPhysicalDeviceMemoryProperties2; 233 PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 GetPhysicalDeviceSparseImageFormatProperties2; 234 PFN_vkGetPhysicalDeviceExternalBufferProperties GetPhysicalDeviceExternalBufferProperties; 235 PFN_vkGetPhysicalDeviceExternalFenceProperties GetPhysicalDeviceExternalFenceProperties; 236 PFN_vkGetPhysicalDeviceExternalSemaphoreProperties GetPhysicalDeviceExternalSemaphoreProperties; 237 238 // ---- VK_KHR_surface extension commands 239 PFN_vkDestroySurfaceKHR DestroySurfaceKHR; 240 PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR; 241 PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR GetPhysicalDeviceSurfaceCapabilitiesKHR; 242 PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR; 243 PFN_vkGetPhysicalDeviceSurfacePresentModesKHR GetPhysicalDeviceSurfacePresentModesKHR; 244 245 // ---- VK_KHR_swapchain extension commands 246 PFN_vkCreateSwapchainKHR CreateSwapchainKHR; 247 PFN_vkGetDeviceGroupSurfacePresentModesKHR GetDeviceGroupSurfacePresentModesKHR; 248 PFN_vkGetPhysicalDevicePresentRectanglesKHR GetPhysicalDevicePresentRectanglesKHR; 249 250 // ---- VK_KHR_display extension commands 251 PFN_vkGetPhysicalDeviceDisplayPropertiesKHR GetPhysicalDeviceDisplayPropertiesKHR; 252 PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR GetPhysicalDeviceDisplayPlanePropertiesKHR; 253 PFN_vkGetDisplayPlaneSupportedDisplaysKHR GetDisplayPlaneSupportedDisplaysKHR; 254 PFN_vkGetDisplayModePropertiesKHR GetDisplayModePropertiesKHR; 255 PFN_vkCreateDisplayModeKHR CreateDisplayModeKHR; 256 PFN_vkGetDisplayPlaneCapabilitiesKHR GetDisplayPlaneCapabilitiesKHR; 257 PFN_vkCreateDisplayPlaneSurfaceKHR CreateDisplayPlaneSurfaceKHR; 258 259 // ---- VK_KHR_display_swapchain extension commands 260 PFN_vkCreateSharedSwapchainsKHR CreateSharedSwapchainsKHR; 261 262 // ---- VK_KHR_xlib_surface extension commands 263 #ifdef VK_USE_PLATFORM_XLIB_KHR 264 PFN_vkCreateXlibSurfaceKHR CreateXlibSurfaceKHR; 265 #endif // VK_USE_PLATFORM_XLIB_KHR 266 #ifdef VK_USE_PLATFORM_XLIB_KHR 267 PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR GetPhysicalDeviceXlibPresentationSupportKHR; 268 #endif // VK_USE_PLATFORM_XLIB_KHR 269 270 // ---- VK_KHR_xcb_surface extension commands 271 #ifdef VK_USE_PLATFORM_XCB_KHR 272 PFN_vkCreateXcbSurfaceKHR CreateXcbSurfaceKHR; 273 #endif // VK_USE_PLATFORM_XCB_KHR 274 #ifdef VK_USE_PLATFORM_XCB_KHR 275 PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR GetPhysicalDeviceXcbPresentationSupportKHR; 276 #endif // VK_USE_PLATFORM_XCB_KHR 277 278 // ---- VK_KHR_wayland_surface extension commands 279 #ifdef VK_USE_PLATFORM_WAYLAND_KHR 280 PFN_vkCreateWaylandSurfaceKHR CreateWaylandSurfaceKHR; 281 #endif // VK_USE_PLATFORM_WAYLAND_KHR 282 #ifdef VK_USE_PLATFORM_WAYLAND_KHR 283 PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR GetPhysicalDeviceWaylandPresentationSupportKHR; 284 #endif // VK_USE_PLATFORM_WAYLAND_KHR 285 286 // ---- VK_KHR_android_surface extension commands 287 #ifdef VK_USE_PLATFORM_ANDROID_KHR 288 PFN_vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR; 289 #endif // VK_USE_PLATFORM_ANDROID_KHR 290 291 // ---- VK_KHR_win32_surface extension commands 292 #ifdef VK_USE_PLATFORM_WIN32_KHR 293 PFN_vkCreateWin32SurfaceKHR CreateWin32SurfaceKHR; 294 #endif // VK_USE_PLATFORM_WIN32_KHR 295 #ifdef VK_USE_PLATFORM_WIN32_KHR 296 PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR GetPhysicalDeviceWin32PresentationSupportKHR; 297 #endif // VK_USE_PLATFORM_WIN32_KHR 298 299 // ---- VK_KHR_video_queue extension commands 300 #ifdef VK_ENABLE_BETA_EXTENSIONS 301 PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR; 302 #endif // VK_ENABLE_BETA_EXTENSIONS 303 #ifdef VK_ENABLE_BETA_EXTENSIONS 304 PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR; 305 #endif // VK_ENABLE_BETA_EXTENSIONS 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_EXT_debug_report extension commands 346 PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT; 347 PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT; 348 PFN_vkDebugReportMessageEXT DebugReportMessageEXT; 349 350 // ---- VK_EXT_debug_marker extension commands 351 PFN_vkDebugMarkerSetObjectTagEXT DebugMarkerSetObjectTagEXT; 352 PFN_vkDebugMarkerSetObjectNameEXT DebugMarkerSetObjectNameEXT; 353 354 // ---- VK_GGP_stream_descriptor_surface extension commands 355 #ifdef VK_USE_PLATFORM_GGP 356 PFN_vkCreateStreamDescriptorSurfaceGGP CreateStreamDescriptorSurfaceGGP; 357 #endif // VK_USE_PLATFORM_GGP 358 359 // ---- VK_NV_external_memory_capabilities extension commands 360 PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV GetPhysicalDeviceExternalImageFormatPropertiesNV; 361 362 // ---- VK_NN_vi_surface extension commands 363 #ifdef VK_USE_PLATFORM_VI_NN 364 PFN_vkCreateViSurfaceNN CreateViSurfaceNN; 365 #endif // VK_USE_PLATFORM_VI_NN 366 367 // ---- VK_EXT_direct_mode_display extension commands 368 PFN_vkReleaseDisplayEXT ReleaseDisplayEXT; 369 370 // ---- VK_EXT_acquire_xlib_display extension commands 371 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT 372 PFN_vkAcquireXlibDisplayEXT AcquireXlibDisplayEXT; 373 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT 374 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT 375 PFN_vkGetRandROutputDisplayEXT GetRandROutputDisplayEXT; 376 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT 377 378 // ---- VK_EXT_display_surface_counter extension commands 379 PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT GetPhysicalDeviceSurfaceCapabilities2EXT; 380 381 // ---- VK_MVK_ios_surface extension commands 382 #ifdef VK_USE_PLATFORM_IOS_MVK 383 PFN_vkCreateIOSSurfaceMVK CreateIOSSurfaceMVK; 384 #endif // VK_USE_PLATFORM_IOS_MVK 385 386 // ---- VK_MVK_macos_surface extension commands 387 #ifdef VK_USE_PLATFORM_MACOS_MVK 388 PFN_vkCreateMacOSSurfaceMVK CreateMacOSSurfaceMVK; 389 #endif // VK_USE_PLATFORM_MACOS_MVK 390 391 // ---- VK_EXT_debug_utils extension commands 392 PFN_vkSetDebugUtilsObjectNameEXT SetDebugUtilsObjectNameEXT; 393 PFN_vkSetDebugUtilsObjectTagEXT SetDebugUtilsObjectTagEXT; 394 PFN_vkQueueBeginDebugUtilsLabelEXT QueueBeginDebugUtilsLabelEXT; 395 PFN_vkQueueEndDebugUtilsLabelEXT QueueEndDebugUtilsLabelEXT; 396 PFN_vkQueueInsertDebugUtilsLabelEXT QueueInsertDebugUtilsLabelEXT; 397 PFN_vkCmdBeginDebugUtilsLabelEXT CmdBeginDebugUtilsLabelEXT; 398 PFN_vkCmdEndDebugUtilsLabelEXT CmdEndDebugUtilsLabelEXT; 399 PFN_vkCmdInsertDebugUtilsLabelEXT CmdInsertDebugUtilsLabelEXT; 400 PFN_vkCreateDebugUtilsMessengerEXT CreateDebugUtilsMessengerEXT; 401 PFN_vkDestroyDebugUtilsMessengerEXT DestroyDebugUtilsMessengerEXT; 402 PFN_vkSubmitDebugUtilsMessageEXT SubmitDebugUtilsMessageEXT; 403 404 // ---- VK_EXT_sample_locations extension commands 405 PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT GetPhysicalDeviceMultisamplePropertiesEXT; 406 407 // ---- VK_EXT_calibrated_timestamps extension commands 408 PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT GetPhysicalDeviceCalibrateableTimeDomainsEXT; 409 410 // ---- VK_FUCHSIA_imagepipe_surface extension commands 411 #ifdef VK_USE_PLATFORM_FUCHSIA 412 PFN_vkCreateImagePipeSurfaceFUCHSIA CreateImagePipeSurfaceFUCHSIA; 413 #endif // VK_USE_PLATFORM_FUCHSIA 414 415 // ---- VK_EXT_metal_surface extension commands 416 #ifdef VK_USE_PLATFORM_METAL_EXT 417 PFN_vkCreateMetalSurfaceEXT CreateMetalSurfaceEXT; 418 #endif // VK_USE_PLATFORM_METAL_EXT 419 420 // ---- VK_EXT_tooling_info extension commands 421 PFN_vkGetPhysicalDeviceToolPropertiesEXT GetPhysicalDeviceToolPropertiesEXT; 422 423 // ---- VK_NV_cooperative_matrix extension commands 424 PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV GetPhysicalDeviceCooperativeMatrixPropertiesNV; 425 426 // ---- VK_NV_coverage_reduction_mode extension commands 427 PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV; 428 429 // ---- VK_EXT_full_screen_exclusive extension commands 430 #ifdef VK_USE_PLATFORM_WIN32_KHR 431 PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT GetPhysicalDeviceSurfacePresentModes2EXT; 432 #endif // VK_USE_PLATFORM_WIN32_KHR 433 #ifdef VK_USE_PLATFORM_WIN32_KHR 434 PFN_vkGetDeviceGroupSurfacePresentModes2EXT GetDeviceGroupSurfacePresentModes2EXT; 435 #endif // VK_USE_PLATFORM_WIN32_KHR 436 437 // ---- VK_EXT_headless_surface extension commands 438 PFN_vkCreateHeadlessSurfaceEXT CreateHeadlessSurfaceEXT; 439 440 // ---- VK_EXT_acquire_drm_display extension commands 441 PFN_vkAcquireDrmDisplayEXT AcquireDrmDisplayEXT; 442 PFN_vkGetDrmDisplayEXT GetDrmDisplayEXT; 443 444 // ---- VK_NV_acquire_winrt_display extension commands 445 #ifdef VK_USE_PLATFORM_WIN32_KHR 446 PFN_vkAcquireWinrtDisplayNV AcquireWinrtDisplayNV; 447 #endif // VK_USE_PLATFORM_WIN32_KHR 448 #ifdef VK_USE_PLATFORM_WIN32_KHR 449 PFN_vkGetWinrtDisplayNV GetWinrtDisplayNV; 450 #endif // VK_USE_PLATFORM_WIN32_KHR 451 452 // ---- VK_EXT_directfb_surface extension commands 453 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT 454 PFN_vkCreateDirectFBSurfaceEXT CreateDirectFBSurfaceEXT; 455 #endif // VK_USE_PLATFORM_DIRECTFB_EXT 456 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT 457 PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT GetPhysicalDeviceDirectFBPresentationSupportEXT; 458 #endif // VK_USE_PLATFORM_DIRECTFB_EXT 459 460 // ---- VK_QNX_screen_surface extension commands 461 #ifdef VK_USE_PLATFORM_SCREEN_QNX 462 PFN_vkCreateScreenSurfaceQNX CreateScreenSurfaceQNX; 463 #endif // VK_USE_PLATFORM_SCREEN_QNX 464 #ifdef VK_USE_PLATFORM_SCREEN_QNX 465 PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX GetPhysicalDeviceScreenPresentationSupportQNX; 466 #endif // VK_USE_PLATFORM_SCREEN_QNX 467 }; 468 469 union loader_instance_extension_enables { 470 struct { 471 uint8_t khr_get_physical_device_properties2 : 1; 472 uint8_t khr_device_group_creation : 1; 473 uint8_t khr_external_memory_capabilities : 1; 474 uint8_t khr_external_semaphore_capabilities : 1; 475 uint8_t khr_external_fence_capabilities : 1; 476 uint8_t ext_debug_report : 1; 477 uint8_t nv_external_memory_capabilities : 1; 478 uint8_t nn_vi_surface : 1; 479 uint8_t ext_direct_mode_display : 1; 480 uint8_t ext_acquire_xlib_display : 1; 481 uint8_t ext_display_surface_counter : 1; 482 uint8_t ext_debug_utils : 1; 483 uint8_t ext_acquire_drm_display : 1; 484 }; 485 uint64_t padding[4]; 486 }; 487 488 489