vk_loader_extensions.h 25 KB

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