1 #ifndef VULKAN_WIN32_H_
2 #define VULKAN_WIN32_H_ 1
9 ** Copyright (c) 2015-2018 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.
30 #define VK_KHR_win32_surface 1
31 #define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
32 #define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface"
34 typedef VkFlags VkWin32SurfaceCreateFlagsKHR
;
36 typedef struct VkWin32SurfaceCreateInfoKHR
{
37 VkStructureType sType
;
39 VkWin32SurfaceCreateFlagsKHR flags
;
42 } VkWin32SurfaceCreateInfoKHR
;
45 typedef VkResult (VKAPI_PTR
*PFN_vkCreateWin32SurfaceKHR
)(VkInstance instance
, const VkWin32SurfaceCreateInfoKHR
* pCreateInfo
, const VkAllocationCallbacks
* pAllocator
, VkSurfaceKHR
* pSurface
);
46 typedef VkBool32 (VKAPI_PTR
*PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR
)(VkPhysicalDevice physicalDevice
, uint32_t queueFamilyIndex
);
48 #ifndef VK_NO_PROTOTYPES
49 VKAPI_ATTR VkResult VKAPI_CALL
vkCreateWin32SurfaceKHR(
51 const VkWin32SurfaceCreateInfoKHR
* pCreateInfo
,
52 const VkAllocationCallbacks
* pAllocator
,
53 VkSurfaceKHR
* pSurface
);
55 VKAPI_ATTR VkBool32 VKAPI_CALL
vkGetPhysicalDeviceWin32PresentationSupportKHR(
56 VkPhysicalDevice physicalDevice
,
57 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"
64 typedef struct VkImportMemoryWin32HandleInfoKHR
{
65 VkStructureType sType
;
67 VkExternalMemoryHandleTypeFlagBits handleType
;
70 } VkImportMemoryWin32HandleInfoKHR
;
72 typedef struct VkExportMemoryWin32HandleInfoKHR
{
73 VkStructureType sType
;
75 const SECURITY_ATTRIBUTES
* pAttributes
;
78 } VkExportMemoryWin32HandleInfoKHR
;
80 typedef struct VkMemoryWin32HandlePropertiesKHR
{
81 VkStructureType sType
;
83 uint32_t memoryTypeBits
;
84 } VkMemoryWin32HandlePropertiesKHR
;
86 typedef struct VkMemoryGetWin32HandleInfoKHR
{
87 VkStructureType sType
;
89 VkDeviceMemory memory
;
90 VkExternalMemoryHandleTypeFlagBits handleType
;
91 } VkMemoryGetWin32HandleInfoKHR
;
94 typedef VkResult (VKAPI_PTR
*PFN_vkGetMemoryWin32HandleKHR
)(VkDevice device
, const VkMemoryGetWin32HandleInfoKHR
* pGetWin32HandleInfo
, HANDLE
* pHandle
);
95 typedef VkResult (VKAPI_PTR
*PFN_vkGetMemoryWin32HandlePropertiesKHR
)(VkDevice device
, VkExternalMemoryHandleTypeFlagBits handleType
, HANDLE handle
, VkMemoryWin32HandlePropertiesKHR
* pMemoryWin32HandleProperties
);
97 #ifndef VK_NO_PROTOTYPES
98 VKAPI_ATTR VkResult VKAPI_CALL
vkGetMemoryWin32HandleKHR(
100 const VkMemoryGetWin32HandleInfoKHR
* pGetWin32HandleInfo
,
103 VKAPI_ATTR VkResult VKAPI_CALL
vkGetMemoryWin32HandlePropertiesKHR(
105 VkExternalMemoryHandleTypeFlagBits handleType
,
107 VkMemoryWin32HandlePropertiesKHR
* pMemoryWin32HandleProperties
);
110 #define VK_KHR_win32_keyed_mutex 1
111 #define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1
112 #define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex"
114 typedef struct VkWin32KeyedMutexAcquireReleaseInfoKHR
{
115 VkStructureType sType
;
117 uint32_t acquireCount
;
118 const VkDeviceMemory
* pAcquireSyncs
;
119 const uint64_t* pAcquireKeys
;
120 const uint32_t* pAcquireTimeouts
;
121 uint32_t releaseCount
;
122 const VkDeviceMemory
* pReleaseSyncs
;
123 const uint64_t* pReleaseKeys
;
124 } VkWin32KeyedMutexAcquireReleaseInfoKHR
;
128 #define VK_KHR_external_semaphore_win32 1
129 #define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
130 #define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32"
132 typedef struct VkImportSemaphoreWin32HandleInfoKHR
{
133 VkStructureType sType
;
135 VkSemaphore semaphore
;
136 VkSemaphoreImportFlags flags
;
137 VkExternalSemaphoreHandleTypeFlagBits handleType
;
140 } VkImportSemaphoreWin32HandleInfoKHR
;
142 typedef struct VkExportSemaphoreWin32HandleInfoKHR
{
143 VkStructureType sType
;
145 const SECURITY_ATTRIBUTES
* pAttributes
;
148 } VkExportSemaphoreWin32HandleInfoKHR
;
150 typedef struct VkD3D12FenceSubmitInfoKHR
{
151 VkStructureType sType
;
153 uint32_t waitSemaphoreValuesCount
;
154 const uint64_t* pWaitSemaphoreValues
;
155 uint32_t signalSemaphoreValuesCount
;
156 const uint64_t* pSignalSemaphoreValues
;
157 } VkD3D12FenceSubmitInfoKHR
;
159 typedef struct VkSemaphoreGetWin32HandleInfoKHR
{
160 VkStructureType sType
;
162 VkSemaphore semaphore
;
163 VkExternalSemaphoreHandleTypeFlagBits handleType
;
164 } VkSemaphoreGetWin32HandleInfoKHR
;
167 typedef VkResult (VKAPI_PTR
*PFN_vkImportSemaphoreWin32HandleKHR
)(VkDevice device
, const VkImportSemaphoreWin32HandleInfoKHR
* pImportSemaphoreWin32HandleInfo
);
168 typedef VkResult (VKAPI_PTR
*PFN_vkGetSemaphoreWin32HandleKHR
)(VkDevice device
, const VkSemaphoreGetWin32HandleInfoKHR
* pGetWin32HandleInfo
, HANDLE
* pHandle
);
170 #ifndef VK_NO_PROTOTYPES
171 VKAPI_ATTR VkResult VKAPI_CALL
vkImportSemaphoreWin32HandleKHR(
173 const VkImportSemaphoreWin32HandleInfoKHR
* pImportSemaphoreWin32HandleInfo
);
175 VKAPI_ATTR VkResult VKAPI_CALL
vkGetSemaphoreWin32HandleKHR(
177 const VkSemaphoreGetWin32HandleInfoKHR
* pGetWin32HandleInfo
,
181 #define VK_KHR_external_fence_win32 1
182 #define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1
183 #define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32"
185 typedef struct VkImportFenceWin32HandleInfoKHR
{
186 VkStructureType sType
;
189 VkFenceImportFlags flags
;
190 VkExternalFenceHandleTypeFlagBits handleType
;
193 } VkImportFenceWin32HandleInfoKHR
;
195 typedef struct VkExportFenceWin32HandleInfoKHR
{
196 VkStructureType sType
;
198 const SECURITY_ATTRIBUTES
* pAttributes
;
201 } VkExportFenceWin32HandleInfoKHR
;
203 typedef struct VkFenceGetWin32HandleInfoKHR
{
204 VkStructureType sType
;
207 VkExternalFenceHandleTypeFlagBits handleType
;
208 } VkFenceGetWin32HandleInfoKHR
;
211 typedef VkResult (VKAPI_PTR
*PFN_vkImportFenceWin32HandleKHR
)(VkDevice device
, const VkImportFenceWin32HandleInfoKHR
* pImportFenceWin32HandleInfo
);
212 typedef VkResult (VKAPI_PTR
*PFN_vkGetFenceWin32HandleKHR
)(VkDevice device
, const VkFenceGetWin32HandleInfoKHR
* pGetWin32HandleInfo
, HANDLE
* pHandle
);
214 #ifndef VK_NO_PROTOTYPES
215 VKAPI_ATTR VkResult VKAPI_CALL
vkImportFenceWin32HandleKHR(
217 const VkImportFenceWin32HandleInfoKHR
* pImportFenceWin32HandleInfo
);
219 VKAPI_ATTR VkResult VKAPI_CALL
vkGetFenceWin32HandleKHR(
221 const VkFenceGetWin32HandleInfoKHR
* pGetWin32HandleInfo
,
225 #define VK_NV_external_memory_win32 1
226 #define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
227 #define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
229 typedef struct VkImportMemoryWin32HandleInfoNV
{
230 VkStructureType sType
;
232 VkExternalMemoryHandleTypeFlagsNV handleType
;
234 } VkImportMemoryWin32HandleInfoNV
;
236 typedef struct VkExportMemoryWin32HandleInfoNV
{
237 VkStructureType sType
;
239 const SECURITY_ATTRIBUTES
* pAttributes
;
241 } VkExportMemoryWin32HandleInfoNV
;
244 typedef VkResult (VKAPI_PTR
*PFN_vkGetMemoryWin32HandleNV
)(VkDevice device
, VkDeviceMemory memory
, VkExternalMemoryHandleTypeFlagsNV handleType
, HANDLE
* pHandle
);
246 #ifndef VK_NO_PROTOTYPES
247 VKAPI_ATTR VkResult VKAPI_CALL
vkGetMemoryWin32HandleNV(
249 VkDeviceMemory memory
,
250 VkExternalMemoryHandleTypeFlagsNV handleType
,
254 #define VK_NV_win32_keyed_mutex 1
255 #define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1
256 #define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
258 typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV
{
259 VkStructureType sType
;
261 uint32_t acquireCount
;
262 const VkDeviceMemory
* pAcquireSyncs
;
263 const uint64_t* pAcquireKeys
;
264 const uint32_t* pAcquireTimeoutMilliseconds
;
265 uint32_t releaseCount
;
266 const VkDeviceMemory
* pReleaseSyncs
;
267 const uint64_t* pReleaseKeys
;
268 } VkWin32KeyedMutexAcquireReleaseInfoNV
;