1 #ifndef VULKAN_WIN32_H_
2 #define VULKAN_WIN32_H_ 1
5 ** Copyright (c) 2015-2020 The Khronos Group Inc.
7 ** Licensed under the Apache License, Version 2.0 (the "License");
8 ** you may not use this file except in compliance with the License.
9 ** You may obtain a copy of the License at
11 ** http://www.apache.org/licenses/LICENSE-2.0
13 ** Unless required by applicable law or agreed to in writing, software
14 ** distributed under the License is distributed on an "AS IS" BASIS,
15 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 ** See the License for the specific language governing permissions and
17 ** limitations under the License.
21 ** This header is generated from the Khronos Vulkan XML API Registry.
32 #define VK_KHR_win32_surface 1
33 #define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
34 #define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface"
35 typedef VkFlags VkWin32SurfaceCreateFlagsKHR
;
36 typedef struct VkWin32SurfaceCreateInfoKHR
{
37 VkStructureType sType
;
39 VkWin32SurfaceCreateFlagsKHR flags
;
42 } VkWin32SurfaceCreateInfoKHR
;
44 typedef VkResult (VKAPI_PTR
*PFN_vkCreateWin32SurfaceKHR
)(VkInstance instance
, const VkWin32SurfaceCreateInfoKHR
* pCreateInfo
, const VkAllocationCallbacks
* pAllocator
, VkSurfaceKHR
* pSurface
);
45 typedef VkBool32 (VKAPI_PTR
*PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR
)(VkPhysicalDevice physicalDevice
, uint32_t queueFamilyIndex
);
47 #ifndef VK_NO_PROTOTYPES
48 VKAPI_ATTR VkResult VKAPI_CALL
vkCreateWin32SurfaceKHR(
50 const VkWin32SurfaceCreateInfoKHR
* pCreateInfo
,
51 const VkAllocationCallbacks
* pAllocator
,
52 VkSurfaceKHR
* pSurface
);
54 VKAPI_ATTR VkBool32 VKAPI_CALL
vkGetPhysicalDeviceWin32PresentationSupportKHR(
55 VkPhysicalDevice physicalDevice
,
56 uint32_t queueFamilyIndex
);
60 #define VK_KHR_external_memory_win32 1
61 #define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
62 #define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32"
63 typedef struct VkImportMemoryWin32HandleInfoKHR
{
64 VkStructureType sType
;
66 VkExternalMemoryHandleTypeFlagBits handleType
;
69 } VkImportMemoryWin32HandleInfoKHR
;
71 typedef struct VkExportMemoryWin32HandleInfoKHR
{
72 VkStructureType sType
;
74 const SECURITY_ATTRIBUTES
* pAttributes
;
77 } VkExportMemoryWin32HandleInfoKHR
;
79 typedef struct VkMemoryWin32HandlePropertiesKHR
{
80 VkStructureType sType
;
82 uint32_t memoryTypeBits
;
83 } VkMemoryWin32HandlePropertiesKHR
;
85 typedef struct VkMemoryGetWin32HandleInfoKHR
{
86 VkStructureType sType
;
88 VkDeviceMemory memory
;
89 VkExternalMemoryHandleTypeFlagBits handleType
;
90 } VkMemoryGetWin32HandleInfoKHR
;
92 typedef VkResult (VKAPI_PTR
*PFN_vkGetMemoryWin32HandleKHR
)(VkDevice device
, const VkMemoryGetWin32HandleInfoKHR
* pGetWin32HandleInfo
, HANDLE
* pHandle
);
93 typedef VkResult (VKAPI_PTR
*PFN_vkGetMemoryWin32HandlePropertiesKHR
)(VkDevice device
, VkExternalMemoryHandleTypeFlagBits handleType
, HANDLE handle
, VkMemoryWin32HandlePropertiesKHR
* pMemoryWin32HandleProperties
);
95 #ifndef VK_NO_PROTOTYPES
96 VKAPI_ATTR VkResult VKAPI_CALL
vkGetMemoryWin32HandleKHR(
98 const VkMemoryGetWin32HandleInfoKHR
* pGetWin32HandleInfo
,
101 VKAPI_ATTR VkResult VKAPI_CALL
vkGetMemoryWin32HandlePropertiesKHR(
103 VkExternalMemoryHandleTypeFlagBits handleType
,
105 VkMemoryWin32HandlePropertiesKHR
* pMemoryWin32HandleProperties
);
109 #define VK_KHR_win32_keyed_mutex 1
110 #define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1
111 #define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex"
112 typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR
{
113 VkStructureType sType
;
115 uint32_t acquireCount
;
116 const VkDeviceMemory
* pAcquireSyncs
;
117 const uint64_t* pAcquireKeys
;
118 const uint32_t* pAcquireTimeouts
;
119 uint32_t releaseCount
;
120 const VkDeviceMemory
* pReleaseSyncs
;
121 const uint64_t* pReleaseKeys
;
122 } VkWin32KeyedMutexAcquireReleaseInfoKHR
;
126 #define VK_KHR_external_semaphore_win32 1
127 #define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
128 #define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32"
129 typedef struct VkImportSemaphoreWin32HandleInfoKHR
{
130 VkStructureType sType
;
132 VkSemaphore semaphore
;
133 VkSemaphoreImportFlags flags
;
134 VkExternalSemaphoreHandleTypeFlagBits handleType
;
137 } VkImportSemaphoreWin32HandleInfoKHR
;
139 typedef struct VkExportSemaphoreWin32HandleInfoKHR
{
140 VkStructureType sType
;
142 const SECURITY_ATTRIBUTES
* pAttributes
;
145 } VkExportSemaphoreWin32HandleInfoKHR
;
147 typedef struct VkD3D12FenceSubmitInfoKHR
{
148 VkStructureType sType
;
150 uint32_t waitSemaphoreValuesCount
;
151 const uint64_t* pWaitSemaphoreValues
;
152 uint32_t signalSemaphoreValuesCount
;
153 const uint64_t* pSignalSemaphoreValues
;
154 } VkD3D12FenceSubmitInfoKHR
;
156 typedef struct VkSemaphoreGetWin32HandleInfoKHR
{
157 VkStructureType sType
;
159 VkSemaphore semaphore
;
160 VkExternalSemaphoreHandleTypeFlagBits handleType
;
161 } VkSemaphoreGetWin32HandleInfoKHR
;
163 typedef VkResult (VKAPI_PTR
*PFN_vkImportSemaphoreWin32HandleKHR
)(VkDevice device
, const VkImportSemaphoreWin32HandleInfoKHR
* pImportSemaphoreWin32HandleInfo
);
164 typedef VkResult (VKAPI_PTR
*PFN_vkGetSemaphoreWin32HandleKHR
)(VkDevice device
, const VkSemaphoreGetWin32HandleInfoKHR
* pGetWin32HandleInfo
, HANDLE
* pHandle
);
166 #ifndef VK_NO_PROTOTYPES
167 VKAPI_ATTR VkResult VKAPI_CALL
vkImportSemaphoreWin32HandleKHR(
169 const VkImportSemaphoreWin32HandleInfoKHR
* pImportSemaphoreWin32HandleInfo
);
171 VKAPI_ATTR VkResult VKAPI_CALL
vkGetSemaphoreWin32HandleKHR(
173 const VkSemaphoreGetWin32HandleInfoKHR
* pGetWin32HandleInfo
,
178 #define VK_KHR_external_fence_win32 1
179 #define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1
180 #define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32"
181 typedef struct VkImportFenceWin32HandleInfoKHR
{
182 VkStructureType sType
;
185 VkFenceImportFlags flags
;
186 VkExternalFenceHandleTypeFlagBits handleType
;
189 } VkImportFenceWin32HandleInfoKHR
;
191 typedef struct VkExportFenceWin32HandleInfoKHR
{
192 VkStructureType sType
;
194 const SECURITY_ATTRIBUTES
* pAttributes
;
197 } VkExportFenceWin32HandleInfoKHR
;
199 typedef struct VkFenceGetWin32HandleInfoKHR
{
200 VkStructureType sType
;
203 VkExternalFenceHandleTypeFlagBits handleType
;
204 } VkFenceGetWin32HandleInfoKHR
;
206 typedef VkResult (VKAPI_PTR
*PFN_vkImportFenceWin32HandleKHR
)(VkDevice device
, const VkImportFenceWin32HandleInfoKHR
* pImportFenceWin32HandleInfo
);
207 typedef VkResult (VKAPI_PTR
*PFN_vkGetFenceWin32HandleKHR
)(VkDevice device
, const VkFenceGetWin32HandleInfoKHR
* pGetWin32HandleInfo
, HANDLE
* pHandle
);
209 #ifndef VK_NO_PROTOTYPES
210 VKAPI_ATTR VkResult VKAPI_CALL
vkImportFenceWin32HandleKHR(
212 const VkImportFenceWin32HandleInfoKHR
* pImportFenceWin32HandleInfo
);
214 VKAPI_ATTR VkResult VKAPI_CALL
vkGetFenceWin32HandleKHR(
216 const VkFenceGetWin32HandleInfoKHR
* pGetWin32HandleInfo
,
221 #define VK_NV_external_memory_win32 1
222 #define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
223 #define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
224 typedef struct VkImportMemoryWin32HandleInfoNV
{
225 VkStructureType sType
;
227 VkExternalMemoryHandleTypeFlagsNV handleType
;
229 } VkImportMemoryWin32HandleInfoNV
;
231 typedef struct VkExportMemoryWin32HandleInfoNV
{
232 VkStructureType sType
;
234 const SECURITY_ATTRIBUTES
* pAttributes
;
236 } VkExportMemoryWin32HandleInfoNV
;
238 typedef VkResult (VKAPI_PTR
*PFN_vkGetMemoryWin32HandleNV
)(VkDevice device
, VkDeviceMemory memory
, VkExternalMemoryHandleTypeFlagsNV handleType
, HANDLE
* pHandle
);
240 #ifndef VK_NO_PROTOTYPES
241 VKAPI_ATTR VkResult VKAPI_CALL
vkGetMemoryWin32HandleNV(
243 VkDeviceMemory memory
,
244 VkExternalMemoryHandleTypeFlagsNV handleType
,
249 #define VK_NV_win32_keyed_mutex 1
250 #define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 2
251 #define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
252 typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV
{
253 VkStructureType sType
;
255 uint32_t acquireCount
;
256 const VkDeviceMemory
* pAcquireSyncs
;
257 const uint64_t* pAcquireKeys
;
258 const uint32_t* pAcquireTimeoutMilliseconds
;
259 uint32_t releaseCount
;
260 const VkDeviceMemory
* pReleaseSyncs
;
261 const uint64_t* pReleaseKeys
;
262 } VkWin32KeyedMutexAcquireReleaseInfoNV
;
266 #define VK_EXT_full_screen_exclusive 1
267 #define VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION 4
268 #define VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME "VK_EXT_full_screen_exclusive"
270 typedef enum VkFullScreenExclusiveEXT
{
271 VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT
= 0,
272 VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT
= 1,
273 VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT
= 2,
274 VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
= 3,
275 VK_FULL_SCREEN_EXCLUSIVE_BEGIN_RANGE_EXT
= VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT
,
276 VK_FULL_SCREEN_EXCLUSIVE_END_RANGE_EXT
= VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
,
277 VK_FULL_SCREEN_EXCLUSIVE_RANGE_SIZE_EXT
= (VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT
- VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT
+ 1),
278 VK_FULL_SCREEN_EXCLUSIVE_MAX_ENUM_EXT
= 0x7FFFFFFF
279 } VkFullScreenExclusiveEXT
;
280 typedef struct VkSurfaceFullScreenExclusiveInfoEXT
{
281 VkStructureType sType
;
283 VkFullScreenExclusiveEXT fullScreenExclusive
;
284 } VkSurfaceFullScreenExclusiveInfoEXT
;
286 typedef struct VkSurfaceCapabilitiesFullScreenExclusiveEXT
{
287 VkStructureType sType
;
289 VkBool32 fullScreenExclusiveSupported
;
290 } VkSurfaceCapabilitiesFullScreenExclusiveEXT
;
292 typedef struct VkSurfaceFullScreenExclusiveWin32InfoEXT
{
293 VkStructureType sType
;
296 } VkSurfaceFullScreenExclusiveWin32InfoEXT
;
298 typedef VkResult (VKAPI_PTR
*PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT
)(VkPhysicalDevice physicalDevice
, const VkPhysicalDeviceSurfaceInfo2KHR
* pSurfaceInfo
, uint32_t* pPresentModeCount
, VkPresentModeKHR
* pPresentModes
);
299 typedef VkResult (VKAPI_PTR
*PFN_vkAcquireFullScreenExclusiveModeEXT
)(VkDevice device
, VkSwapchainKHR swapchain
);
300 typedef VkResult (VKAPI_PTR
*PFN_vkReleaseFullScreenExclusiveModeEXT
)(VkDevice device
, VkSwapchainKHR swapchain
);
301 typedef VkResult (VKAPI_PTR
*PFN_vkGetDeviceGroupSurfacePresentModes2EXT
)(VkDevice device
, const VkPhysicalDeviceSurfaceInfo2KHR
* pSurfaceInfo
, VkDeviceGroupPresentModeFlagsKHR
* pModes
);
303 #ifndef VK_NO_PROTOTYPES
304 VKAPI_ATTR VkResult VKAPI_CALL
vkGetPhysicalDeviceSurfacePresentModes2EXT(
305 VkPhysicalDevice physicalDevice
,
306 const VkPhysicalDeviceSurfaceInfo2KHR
* pSurfaceInfo
,
307 uint32_t* pPresentModeCount
,
308 VkPresentModeKHR
* pPresentModes
);
310 VKAPI_ATTR VkResult VKAPI_CALL
vkAcquireFullScreenExclusiveModeEXT(
312 VkSwapchainKHR swapchain
);
314 VKAPI_ATTR VkResult VKAPI_CALL
vkReleaseFullScreenExclusiveModeEXT(
316 VkSwapchainKHR swapchain
);
318 VKAPI_ATTR VkResult VKAPI_CALL
vkGetDeviceGroupSurfacePresentModes2EXT(
320 const VkPhysicalDeviceSurfaceInfo2KHR
* pSurfaceInfo
,
321 VkDeviceGroupPresentModeFlagsKHR
* pModes
);