vulkan_win32.h 15 KB

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