Skip to main content

vulkan_headers/vulkan/
vulkan_metal.rs

1use crate::prelude::*;
2use crate::platform::metal::*;
3use super::vulkan_core::*;
4
5#[derive(Clone, Copy)]
6#[repr(C)]
7pub struct VkExportMetalBufferInfoEXT {
8    pub sType: VkStructureType,
9    pub pNext: *const c_void,
10    pub memory: VkDeviceMemory,
11    pub mtlBuffer: MTLBuffer_id,
12}
13
14#[derive(Clone, Copy)]
15#[repr(C)]
16pub struct VkExportMetalCommandQueueInfoEXT {
17    pub sType: VkStructureType,
18    pub pNext: *const c_void,
19    pub queue: VkQueue,
20    pub mtlCommandQueue: MTLCommandQueue_id,
21}
22
23#[derive(Clone, Copy)]
24#[repr(C)]
25pub struct VkExportMetalDeviceInfoEXT {
26    pub sType: VkStructureType,
27    pub pNext: *const c_void,
28    pub mtlDevice: MTLDevice_id,
29}
30
31#[derive(Clone, Copy)]
32#[repr(C)]
33pub struct VkExportMetalIOSurfaceInfoEXT {
34    pub sType: VkStructureType,
35    pub pNext: *const c_void,
36    pub image: VkImage,
37    pub ioSurface: IOSurfaceRef,
38}
39
40#[derive(Clone, Copy)]
41#[repr(C)]
42pub struct VkExportMetalObjectCreateInfoEXT {
43    pub sType: VkStructureType,
44    pub pNext: *const c_void,
45    pub exportObjectType: VkExportMetalObjectTypeFlagBitsEXT,
46}
47
48#[derive(Clone, Copy)]
49#[repr(C)]
50pub struct VkExportMetalObjectsInfoEXT {
51    pub sType: VkStructureType,
52    pub pNext: *const c_void,
53}
54
55#[derive(Clone, Copy)]
56#[repr(C)]
57pub struct VkExportMetalSharedEventInfoEXT {
58    pub sType: VkStructureType,
59    pub pNext: *const c_void,
60    pub semaphore: VkSemaphore,
61    pub event: VkEvent,
62    pub mtlSharedEvent: MTLSharedEvent_id,
63}
64
65#[derive(Clone, Copy)]
66#[repr(C)]
67pub struct VkExportMetalTextureInfoEXT {
68    pub sType: VkStructureType,
69    pub pNext: *const c_void,
70    pub image: VkImage,
71    pub imageView: VkImageView,
72    pub bufferView: VkBufferView,
73    pub plane: VkImageAspectFlagBits,
74    pub mtlTexture: MTLTexture_id,
75}
76
77#[derive(Clone, Copy)]
78#[repr(C)]
79pub struct VkImportMemoryMetalHandleInfoEXT {
80    pub sType: VkStructureType,
81    pub pNext: *const c_void,
82    pub handleType: VkExternalMemoryHandleTypeFlagBits,
83    pub handle: *mut c_void,
84}
85
86#[derive(Clone, Copy)]
87#[repr(C)]
88pub struct VkImportMetalBufferInfoEXT {
89    pub sType: VkStructureType,
90    pub pNext: *const c_void,
91    pub mtlBuffer: MTLBuffer_id,
92}
93
94#[derive(Clone, Copy)]
95#[repr(C)]
96pub struct VkImportMetalIOSurfaceInfoEXT {
97    pub sType: VkStructureType,
98    pub pNext: *const c_void,
99    pub ioSurface: IOSurfaceRef,
100}
101
102#[derive(Clone, Copy)]
103#[repr(C)]
104pub struct VkImportMetalSharedEventInfoEXT {
105    pub sType: VkStructureType,
106    pub pNext: *const c_void,
107    pub mtlSharedEvent: MTLSharedEvent_id,
108}
109
110#[derive(Clone, Copy)]
111#[repr(C)]
112pub struct VkImportMetalTextureInfoEXT {
113    pub sType: VkStructureType,
114    pub pNext: *const c_void,
115    pub plane: VkImageAspectFlagBits,
116    pub mtlTexture: MTLTexture_id,
117}
118
119#[derive(Clone, Copy)]
120#[repr(C)]
121pub struct VkMemoryGetMetalHandleInfoEXT {
122    pub sType: VkStructureType,
123    pub pNext: *const c_void,
124    pub memory: VkDeviceMemory,
125    pub handleType: VkExternalMemoryHandleTypeFlagBits,
126}
127
128#[derive(Clone, Copy)]
129#[repr(C)]
130pub struct VkMemoryMetalHandlePropertiesEXT {
131    pub sType: VkStructureType,
132    pub pNext: *mut c_void,
133    pub memoryTypeBits: u32,
134}
135
136#[derive(Clone, Copy)]
137#[repr(C)]
138pub struct VkMetalSurfaceCreateInfoEXT {
139    pub sType: VkStructureType,
140    pub pNext: *const c_void,
141    pub flags: VkMetalSurfaceCreateFlagsEXT,
142    pub pLayer: *const CAMetalLayer,
143}
144
145pub const VK_EXPORT_METAL_OBJECT_TYPE_METAL_BUFFER_BIT_EXT: VkExportMetalObjectTypeFlagBitsEXT = 1 << 2;
146pub const VK_EXPORT_METAL_OBJECT_TYPE_METAL_COMMAND_QUEUE_BIT_EXT: VkExportMetalObjectTypeFlagBitsEXT = 1 << 1;
147pub const VK_EXPORT_METAL_OBJECT_TYPE_METAL_DEVICE_BIT_EXT: VkExportMetalObjectTypeFlagBitsEXT = 1 << 0;
148pub const VK_EXPORT_METAL_OBJECT_TYPE_METAL_IOSURFACE_BIT_EXT: VkExportMetalObjectTypeFlagBitsEXT = 1 << 4;
149pub const VK_EXPORT_METAL_OBJECT_TYPE_METAL_SHARED_EVENT_BIT_EXT: VkExportMetalObjectTypeFlagBitsEXT = 1 << 5;
150pub const VK_EXPORT_METAL_OBJECT_TYPE_METAL_TEXTURE_BIT_EXT: VkExportMetalObjectTypeFlagBitsEXT = 1 << 3;
151pub const VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_EXT: VkExternalMemoryHandleTypeFlagBits = 1 << 16;
152pub const VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLHEAP_BIT_EXT: VkExternalMemoryHandleTypeFlagBits = 1 << 18;
153pub const VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_EXT: VkExternalMemoryHandleTypeFlagBits = 1 << 17;
154pub const VK_EXT_EXTERNAL_MEMORY_METAL_EXTENSION_NAME: &CStr = c"VK_EXT_external_memory_metal";
155pub const VK_EXT_EXTERNAL_MEMORY_METAL_SPEC_VERSION: u32 = 1;
156pub const VK_EXT_METAL_OBJECTS_EXTENSION_NAME: &CStr = c"VK_EXT_metal_objects";
157pub const VK_EXT_METAL_OBJECTS_SPEC_VERSION: u32 = 2;
158pub const VK_EXT_METAL_SURFACE_EXTENSION_NAME: &CStr = c"VK_EXT_metal_surface";
159pub const VK_EXT_METAL_SURFACE_SPEC_VERSION: u32 = 1;
160pub const VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT: VkStructureType = 1000311004;
161pub const VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT: VkStructureType = 1000311003;
162pub const VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT: VkStructureType = 1000311002;
163pub const VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT: VkStructureType = 1000311008;
164pub const VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT: VkStructureType = 1000311001;
165pub const VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT: VkStructureType = 1000311000;
166pub const VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT: VkStructureType = 1000311010;
167pub const VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT: VkStructureType = 1000311006;
168pub const VK_STRUCTURE_TYPE_IMPORT_MEMORY_METAL_HANDLE_INFO_EXT: VkStructureType = 1000602000;
169pub const VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT: VkStructureType = 1000311005;
170pub const VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT: VkStructureType = 1000311009;
171pub const VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT: VkStructureType = 1000311011;
172pub const VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT: VkStructureType = 1000311007;
173pub const VK_STRUCTURE_TYPE_MEMORY_GET_METAL_HANDLE_INFO_EXT: VkStructureType = 1000602002;
174pub const VK_STRUCTURE_TYPE_MEMORY_METAL_HANDLE_PROPERTIES_EXT: VkStructureType = 1000602001;
175pub const VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT: VkStructureType = 1000217000;
176
177unsafe extern "system" {
178    /// Available if built with `prototypes`.
179    #[cfg(any(doc, feature = "prototypes"))]
180    pub fn vkCreateMetalSurfaceEXT(instance: VkInstance, pCreateInfo: *const VkMetalSurfaceCreateInfoEXT, pAllocator: *const VkAllocationCallbacks, pSurface: *mut VkSurfaceKHR) -> VkResult;
181
182    /// Available if built with `prototypes`.
183    #[cfg(any(doc, feature = "prototypes"))]
184    pub fn vkExportMetalObjectsEXT(device: VkDevice, pMetalObjectsInfo: *mut VkExportMetalObjectsInfoEXT);
185
186    /// Available if built with `prototypes`.
187    #[cfg(any(doc, feature = "prototypes"))]
188    pub fn vkGetMemoryMetalHandleEXT(device: VkDevice, pGetMetalHandleInfo: *const VkMemoryGetMetalHandleInfoEXT, pHandle: *mut *mut c_void) -> VkResult;
189
190    /// Available if built with `prototypes`.
191    #[cfg(any(doc, feature = "prototypes"))]
192    pub fn vkGetMemoryMetalHandlePropertiesEXT(device: VkDevice, handleType: VkExternalMemoryHandleTypeFlagBits, pHandle: *const c_void, pMemoryMetalHandleProperties: *mut VkMemoryMetalHandlePropertiesEXT) -> VkResult;
193}
194
195pub type NonNullPFN_vkCreateMetalSurfaceEXT = unsafe extern "system" fn(instance: VkInstance, pCreateInfo: *const VkMetalSurfaceCreateInfoEXT, pAllocator: *const VkAllocationCallbacks, pSurface: *mut VkSurfaceKHR) -> VkResult;
196pub type NonNullPFN_vkExportMetalObjectsEXT = unsafe extern "system" fn(device: VkDevice, pMetalObjectsInfo: *mut VkExportMetalObjectsInfoEXT);
197pub type NonNullPFN_vkGetMemoryMetalHandleEXT = unsafe extern "system" fn(device: VkDevice, pGetMetalHandleInfo: *const VkMemoryGetMetalHandleInfoEXT, pHandle: *mut *mut c_void) -> VkResult;
198pub type NonNullPFN_vkGetMemoryMetalHandlePropertiesEXT = unsafe extern "system" fn(device: VkDevice, handleType: VkExternalMemoryHandleTypeFlagBits, pHandle: *const c_void, pMemoryMetalHandleProperties: *mut VkMemoryMetalHandlePropertiesEXT) -> VkResult;
199pub type PFN_vkCreateMetalSurfaceEXT = Option<NonNullPFN_vkCreateMetalSurfaceEXT>;
200pub type PFN_vkExportMetalObjectsEXT = Option<NonNullPFN_vkExportMetalObjectsEXT>;
201pub type PFN_vkGetMemoryMetalHandleEXT = Option<NonNullPFN_vkGetMemoryMetalHandleEXT>;
202pub type PFN_vkGetMemoryMetalHandlePropertiesEXT = Option<NonNullPFN_vkGetMemoryMetalHandlePropertiesEXT>;
203pub type VkExportMetalObjectTypeFlagBitsEXT = VkFlags;
204pub type VkExportMetalObjectTypeFlagsEXT = VkFlags;
205pub type VkMetalSurfaceCreateFlagsEXT = VkFlags;