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
17extern "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"
25typedef VkFlags VkWin32SurfaceCreateFlagsKHR;
26typedef struct VkWin32SurfaceCreateInfoKHR {
27    VkStructureType                 sType;
28    const void*                     pNext;
29    VkWin32SurfaceCreateFlagsKHR    flags;
30    HINSTANCE                       hinstance;
31    HWND                            hwnd;
32} VkWin32SurfaceCreateInfoKHR;
33
34typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
35typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);
36
37#ifndef VK_NO_PROTOTYPES
38VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(
39    VkInstance                                  instance,
40    const VkWin32SurfaceCreateInfoKHR*          pCreateInfo,
41    const VkAllocationCallbacks*                pAllocator,
42    VkSurfaceKHR*                               pSurface);
43
44VKAPI_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"
53typedef struct VkImportMemoryWin32HandleInfoKHR {
54    VkStructureType                       sType;
55    const void*                           pNext;
56    VkExternalMemoryHandleTypeFlagBits    handleType;
57    HANDLE                                handle;
58    LPCWSTR                               name;
59} VkImportMemoryWin32HandleInfoKHR;
60
61typedef struct VkExportMemoryWin32HandleInfoKHR {
62    VkStructureType               sType;
63    const void*                   pNext;
64    const SECURITY_ATTRIBUTES*    pAttributes;
65    DWORD                         dwAccess;
66    LPCWSTR                       name;
67} VkExportMemoryWin32HandleInfoKHR;
68
69typedef struct VkMemoryWin32HandlePropertiesKHR {
70    VkStructureType    sType;
71    void*              pNext;
72    uint32_t           memoryTypeBits;
73} VkMemoryWin32HandlePropertiesKHR;
74
75typedef struct VkMemoryGetWin32HandleInfoKHR {
76    VkStructureType                       sType;
77    const void*                           pNext;
78    VkDeviceMemory                        memory;
79    VkExternalMemoryHandleTypeFlagBits    handleType;
80} VkMemoryGetWin32HandleInfoKHR;
81
82typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleKHR)(VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
83typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandlePropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties);
84
85#ifndef VK_NO_PROTOTYPES
86VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleKHR(
87    VkDevice                                    device,
88    const VkMemoryGetWin32HandleInfoKHR*        pGetWin32HandleInfo,
89    HANDLE*                                     pHandle);
90
91VKAPI_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"
102typedef 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"
119typedef 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
129typedef struct VkExportSemaphoreWin32HandleInfoKHR {
130    VkStructureType               sType;
131    const void*                   pNext;
132    const SECURITY_ATTRIBUTES*    pAttributes;
133    DWORD                         dwAccess;
134    LPCWSTR                       name;
135} VkExportSemaphoreWin32HandleInfoKHR;
136
137typedef 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
146typedef struct VkSemaphoreGetWin32HandleInfoKHR {
147    VkStructureType                          sType;
148    const void*                              pNext;
149    VkSemaphore                              semaphore;
150    VkExternalSemaphoreHandleTypeFlagBits    handleType;
151} VkSemaphoreGetWin32HandleInfoKHR;
152
153typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreWin32HandleKHR)(VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo);
154typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreWin32HandleKHR)(VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
155
156#ifndef VK_NO_PROTOTYPES
157VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreWin32HandleKHR(
158    VkDevice                                    device,
159    const VkImportSemaphoreWin32HandleInfoKHR*  pImportSemaphoreWin32HandleInfo);
160
161VKAPI_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"
171typedef 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
181typedef struct VkExportFenceWin32HandleInfoKHR {
182    VkStructureType               sType;
183    const void*                   pNext;
184    const SECURITY_ATTRIBUTES*    pAttributes;
185    DWORD                         dwAccess;
186    LPCWSTR                       name;
187} VkExportFenceWin32HandleInfoKHR;
188
189typedef struct VkFenceGetWin32HandleInfoKHR {
190    VkStructureType                      sType;
191    const void*                          pNext;
192    VkFence                              fence;
193    VkExternalFenceHandleTypeFlagBits    handleType;
194} VkFenceGetWin32HandleInfoKHR;
195
196typedef VkResult (VKAPI_PTR *PFN_vkImportFenceWin32HandleKHR)(VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo);
197typedef VkResult (VKAPI_PTR *PFN_vkGetFenceWin32HandleKHR)(VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle);
198
199#ifndef VK_NO_PROTOTYPES
200VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceWin32HandleKHR(
201    VkDevice                                    device,
202    const VkImportFenceWin32HandleInfoKHR*      pImportFenceWin32HandleInfo);
203
204VKAPI_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"
214typedef struct VkImportMemoryWin32HandleInfoNV {
215    VkStructureType                      sType;
216    const void*                          pNext;
217    VkExternalMemoryHandleTypeFlagsNV    handleType;
218    HANDLE                               handle;
219} VkImportMemoryWin32HandleInfoNV;
220
221typedef struct VkExportMemoryWin32HandleInfoNV {
222    VkStructureType               sType;
223    const void*                   pNext;
224    const SECURITY_ATTRIBUTES*    pAttributes;
225    DWORD                         dwAccess;
226} VkExportMemoryWin32HandleInfoNV;
227
228typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleNV)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle);
229
230#ifndef VK_NO_PROTOTYPES
231VKAPI_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"
242typedef 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
260typedef 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;
267typedef struct VkSurfaceFullScreenExclusiveInfoEXT {
268    VkStructureType             sType;
269    void*                       pNext;
270    VkFullScreenExclusiveEXT    fullScreenExclusive;
271} VkSurfaceFullScreenExclusiveInfoEXT;
272
273typedef struct VkSurfaceCapabilitiesFullScreenExclusiveEXT {
274    VkStructureType    sType;
275    void*              pNext;
276    VkBool32           fullScreenExclusiveSupported;
277} VkSurfaceCapabilitiesFullScreenExclusiveEXT;
278
279typedef struct VkSurfaceFullScreenExclusiveWin32InfoEXT {
280    VkStructureType    sType;
281    const void*        pNext;
282    HMONITOR           hmonitor;
283} VkSurfaceFullScreenExclusiveWin32InfoEXT;
284
285typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
286typedef VkResult (VKAPI_PTR *PFN_vkAcquireFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain);
287typedef VkResult (VKAPI_PTR *PFN_vkReleaseFullScreenExclusiveModeEXT)(VkDevice device, VkSwapchainKHR swapchain);
288typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModes2EXT)(VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes);
289
290#ifndef VK_NO_PROTOTYPES
291VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModes2EXT(
292    VkPhysicalDevice                            physicalDevice,
293    const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
294    uint32_t*                                   pPresentModeCount,
295    VkPresentModeKHR*                           pPresentModes);
296
297VKAPI_ATTR VkResult VKAPI_CALL vkAcquireFullScreenExclusiveModeEXT(
298    VkDevice                                    device,
299    VkSwapchainKHR                              swapchain);
300
301VKAPI_ATTR VkResult VKAPI_CALL vkReleaseFullScreenExclusiveModeEXT(
302    VkDevice                                    device,
303    VkSwapchainKHR                              swapchain);
304
305VKAPI_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