Skip to main content

vulkan_headers/vulkan/
vulkan_win32.rs

1use crate::prelude::*;
2use crate::platform::win32::*;
3use super::vulkan_core::*;
4
5#[derive(Clone, Copy)]
6#[repr(C)]
7pub struct VkD3D12FenceSubmitInfoKHR {
8    pub sType: VkStructureType,
9    pub pNext: *const c_void,
10    pub waitSemaphoreValuesCount: u32,
11    pub pWaitSemaphoreValues: *const u64,
12    pub signalSemaphoreValuesCount: u32,
13    pub pSignalSemaphoreValues: *const u64,
14}
15
16#[derive(Clone, Copy)]
17#[repr(C)]
18pub struct VkExportFenceWin32HandleInfoKHR {
19    pub sType: VkStructureType,
20    pub pNext: *const c_void,
21    pub pAttributes: *const SECURITY_ATTRIBUTES,
22    pub dwAccess: DWORD,
23    pub name: LPCWSTR,
24}
25
26#[derive(Clone, Copy)]
27#[repr(C)]
28pub struct VkExportMemoryWin32HandleInfoKHR {
29    pub sType: VkStructureType,
30    pub pNext: *const c_void,
31    pub pAttributes: *const SECURITY_ATTRIBUTES,
32    pub dwAccess: DWORD,
33    pub name: LPCWSTR,
34}
35
36#[derive(Clone, Copy)]
37#[repr(C)]
38pub struct VkExportMemoryWin32HandleInfoNV {
39    pub sType: VkStructureType,
40    pub pNext: *const c_void,
41    pub pAttributes: *const SECURITY_ATTRIBUTES,
42    pub dwAccess: DWORD,
43}
44
45#[derive(Clone, Copy)]
46#[repr(C)]
47pub struct VkExportSemaphoreWin32HandleInfoKHR {
48    pub sType: VkStructureType,
49    pub pNext: *const c_void,
50    pub pAttributes: *const SECURITY_ATTRIBUTES,
51    pub dwAccess: DWORD,
52    pub name: LPCWSTR,
53}
54
55#[derive(Clone, Copy)]
56#[repr(C)]
57pub struct VkFenceGetWin32HandleInfoKHR {
58    pub sType: VkStructureType,
59    pub pNext: *const c_void,
60    pub fence: VkFence,
61    pub handleType: VkExternalFenceHandleTypeFlagBits,
62}
63
64#[derive(Clone, Copy)]
65#[repr(C)]
66pub struct VkImportFenceWin32HandleInfoKHR {
67    pub sType: VkStructureType,
68    pub pNext: *const c_void,
69    pub fence: VkFence,
70    pub flags: VkFenceImportFlags,
71    pub handleType: VkExternalFenceHandleTypeFlagBits,
72    pub handle: HANDLE,
73    pub name: LPCWSTR,
74}
75
76#[derive(Clone, Copy)]
77#[repr(C)]
78pub struct VkImportMemoryWin32HandleInfoKHR {
79    pub sType: VkStructureType,
80    pub pNext: *const c_void,
81    pub handleType: VkExternalMemoryHandleTypeFlagBits,
82    pub handle: HANDLE,
83    pub name: LPCWSTR,
84}
85
86#[derive(Clone, Copy)]
87#[repr(C)]
88pub struct VkImportMemoryWin32HandleInfoNV {
89    pub sType: VkStructureType,
90    pub pNext: *const c_void,
91    pub handleType: VkExternalMemoryHandleTypeFlagsNV,
92    pub handle: HANDLE,
93}
94
95#[derive(Clone, Copy)]
96#[repr(C)]
97pub struct VkImportSemaphoreWin32HandleInfoKHR {
98    pub sType: VkStructureType,
99    pub pNext: *const c_void,
100    pub semaphore: VkSemaphore,
101    pub flags: VkSemaphoreImportFlags,
102    pub handleType: VkExternalSemaphoreHandleTypeFlagBits,
103    pub handle: HANDLE,
104    pub name: LPCWSTR,
105}
106
107#[derive(Clone, Copy)]
108#[repr(C)]
109pub struct VkMemoryGetWin32HandleInfoKHR {
110    pub sType: VkStructureType,
111    pub pNext: *const c_void,
112    pub memory: VkDeviceMemory,
113    pub handleType: VkExternalMemoryHandleTypeFlagBits,
114}
115
116#[derive(Clone, Copy)]
117#[repr(C)]
118pub struct VkMemoryWin32HandlePropertiesKHR {
119    pub sType: VkStructureType,
120    pub pNext: *mut c_void,
121    pub memoryTypeBits: u32,
122}
123
124#[derive(Clone, Copy)]
125#[repr(C)]
126pub struct VkSemaphoreGetWin32HandleInfoKHR {
127    pub sType: VkStructureType,
128    pub pNext: *const c_void,
129    pub semaphore: VkSemaphore,
130    pub handleType: VkExternalSemaphoreHandleTypeFlagBits,
131}
132
133#[derive(Clone, Copy)]
134#[repr(C)]
135pub struct VkSurfaceCapabilitiesFullScreenExclusiveEXT {
136    pub sType: VkStructureType,
137    pub pNext: *mut c_void,
138    pub fullScreenExclusiveSupported: VkBool32,
139}
140
141#[derive(Clone, Copy)]
142#[repr(C)]
143pub struct VkSurfaceFullScreenExclusiveInfoEXT {
144    pub sType: VkStructureType,
145    pub pNext: *mut c_void,
146    pub fullScreenExclusive: VkFullScreenExclusiveEXT,
147}
148
149#[derive(Clone, Copy)]
150#[repr(C)]
151pub struct VkSurfaceFullScreenExclusiveWin32InfoEXT {
152    pub sType: VkStructureType,
153    pub pNext: *const c_void,
154    pub hmonitor: HMONITOR,
155}
156
157#[derive(Clone, Copy)]
158#[repr(C)]
159pub struct VkWin32KeyedMutexAcquireReleaseInfoKHR {
160    pub sType: VkStructureType,
161    pub pNext: *const c_void,
162    pub acquireCount: u32,
163    pub pAcquireSyncs: *const VkDeviceMemory,
164    pub pAcquireKeys: *const u64,
165    pub pAcquireTimeouts: *const u32,
166    pub releaseCount: u32,
167    pub pReleaseSyncs: *const VkDeviceMemory,
168    pub pReleaseKeys: *const u64,
169}
170
171#[derive(Clone, Copy)]
172#[repr(C)]
173pub struct VkWin32KeyedMutexAcquireReleaseInfoNV {
174    pub sType: VkStructureType,
175    pub pNext: *const c_void,
176    pub acquireCount: u32,
177    pub pAcquireSyncs: *const VkDeviceMemory,
178    pub pAcquireKeys: *const u64,
179    pub pAcquireTimeoutMilliseconds: *const u32,
180    pub releaseCount: u32,
181    pub pReleaseSyncs: *const VkDeviceMemory,
182    pub pReleaseKeys: *const u64,
183}
184
185#[derive(Clone, Copy)]
186#[repr(C)]
187pub struct VkWin32SurfaceCreateInfoKHR {
188    pub sType: VkStructureType,
189    pub pNext: *const c_void,
190    pub flags: VkWin32SurfaceCreateFlagsKHR,
191    pub hinstance: HINSTANCE,
192    pub hwnd: HWND,
193}
194
195pub const VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT: VkResult = -1000255000;
196pub const VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME: &CStr = c"VK_EXT_full_screen_exclusive";
197pub const VK_EXT_FULL_SCREEN_EXCLUSIVE_SPEC_VERSION: u32 = 4;
198pub const VK_FULL_SCREEN_EXCLUSIVE_ALLOWED_EXT: VkFullScreenExclusiveEXT = 1;
199pub const VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT: VkFullScreenExclusiveEXT = 3;
200pub const VK_FULL_SCREEN_EXCLUSIVE_DEFAULT_EXT: VkFullScreenExclusiveEXT = 0;
201pub const VK_FULL_SCREEN_EXCLUSIVE_DISALLOWED_EXT: VkFullScreenExclusiveEXT = 2;
202pub const VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME: &CStr = c"VK_KHR_external_fence_win32";
203pub const VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION: u32 = 1;
204pub const VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME: &CStr = c"VK_KHR_external_memory_win32";
205pub const VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION: u32 = 1;
206pub const VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME: &CStr = c"VK_KHR_external_semaphore_win32";
207pub const VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION: u32 = 1;
208pub const VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME: &CStr = c"VK_KHR_win32_keyed_mutex";
209pub const VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION: u32 = 1;
210pub const VK_KHR_WIN32_SURFACE_EXTENSION_NAME: &CStr = c"VK_KHR_win32_surface";
211pub const VK_KHR_WIN32_SURFACE_SPEC_VERSION: u32 = 6;
212pub const VK_NV_ACQUIRE_WINRT_DISPLAY_EXTENSION_NAME: &CStr = c"VK_NV_acquire_winrt_display";
213pub const VK_NV_ACQUIRE_WINRT_DISPLAY_SPEC_VERSION: u32 = 1;
214pub const VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME: &CStr = c"VK_NV_external_memory_win32";
215pub const VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION: u32 = 1;
216pub const VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME: &CStr = c"VK_NV_win32_keyed_mutex";
217pub const VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION: u32 = 2;
218pub const VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR: VkStructureType = 1000078002;
219pub const VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR: VkStructureType = 1000114001;
220pub const VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR: VkStructureType = 1000073001;
221pub const VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV: VkStructureType = 1000057001;
222pub const VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR: VkStructureType = 1000078001;
223pub const VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR: VkStructureType = 1000114002;
224pub const VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR: VkStructureType = 1000114000;
225pub const VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR: VkStructureType = 1000073000;
226pub const VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV: VkStructureType = 1000057000;
227pub const VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR: VkStructureType = 1000078000;
228pub const VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR: VkStructureType = 1000073003;
229pub const VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR: VkStructureType = 1000073002;
230pub const VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR: VkStructureType = 1000078003;
231pub const VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT: VkStructureType = 1000255002;
232pub const VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT: VkStructureType = 1000255000;
233pub const VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT: VkStructureType = 1000255001;
234pub const VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR: VkStructureType = 1000075000;
235pub const VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV: VkStructureType = 1000058000;
236pub const VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR: VkStructureType = 1000009000;
237
238unsafe extern "system" {
239    /// Available if built with `prototypes`.
240    #[cfg(any(doc, feature = "prototypes"))]
241    pub fn vkAcquireFullScreenExclusiveModeEXT(device: VkDevice, swapchain: VkSwapchainKHR) -> VkResult;
242
243    /// Available if built with `prototypes`.
244    #[cfg(any(doc, feature = "prototypes"))]
245    pub fn vkAcquireWinrtDisplayNV(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR) -> VkResult;
246
247    /// Available if built with `prototypes`.
248    #[cfg(any(doc, feature = "prototypes"))]
249    pub fn vkCreateWin32SurfaceKHR(instance: VkInstance, pCreateInfo: *const VkWin32SurfaceCreateInfoKHR, pAllocator: *const VkAllocationCallbacks, pSurface: *mut VkSurfaceKHR) -> VkResult;
250
251    /// Available if built with `prototypes`.
252    #[cfg(any(doc, feature = "prototypes"))]
253    pub fn vkGetDeviceGroupSurfacePresentModes2EXT(device: VkDevice, pSurfaceInfo: *const VkPhysicalDeviceSurfaceInfo2KHR, pModes: *mut VkDeviceGroupPresentModeFlagsKHR) -> VkResult;
254
255    /// Available if built with `prototypes`.
256    #[cfg(any(doc, feature = "prototypes"))]
257    pub fn vkGetFenceWin32HandleKHR(device: VkDevice, pGetWin32HandleInfo: *const VkFenceGetWin32HandleInfoKHR, pHandle: *mut HANDLE) -> VkResult;
258
259    /// Available if built with `prototypes`.
260    #[cfg(any(doc, feature = "prototypes"))]
261    pub fn vkGetMemoryWin32HandleKHR(device: VkDevice, pGetWin32HandleInfo: *const VkMemoryGetWin32HandleInfoKHR, pHandle: *mut HANDLE) -> VkResult;
262
263    /// Available if built with `prototypes`.
264    #[cfg(any(doc, feature = "prototypes"))]
265    pub fn vkGetMemoryWin32HandleNV(device: VkDevice, memory: VkDeviceMemory, handleType: VkExternalMemoryHandleTypeFlagsNV, pHandle: *mut HANDLE) -> VkResult;
266
267    /// Available if built with `prototypes`.
268    #[cfg(any(doc, feature = "prototypes"))]
269    pub fn vkGetMemoryWin32HandlePropertiesKHR(device: VkDevice, handleType: VkExternalMemoryHandleTypeFlagBits, handle: HANDLE, pMemoryWin32HandleProperties: *mut VkMemoryWin32HandlePropertiesKHR) -> VkResult;
270
271    /// Available if built with `prototypes`.
272    #[cfg(any(doc, feature = "prototypes"))]
273    pub fn vkGetPhysicalDeviceSurfacePresentModes2EXT(physicalDevice: VkPhysicalDevice, pSurfaceInfo: *const VkPhysicalDeviceSurfaceInfo2KHR, pPresentModeCount: *mut u32, pPresentModes: *mut VkPresentModeKHR) -> VkResult;
274
275    /// Available if built with `prototypes`.
276    #[cfg(any(doc, feature = "prototypes"))]
277    pub fn vkGetPhysicalDeviceWin32PresentationSupportKHR(physicalDevice: VkPhysicalDevice, queueFamilyIndex: u32) -> VkBool32;
278
279    /// Available if built with `prototypes`.
280    #[cfg(any(doc, feature = "prototypes"))]
281    pub fn vkGetSemaphoreWin32HandleKHR(device: VkDevice, pGetWin32HandleInfo: *const VkSemaphoreGetWin32HandleInfoKHR, pHandle: *mut HANDLE) -> VkResult;
282
283    /// Available if built with `prototypes`.
284    #[cfg(any(doc, feature = "prototypes"))]
285    pub fn vkGetWinrtDisplayNV(physicalDevice: VkPhysicalDevice, deviceRelativeId: u32, pDisplay: *mut VkDisplayKHR) -> VkResult;
286
287    /// Available if built with `prototypes`.
288    #[cfg(any(doc, feature = "prototypes"))]
289    pub fn vkImportFenceWin32HandleKHR(device: VkDevice, pImportFenceWin32HandleInfo: *const VkImportFenceWin32HandleInfoKHR) -> VkResult;
290
291    /// Available if built with `prototypes`.
292    #[cfg(any(doc, feature = "prototypes"))]
293    pub fn vkImportSemaphoreWin32HandleKHR(device: VkDevice, pImportSemaphoreWin32HandleInfo: *const VkImportSemaphoreWin32HandleInfoKHR) -> VkResult;
294
295    /// Available if built with `prototypes`.
296    #[cfg(any(doc, feature = "prototypes"))]
297    pub fn vkReleaseFullScreenExclusiveModeEXT(device: VkDevice, swapchain: VkSwapchainKHR) -> VkResult;
298}
299
300pub type NonNullPFN_vkAcquireFullScreenExclusiveModeEXT = unsafe extern "system" fn(device: VkDevice, swapchain: VkSwapchainKHR) -> VkResult;
301pub type NonNullPFN_vkAcquireWinrtDisplayNV = unsafe extern "system" fn(physicalDevice: VkPhysicalDevice, display: VkDisplayKHR) -> VkResult;
302pub type NonNullPFN_vkCreateWin32SurfaceKHR = unsafe extern "system" fn(instance: VkInstance, pCreateInfo: *const VkWin32SurfaceCreateInfoKHR, pAllocator: *const VkAllocationCallbacks, pSurface: *mut VkSurfaceKHR) -> VkResult;
303pub type NonNullPFN_vkGetDeviceGroupSurfacePresentModes2EXT = unsafe extern "system" fn(device: VkDevice, pSurfaceInfo: *const VkPhysicalDeviceSurfaceInfo2KHR, pModes: *mut VkDeviceGroupPresentModeFlagsKHR) -> VkResult;
304pub type NonNullPFN_vkGetFenceWin32HandleKHR = unsafe extern "system" fn(device: VkDevice, pGetWin32HandleInfo: *const VkFenceGetWin32HandleInfoKHR, pHandle: *mut HANDLE) -> VkResult;
305pub type NonNullPFN_vkGetMemoryWin32HandleKHR = unsafe extern "system" fn(device: VkDevice, pGetWin32HandleInfo: *const VkMemoryGetWin32HandleInfoKHR, pHandle: *mut HANDLE) -> VkResult;
306pub type NonNullPFN_vkGetMemoryWin32HandleNV = unsafe extern "system" fn(device: VkDevice, memory: VkDeviceMemory, handleType: VkExternalMemoryHandleTypeFlagsNV, pHandle: *mut HANDLE) -> VkResult;
307pub type NonNullPFN_vkGetMemoryWin32HandlePropertiesKHR = unsafe extern "system" fn(device: VkDevice, handleType: VkExternalMemoryHandleTypeFlagBits, handle: HANDLE, pMemoryWin32HandleProperties: *mut VkMemoryWin32HandlePropertiesKHR) -> VkResult;
308pub type NonNullPFN_vkGetPhysicalDeviceSurfacePresentModes2EXT = unsafe extern "system" fn(physicalDevice: VkPhysicalDevice, pSurfaceInfo: *const VkPhysicalDeviceSurfaceInfo2KHR, pPresentModeCount: *mut u32, pPresentModes: *mut VkPresentModeKHR) -> VkResult;
309pub type NonNullPFN_vkGetPhysicalDeviceWin32PresentationSupportKHR = unsafe extern "system" fn(physicalDevice: VkPhysicalDevice, queueFamilyIndex: u32) -> VkBool32;
310pub type NonNullPFN_vkGetSemaphoreWin32HandleKHR = unsafe extern "system" fn(device: VkDevice, pGetWin32HandleInfo: *const VkSemaphoreGetWin32HandleInfoKHR, pHandle: *mut HANDLE) -> VkResult;
311pub type NonNullPFN_vkGetWinrtDisplayNV = unsafe extern "system" fn(physicalDevice: VkPhysicalDevice, deviceRelativeId: u32, pDisplay: *mut VkDisplayKHR) -> VkResult;
312pub type NonNullPFN_vkImportFenceWin32HandleKHR = unsafe extern "system" fn(device: VkDevice, pImportFenceWin32HandleInfo: *const VkImportFenceWin32HandleInfoKHR) -> VkResult;
313pub type NonNullPFN_vkImportSemaphoreWin32HandleKHR = unsafe extern "system" fn(device: VkDevice, pImportSemaphoreWin32HandleInfo: *const VkImportSemaphoreWin32HandleInfoKHR) -> VkResult;
314pub type NonNullPFN_vkReleaseFullScreenExclusiveModeEXT = unsafe extern "system" fn(device: VkDevice, swapchain: VkSwapchainKHR) -> VkResult;
315pub type PFN_vkAcquireFullScreenExclusiveModeEXT = Option<NonNullPFN_vkAcquireFullScreenExclusiveModeEXT>;
316pub type PFN_vkAcquireWinrtDisplayNV = Option<NonNullPFN_vkAcquireWinrtDisplayNV>;
317pub type PFN_vkCreateWin32SurfaceKHR = Option<NonNullPFN_vkCreateWin32SurfaceKHR>;
318pub type PFN_vkGetDeviceGroupSurfacePresentModes2EXT = Option<NonNullPFN_vkGetDeviceGroupSurfacePresentModes2EXT>;
319pub type PFN_vkGetFenceWin32HandleKHR = Option<NonNullPFN_vkGetFenceWin32HandleKHR>;
320pub type PFN_vkGetMemoryWin32HandleKHR = Option<NonNullPFN_vkGetMemoryWin32HandleKHR>;
321pub type PFN_vkGetMemoryWin32HandleNV = Option<NonNullPFN_vkGetMemoryWin32HandleNV>;
322pub type PFN_vkGetMemoryWin32HandlePropertiesKHR = Option<NonNullPFN_vkGetMemoryWin32HandlePropertiesKHR>;
323pub type PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT = Option<NonNullPFN_vkGetPhysicalDeviceSurfacePresentModes2EXT>;
324pub type PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR = Option<NonNullPFN_vkGetPhysicalDeviceWin32PresentationSupportKHR>;
325pub type PFN_vkGetSemaphoreWin32HandleKHR = Option<NonNullPFN_vkGetSemaphoreWin32HandleKHR>;
326pub type PFN_vkGetWinrtDisplayNV = Option<NonNullPFN_vkGetWinrtDisplayNV>;
327pub type PFN_vkImportFenceWin32HandleKHR = Option<NonNullPFN_vkImportFenceWin32HandleKHR>;
328pub type PFN_vkImportSemaphoreWin32HandleKHR = Option<NonNullPFN_vkImportSemaphoreWin32HandleKHR>;
329pub type PFN_vkReleaseFullScreenExclusiveModeEXT = Option<NonNullPFN_vkReleaseFullScreenExclusiveModeEXT>;
330pub type VkFullScreenExclusiveEXT = i32;
331pub type VkWin32SurfaceCreateFlagsKHR = VkFlags;