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