radv: Add winsys functions for timeline syncobj.
[mesa.git] / include / vulkan / vulkan_win32.h
1 #ifndef VULKAN_WIN32_H_
2 #define VULKAN_WIN32_H_ 1
3
4 /*
5 ** Copyright (c) 2015-2020 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