vulkan_win32.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. #ifndef VULKAN_WIN32_H_
  2. #define VULKAN_WIN32_H_ 1
  3. /*
  4. ** Copyright 2015-2025 The Khronos Group Inc.
  5. **
  6. ** SPDX-License-Identifier: Apache-2.0
  7. */
  8. /*
  9. ** This header is generated from the Khronos Vulkan XML API Registry.
  10. **
  11. */
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15. // VK_KHR_win32_surface is a preprocessor guard. Do not pass it to API calls.
  16. #define VK_KHR_win32_surface 1
  17. #define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
  18. #define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface"
  19. typedef VkFlags VkWin32SurfaceCreateFlagsKHR;
  20. typedef struct VkWin32SurfaceCreateInfoKHR {
  21. VkStructureType sType;
  22. const void* pNext;
  23. VkWin32SurfaceCreateFlagsKHR flags;
  24. HINSTANCE hinstance;
  25. HWND hwnd;
  26. } VkWin32SurfaceCreateInfoKHR;
  27. typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
  28. typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);
  29. #ifndef VK_NO_PROTOTYPES
  30. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  31. VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(
  32. VkInstance instance,
  33. const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
  34. const VkAllocationCallbacks* pAllocator,
  35. VkSurfaceKHR* pSurface);
  36. #endif
  37. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  38. VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR(
  39. VkPhysicalDevice physicalDevice,
  40. uint32_t queueFamilyIndex);
  41. #endif
  42. #endif
  43. // VK_KHR_external_memory_win32 is a preprocessor guard. Do not pass it to API calls.
  44. #define VK_KHR_external_memory_win32 1
  45. #define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
  46. #define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32"
  47. typedef struct VkImportMemoryWin32HandleInfoKHR {
  48. VkStructureType sType;
  49. const void* pNext;
  50. VkExternalMemoryHandleTypeFlagBits handleType;
  51. HANDLE handle;
  52. LPCWSTR name;
  53. } VkImportMemoryWin32HandleInfoKHR;
  54. typedef struct VkExportMemoryWin32HandleInfoKHR {
  55. VkStructureType sType;
  56. const void* pNext;
  57. const SECURITY_ATTRIBUTES* pAttributes;
  58. DWORD dwAccess;
  59. LPCWSTR name;
  60. } VkExportMemoryWin32HandleInfoKHR;
  61. typedef struct VkMemoryWin32HandlePropertiesKHR {
  62. VkStructureType sType;
  63. void* pNext;
  64. uint32_t memoryTypeBits;
  65. } VkMemoryWin32HandlePropertiesKHR;
  66. typedef struct VkMemoryGetWin32HandleInfoKHR {
  67. VkStructureType sType;
  68. const void* pNext;
  69. VkDeviceMemory memory;
  70. VkExternalMemoryHandleTypeFlagBits handleType;
  71. } VkMemoryGetWin32HandleInfoKHR;
  72. typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleKHR)(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
  73. typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandlePropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
  74. #ifndef VK_NO_PROTOTYPES
  75. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  76. VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleKHR(
  77. VkDevice device,
  78. const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
  79. HANDLE* pHandle);
  80. #endif
  81. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  82. VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandlePropertiesKHR(
  83. VkDevice device,
  84. VkExternalMemoryHandleTypeFlagBits handleType,
  85. HANDLE handle,
  86. VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
  87. #endif
  88. #endif
  89. // VK_KHR_win32_keyed_mutex is a preprocessor guard. Do not pass it to API calls.
  90. #define VK_KHR_win32_keyed_mutex 1
  91. #define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1
  92. #define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex"
  93. typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR {
  94. VkStructureType sType;
  95. const void* pNext;
  96. uint32_t acquireCount;
  97. const VkDeviceMemory* pAcquireSyncs;
  98. const uint64_t* pAcquireKeys;
  99. const uint32_t* pAcquireTimeouts;
  100. uint32_t releaseCount;
  101. const VkDeviceMemory* pReleaseSyncs;
  102. const uint64_t* pReleaseKeys;
  103. } VkWin32KeyedMutexAcquireReleaseInfoKHR;
  104. // VK_KHR_external_semaphore_win32 is a preprocessor guard. Do not pass it to API calls.
  105. #define VK_KHR_external_semaphore_win32 1
  106. #define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
  107. #define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32"
  108. typedef struct VkImportSemaphoreWin32HandleInfoKHR {
  109. VkStructureType sType;
  110. const void* pNext;
  111. VkSemaphore semaphore;
  112. VkSemaphoreImportFlags flags;
  113. VkExternalSemaphoreHandleTypeFlagBits handleType;
  114. HANDLE handle;
  115. LPCWSTR name;
  116. } VkImportSemaphoreWin32HandleInfoKHR;
  117. typedef struct VkExportSemaphoreWin32HandleInfoKHR {
  118. VkStructureType sType;
  119. const void* pNext;
  120. const SECURITY_ATTRIBUTES* pAttributes;
  121. DWORD dwAccess;
  122. LPCWSTR name;
  123. } VkExportSemaphoreWin32HandleInfoKHR;
  124. typedef struct VkD3D12FenceSubmitInfoKHR {
  125. VkStructureType sType;
  126. const void* pNext;
  127. uint32_t waitSemaphoreValuesCount;
  128. const uint64_t* pWaitSemaphoreValues;
  129. uint32_t signalSemaphoreValuesCount;
  130. const uint64_t* pSignalSemaphoreValues;
  131. } VkD3D12FenceSubmitInfoKHR;
  132. typedef struct VkSemaphoreGetWin32HandleInfoKHR {
  133. VkStructureType sType;
  134. const void* pNext;
  135. VkSemaphore semaphore;
  136. VkExternalSemaphoreHandleTypeFlagBits handleType;
  137. } VkSemaphoreGetWin32HandleInfoKHR;
  138. typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreWin32HandleKHR)(VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
  139. typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreWin32HandleKHR)(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
  140. #ifndef VK_NO_PROTOTYPES
  141. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  142. VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreWin32HandleKHR(
  143. VkDevice device,
  144. const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
  145. #endif
  146. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  147. VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreWin32HandleKHR(
  148. VkDevice device,
  149. const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
  150. HANDLE* pHandle);
  151. #endif
  152. #endif
  153. // VK_KHR_external_fence_win32 is a preprocessor guard. Do not pass it to API calls.
  154. #define VK_KHR_external_fence_win32 1
  155. #define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1
  156. #define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32"
  157. typedef struct VkImportFenceWin32HandleInfoKHR {
  158. VkStructureType sType;
  159. const void* pNext;
  160. VkFence fence;
  161. VkFenceImportFlags flags;
  162. VkExternalFenceHandleTypeFlagBits handleType;
  163. HANDLE handle;
  164. LPCWSTR name;
  165. } VkImportFenceWin32HandleInfoKHR;
  166. typedef struct VkExportFenceWin32HandleInfoKHR {
  167. VkStructureType sType;
  168. const void* pNext;
  169. const SECURITY_ATTRIBUTES* pAttributes;
  170. DWORD dwAccess;
  171. LPCWSTR name;
  172. } VkExportFenceWin32HandleInfoKHR;
  173. typedef struct VkFenceGetWin32HandleInfoKHR {
  174. VkStructureType sType;
  175. const void* pNext;
  176. VkFence fence;
  177. VkExternalFenceHandleTypeFlagBits handleType;
  178. } VkFenceGetWin32HandleInfoKHR;
  179. typedef VkResult (VKAPI_PTR *PFN_vkImportFenceWin32HandleKHR)(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
  180. typedef VkResult (VKAPI_PTR *PFN_vkGetFenceWin32HandleKHR)(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
  181. #ifndef VK_NO_PROTOTYPES
  182. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  183. VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceWin32HandleKHR(
  184. VkDevice device,
  185. const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
  186. #endif
  187. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  188. VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceWin32HandleKHR(
  189. VkDevice device,
  190. const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
  191. HANDLE* pHandle);
  192. #endif
  193. #endif
  194. // VK_NV_external_memory_win32 is a preprocessor guard. Do not pass it to API calls.
  195. #define VK_NV_external_memory_win32 1
  196. #define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
  197. #define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
  198. typedef struct VkImportMemoryWin32HandleInfoNV {
  199. VkStructureType sType;
  200. const void* pNext;
  201. VkExternalMemoryHandleTypeFlagsNV handleType;
  202. HANDLE handle;
  203. } VkImportMemoryWin32HandleInfoNV;
  204. typedef struct VkExportMemoryWin32HandleInfoNV {
  205. VkStructureType sType;
  206. const void* pNext;
  207. const SECURITY_ATTRIBUTES* pAttributes;
  208. DWORD dwAccess;
  209. } VkExportMemoryWin32HandleInfoNV;
  210. typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleNV)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle);
  211. #ifndef VK_NO_PROTOTYPES
  212. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  213. VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV(
  214. VkDevice device,
  215. VkDeviceMemory memory,
  216. VkExternalMemoryHandleTypeFlagsNV handleType,
  217. HANDLE* pHandle);
  218. #endif
  219. #endif
  220. // VK_NV_win32_keyed_mutex is a preprocessor guard. Do not pass it to API calls.
  221. #define VK_NV_win32_keyed_mutex 1
  222. #define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 2
  223. #define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
  224. typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV {
  225. VkStructureType sType;
  226. const void* pNext;
  227. uint32_t acquireCount;
  228. const VkDeviceMemory* pAcquireSyncs;
  229. const uint64_t* pAcquireKeys;
  230. const uint32_t* pAcquireTimeoutMilliseconds;
  231. uint32_t releaseCount;
  232. const VkDeviceMemory* pReleaseSyncs;
  233. const uint64_t* pReleaseKeys;
  234. } VkWin32KeyedMutexAcquireReleaseInfoNV;
  235. // VK_EXT_full_screen_exclusive is a preprocessor guard. Do not pass it to API calls.
  236. #define VK_EXT_full_screen_exclusive 1
  237. #define VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION 4
  238. #define VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME "VK_EXT_full_screen_exclusive"
  239. typedef enum VkFullScreenExclusiveEXT {
  240. VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT = 0,
  241. VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT = 1,
  242. VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT = 2,
  243. VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT = 3,
  244. VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT = 0x7FFFFFFF
  245. } VkFullScreenExclusiveEXT;
  246. typedef struct VkSurfaceFullScreenExclusiveInfoEXT {
  247. VkStructureType sType;
  248. void* pNext;
  249. VkFullScreenExclusiveEXT fullScreenExclusive;
  250. } VkSurfaceFullScreenExclusiveInfoEXT;
  251. typedef struct VkSurfaceCapabilitiesFullScreenExclusiveEXT {
  252. VkStructureType sType;
  253. void* pNext;
  254. VkBool32 fullScreenExclusiveSupported;
  255. } VkSurfaceCapabilitiesFullScreenExclusiveEXT;
  256. typedef struct VkSurfaceFullScreenExclusiveWin32InfoEXT {
  257. VkStructureType sType;
  258. const void* pNext;
  259. HMONITOR hmonitor;
  260. } VkSurfaceFullScreenExclusiveWin32InfoEXT;
  261. typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
  262. typedef VkResult (VKAPI_PTR *PFN_vkAcquireFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain);
  263. typedef VkResult (VKAPI_PTR *PFN_vkReleaseFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain);
  264. typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModes2EXT)(VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes);
  265. #ifndef VK_NO_PROTOTYPES
  266. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  267. VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModes2EXT(
  268. VkPhysicalDevice physicalDevice,
  269. const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
  270. uint32_t* pPresentModeCount,
  271. VkPresentModeKHR* pPresentModes);
  272. #endif
  273. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  274. VKAPI_ATTR VkResult VKAPI_CALL vkAcquireFullScreenExclusiveModeEXT(
  275. VkDevice device,
  276. VkSwapchainKHR swapchain);
  277. #endif
  278. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  279. VKAPI_ATTR VkResult VKAPI_CALL vkReleaseFullScreenExclusiveModeEXT(
  280. VkDevice device,
  281. VkSwapchainKHR swapchain);
  282. #endif
  283. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  284. VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModes2EXT(
  285. VkDevice device,
  286. const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
  287. VkDeviceGroupPresentModeFlagsKHR* pModes);
  288. #endif
  289. #endif
  290. // VK_NV_acquire_winrt_display is a preprocessor guard. Do not pass it to API calls.
  291. #define VK_NV_acquire_winrt_display 1
  292. #define VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION 1
  293. #define VK_NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME "VK_NV_acquire_winrt_display"
  294. typedef VkResult (VKAPI_PTR *PFN_vkAcquireWinrtDisplayNV)(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
  295. typedef VkResult (VKAPI_PTR *PFN_vkGetWinrtDisplayNV)(VkPhysicalDevice physicalDevice, uint32_t deviceRelativeId, VkDisplayKHR* pDisplay);
  296. #ifndef VK_NO_PROTOTYPES
  297. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  298. VKAPI_ATTR VkResult VKAPI_CALL vkAcquireWinrtDisplayNV(
  299. VkPhysicalDevice physicalDevice,
  300. VkDisplayKHR display);
  301. #endif
  302. #ifndef VK_ONLY_EXPORTED_PROTOTYPES
  303. VKAPI_ATTR VkResult VKAPI_CALL vkGetWinrtDisplayNV(
  304. VkPhysicalDevice physicalDevice,
  305. uint32_t deviceRelativeId,
  306. VkDisplayKHR* pDisplay);
  307. #endif
  308. #endif
  309. #ifdef __cplusplus
  310. }
  311. #endif
  312. #endif