erupt/generated/extensions/
khr_android_surface.rs

1// DO NOT EDIT: @generated by erupt's generator
2///<s>Vulkan Manual Page</s> · Constant
3#[doc(alias = "VK_KHR_ANDROID_SURFACE_SPEC_VERSION")]
4pub const KHR_ANDROID_SURFACE_SPEC_VERSION: u32 = 6;
5///<s>Vulkan Manual Page</s> · Constant
6#[doc(alias = "VK_KHR_ANDROID_SURFACE_EXTENSION_NAME")]
7pub const KHR_ANDROID_SURFACE_EXTENSION_NAME: *const std::os::raw::c_char = crate::cstr!(
8    "VK_KHR_android_surface"
9);
10///<s>Vulkan Manual Page</s> · Constant
11pub const FN_CREATE_ANDROID_SURFACE_KHR: *const std::os::raw::c_char = crate::cstr!(
12    "vkCreateAndroidSurfaceKHR"
13);
14///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/ANativeWindow.html) · Basetype
15pub type ANativeWindow = std::ffi::c_void;
16bitflags::bitflags! {
17    #[doc =
18    "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAndroidSurfaceCreateFlagsKHR.html) · Bitmask of [`AndroidSurfaceCreateFlagBitsKHR`]"]
19    #[doc(alias = "VkAndroidSurfaceCreateFlagsKHR")] #[derive(Default)]
20    #[repr(transparent)] pub struct AndroidSurfaceCreateFlagsKHR : u32 {
21    #[cfg(empty_bitflag_workaround)] const EMPTY_BITFLAG_WORKAROUND = 0; }
22}
23///<s>Vulkan Manual Page</s> · Bits enum of [`AndroidSurfaceCreateFlagsKHR`]
24#[doc(alias = "VkAndroidSurfaceCreateFlagBitsKHR")]
25#[derive(Copy, Clone, PartialEq, Eq, Hash, Default, Ord, PartialOrd)]
26#[repr(transparent)]
27pub struct AndroidSurfaceCreateFlagBitsKHR(pub u32);
28impl AndroidSurfaceCreateFlagBitsKHR {
29    #[inline]
30    ///Converts this enum variant to the corresponding bitmask
31    pub const fn bitmask(&self) -> AndroidSurfaceCreateFlagsKHR {
32        AndroidSurfaceCreateFlagsKHR::from_bits_truncate(self.0)
33    }
34}
35impl std::fmt::Debug for AndroidSurfaceCreateFlagBitsKHR {
36    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
37        f.write_str(
38            match self {
39                _ => "(unknown variant)",
40            },
41        )
42    }
43}
44///Provided by [`crate::extensions::khr_android_surface`]
45impl crate::vk1_0::StructureType {
46    pub const ANDROID_SURFACE_CREATE_INFO_KHR: Self = Self(1000008000);
47}
48///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateAndroidSurfaceKHR.html) · Function
49#[allow(non_camel_case_types)]
50pub type PFN_vkCreateAndroidSurfaceKHR = unsafe extern "system" fn(
51    instance: crate::vk1_0::Instance,
52    p_create_info: *const crate::extensions::khr_android_surface::AndroidSurfaceCreateInfoKHR,
53    p_allocator: *const crate::vk1_0::AllocationCallbacks,
54    p_surface: *mut crate::extensions::khr_surface::SurfaceKHR,
55) -> crate::vk1_0::Result;
56///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAndroidSurfaceCreateInfoKHR.html) · Structure
57#[doc(alias = "VkAndroidSurfaceCreateInfoKHR")]
58#[derive(Copy, Clone)]
59#[repr(C)]
60pub struct AndroidSurfaceCreateInfoKHR {
61    pub s_type: crate::vk1_0::StructureType,
62    pub p_next: *const std::ffi::c_void,
63    pub flags: crate::extensions::khr_android_surface::AndroidSurfaceCreateFlagsKHR,
64    pub window: *mut crate::extensions::khr_android_surface::ANativeWindow,
65}
66impl AndroidSurfaceCreateInfoKHR {
67    pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::ANDROID_SURFACE_CREATE_INFO_KHR;
68}
69impl Default for AndroidSurfaceCreateInfoKHR {
70    fn default() -> Self {
71        Self {
72            s_type: Self::STRUCTURE_TYPE,
73            p_next: std::ptr::null(),
74            flags: Default::default(),
75            window: std::ptr::null_mut(),
76        }
77    }
78}
79impl std::fmt::Debug for AndroidSurfaceCreateInfoKHR {
80    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
81        f.debug_struct("AndroidSurfaceCreateInfoKHR")
82            .field("s_type", &self.s_type)
83            .field("p_next", &self.p_next)
84            .field("flags", &self.flags)
85            .field("window", &self.window)
86            .finish()
87    }
88}
89impl AndroidSurfaceCreateInfoKHR {
90    #[inline]
91    pub fn into_builder<'a>(self) -> AndroidSurfaceCreateInfoKHRBuilder<'a> {
92        AndroidSurfaceCreateInfoKHRBuilder(self, std::marker::PhantomData)
93    }
94}
95#[derive(Copy, Clone)]
96///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkAndroidSurfaceCreateInfoKHR.html) · Builder of [`AndroidSurfaceCreateInfoKHR`]
97#[repr(transparent)]
98pub struct AndroidSurfaceCreateInfoKHRBuilder<'a>(
99    AndroidSurfaceCreateInfoKHR,
100    std::marker::PhantomData<&'a ()>,
101);
102impl<'a> AndroidSurfaceCreateInfoKHRBuilder<'a> {
103    #[inline]
104    pub fn new() -> AndroidSurfaceCreateInfoKHRBuilder<'a> {
105        AndroidSurfaceCreateInfoKHRBuilder(Default::default(), std::marker::PhantomData)
106    }
107    #[inline]
108    #[must_use]
109    pub fn flags(
110        mut self,
111        flags: crate::extensions::khr_android_surface::AndroidSurfaceCreateFlagsKHR,
112    ) -> Self {
113        self.0.flags = flags as _;
114        self
115    }
116    #[inline]
117    #[must_use]
118    pub fn window(
119        mut self,
120        window: &'a mut crate::extensions::khr_android_surface::ANativeWindow,
121    ) -> Self {
122        self.0.window = window as _;
123        self
124    }
125    #[inline]
126    /// Discards all lifetime information.
127    /// Use the `Deref` and `DerefMut` implementations if possible.
128    pub fn build_dangling(self) -> AndroidSurfaceCreateInfoKHR {
129        self.0
130    }
131}
132impl<'a> std::default::Default for AndroidSurfaceCreateInfoKHRBuilder<'a> {
133    fn default() -> AndroidSurfaceCreateInfoKHRBuilder<'a> {
134        Self::new()
135    }
136}
137impl<'a> std::fmt::Debug for AndroidSurfaceCreateInfoKHRBuilder<'a> {
138    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
139        std::fmt::Debug::fmt(&self.0, f)
140    }
141}
142impl<'a> std::ops::Deref for AndroidSurfaceCreateInfoKHRBuilder<'a> {
143    type Target = AndroidSurfaceCreateInfoKHR;
144    fn deref(&self) -> &Self::Target {
145        &self.0
146    }
147}
148impl<'a> std::ops::DerefMut for AndroidSurfaceCreateInfoKHRBuilder<'a> {
149    fn deref_mut(&mut self) -> &mut Self::Target {
150        &mut self.0
151    }
152}
153///Provided by [`crate::extensions::khr_android_surface`]
154impl crate::InstanceLoader {
155    #[inline]
156    #[track_caller]
157    ///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateAndroidSurfaceKHR.html) · Function
158    #[doc(alias = "vkCreateAndroidSurfaceKHR")]
159    pub unsafe fn create_android_surface_khr(
160        &self,
161        create_info: &crate::extensions::khr_android_surface::AndroidSurfaceCreateInfoKHR,
162        allocator: Option<&crate::vk1_0::AllocationCallbacks>,
163    ) -> crate::utils::VulkanResult<crate::extensions::khr_surface::SurfaceKHR> {
164        let _function = self
165            .create_android_surface_khr
166            .expect(crate::NOT_LOADED_MESSAGE);
167        let mut surface = Default::default();
168        let _return = _function(
169            self.handle,
170            create_info as _,
171            match allocator {
172                Some(v) => v,
173                None => std::ptr::null(),
174            },
175            &mut surface,
176        );
177        crate::utils::VulkanResult::new(_return, surface)
178    }
179}