1 | #ifndef VULKAN_WIN32_H_ |
2 | #define VULKAN_WIN32_H_ 1 |
3 | |
4 | /* |
5 | ** Copyright 2015-2022 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 | |