1 // *** THIS FILE IS GENERATED - DO NOT EDIT *** 2 // See loader_extension_generator.py for modifications 3 4 /* 5 * Copyright (c) 2015-2022 The Khronos Group Inc. 6 * Copyright (c) 2015-2022 Valve Corporation 7 * Copyright (c) 2015-2022 LunarG, Inc. 8 * 9 * Licensed under the Apache License, Version 2.0 (the "License"); 10 * you may not use this file except in compliance with the License. 11 * You may obtain a copy of the License at 12 * 13 * http://www.apache.org/licenses/LICENSE-2.0 14 * 15 * Unless required by applicable law or agreed to in writing, software 16 * distributed under the License is distributed on an "AS IS" BASIS, 17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 * See the License for the specific language governing permissions and 19 * limitations under the License. 20 * 21 * Author: Mark Lobodzinski <mark@lunarg.com> 22 * Author: Mark Young <marky@lunarg.com> 23 */ 24 25 #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 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceToolProperties( 204 VkPhysicalDevice physicalDevice, 205 uint32_t* pToolCount, 206 VkPhysicalDeviceToolProperties* pToolProperties); 207 208 // ICD function pointer dispatch table 209 struct loader_icd_term_dispatch { 210 211 // ---- Core 1_0 commands 212 PFN_vkCreateInstance CreateInstance; 213 PFN_vkDestroyInstance DestroyInstance; 214 PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices; 215 PFN_vkGetPhysicalDeviceFeatures GetPhysicalDeviceFeatures; 216 PFN_vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties; 217 PFN_vkGetPhysicalDeviceImageFormatProperties GetPhysicalDeviceImageFormatProperties; 218 PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties; 219 PFN_vkGetPhysicalDeviceQueueFamilyProperties GetPhysicalDeviceQueueFamilyProperties; 220 PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties; 221 PFN_vkGetDeviceProcAddr GetDeviceProcAddr; 222 PFN_vkCreateDevice CreateDevice; 223 PFN_vkEnumerateInstanceExtensionProperties EnumerateInstanceExtensionProperties; 224 PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties; 225 PFN_vkEnumerateInstanceLayerProperties EnumerateInstanceLayerProperties; 226 PFN_vkGetPhysicalDeviceSparseImageFormatProperties GetPhysicalDeviceSparseImageFormatProperties; 227 228 // ---- Core 1_1 commands 229 PFN_vkEnumerateInstanceVersion EnumerateInstanceVersion; 230 PFN_vkEnumeratePhysicalDeviceGroups EnumeratePhysicalDeviceGroups; 231 PFN_vkGetPhysicalDeviceFeatures2 GetPhysicalDeviceFeatures2; 232 PFN_vkGetPhysicalDeviceProperties2 GetPhysicalDeviceProperties2; 233 PFN_vkGetPhysicalDeviceFormatProperties2 GetPhysicalDeviceFormatProperties2; 234 PFN_vkGetPhysicalDeviceImageFormatProperties2 GetPhysicalDeviceImageFormatProperties2; 235 PFN_vkGetPhysicalDeviceQueueFamilyProperties2 GetPhysicalDeviceQueueFamilyProperties2; 236 PFN_vkGetPhysicalDeviceMemoryProperties2 GetPhysicalDeviceMemoryProperties2; 237 PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 GetPhysicalDeviceSparseImageFormatProperties2; 238 PFN_vkGetPhysicalDeviceExternalBufferProperties GetPhysicalDeviceExternalBufferProperties; 239 PFN_vkGetPhysicalDeviceExternalFenceProperties GetPhysicalDeviceExternalFenceProperties; 240 PFN_vkGetPhysicalDeviceExternalSemaphoreProperties GetPhysicalDeviceExternalSemaphoreProperties; 241 242 // ---- Core 1_3 commands 243 PFN_vkGetPhysicalDeviceToolProperties GetPhysicalDeviceToolProperties; 244 245 // ---- VK_KHR_surface extension commands 246 PFN_vkDestroySurfaceKHR DestroySurfaceKHR; 247 PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR; 248 PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR GetPhysicalDeviceSurfaceCapabilitiesKHR; 249 PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR; 250 PFN_vkGetPhysicalDeviceSurfacePresentModesKHR GetPhysicalDeviceSurfacePresentModesKHR; 251 252 // ---- VK_KHR_swapchain extension commands 253 PFN_vkCreateSwapchainKHR CreateSwapchainKHR; 254 PFN_vkGetDeviceGroupSurfacePresentModesKHR GetDeviceGroupSurfacePresentModesKHR; 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_display_swapchain extension commands 267 PFN_vkCreateSharedSwapchainsKHR CreateSharedSwapchainsKHR; 268 269 // ---- VK_KHR_xlib_surface extension commands 270 #ifdef VK_USE_PLATFORM_XLIB_KHR 271 PFN_vkCreateXlibSurfaceKHR CreateXlibSurfaceKHR; 272 #endif // VK_USE_PLATFORM_XLIB_KHR 273 #ifdef VK_USE_PLATFORM_XLIB_KHR 274 PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR GetPhysicalDeviceXlibPresentationSupportKHR; 275 #endif // VK_USE_PLATFORM_XLIB_KHR 276 277 // ---- VK_KHR_xcb_surface extension commands 278 #ifdef VK_USE_PLATFORM_XCB_KHR 279 PFN_vkCreateXcbSurfaceKHR CreateXcbSurfaceKHR; 280 #endif // VK_USE_PLATFORM_XCB_KHR 281 #ifdef VK_USE_PLATFORM_XCB_KHR 282 PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR GetPhysicalDeviceXcbPresentationSupportKHR; 283 #endif // VK_USE_PLATFORM_XCB_KHR 284 285 // ---- VK_KHR_wayland_surface extension commands 286 #ifdef VK_USE_PLATFORM_WAYLAND_KHR 287 PFN_vkCreateWaylandSurfaceKHR CreateWaylandSurfaceKHR; 288 #endif // VK_USE_PLATFORM_WAYLAND_KHR 289 #ifdef VK_USE_PLATFORM_WAYLAND_KHR 290 PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR GetPhysicalDeviceWaylandPresentationSupportKHR; 291 #endif // VK_USE_PLATFORM_WAYLAND_KHR 292 293 // ---- VK_KHR_android_surface extension commands 294 #ifdef VK_USE_PLATFORM_ANDROID_KHR 295 PFN_vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR; 296 #endif // VK_USE_PLATFORM_ANDROID_KHR 297 298 // ---- VK_KHR_win32_surface extension commands 299 #ifdef VK_USE_PLATFORM_WIN32_KHR 300 PFN_vkCreateWin32SurfaceKHR CreateWin32SurfaceKHR; 301 #endif // VK_USE_PLATFORM_WIN32_KHR 302 #ifdef VK_USE_PLATFORM_WIN32_KHR 303 PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR GetPhysicalDeviceWin32PresentationSupportKHR; 304 #endif // VK_USE_PLATFORM_WIN32_KHR 305 306 // ---- VK_KHR_video_queue extension commands 307 #ifdef VK_ENABLE_BETA_EXTENSIONS 308 PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR GetPhysicalDeviceVideoCapabilitiesKHR; 309 #endif // VK_ENABLE_BETA_EXTENSIONS 310 #ifdef VK_ENABLE_BETA_EXTENSIONS 311 PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR GetPhysicalDeviceVideoFormatPropertiesKHR; 312 #endif // VK_ENABLE_BETA_EXTENSIONS 313 314 // ---- VK_KHR_get_physical_device_properties2 extension commands 315 PFN_vkGetPhysicalDeviceFeatures2KHR GetPhysicalDeviceFeatures2KHR; 316 PFN_vkGetPhysicalDeviceProperties2KHR GetPhysicalDeviceProperties2KHR; 317 PFN_vkGetPhysicalDeviceFormatProperties2KHR GetPhysicalDeviceFormatProperties2KHR; 318 PFN_vkGetPhysicalDeviceImageFormatProperties2KHR GetPhysicalDeviceImageFormatProperties2KHR; 319 PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR GetPhysicalDeviceQueueFamilyProperties2KHR; 320 PFN_vkGetPhysicalDeviceMemoryProperties2KHR GetPhysicalDeviceMemoryProperties2KHR; 321 PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR GetPhysicalDeviceSparseImageFormatProperties2KHR; 322 323 // ---- VK_KHR_device_group_creation extension commands 324 PFN_vkEnumeratePhysicalDeviceGroupsKHR EnumeratePhysicalDeviceGroupsKHR; 325 326 // ---- VK_KHR_external_memory_capabilities extension commands 327 PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR GetPhysicalDeviceExternalBufferPropertiesKHR; 328 329 // ---- VK_KHR_external_semaphore_capabilities extension commands 330 PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR GetPhysicalDeviceExternalSemaphorePropertiesKHR; 331 332 // ---- VK_KHR_external_fence_capabilities extension commands 333 PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR GetPhysicalDeviceExternalFencePropertiesKHR; 334 335 // ---- VK_KHR_performance_query extension commands 336 PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR; 337 PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR; 338 339 // ---- VK_KHR_get_surface_capabilities2 extension commands 340 PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR GetPhysicalDeviceSurfaceCapabilities2KHR; 341 PFN_vkGetPhysicalDeviceSurfaceFormats2KHR GetPhysicalDeviceSurfaceFormats2KHR; 342 343 // ---- VK_KHR_get_display_properties2 extension commands 344 PFN_vkGetPhysicalDeviceDisplayProperties2KHR GetPhysicalDeviceDisplayProperties2KHR; 345 PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR GetPhysicalDeviceDisplayPlaneProperties2KHR; 346 PFN_vkGetDisplayModeProperties2KHR GetDisplayModeProperties2KHR; 347 PFN_vkGetDisplayPlaneCapabilities2KHR GetDisplayPlaneCapabilities2KHR; 348 349 // ---- VK_KHR_fragment_shading_rate extension commands 350 PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR GetPhysicalDeviceFragmentShadingRatesKHR; 351 352 // ---- VK_EXT_debug_report extension commands 353 PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT; 354 PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT; 355 PFN_vkDebugReportMessageEXT DebugReportMessageEXT; 356 357 // ---- VK_EXT_debug_marker extension commands 358 PFN_vkDebugMarkerSetObjectTagEXT DebugMarkerSetObjectTagEXT; 359 PFN_vkDebugMarkerSetObjectNameEXT DebugMarkerSetObjectNameEXT; 360 361 // ---- VK_GGP_stream_descriptor_surface extension commands 362 #ifdef VK_USE_PLATFORM_GGP 363 PFN_vkCreateStreamDescriptorSurfaceGGP CreateStreamDescriptorSurfaceGGP; 364 #endif // VK_USE_PLATFORM_GGP 365 366 // ---- VK_NV_external_memory_capabilities extension commands 367 PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV GetPhysicalDeviceExternalImageFormatPropertiesNV; 368 369 // ---- VK_NN_vi_surface extension commands 370 #ifdef VK_USE_PLATFORM_VI_NN 371 PFN_vkCreateViSurfaceNN CreateViSurfaceNN; 372 #endif // VK_USE_PLATFORM_VI_NN 373 374 // ---- VK_EXT_direct_mode_display extension commands 375 PFN_vkReleaseDisplayEXT ReleaseDisplayEXT; 376 377 // ---- VK_EXT_acquire_xlib_display extension commands 378 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT 379 PFN_vkAcquireXlibDisplayEXT AcquireXlibDisplayEXT; 380 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT 381 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT 382 PFN_vkGetRandROutputDisplayEXT GetRandROutputDisplayEXT; 383 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT 384 385 // ---- VK_EXT_display_surface_counter extension commands 386 PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT GetPhysicalDeviceSurfaceCapabilities2EXT; 387 388 // ---- VK_MVK_ios_surface extension commands 389 #ifdef VK_USE_PLATFORM_IOS_MVK 390 PFN_vkCreateIOSSurfaceMVK CreateIOSSurfaceMVK; 391 #endif // VK_USE_PLATFORM_IOS_MVK 392 393 // ---- VK_MVK_macos_surface extension commands 394 #ifdef VK_USE_PLATFORM_MACOS_MVK 395 PFN_vkCreateMacOSSurfaceMVK CreateMacOSSurfaceMVK; 396 #endif // VK_USE_PLATFORM_MACOS_MVK 397 398 // ---- VK_EXT_debug_utils extension commands 399 PFN_vkSetDebugUtilsObjectNameEXT SetDebugUtilsObjectNameEXT; 400 PFN_vkSetDebugUtilsObjectTagEXT SetDebugUtilsObjectTagEXT; 401 PFN_vkQueueBeginDebugUtilsLabelEXT QueueBeginDebugUtilsLabelEXT; 402 PFN_vkQueueEndDebugUtilsLabelEXT QueueEndDebugUtilsLabelEXT; 403 PFN_vkQueueInsertDebugUtilsLabelEXT QueueInsertDebugUtilsLabelEXT; 404 PFN_vkCmdBeginDebugUtilsLabelEXT CmdBeginDebugUtilsLabelEXT; 405 PFN_vkCmdEndDebugUtilsLabelEXT CmdEndDebugUtilsLabelEXT; 406 PFN_vkCmdInsertDebugUtilsLabelEXT CmdInsertDebugUtilsLabelEXT; 407 PFN_vkCreateDebugUtilsMessengerEXT CreateDebugUtilsMessengerEXT; 408 PFN_vkDestroyDebugUtilsMessengerEXT DestroyDebugUtilsMessengerEXT; 409 PFN_vkSubmitDebugUtilsMessageEXT SubmitDebugUtilsMessageEXT; 410 411 // ---- VK_EXT_sample_locations extension commands 412 PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT GetPhysicalDeviceMultisamplePropertiesEXT; 413 414 // ---- VK_EXT_calibrated_timestamps extension commands 415 PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT GetPhysicalDeviceCalibrateableTimeDomainsEXT; 416 417 // ---- VK_FUCHSIA_imagepipe_surface extension commands 418 #ifdef VK_USE_PLATFORM_FUCHSIA 419 PFN_vkCreateImagePipeSurfaceFUCHSIA CreateImagePipeSurfaceFUCHSIA; 420 #endif // VK_USE_PLATFORM_FUCHSIA 421 422 // ---- VK_EXT_metal_surface extension commands 423 #ifdef VK_USE_PLATFORM_METAL_EXT 424 PFN_vkCreateMetalSurfaceEXT CreateMetalSurfaceEXT; 425 #endif // VK_USE_PLATFORM_METAL_EXT 426 427 // ---- VK_EXT_tooling_info extension commands 428 PFN_vkGetPhysicalDeviceToolPropertiesEXT GetPhysicalDeviceToolPropertiesEXT; 429 430 // ---- VK_NV_cooperative_matrix extension commands 431 PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV GetPhysicalDeviceCooperativeMatrixPropertiesNV; 432 433 // ---- VK_NV_coverage_reduction_mode extension commands 434 PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV; 435 436 // ---- VK_EXT_full_screen_exclusive extension commands 437 #ifdef VK_USE_PLATFORM_WIN32_KHR 438 PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT GetPhysicalDeviceSurfacePresentModes2EXT; 439 #endif // VK_USE_PLATFORM_WIN32_KHR 440 #ifdef VK_USE_PLATFORM_WIN32_KHR 441 PFN_vkGetDeviceGroupSurfacePresentModes2EXT GetDeviceGroupSurfacePresentModes2EXT; 442 #endif // VK_USE_PLATFORM_WIN32_KHR 443 444 // ---- VK_EXT_headless_surface extension commands 445 PFN_vkCreateHeadlessSurfaceEXT CreateHeadlessSurfaceEXT; 446 447 // ---- VK_EXT_acquire_drm_display extension commands 448 PFN_vkAcquireDrmDisplayEXT AcquireDrmDisplayEXT; 449 PFN_vkGetDrmDisplayEXT GetDrmDisplayEXT; 450 451 // ---- VK_NV_acquire_winrt_display extension commands 452 #ifdef VK_USE_PLATFORM_WIN32_KHR 453 PFN_vkAcquireWinrtDisplayNV AcquireWinrtDisplayNV; 454 #endif // VK_USE_PLATFORM_WIN32_KHR 455 #ifdef VK_USE_PLATFORM_WIN32_KHR 456 PFN_vkGetWinrtDisplayNV GetWinrtDisplayNV; 457 #endif // VK_USE_PLATFORM_WIN32_KHR 458 459 // ---- VK_EXT_directfb_surface extension commands 460 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT 461 PFN_vkCreateDirectFBSurfaceEXT CreateDirectFBSurfaceEXT; 462 #endif // VK_USE_PLATFORM_DIRECTFB_EXT 463 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT 464 PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT GetPhysicalDeviceDirectFBPresentationSupportEXT; 465 #endif // VK_USE_PLATFORM_DIRECTFB_EXT 466 467 // ---- VK_QNX_screen_surface extension commands 468 #ifdef VK_USE_PLATFORM_SCREEN_QNX 469 PFN_vkCreateScreenSurfaceQNX CreateScreenSurfaceQNX; 470 #endif // VK_USE_PLATFORM_SCREEN_QNX 471 #ifdef VK_USE_PLATFORM_SCREEN_QNX 472 PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX GetPhysicalDeviceScreenPresentationSupportQNX; 473 #endif // VK_USE_PLATFORM_SCREEN_QNX 474 475 // ---- VK_NV_optical_flow extension commands 476 PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV GetPhysicalDeviceOpticalFlowImageFormatsNV; 477 478 // ---- VK_OHOS_surface extension commands 479 #ifdef VK_USE_PLATFORM_OHOS 480 PFN_vkCreateSurfaceOHOS CreateSurfaceOHOS; 481 #endif // VK_USE_PLATFORM_OHOS 482 }; 483 484 struct loader_instance_extension_enables { 485 uint8_t khr_get_physical_device_properties2; 486 uint8_t khr_device_group_creation; 487 uint8_t khr_external_memory_capabilities; 488 uint8_t khr_external_semaphore_capabilities; 489 uint8_t khr_external_fence_capabilities; 490 uint8_t ext_debug_report; 491 uint8_t nv_external_memory_capabilities; 492 uint8_t ext_direct_mode_display; 493 uint8_t ext_acquire_xlib_display; 494 uint8_t ext_display_surface_counter; 495 uint8_t ext_debug_utils; 496 uint8_t ext_acquire_drm_display; 497 }; 498 499 500