1 // *** THIS FILE IS GENERATED - DO NOT EDIT *** 2 // See loader_extension_generator.py for modifications 3 4 /* 5 * Copyright (c) 2015-2017 The Khronos Group Inc. 6 * Copyright (c) 2015-2017 Valve Corporation 7 * Copyright (c) 2015-2017 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 VKAPI_ATTR bool VKAPI_CALL loader_icd_init_entries(struct loader_icd_term *icd_term, VkInstance inst, 87 const PFN_vkGetInstanceProcAddr fp_gipa); 88 89 // Loader core instance terminators 90 VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateInstance( 91 const VkInstanceCreateInfo* pCreateInfo, 92 const VkAllocationCallbacks* pAllocator, 93 VkInstance* pInstance); 94 VKAPI_ATTR void VKAPI_CALL terminator_DestroyInstance( 95 VkInstance instance, 96 const VkAllocationCallbacks* pAllocator); 97 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDevices( 98 VkInstance instance, 99 uint32_t* pPhysicalDeviceCount, 100 VkPhysicalDevice* pPhysicalDevices); 101 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFeatures( 102 VkPhysicalDevice physicalDevice, 103 VkPhysicalDeviceFeatures* pFeatures); 104 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFormatProperties( 105 VkPhysicalDevice physicalDevice, 106 VkFormat format, 107 VkFormatProperties* pFormatProperties); 108 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceImageFormatProperties( 109 VkPhysicalDevice physicalDevice, 110 VkFormat format, 111 VkImageType type, 112 VkImageTiling tiling, 113 VkImageUsageFlags usage, 114 VkImageCreateFlags flags, 115 VkImageFormatProperties* pImageFormatProperties); 116 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceProperties( 117 VkPhysicalDevice physicalDevice, 118 VkPhysicalDeviceProperties* pProperties); 119 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceQueueFamilyProperties( 120 VkPhysicalDevice physicalDevice, 121 uint32_t* pQueueFamilyPropertyCount, 122 VkQueueFamilyProperties* pQueueFamilyProperties); 123 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceMemoryProperties( 124 VkPhysicalDevice physicalDevice, 125 VkPhysicalDeviceMemoryProperties* pMemoryProperties); 126 VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL terminator_GetInstanceProcAddr( 127 VkInstance instance, 128 const char* pName); 129 VKAPI_ATTR VkResult VKAPI_CALL terminator_CreateDevice( 130 VkPhysicalDevice physicalDevice, 131 const VkDeviceCreateInfo* pCreateInfo, 132 const VkAllocationCallbacks* pAllocator, 133 VkDevice* pDevice); 134 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateInstanceExtensionProperties( 135 const VkEnumerateInstanceExtensionPropertiesChain* chain, 136 const char* pLayerName, 137 uint32_t* pPropertyCount, 138 VkExtensionProperties* pProperties); 139 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateDeviceExtensionProperties( 140 VkPhysicalDevice physicalDevice, 141 const char* pLayerName, 142 uint32_t* pPropertyCount, 143 VkExtensionProperties* pProperties); 144 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateInstanceLayerProperties( 145 const VkEnumerateInstanceLayerPropertiesChain* chain, 146 uint32_t* pPropertyCount, 147 VkLayerProperties* pProperties); 148 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateDeviceLayerProperties( 149 VkPhysicalDevice physicalDevice, 150 uint32_t* pPropertyCount, 151 VkLayerProperties* pProperties); 152 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceSparseImageFormatProperties( 153 VkPhysicalDevice physicalDevice, 154 VkFormat format, 155 VkImageType type, 156 VkSampleCountFlagBits samples, 157 VkImageUsageFlags usage, 158 VkImageTiling tiling, 159 uint32_t* pPropertyCount, 160 VkSparseImageFormatProperties* pProperties); 161 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumerateInstanceVersion( 162 const VkEnumerateInstanceVersionChain* chain, 163 uint32_t* pApiVersion); 164 VKAPI_ATTR VkResult VKAPI_CALL terminator_EnumeratePhysicalDeviceGroups( 165 VkInstance instance, 166 uint32_t* pPhysicalDeviceGroupCount, 167 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); 168 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFeatures2( 169 VkPhysicalDevice physicalDevice, 170 VkPhysicalDeviceFeatures2* pFeatures); 171 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceProperties2( 172 VkPhysicalDevice physicalDevice, 173 VkPhysicalDeviceProperties2* pProperties); 174 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceFormatProperties2( 175 VkPhysicalDevice physicalDevice, 176 VkFormat format, 177 VkFormatProperties2* pFormatProperties); 178 VKAPI_ATTR VkResult VKAPI_CALL terminator_GetPhysicalDeviceImageFormatProperties2( 179 VkPhysicalDevice physicalDevice, 180 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, 181 VkImageFormatProperties2* pImageFormatProperties); 182 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceQueueFamilyProperties2( 183 VkPhysicalDevice physicalDevice, 184 uint32_t* pQueueFamilyPropertyCount, 185 VkQueueFamilyProperties2* pQueueFamilyProperties); 186 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceMemoryProperties2( 187 VkPhysicalDevice physicalDevice, 188 VkPhysicalDeviceMemoryProperties2* pMemoryProperties); 189 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceSparseImageFormatProperties2( 190 VkPhysicalDevice physicalDevice, 191 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, 192 uint32_t* pPropertyCount, 193 VkSparseImageFormatProperties2* pProperties); 194 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceExternalBufferProperties( 195 VkPhysicalDevice physicalDevice, 196 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, 197 VkExternalBufferProperties* pExternalBufferProperties); 198 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceExternalFenceProperties( 199 VkPhysicalDevice physicalDevice, 200 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, 201 VkExternalFenceProperties* pExternalFenceProperties); 202 VKAPI_ATTR void VKAPI_CALL terminator_GetPhysicalDeviceExternalSemaphoreProperties( 203 VkPhysicalDevice physicalDevice, 204 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, 205 VkExternalSemaphoreProperties* pExternalSemaphoreProperties); 206 207 // ICD function pointer dispatch table 208 struct loader_icd_term_dispatch { 209 210 // ---- Core 1_0 commands 211 PFN_vkCreateInstance CreateInstance; 212 PFN_vkDestroyInstance DestroyInstance; 213 PFN_vkEnumeratePhysicalDevices EnumeratePhysicalDevices; 214 PFN_vkGetPhysicalDeviceFeatures GetPhysicalDeviceFeatures; 215 PFN_vkGetPhysicalDeviceFormatProperties GetPhysicalDeviceFormatProperties; 216 PFN_vkGetPhysicalDeviceImageFormatProperties GetPhysicalDeviceImageFormatProperties; 217 PFN_vkGetPhysicalDeviceProperties GetPhysicalDeviceProperties; 218 PFN_vkGetPhysicalDeviceQueueFamilyProperties GetPhysicalDeviceQueueFamilyProperties; 219 PFN_vkGetPhysicalDeviceMemoryProperties GetPhysicalDeviceMemoryProperties; 220 PFN_vkGetDeviceProcAddr GetDeviceProcAddr; 221 PFN_vkCreateDevice CreateDevice; 222 PFN_vkEnumerateInstanceExtensionProperties EnumerateInstanceExtensionProperties; 223 PFN_vkEnumerateDeviceExtensionProperties EnumerateDeviceExtensionProperties; 224 PFN_vkEnumerateInstanceLayerProperties EnumerateInstanceLayerProperties; 225 PFN_vkGetPhysicalDeviceSparseImageFormatProperties GetPhysicalDeviceSparseImageFormatProperties; 226 227 // ---- Core 1_1 commands 228 PFN_vkEnumerateInstanceVersion EnumerateInstanceVersion; 229 PFN_vkEnumeratePhysicalDeviceGroups EnumeratePhysicalDeviceGroups; 230 PFN_vkGetPhysicalDeviceFeatures2 GetPhysicalDeviceFeatures2; 231 PFN_vkGetPhysicalDeviceProperties2 GetPhysicalDeviceProperties2; 232 PFN_vkGetPhysicalDeviceFormatProperties2 GetPhysicalDeviceFormatProperties2; 233 PFN_vkGetPhysicalDeviceImageFormatProperties2 GetPhysicalDeviceImageFormatProperties2; 234 PFN_vkGetPhysicalDeviceQueueFamilyProperties2 GetPhysicalDeviceQueueFamilyProperties2; 235 PFN_vkGetPhysicalDeviceMemoryProperties2 GetPhysicalDeviceMemoryProperties2; 236 PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 GetPhysicalDeviceSparseImageFormatProperties2; 237 PFN_vkGetPhysicalDeviceExternalBufferProperties GetPhysicalDeviceExternalBufferProperties; 238 PFN_vkGetPhysicalDeviceExternalFenceProperties GetPhysicalDeviceExternalFenceProperties; 239 PFN_vkGetPhysicalDeviceExternalSemaphoreProperties GetPhysicalDeviceExternalSemaphoreProperties; 240 241 // ---- VK_KHR_surface extension commands 242 PFN_vkDestroySurfaceKHR DestroySurfaceKHR; 243 PFN_vkGetPhysicalDeviceSurfaceSupportKHR GetPhysicalDeviceSurfaceSupportKHR; 244 PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR GetPhysicalDeviceSurfaceCapabilitiesKHR; 245 PFN_vkGetPhysicalDeviceSurfaceFormatsKHR GetPhysicalDeviceSurfaceFormatsKHR; 246 PFN_vkGetPhysicalDeviceSurfacePresentModesKHR GetPhysicalDeviceSurfacePresentModesKHR; 247 248 // ---- VK_KHR_swapchain extension commands 249 PFN_vkCreateSwapchainKHR CreateSwapchainKHR; 250 PFN_vkGetDeviceGroupSurfacePresentModesKHR GetDeviceGroupSurfacePresentModesKHR; 251 PFN_vkGetPhysicalDevicePresentRectanglesKHR GetPhysicalDevicePresentRectanglesKHR; 252 253 // ---- VK_KHR_display extension commands 254 PFN_vkGetPhysicalDeviceDisplayPropertiesKHR GetPhysicalDeviceDisplayPropertiesKHR; 255 PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR GetPhysicalDeviceDisplayPlanePropertiesKHR; 256 PFN_vkGetDisplayPlaneSupportedDisplaysKHR GetDisplayPlaneSupportedDisplaysKHR; 257 PFN_vkGetDisplayModePropertiesKHR GetDisplayModePropertiesKHR; 258 PFN_vkCreateDisplayModeKHR CreateDisplayModeKHR; 259 PFN_vkGetDisplayPlaneCapabilitiesKHR GetDisplayPlaneCapabilitiesKHR; 260 PFN_vkCreateDisplayPlaneSurfaceKHR CreateDisplayPlaneSurfaceKHR; 261 262 // ---- VK_KHR_display_swapchain extension commands 263 PFN_vkCreateSharedSwapchainsKHR CreateSharedSwapchainsKHR; 264 265 // ---- VK_KHR_xlib_surface extension commands 266 #ifdef VK_USE_PLATFORM_XLIB_KHR 267 PFN_vkCreateXlibSurfaceKHR CreateXlibSurfaceKHR; 268 #endif // VK_USE_PLATFORM_XLIB_KHR 269 #ifdef VK_USE_PLATFORM_XLIB_KHR 270 PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR GetPhysicalDeviceXlibPresentationSupportKHR; 271 #endif // VK_USE_PLATFORM_XLIB_KHR 272 273 // ---- VK_KHR_xcb_surface extension commands 274 #ifdef VK_USE_PLATFORM_XCB_KHR 275 PFN_vkCreateXcbSurfaceKHR CreateXcbSurfaceKHR; 276 #endif // VK_USE_PLATFORM_XCB_KHR 277 #ifdef VK_USE_PLATFORM_XCB_KHR 278 PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR GetPhysicalDeviceXcbPresentationSupportKHR; 279 #endif // VK_USE_PLATFORM_XCB_KHR 280 281 // ---- VK_KHR_wayland_surface extension commands 282 #ifdef VK_USE_PLATFORM_WAYLAND_KHR 283 PFN_vkCreateWaylandSurfaceKHR CreateWaylandSurfaceKHR; 284 #endif // VK_USE_PLATFORM_WAYLAND_KHR 285 #ifdef VK_USE_PLATFORM_WAYLAND_KHR 286 PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR GetPhysicalDeviceWaylandPresentationSupportKHR; 287 #endif // VK_USE_PLATFORM_WAYLAND_KHR 288 289 // ---- VK_KHR_android_surface extension commands 290 #ifdef VK_USE_PLATFORM_ANDROID_KHR 291 PFN_vkCreateAndroidSurfaceKHR CreateAndroidSurfaceKHR; 292 #endif // VK_USE_PLATFORM_ANDROID_KHR 293 294 // ---- VK_KHR_win32_surface extension commands 295 #ifdef VK_USE_PLATFORM_WIN32_KHR 296 PFN_vkCreateWin32SurfaceKHR CreateWin32SurfaceKHR; 297 #endif // VK_USE_PLATFORM_WIN32_KHR 298 #ifdef VK_USE_PLATFORM_WIN32_KHR 299 PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR GetPhysicalDeviceWin32PresentationSupportKHR; 300 #endif // VK_USE_PLATFORM_WIN32_KHR 301 302 // ---- VK_KHR_get_physical_device_properties2 extension commands 303 PFN_vkGetPhysicalDeviceFeatures2KHR GetPhysicalDeviceFeatures2KHR; 304 PFN_vkGetPhysicalDeviceProperties2KHR GetPhysicalDeviceProperties2KHR; 305 PFN_vkGetPhysicalDeviceFormatProperties2KHR GetPhysicalDeviceFormatProperties2KHR; 306 PFN_vkGetPhysicalDeviceImageFormatProperties2KHR GetPhysicalDeviceImageFormatProperties2KHR; 307 PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR GetPhysicalDeviceQueueFamilyProperties2KHR; 308 PFN_vkGetPhysicalDeviceMemoryProperties2KHR GetPhysicalDeviceMemoryProperties2KHR; 309 PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR GetPhysicalDeviceSparseImageFormatProperties2KHR; 310 311 // ---- VK_KHR_device_group_creation extension commands 312 PFN_vkEnumeratePhysicalDeviceGroupsKHR EnumeratePhysicalDeviceGroupsKHR; 313 314 // ---- VK_KHR_external_memory_capabilities extension commands 315 PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR GetPhysicalDeviceExternalBufferPropertiesKHR; 316 317 // ---- VK_KHR_external_semaphore_capabilities extension commands 318 PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR GetPhysicalDeviceExternalSemaphorePropertiesKHR; 319 320 // ---- VK_KHR_external_fence_capabilities extension commands 321 PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR GetPhysicalDeviceExternalFencePropertiesKHR; 322 323 // ---- VK_KHR_performance_query extension commands 324 PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR EnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR; 325 PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR GetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR; 326 327 // ---- VK_KHR_get_surface_capabilities2 extension commands 328 PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR GetPhysicalDeviceSurfaceCapabilities2KHR; 329 PFN_vkGetPhysicalDeviceSurfaceFormats2KHR GetPhysicalDeviceSurfaceFormats2KHR; 330 331 // ---- VK_KHR_get_display_properties2 extension commands 332 PFN_vkGetPhysicalDeviceDisplayProperties2KHR GetPhysicalDeviceDisplayProperties2KHR; 333 PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR GetPhysicalDeviceDisplayPlaneProperties2KHR; 334 PFN_vkGetDisplayModeProperties2KHR GetDisplayModeProperties2KHR; 335 PFN_vkGetDisplayPlaneCapabilities2KHR GetDisplayPlaneCapabilities2KHR; 336 337 // ---- VK_KHR_fragment_shading_rate extension commands 338 PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR GetPhysicalDeviceFragmentShadingRatesKHR; 339 340 // ---- VK_EXT_debug_report extension commands 341 PFN_vkCreateDebugReportCallbackEXT CreateDebugReportCallbackEXT; 342 PFN_vkDestroyDebugReportCallbackEXT DestroyDebugReportCallbackEXT; 343 PFN_vkDebugReportMessageEXT DebugReportMessageEXT; 344 345 // ---- VK_EXT_debug_marker extension commands 346 PFN_vkDebugMarkerSetObjectTagEXT DebugMarkerSetObjectTagEXT; 347 PFN_vkDebugMarkerSetObjectNameEXT DebugMarkerSetObjectNameEXT; 348 349 // ---- VK_GGP_stream_descriptor_surface extension commands 350 #ifdef VK_USE_PLATFORM_GGP 351 PFN_vkCreateStreamDescriptorSurfaceGGP CreateStreamDescriptorSurfaceGGP; 352 #endif // VK_USE_PLATFORM_GGP 353 354 // ---- VK_NV_external_memory_capabilities extension commands 355 PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV GetPhysicalDeviceExternalImageFormatPropertiesNV; 356 357 // ---- VK_NN_vi_surface extension commands 358 #ifdef VK_USE_PLATFORM_VI_NN 359 PFN_vkCreateViSurfaceNN CreateViSurfaceNN; 360 #endif // VK_USE_PLATFORM_VI_NN 361 362 // ---- VK_EXT_direct_mode_display extension commands 363 PFN_vkReleaseDisplayEXT ReleaseDisplayEXT; 364 365 // ---- VK_EXT_acquire_xlib_display extension commands 366 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT 367 PFN_vkAcquireXlibDisplayEXT AcquireXlibDisplayEXT; 368 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT 369 #ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT 370 PFN_vkGetRandROutputDisplayEXT GetRandROutputDisplayEXT; 371 #endif // VK_USE_PLATFORM_XLIB_XRANDR_EXT 372 373 // ---- VK_EXT_display_surface_counter extension commands 374 PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT GetPhysicalDeviceSurfaceCapabilities2EXT; 375 376 // ---- VK_MVK_ios_surface extension commands 377 #ifdef VK_USE_PLATFORM_IOS_MVK 378 PFN_vkCreateIOSSurfaceMVK CreateIOSSurfaceMVK; 379 #endif // VK_USE_PLATFORM_IOS_MVK 380 381 // ---- VK_MVK_macos_surface extension commands 382 #ifdef VK_USE_PLATFORM_MACOS_MVK 383 PFN_vkCreateMacOSSurfaceMVK CreateMacOSSurfaceMVK; 384 #endif // VK_USE_PLATFORM_MACOS_MVK 385 386 // ---- VK_EXT_debug_utils extension commands 387 PFN_vkSetDebugUtilsObjectNameEXT SetDebugUtilsObjectNameEXT; 388 PFN_vkSetDebugUtilsObjectTagEXT SetDebugUtilsObjectTagEXT; 389 PFN_vkQueueBeginDebugUtilsLabelEXT QueueBeginDebugUtilsLabelEXT; 390 PFN_vkQueueEndDebugUtilsLabelEXT QueueEndDebugUtilsLabelEXT; 391 PFN_vkQueueInsertDebugUtilsLabelEXT QueueInsertDebugUtilsLabelEXT; 392 PFN_vkCmdBeginDebugUtilsLabelEXT CmdBeginDebugUtilsLabelEXT; 393 PFN_vkCmdEndDebugUtilsLabelEXT CmdEndDebugUtilsLabelEXT; 394 PFN_vkCmdInsertDebugUtilsLabelEXT CmdInsertDebugUtilsLabelEXT; 395 PFN_vkCreateDebugUtilsMessengerEXT CreateDebugUtilsMessengerEXT; 396 PFN_vkDestroyDebugUtilsMessengerEXT DestroyDebugUtilsMessengerEXT; 397 PFN_vkSubmitDebugUtilsMessageEXT SubmitDebugUtilsMessageEXT; 398 399 // ---- VK_EXT_sample_locations extension commands 400 PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT GetPhysicalDeviceMultisamplePropertiesEXT; 401 402 // ---- VK_EXT_calibrated_timestamps extension commands 403 PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT GetPhysicalDeviceCalibrateableTimeDomainsEXT; 404 405 // ---- VK_FUCHSIA_imagepipe_surface extension commands 406 #ifdef VK_USE_PLATFORM_FUCHSIA 407 PFN_vkCreateImagePipeSurfaceFUCHSIA CreateImagePipeSurfaceFUCHSIA; 408 #endif // VK_USE_PLATFORM_FUCHSIA 409 410 // ---- VK_EXT_metal_surface extension commands 411 #ifdef VK_USE_PLATFORM_METAL_EXT 412 PFN_vkCreateMetalSurfaceEXT CreateMetalSurfaceEXT; 413 #endif // VK_USE_PLATFORM_METAL_EXT 414 415 // ---- VK_EXT_tooling_info extension commands 416 PFN_vkGetPhysicalDeviceToolPropertiesEXT GetPhysicalDeviceToolPropertiesEXT; 417 418 // ---- VK_NV_cooperative_matrix extension commands 419 PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV GetPhysicalDeviceCooperativeMatrixPropertiesNV; 420 421 // ---- VK_NV_coverage_reduction_mode extension commands 422 PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV GetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV; 423 424 // ---- VK_EXT_full_screen_exclusive extension commands 425 #ifdef VK_USE_PLATFORM_WIN32_KHR 426 PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT GetPhysicalDeviceSurfacePresentModes2EXT; 427 #endif // VK_USE_PLATFORM_WIN32_KHR 428 #ifdef VK_USE_PLATFORM_WIN32_KHR 429 PFN_vkGetDeviceGroupSurfacePresentModes2EXT GetDeviceGroupSurfacePresentModes2EXT; 430 #endif // VK_USE_PLATFORM_WIN32_KHR 431 432 // ---- VK_EXT_headless_surface extension commands 433 PFN_vkCreateHeadlessSurfaceEXT CreateHeadlessSurfaceEXT; 434 435 // ---- VK_EXT_directfb_surface extension commands 436 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT 437 PFN_vkCreateDirectFBSurfaceEXT CreateDirectFBSurfaceEXT; 438 #endif // VK_USE_PLATFORM_DIRECTFB_EXT 439 #ifdef VK_USE_PLATFORM_DIRECTFB_EXT 440 PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT GetPhysicalDeviceDirectFBPresentationSupportEXT; 441 #endif // VK_USE_PLATFORM_DIRECTFB_EXT 442 }; 443 444 union loader_instance_extension_enables { 445 struct { 446 uint8_t khr_get_physical_device_properties2 : 1; 447 uint8_t khr_device_group_creation : 1; 448 uint8_t khr_external_memory_capabilities : 1; 449 uint8_t khr_external_semaphore_capabilities : 1; 450 uint8_t khr_external_fence_capabilities : 1; 451 uint8_t ext_debug_report : 1; 452 uint8_t ggp_stream_descriptor_surface : 1; 453 uint8_t nv_external_memory_capabilities : 1; 454 uint8_t nn_vi_surface : 1; 455 uint8_t ext_direct_mode_display : 1; 456 uint8_t ext_acquire_xlib_display : 1; 457 uint8_t ext_display_surface_counter : 1; 458 uint8_t ext_debug_utils : 1; 459 }; 460 uint64_t padding[4]; 461 }; 462 463 464