1 #ifndef VULKAN_WIN32_H_
2 #define VULKAN_WIN32_H_ 1
5 ** Copyright 2015-2021 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);