1 #ifndef VULKAN_WIN32_H_
2 #define VULKAN_WIN32_H_ 1
5 ** Copyright (c) 2015-2020 The Khronos Group Inc.
7 ** SPDX-License-Identifier: Apache-2.0
11 ** This header is generated from the Khronos Vulkan XML API Registry.
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
;
29 VkWin32SurfaceCreateFlagsKHR flags
;
32 } VkWin32SurfaceCreateInfoKHR
;
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
);
37 #ifndef VK_NO_PROTOTYPES
38 VKAPI_ATTR VkResult VKAPI_CALL
vkCreateWin32SurfaceKHR(
40 const VkWin32SurfaceCreateInfoKHR
* pCreateInfo
,
41 const VkAllocationCallbacks
* pAllocator
,
42 VkSurfaceKHR
* pSurface
);
44 VKAPI_ATTR VkBool32 VKAPI_CALL
vkGetPhysicalDeviceWin32PresentationSupportKHR(
45 VkPhysicalDevice physicalDevice
,
46 uint32_t queueFamilyIndex
);
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
;
56 VkExternalMemoryHandleTypeFlagBits handleType
;
59 } VkImportMemoryWin32HandleInfoKHR
;
61 typedef struct VkExportMemoryWin32HandleInfoKHR
{
62 VkStructureType sType
;
64 const SECURITY_ATTRIBUTES
* pAttributes
;
67 } VkExportMemoryWin32HandleInfoKHR
;
69 typedef struct VkMemoryWin32HandlePropertiesKHR
{
70 VkStructureType sType
;
72 uint32_t memoryTypeBits
;
73 } VkMemoryWin32HandlePropertiesKHR
;
75 typedef struct VkMemoryGetWin32HandleInfoKHR
{
76 VkStructureType sType
;
78 VkDeviceMemory memory
;
79 VkExternalMemoryHandleTypeFlagBits handleType
;
80 } VkMemoryGetWin32HandleInfoKHR
;
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
);
85 #ifndef VK_NO_PROTOTYPES
86 VKAPI_ATTR VkResult VKAPI_CALL
vkGetMemoryWin32HandleKHR(
88 const VkMemoryGetWin32HandleInfoKHR
* pGetWin32HandleInfo
,
91 VKAPI_ATTR VkResult VKAPI_CALL
vkGetMemoryWin32HandlePropertiesKHR(
93 VkExternalMemoryHandleTypeFlagBits handleType
,
95 VkMemoryWin32HandlePropertiesKHR
* pMemoryWin32HandleProperties
);
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
;
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
;
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
;
122 VkSemaphore semaphore
;
123 VkSemaphoreImportFlags flags
;
124 VkExternalSemaphoreHandleTypeFlagBits handleType
;
127 } VkImportSemaphoreWin32HandleInfoKHR
;
129 typedef struct VkExportSemaphoreWin32HandleInfoKHR
{
130 VkStructureType sType
;
132 const SECURITY_ATTRIBUTES
* pAttributes
;
135 } VkExportSemaphoreWin32HandleInfoKHR
;
137 typedef struct VkD3D12FenceSubmitInfoKHR
{
138 VkStructureType sType
;
140 uint32_t waitSemaphoreValuesCount
;
141 const uint64_t* pWaitSemaphoreValues
;
142 uint32_t signalSemaphoreValuesCount
;
143 const uint64_t* pSignalSemaphoreValues
;
144 } VkD3D12FenceSubmitInfoKHR
;
146 typedef struct VkSemaphoreGetWin32HandleInfoKHR
{
147 VkStructureType sType
;
149 VkSemaphore semaphore
;
150 VkExternalSemaphoreHandleTypeFlagBits handleType
;
151 } VkSemaphoreGetWin32HandleInfoKHR
;
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
);
156 #ifndef VK_NO_PROTOTYPES
157 VKAPI_ATTR VkResult VKAPI_CALL
vkImportSemaphoreWin32HandleKHR(
159 const VkImportSemaphoreWin32HandleInfoKHR
* pImportSemaphoreWin32HandleInfo
);
161 VKAPI_ATTR VkResult VKAPI_CALL
vkGetSemaphoreWin32HandleKHR(
163 const VkSemaphoreGetWin32HandleInfoKHR
* pGetWin32HandleInfo
,
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
;
175 VkFenceImportFlags flags
;
176 VkExternalFenceHandleTypeFlagBits handleType
;
179 } VkImportFenceWin32HandleInfoKHR
;
181 typedef struct VkExportFenceWin32HandleInfoKHR
{
182 VkStructureType sType
;
184 const SECURITY_ATTRIBUTES
* pAttributes
;
187 } VkExportFenceWin32HandleInfoKHR
;
189 typedef struct VkFenceGetWin32HandleInfoKHR
{
190 VkStructureType sType
;
193 VkExternalFenceHandleTypeFlagBits handleType
;
194 } VkFenceGetWin32HandleInfoKHR
;
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
);
199 #ifndef VK_NO_PROTOTYPES
200 VKAPI_ATTR VkResult VKAPI_CALL
vkImportFenceWin32HandleKHR(
202 const VkImportFenceWin32HandleInfoKHR
* pImportFenceWin32HandleInfo
);
204 VKAPI_ATTR VkResult VKAPI_CALL
vkGetFenceWin32HandleKHR(
206 const VkFenceGetWin32HandleInfoKHR
* pGetWin32HandleInfo
,
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
;
217 VkExternalMemoryHandleTypeFlagsNV handleType
;
219 } VkImportMemoryWin32HandleInfoNV
;
221 typedef struct VkExportMemoryWin32HandleInfoNV
{
222 VkStructureType sType
;
224 const SECURITY_ATTRIBUTES
* pAttributes
;
226 } VkExportMemoryWin32HandleInfoNV
;
228 typedef VkResult (VKAPI_PTR
*PFN_vkGetMemoryWin32HandleNV
)(VkDevice device
, VkDeviceMemory memory
, VkExternalMemoryHandleTypeFlagsNV handleType
, HANDLE
* pHandle
);
230 #ifndef VK_NO_PROTOTYPES
231 VKAPI_ATTR VkResult VKAPI_CALL
vkGetMemoryWin32HandleNV(
233 VkDeviceMemory memory
,
234 VkExternalMemoryHandleTypeFlagsNV handleType
,
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
;
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
;
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"
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
;
270 VkFullScreenExclusiveEXT fullScreenExclusive
;
271 } VkSurfaceFullScreenExclusiveInfoEXT
;
273 typedef struct VkSurfaceCapabilitiesFullScreenExclusiveEXT
{
274 VkStructureType sType
;
276 VkBool32 fullScreenExclusiveSupported
;
277 } VkSurfaceCapabilitiesFullScreenExclusiveEXT
;
279 typedef struct VkSurfaceFullScreenExclusiveWin32InfoEXT
{
280 VkStructureType sType
;
283 } VkSurfaceFullScreenExclusiveWin32InfoEXT
;
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
);
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
);
297 VKAPI_ATTR VkResult VKAPI_CALL
vkAcquireFullScreenExclusiveModeEXT(
299 VkSwapchainKHR swapchain
);
301 VKAPI_ATTR VkResult VKAPI_CALL
vkReleaseFullScreenExclusiveModeEXT(
303 VkSwapchainKHR swapchain
);
305 VKAPI_ATTR VkResult VKAPI_CALL
vkGetDeviceGroupSurfacePresentModes2EXT(
307 const VkPhysicalDeviceSurfaceInfo2KHR
* pSurfaceInfo
,
308 VkDeviceGroupPresentModeFlagsKHR
* pModes
);