1 #ifndef VULKAN_WIN32_H_
2 #define VULKAN_WIN32_H_ 1
9 ** Copyright (c) 2015-2019 The Khronos Group Inc.
11 ** Licensed under the Apache License, Version 2.0 (the "License");
12 ** you may not use this file except in compliance with the License.
13 ** You may obtain a copy of the License at
15 ** http://www.apache.org/licenses/LICENSE-2.0
17 ** Unless required by applicable law or agreed to in writing, software
18 ** distributed under the License is distributed on an "AS IS" BASIS,
19 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 ** See the License for the specific language governing permissions and
21 ** limitations under the License.
25 ** This header is generated from the Khronos Vulkan XML API Registry.
31 #define VK_KHR_win32_surface 1
32 #define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
33 #define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface"
34 typedef VkFlags VkWin32SurfaceCreateFlagsKHR
;
35 typedef struct VkWin32SurfaceCreateInfoKHR
{
36 VkStructureType sType
;
38 VkWin32SurfaceCreateFlagsKHR flags
;
41 } VkWin32SurfaceCreateInfoKHR
;
43 typedef VkResult (VKAPI_PTR
*PFN_vkCreateWin32SurfaceKHR
)(VkInstance instance
, const VkWin32SurfaceCreateInfoKHR
* pCreateInfo
, const VkAllocationCallbacks
* pAllocator
, VkSurfaceKHR
* pSurface
);
44 typedef VkBool32 (VKAPI_PTR
*PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR
)(VkPhysicalDevice physicalDevice
, uint32_t queueFamilyIndex
);
46 #ifndef VK_NO_PROTOTYPES
47 VKAPI_ATTR VkResult VKAPI_CALL
vkCreateWin32SurfaceKHR(
49 const VkWin32SurfaceCreateInfoKHR
* pCreateInfo
,
50 const VkAllocationCallbacks
* pAllocator
,
51 VkSurfaceKHR
* pSurface
);
53 VKAPI_ATTR VkBool32 VKAPI_CALL
vkGetPhysicalDeviceWin32PresentationSupportKHR(
54 VkPhysicalDevice physicalDevice
,
55 uint32_t queueFamilyIndex
);
59 #define VK_KHR_external_memory_win32 1
60 #define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
61 #define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32"
62 typedef struct VkImportMemoryWin32HandleInfoKHR
{
63 VkStructureType sType
;
65 VkExternalMemoryHandleTypeFlagBits handleType
;
68 } VkImportMemoryWin32HandleInfoKHR
;
70 typedef struct VkExportMemoryWin32HandleInfoKHR
{
71 VkStructureType sType
;
73 const SECURITY_ATTRIBUTES
* pAttributes
;
76 } VkExportMemoryWin32HandleInfoKHR
;
78 typedef struct VkMemoryWin32HandlePropertiesKHR
{
79 VkStructureType sType
;
81 uint32_t memoryTypeBits
;
82 } VkMemoryWin32HandlePropertiesKHR
;
84 typedef struct VkMemoryGetWin32HandleInfoKHR
{
85 VkStructureType sType
;
87 VkDeviceMemory memory
;
88 VkExternalMemoryHandleTypeFlagBits handleType
;
89 } VkMemoryGetWin32HandleInfoKHR
;
91 typedef VkResult (VKAPI_PTR
*PFN_vkGetMemoryWin32HandleKHR
)(VkDevice device
, const VkMemoryGetWin32HandleInfoKHR
* pGetWin32HandleInfo
, HANDLE
* pHandle
);
92 typedef VkResult (VKAPI_PTR
*PFN_vkGetMemoryWin32HandlePropertiesKHR
)(VkDevice device
, VkExternalMemoryHandleTypeFlagBits handleType
, HANDLE handle
, VkMemoryWin32HandlePropertiesKHR
* pMemoryWin32HandleProperties
);
94 #ifndef VK_NO_PROTOTYPES
95 VKAPI_ATTR VkResult VKAPI_CALL
vkGetMemoryWin32HandleKHR(
97 const VkMemoryGetWin32HandleInfoKHR
* pGetWin32HandleInfo
,
100 VKAPI_ATTR VkResult VKAPI_CALL
vkGetMemoryWin32HandlePropertiesKHR(
102 VkExternalMemoryHandleTypeFlagBits handleType
,
104 VkMemoryWin32HandlePropertiesKHR
* pMemoryWin32HandleProperties
);
108 #define VK_KHR_win32_keyed_mutex 1
109 #define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1
110 #define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex"
111 typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR
{
112 VkStructureType sType
;
114 uint32_t acquireCount
;
115 const VkDeviceMemory
* pAcquireSyncs
;
116 const uint64_t* pAcquireKeys
;
117 const uint32_t* pAcquireTimeouts
;
118 uint32_t releaseCount
;
119 const VkDeviceMemory
* pReleaseSyncs
;
120 const uint64_t* pReleaseKeys
;
121 } VkWin32KeyedMutexAcquireReleaseInfoKHR
;
125 #define VK_KHR_external_semaphore_win32 1
126 #define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
127 #define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32"
128 typedef struct VkImportSemaphoreWin32HandleInfoKHR
{
129 VkStructureType sType
;
131 VkSemaphore semaphore
;
132 VkSemaphoreImportFlags flags
;
133 VkExternalSemaphoreHandleTypeFlagBits handleType
;
136 } VkImportSemaphoreWin32HandleInfoKHR
;
138 typedef struct VkExportSemaphoreWin32HandleInfoKHR
{
139 VkStructureType sType
;
141 const SECURITY_ATTRIBUTES
* pAttributes
;
144 } VkExportSemaphoreWin32HandleInfoKHR
;
146 typedef struct VkD3D12FenceSubmitInfoKHR
{
147 VkStructureType sType
;
149 uint32_t waitSemaphoreValuesCount
;
150 const uint64_t* pWaitSemaphoreValues
;
151 uint32_t signalSemaphoreValuesCount
;
152 const uint64_t* pSignalSemaphoreValues
;
153 } VkD3D12FenceSubmitInfoKHR
;
155 typedef struct VkSemaphoreGetWin32HandleInfoKHR
{
156 VkStructureType sType
;
158 VkSemaphore semaphore
;
159 VkExternalSemaphoreHandleTypeFlagBits handleType
;
160 } VkSemaphoreGetWin32HandleInfoKHR
;
162 typedef VkResult (VKAPI_PTR
*PFN_vkImportSemaphoreWin32HandleKHR
)(VkDevice device
, const VkImportSemaphoreWin32HandleInfoKHR
* pImportSemaphoreWin32HandleInfo
);
163 typedef VkResult (VKAPI_PTR
*PFN_vkGetSemaphoreWin32HandleKHR
)(VkDevice device
, const VkSemaphoreGetWin32HandleInfoKHR
* pGetWin32HandleInfo
, HANDLE
* pHandle
);
165 #ifndef VK_NO_PROTOTYPES
166 VKAPI_ATTR VkResult VKAPI_CALL
vkImportSemaphoreWin32HandleKHR(
168 const VkImportSemaphoreWin32HandleInfoKHR
* pImportSemaphoreWin32HandleInfo
);
170 VKAPI_ATTR VkResult VKAPI_CALL
vkGetSemaphoreWin32HandleKHR(
172 const VkSemaphoreGetWin32HandleInfoKHR
* pGetWin32HandleInfo
,
177 #define VK_KHR_external_fence_win32 1
178 #define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1
179 #define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32"
180 typedef struct VkImportFenceWin32HandleInfoKHR
{
181 VkStructureType sType
;
184 VkFenceImportFlags flags
;
185 VkExternalFenceHandleTypeFlagBits handleType
;
188 } VkImportFenceWin32HandleInfoKHR
;
190 typedef struct VkExportFenceWin32HandleInfoKHR
{
191 VkStructureType sType
;
193 const SECURITY_ATTRIBUTES
* pAttributes
;
196 } VkExportFenceWin32HandleInfoKHR
;
198 typedef struct VkFenceGetWin32HandleInfoKHR
{
199 VkStructureType sType
;
202 VkExternalFenceHandleTypeFlagBits handleType
;
203 } VkFenceGetWin32HandleInfoKHR
;
205 typedef VkResult (VKAPI_PTR
*PFN_vkImportFenceWin32HandleKHR
)(VkDevice device
, const VkImportFenceWin32HandleInfoKHR
* pImportFenceWin32HandleInfo
);
206 typedef VkResult (VKAPI_PTR
*PFN_vkGetFenceWin32HandleKHR
)(VkDevice device
, const VkFenceGetWin32HandleInfoKHR
* pGetWin32HandleInfo
, HANDLE
* pHandle
);
208 #ifndef VK_NO_PROTOTYPES
209 VKAPI_ATTR VkResult VKAPI_CALL
vkImportFenceWin32HandleKHR(
211 const VkImportFenceWin32HandleInfoKHR
* pImportFenceWin32HandleInfo
);
213 VKAPI_ATTR VkResult VKAPI_CALL
vkGetFenceWin32HandleKHR(
215 const VkFenceGetWin32HandleInfoKHR
* pGetWin32HandleInfo
,
220 #define VK_NV_external_memory_win32 1
221 #define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
222 #define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
223 typedef struct VkImportMemoryWin32HandleInfoNV
{
224 VkStructureType sType
;
226 VkExternalMemoryHandleTypeFlagsNV handleType
;
228 } VkImportMemoryWin32HandleInfoNV
;
230 typedef struct VkExportMemoryWin32HandleInfoNV
{
231 VkStructureType sType
;
233 const SECURITY_ATTRIBUTES
* pAttributes
;
235 } VkExportMemoryWin32HandleInfoNV
;
237 typedef VkResult (VKAPI_PTR
*PFN_vkGetMemoryWin32HandleNV
)(VkDevice device
, VkDeviceMemory memory
, VkExternalMemoryHandleTypeFlagsNV handleType
, HANDLE
* pHandle
);
239 #ifndef VK_NO_PROTOTYPES
240 VKAPI_ATTR VkResult VKAPI_CALL
vkGetMemoryWin32HandleNV(
242 VkDeviceMemory memory
,
243 VkExternalMemoryHandleTypeFlagsNV handleType
,
248 #define VK_NV_win32_keyed_mutex 1
249 #define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1
250 #define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
251 typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV
{
252 VkStructureType sType
;
254 uint32_t acquireCount
;
255 const VkDeviceMemory
* pAcquireSyncs
;
256 const uint64_t* pAcquireKeys
;
257 const uint32_t* pAcquireTimeoutMilliseconds
;
258 uint32_t releaseCount
;
259 const VkDeviceMemory
* pReleaseSyncs
;
260 const uint64_t* pReleaseKeys
;
261 } VkWin32KeyedMutexAcquireReleaseInfoNV
;
265 #define VK_EXT_full_screen_exclusive 1
266 #define VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION 3
267 #define VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME "VK_EXT_full_screen_exclusive"
269 typedef enum VkFullScreenExclusiveEXT
{
270 VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT
= 0,
271 VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT
= 1,
272 VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT
= 2,
273 VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
= 3,
274 VK_FULL_SCREEN_EXCLUSIVE_BEGIN_RANGE_EXT
= VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT
,
275 VK_FULL_SCREEN_EXCLUSIVE_END_RANGE_EXT
= VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
,
276 VK_FULL_SCREEN_EXCLUSIVE_RANGE_SIZE_EXT
= (VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
- VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT
+ 1),
277 VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT
= 0x7FFFFFFF
278 } VkFullScreenExclusiveEXT
;
279 typedef struct VkSurfaceFullScreenExclusiveInfoEXT
{
280 VkStructureType sType
;
282 VkFullScreenExclusiveEXT fullScreenExclusive
;
283 } VkSurfaceFullScreenExclusiveInfoEXT
;
285 typedef struct VkSurfaceCapabilitiesFullScreenExclusiveEXT
{
286 VkStructureType sType
;
288 VkBool32 fullScreenExclusiveSupported
;
289 } VkSurfaceCapabilitiesFullScreenExclusiveEXT
;
291 typedef struct VkSurfaceFullScreenExclusiveWin32InfoEXT
{
292 VkStructureType sType
;
295 } VkSurfaceFullScreenExclusiveWin32InfoEXT
;
297 typedef VkResult (VKAPI_PTR
*PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT
)(VkPhysicalDevice physicalDevice
, const VkPhysicalDeviceSurfaceInfo2KHR
* pSurfaceInfo
, uint32_t* pPresentModeCount
, VkPresentModeKHR
* pPresentModes
);
298 typedef VkResult (VKAPI_PTR
*PFN_vkAcquireFullScreenExclusiveModeEXT
)(VkDevice device
, VkSwapchainKHR swapchain
);
299 typedef VkResult (VKAPI_PTR
*PFN_vkReleaseFullScreenExclusiveModeEXT
)(VkDevice device
, VkSwapchainKHR swapchain
);
300 typedef VkResult (VKAPI_PTR
*PFN_vkGetDeviceGroupSurfacePresentModes2EXT
)(VkDevice device
, const VkPhysicalDeviceSurfaceInfo2KHR
* pSurfaceInfo
, VkDeviceGroupPresentModeFlagsKHR
* pModes
);
302 #ifndef VK_NO_PROTOTYPES
303 VKAPI_ATTR VkResult VKAPI_CALL
vkGetPhysicalDeviceSurfacePresentModes2EXT(
304 VkPhysicalDevice physicalDevice
,
305 const VkPhysicalDeviceSurfaceInfo2KHR
* pSurfaceInfo
,
306 uint32_t* pPresentModeCount
,
307 VkPresentModeKHR
* pPresentModes
);
309 VKAPI_ATTR VkResult VKAPI_CALL
vkAcquireFullScreenExclusiveModeEXT(
311 VkSwapchainKHR swapchain
);
313 VKAPI_ATTR VkResult VKAPI_CALL
vkReleaseFullScreenExclusiveModeEXT(
315 VkSwapchainKHR swapchain
);
317 VKAPI_ATTR VkResult VKAPI_CALL
vkGetDeviceGroupSurfacePresentModes2EXT(
319 const VkPhysicalDeviceSurfaceInfo2KHR
* pSurfaceInfo
,
320 VkDeviceGroupPresentModeFlagsKHR
* pModes
);