erupt/generated/extensions/
khr_display.rs

1// DO NOT EDIT: @generated by erupt's generator
2///<s>Vulkan Manual Page</s> · Constant
3#[doc(alias = "VK_KHR_DISPLAY_SPEC_VERSION")]
4pub const KHR_DISPLAY_SPEC_VERSION: u32 = 23;
5///<s>Vulkan Manual Page</s> · Constant
6#[doc(alias = "VK_KHR_DISPLAY_EXTENSION_NAME")]
7pub const KHR_DISPLAY_EXTENSION_NAME: *const std::os::raw::c_char = crate::cstr!(
8    "VK_KHR_display"
9);
10///<s>Vulkan Manual Page</s> · Constant
11pub const FN_GET_PHYSICAL_DEVICE_DISPLAY_PROPERTIES_KHR: *const std::os::raw::c_char = crate::cstr!(
12    "vkGetPhysicalDeviceDisplayPropertiesKHR"
13);
14///<s>Vulkan Manual Page</s> · Constant
15pub const FN_GET_PHYSICAL_DEVICE_DISPLAY_PLANE_PROPERTIES_KHR: *const std::os::raw::c_char = crate::cstr!(
16    "vkGetPhysicalDeviceDisplayPlanePropertiesKHR"
17);
18///<s>Vulkan Manual Page</s> · Constant
19pub const FN_GET_DISPLAY_PLANE_SUPPORTED_DISPLAYS_KHR: *const std::os::raw::c_char = crate::cstr!(
20    "vkGetDisplayPlaneSupportedDisplaysKHR"
21);
22///<s>Vulkan Manual Page</s> · Constant
23pub const FN_GET_DISPLAY_MODE_PROPERTIES_KHR: *const std::os::raw::c_char = crate::cstr!(
24    "vkGetDisplayModePropertiesKHR"
25);
26///<s>Vulkan Manual Page</s> · Constant
27pub const FN_CREATE_DISPLAY_MODE_KHR: *const std::os::raw::c_char = crate::cstr!(
28    "vkCreateDisplayModeKHR"
29);
30///<s>Vulkan Manual Page</s> · Constant
31pub const FN_GET_DISPLAY_PLANE_CAPABILITIES_KHR: *const std::os::raw::c_char = crate::cstr!(
32    "vkGetDisplayPlaneCapabilitiesKHR"
33);
34///<s>Vulkan Manual Page</s> · Constant
35pub const FN_CREATE_DISPLAY_PLANE_SURFACE_KHR: *const std::os::raw::c_char = crate::cstr!(
36    "vkCreateDisplayPlaneSurfaceKHR"
37);
38crate::non_dispatchable_handle!(
39    DisplayKHR, DISPLAY_KHR,
40    "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayKHR.html) · Non-dispatchable Handle",
41    "VkDisplayKHR"
42);
43crate::non_dispatchable_handle!(
44    DisplayModeKHR, DISPLAY_MODE_KHR,
45    "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayModeKHR.html) · Non-dispatchable Handle",
46    "VkDisplayModeKHR"
47);
48bitflags::bitflags! {
49    #[doc =
50    "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayModeCreateFlagsKHR.html) · Bitmask of [`DisplayModeCreateFlagBitsKHR`]"]
51    #[doc(alias = "VkDisplayModeCreateFlagsKHR")] #[derive(Default)] #[repr(transparent)]
52    pub struct DisplayModeCreateFlagsKHR : u32 { #[cfg(empty_bitflag_workaround)] const
53    EMPTY_BITFLAG_WORKAROUND = 0; }
54}
55///<s>Vulkan Manual Page</s> · Bits enum of [`DisplayModeCreateFlagsKHR`]
56#[doc(alias = "VkDisplayModeCreateFlagBitsKHR")]
57#[derive(Copy, Clone, PartialEq, Eq, Hash, Default, Ord, PartialOrd)]
58#[repr(transparent)]
59pub struct DisplayModeCreateFlagBitsKHR(pub u32);
60impl DisplayModeCreateFlagBitsKHR {
61    #[inline]
62    ///Converts this enum variant to the corresponding bitmask
63    pub const fn bitmask(&self) -> DisplayModeCreateFlagsKHR {
64        DisplayModeCreateFlagsKHR::from_bits_truncate(self.0)
65    }
66}
67impl std::fmt::Debug for DisplayModeCreateFlagBitsKHR {
68    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
69        f.write_str(
70            match self {
71                _ => "(unknown variant)",
72            },
73        )
74    }
75}
76bitflags::bitflags! {
77    #[doc =
78    "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplaySurfaceCreateFlagsKHR.html) · Bitmask of [`DisplaySurfaceCreateFlagBitsKHR`]"]
79    #[doc(alias = "VkDisplaySurfaceCreateFlagsKHR")] #[derive(Default)]
80    #[repr(transparent)] pub struct DisplaySurfaceCreateFlagsKHR : u32 {
81    #[cfg(empty_bitflag_workaround)] const EMPTY_BITFLAG_WORKAROUND = 0; }
82}
83///<s>Vulkan Manual Page</s> · Bits enum of [`DisplaySurfaceCreateFlagsKHR`]
84#[doc(alias = "VkDisplaySurfaceCreateFlagBitsKHR")]
85#[derive(Copy, Clone, PartialEq, Eq, Hash, Default, Ord, PartialOrd)]
86#[repr(transparent)]
87pub struct DisplaySurfaceCreateFlagBitsKHR(pub u32);
88impl DisplaySurfaceCreateFlagBitsKHR {
89    #[inline]
90    ///Converts this enum variant to the corresponding bitmask
91    pub const fn bitmask(&self) -> DisplaySurfaceCreateFlagsKHR {
92        DisplaySurfaceCreateFlagsKHR::from_bits_truncate(self.0)
93    }
94}
95impl std::fmt::Debug for DisplaySurfaceCreateFlagBitsKHR {
96    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
97        f.write_str(
98            match self {
99                _ => "(unknown variant)",
100            },
101        )
102    }
103}
104///Provided by [`crate::extensions::khr_display`]
105impl crate::vk1_0::StructureType {
106    pub const DISPLAY_MODE_CREATE_INFO_KHR: Self = Self(1000002000);
107    pub const DISPLAY_SURFACE_CREATE_INFO_KHR: Self = Self(1000002001);
108}
109///Provided by [`crate::extensions::khr_display`]
110impl crate::vk1_0::ObjectType {
111    pub const DISPLAY_KHR: Self = Self(1000002000);
112    pub const DISPLAY_MODE_KHR: Self = Self(1000002001);
113}
114bitflags::bitflags! {
115    #[doc =
116    "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayPlaneAlphaFlagsKHR.html) · Bitmask of [`DisplayPlaneAlphaFlagBitsKHR`]"]
117    #[doc(alias = "VkDisplayPlaneAlphaFlagsKHR")] #[derive(Default)] #[repr(transparent)]
118    pub struct DisplayPlaneAlphaFlagsKHR : u32 { const OPAQUE_KHR =
119    DisplayPlaneAlphaFlagBitsKHR::OPAQUE_KHR.0; const GLOBAL_KHR =
120    DisplayPlaneAlphaFlagBitsKHR::GLOBAL_KHR.0; const PER_PIXEL_KHR =
121    DisplayPlaneAlphaFlagBitsKHR::PER_PIXEL_KHR.0; const PER_PIXEL_PREMULTIPLIED_KHR =
122    DisplayPlaneAlphaFlagBitsKHR::PER_PIXEL_PREMULTIPLIED_KHR.0; }
123}
124///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayPlaneAlphaFlagBitsKHR.html) · Bits enum of [`DisplayPlaneAlphaFlagsKHR`]
125#[doc(alias = "VkDisplayPlaneAlphaFlagBitsKHR")]
126#[derive(Copy, Clone, PartialEq, Eq, Hash, Default, Ord, PartialOrd)]
127#[repr(transparent)]
128pub struct DisplayPlaneAlphaFlagBitsKHR(pub u32);
129impl DisplayPlaneAlphaFlagBitsKHR {
130    #[inline]
131    ///Converts this enum variant to the corresponding bitmask
132    pub const fn bitmask(&self) -> DisplayPlaneAlphaFlagsKHR {
133        DisplayPlaneAlphaFlagsKHR::from_bits_truncate(self.0)
134    }
135}
136impl std::fmt::Debug for DisplayPlaneAlphaFlagBitsKHR {
137    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
138        f.write_str(
139            match self {
140                &Self::OPAQUE_KHR => "OPAQUE_KHR",
141                &Self::GLOBAL_KHR => "GLOBAL_KHR",
142                &Self::PER_PIXEL_KHR => "PER_PIXEL_KHR",
143                &Self::PER_PIXEL_PREMULTIPLIED_KHR => "PER_PIXEL_PREMULTIPLIED_KHR",
144                _ => "(unknown variant)",
145            },
146        )
147    }
148}
149///Provided by [`crate::extensions::khr_display`]
150impl crate::extensions::khr_display::DisplayPlaneAlphaFlagBitsKHR {
151    pub const OPAQUE_KHR: Self = Self(1);
152    pub const GLOBAL_KHR: Self = Self(2);
153    pub const PER_PIXEL_KHR: Self = Self(4);
154    pub const PER_PIXEL_PREMULTIPLIED_KHR: Self = Self(8);
155}
156///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceDisplayPropertiesKHR.html) · Function
157#[allow(non_camel_case_types)]
158pub type PFN_vkGetPhysicalDeviceDisplayPropertiesKHR = unsafe extern "system" fn(
159    physical_device: crate::vk1_0::PhysicalDevice,
160    p_property_count: *mut u32,
161    p_properties: *mut crate::extensions::khr_display::DisplayPropertiesKHR,
162) -> crate::vk1_0::Result;
163///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.html) · Function
164#[allow(non_camel_case_types)]
165pub type PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR = unsafe extern "system" fn(
166    physical_device: crate::vk1_0::PhysicalDevice,
167    p_property_count: *mut u32,
168    p_properties: *mut crate::extensions::khr_display::DisplayPlanePropertiesKHR,
169) -> crate::vk1_0::Result;
170///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetDisplayPlaneSupportedDisplaysKHR.html) · Function
171#[allow(non_camel_case_types)]
172pub type PFN_vkGetDisplayPlaneSupportedDisplaysKHR = unsafe extern "system" fn(
173    physical_device: crate::vk1_0::PhysicalDevice,
174    plane_index: u32,
175    p_display_count: *mut u32,
176    p_displays: *mut crate::extensions::khr_display::DisplayKHR,
177) -> crate::vk1_0::Result;
178///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetDisplayModePropertiesKHR.html) · Function
179#[allow(non_camel_case_types)]
180pub type PFN_vkGetDisplayModePropertiesKHR = unsafe extern "system" fn(
181    physical_device: crate::vk1_0::PhysicalDevice,
182    display: crate::extensions::khr_display::DisplayKHR,
183    p_property_count: *mut u32,
184    p_properties: *mut crate::extensions::khr_display::DisplayModePropertiesKHR,
185) -> crate::vk1_0::Result;
186///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateDisplayModeKHR.html) · Function
187#[allow(non_camel_case_types)]
188pub type PFN_vkCreateDisplayModeKHR = unsafe extern "system" fn(
189    physical_device: crate::vk1_0::PhysicalDevice,
190    display: crate::extensions::khr_display::DisplayKHR,
191    p_create_info: *const crate::extensions::khr_display::DisplayModeCreateInfoKHR,
192    p_allocator: *const crate::vk1_0::AllocationCallbacks,
193    p_mode: *mut crate::extensions::khr_display::DisplayModeKHR,
194) -> crate::vk1_0::Result;
195///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetDisplayPlaneCapabilitiesKHR.html) · Function
196#[allow(non_camel_case_types)]
197pub type PFN_vkGetDisplayPlaneCapabilitiesKHR = unsafe extern "system" fn(
198    physical_device: crate::vk1_0::PhysicalDevice,
199    mode: crate::extensions::khr_display::DisplayModeKHR,
200    plane_index: u32,
201    p_capabilities: *mut crate::extensions::khr_display::DisplayPlaneCapabilitiesKHR,
202) -> crate::vk1_0::Result;
203///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateDisplayPlaneSurfaceKHR.html) · Function
204#[allow(non_camel_case_types)]
205pub type PFN_vkCreateDisplayPlaneSurfaceKHR = unsafe extern "system" fn(
206    instance: crate::vk1_0::Instance,
207    p_create_info: *const crate::extensions::khr_display::DisplaySurfaceCreateInfoKHR,
208    p_allocator: *const crate::vk1_0::AllocationCallbacks,
209    p_surface: *mut crate::extensions::khr_surface::SurfaceKHR,
210) -> crate::vk1_0::Result;
211///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayPropertiesKHR.html) · Structure
212#[doc(alias = "VkDisplayPropertiesKHR")]
213#[derive(Copy, Clone)]
214#[repr(C)]
215pub struct DisplayPropertiesKHR {
216    pub display: crate::extensions::khr_display::DisplayKHR,
217    pub display_name: *const std::os::raw::c_char,
218    pub physical_dimensions: crate::vk1_0::Extent2D,
219    pub physical_resolution: crate::vk1_0::Extent2D,
220    pub supported_transforms: crate::extensions::khr_surface::SurfaceTransformFlagsKHR,
221    pub plane_reorder_possible: crate::vk1_0::Bool32,
222    pub persistent_content: crate::vk1_0::Bool32,
223}
224impl Default for DisplayPropertiesKHR {
225    fn default() -> Self {
226        Self {
227            display: Default::default(),
228            display_name: std::ptr::null(),
229            physical_dimensions: Default::default(),
230            physical_resolution: Default::default(),
231            supported_transforms: Default::default(),
232            plane_reorder_possible: Default::default(),
233            persistent_content: Default::default(),
234        }
235    }
236}
237impl std::fmt::Debug for DisplayPropertiesKHR {
238    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
239        f.debug_struct("DisplayPropertiesKHR")
240            .field("display", &self.display)
241            .field("display_name", &self.display_name)
242            .field("physical_dimensions", &self.physical_dimensions)
243            .field("physical_resolution", &self.physical_resolution)
244            .field("supported_transforms", &self.supported_transforms)
245            .field("plane_reorder_possible", &(self.plane_reorder_possible != 0))
246            .field("persistent_content", &(self.persistent_content != 0))
247            .finish()
248    }
249}
250impl DisplayPropertiesKHR {
251    #[inline]
252    pub fn into_builder<'a>(self) -> DisplayPropertiesKHRBuilder<'a> {
253        DisplayPropertiesKHRBuilder(self, std::marker::PhantomData)
254    }
255}
256#[derive(Copy, Clone)]
257///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayPropertiesKHR.html) · Builder of [`DisplayPropertiesKHR`]
258#[repr(transparent)]
259pub struct DisplayPropertiesKHRBuilder<'a>(
260    DisplayPropertiesKHR,
261    std::marker::PhantomData<&'a ()>,
262);
263impl<'a> DisplayPropertiesKHRBuilder<'a> {
264    #[inline]
265    pub fn new() -> DisplayPropertiesKHRBuilder<'a> {
266        DisplayPropertiesKHRBuilder(Default::default(), std::marker::PhantomData)
267    }
268    #[inline]
269    #[must_use]
270    pub fn display(
271        mut self,
272        display: crate::extensions::khr_display::DisplayKHR,
273    ) -> Self {
274        self.0.display = display as _;
275        self
276    }
277    #[inline]
278    #[must_use]
279    pub fn display_name(mut self, display_name: &'a std::ffi::CStr) -> Self {
280        self.0.display_name = display_name.as_ptr();
281        self
282    }
283    #[inline]
284    #[must_use]
285    pub fn physical_dimensions(
286        mut self,
287        physical_dimensions: crate::vk1_0::Extent2D,
288    ) -> Self {
289        self.0.physical_dimensions = physical_dimensions as _;
290        self
291    }
292    #[inline]
293    #[must_use]
294    pub fn physical_resolution(
295        mut self,
296        physical_resolution: crate::vk1_0::Extent2D,
297    ) -> Self {
298        self.0.physical_resolution = physical_resolution as _;
299        self
300    }
301    #[inline]
302    #[must_use]
303    pub fn supported_transforms(
304        mut self,
305        supported_transforms: crate::extensions::khr_surface::SurfaceTransformFlagsKHR,
306    ) -> Self {
307        self.0.supported_transforms = supported_transforms as _;
308        self
309    }
310    #[inline]
311    #[must_use]
312    pub fn plane_reorder_possible(mut self, plane_reorder_possible: bool) -> Self {
313        self.0.plane_reorder_possible = plane_reorder_possible as _;
314        self
315    }
316    #[inline]
317    #[must_use]
318    pub fn persistent_content(mut self, persistent_content: bool) -> Self {
319        self.0.persistent_content = persistent_content as _;
320        self
321    }
322    #[inline]
323    /// Discards all lifetime information.
324    /// Use the `Deref` and `DerefMut` implementations if possible.
325    pub fn build_dangling(self) -> DisplayPropertiesKHR {
326        self.0
327    }
328}
329impl<'a> std::default::Default for DisplayPropertiesKHRBuilder<'a> {
330    fn default() -> DisplayPropertiesKHRBuilder<'a> {
331        Self::new()
332    }
333}
334impl<'a> std::fmt::Debug for DisplayPropertiesKHRBuilder<'a> {
335    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
336        std::fmt::Debug::fmt(&self.0, f)
337    }
338}
339impl<'a> std::ops::Deref for DisplayPropertiesKHRBuilder<'a> {
340    type Target = DisplayPropertiesKHR;
341    fn deref(&self) -> &Self::Target {
342        &self.0
343    }
344}
345impl<'a> std::ops::DerefMut for DisplayPropertiesKHRBuilder<'a> {
346    fn deref_mut(&mut self) -> &mut Self::Target {
347        &mut self.0
348    }
349}
350///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayPlanePropertiesKHR.html) · Structure
351#[doc(alias = "VkDisplayPlanePropertiesKHR")]
352#[derive(Copy, Clone, Hash, PartialEq, Eq)]
353#[repr(C)]
354pub struct DisplayPlanePropertiesKHR {
355    pub current_display: crate::extensions::khr_display::DisplayKHR,
356    pub current_stack_index: u32,
357}
358impl Default for DisplayPlanePropertiesKHR {
359    fn default() -> Self {
360        Self {
361            current_display: Default::default(),
362            current_stack_index: Default::default(),
363        }
364    }
365}
366impl std::fmt::Debug for DisplayPlanePropertiesKHR {
367    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
368        f.debug_struct("DisplayPlanePropertiesKHR")
369            .field("current_display", &self.current_display)
370            .field("current_stack_index", &self.current_stack_index)
371            .finish()
372    }
373}
374impl DisplayPlanePropertiesKHR {
375    #[inline]
376    pub fn into_builder<'a>(self) -> DisplayPlanePropertiesKHRBuilder<'a> {
377        DisplayPlanePropertiesKHRBuilder(self, std::marker::PhantomData)
378    }
379}
380#[derive(Copy, Clone)]
381///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayPlanePropertiesKHR.html) · Builder of [`DisplayPlanePropertiesKHR`]
382#[repr(transparent)]
383pub struct DisplayPlanePropertiesKHRBuilder<'a>(
384    DisplayPlanePropertiesKHR,
385    std::marker::PhantomData<&'a ()>,
386);
387impl<'a> DisplayPlanePropertiesKHRBuilder<'a> {
388    #[inline]
389    pub fn new() -> DisplayPlanePropertiesKHRBuilder<'a> {
390        DisplayPlanePropertiesKHRBuilder(Default::default(), std::marker::PhantomData)
391    }
392    #[inline]
393    #[must_use]
394    pub fn current_display(
395        mut self,
396        current_display: crate::extensions::khr_display::DisplayKHR,
397    ) -> Self {
398        self.0.current_display = current_display as _;
399        self
400    }
401    #[inline]
402    #[must_use]
403    pub fn current_stack_index(mut self, current_stack_index: u32) -> Self {
404        self.0.current_stack_index = current_stack_index as _;
405        self
406    }
407    #[inline]
408    pub fn build(self) -> DisplayPlanePropertiesKHR {
409        self.0
410    }
411}
412impl<'a> std::default::Default for DisplayPlanePropertiesKHRBuilder<'a> {
413    fn default() -> DisplayPlanePropertiesKHRBuilder<'a> {
414        Self::new()
415    }
416}
417impl<'a> std::fmt::Debug for DisplayPlanePropertiesKHRBuilder<'a> {
418    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
419        std::fmt::Debug::fmt(&self.0, f)
420    }
421}
422impl<'a> std::ops::Deref for DisplayPlanePropertiesKHRBuilder<'a> {
423    type Target = DisplayPlanePropertiesKHR;
424    fn deref(&self) -> &Self::Target {
425        &self.0
426    }
427}
428impl<'a> std::ops::DerefMut for DisplayPlanePropertiesKHRBuilder<'a> {
429    fn deref_mut(&mut self) -> &mut Self::Target {
430        &mut self.0
431    }
432}
433///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayModeParametersKHR.html) · Structure
434#[doc(alias = "VkDisplayModeParametersKHR")]
435#[derive(Copy, Clone, Hash, PartialEq, Eq)]
436#[repr(C)]
437pub struct DisplayModeParametersKHR {
438    pub visible_region: crate::vk1_0::Extent2D,
439    pub refresh_rate: u32,
440}
441impl Default for DisplayModeParametersKHR {
442    fn default() -> Self {
443        Self {
444            visible_region: Default::default(),
445            refresh_rate: Default::default(),
446        }
447    }
448}
449impl std::fmt::Debug for DisplayModeParametersKHR {
450    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
451        f.debug_struct("DisplayModeParametersKHR")
452            .field("visible_region", &self.visible_region)
453            .field("refresh_rate", &self.refresh_rate)
454            .finish()
455    }
456}
457impl DisplayModeParametersKHR {
458    #[inline]
459    pub fn into_builder<'a>(self) -> DisplayModeParametersKHRBuilder<'a> {
460        DisplayModeParametersKHRBuilder(self, std::marker::PhantomData)
461    }
462}
463#[derive(Copy, Clone)]
464///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayModeParametersKHR.html) · Builder of [`DisplayModeParametersKHR`]
465#[repr(transparent)]
466pub struct DisplayModeParametersKHRBuilder<'a>(
467    DisplayModeParametersKHR,
468    std::marker::PhantomData<&'a ()>,
469);
470impl<'a> DisplayModeParametersKHRBuilder<'a> {
471    #[inline]
472    pub fn new() -> DisplayModeParametersKHRBuilder<'a> {
473        DisplayModeParametersKHRBuilder(Default::default(), std::marker::PhantomData)
474    }
475    #[inline]
476    #[must_use]
477    pub fn visible_region(mut self, visible_region: crate::vk1_0::Extent2D) -> Self {
478        self.0.visible_region = visible_region as _;
479        self
480    }
481    #[inline]
482    #[must_use]
483    pub fn refresh_rate(mut self, refresh_rate: u32) -> Self {
484        self.0.refresh_rate = refresh_rate as _;
485        self
486    }
487    #[inline]
488    pub fn build(self) -> DisplayModeParametersKHR {
489        self.0
490    }
491}
492impl<'a> std::default::Default for DisplayModeParametersKHRBuilder<'a> {
493    fn default() -> DisplayModeParametersKHRBuilder<'a> {
494        Self::new()
495    }
496}
497impl<'a> std::fmt::Debug for DisplayModeParametersKHRBuilder<'a> {
498    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
499        std::fmt::Debug::fmt(&self.0, f)
500    }
501}
502impl<'a> std::ops::Deref for DisplayModeParametersKHRBuilder<'a> {
503    type Target = DisplayModeParametersKHR;
504    fn deref(&self) -> &Self::Target {
505        &self.0
506    }
507}
508impl<'a> std::ops::DerefMut for DisplayModeParametersKHRBuilder<'a> {
509    fn deref_mut(&mut self) -> &mut Self::Target {
510        &mut self.0
511    }
512}
513///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayModePropertiesKHR.html) · Structure
514#[doc(alias = "VkDisplayModePropertiesKHR")]
515#[derive(Copy, Clone, Hash, PartialEq, Eq)]
516#[repr(C)]
517pub struct DisplayModePropertiesKHR {
518    pub display_mode: crate::extensions::khr_display::DisplayModeKHR,
519    pub parameters: crate::extensions::khr_display::DisplayModeParametersKHR,
520}
521impl Default for DisplayModePropertiesKHR {
522    fn default() -> Self {
523        Self {
524            display_mode: Default::default(),
525            parameters: Default::default(),
526        }
527    }
528}
529impl std::fmt::Debug for DisplayModePropertiesKHR {
530    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
531        f.debug_struct("DisplayModePropertiesKHR")
532            .field("display_mode", &self.display_mode)
533            .field("parameters", &self.parameters)
534            .finish()
535    }
536}
537impl DisplayModePropertiesKHR {
538    #[inline]
539    pub fn into_builder<'a>(self) -> DisplayModePropertiesKHRBuilder<'a> {
540        DisplayModePropertiesKHRBuilder(self, std::marker::PhantomData)
541    }
542}
543#[derive(Copy, Clone)]
544///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayModePropertiesKHR.html) · Builder of [`DisplayModePropertiesKHR`]
545#[repr(transparent)]
546pub struct DisplayModePropertiesKHRBuilder<'a>(
547    DisplayModePropertiesKHR,
548    std::marker::PhantomData<&'a ()>,
549);
550impl<'a> DisplayModePropertiesKHRBuilder<'a> {
551    #[inline]
552    pub fn new() -> DisplayModePropertiesKHRBuilder<'a> {
553        DisplayModePropertiesKHRBuilder(Default::default(), std::marker::PhantomData)
554    }
555    #[inline]
556    #[must_use]
557    pub fn display_mode(
558        mut self,
559        display_mode: crate::extensions::khr_display::DisplayModeKHR,
560    ) -> Self {
561        self.0.display_mode = display_mode as _;
562        self
563    }
564    #[inline]
565    #[must_use]
566    pub fn parameters(
567        mut self,
568        parameters: crate::extensions::khr_display::DisplayModeParametersKHR,
569    ) -> Self {
570        self.0.parameters = parameters as _;
571        self
572    }
573    #[inline]
574    pub fn build(self) -> DisplayModePropertiesKHR {
575        self.0
576    }
577}
578impl<'a> std::default::Default for DisplayModePropertiesKHRBuilder<'a> {
579    fn default() -> DisplayModePropertiesKHRBuilder<'a> {
580        Self::new()
581    }
582}
583impl<'a> std::fmt::Debug for DisplayModePropertiesKHRBuilder<'a> {
584    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
585        std::fmt::Debug::fmt(&self.0, f)
586    }
587}
588impl<'a> std::ops::Deref for DisplayModePropertiesKHRBuilder<'a> {
589    type Target = DisplayModePropertiesKHR;
590    fn deref(&self) -> &Self::Target {
591        &self.0
592    }
593}
594impl<'a> std::ops::DerefMut for DisplayModePropertiesKHRBuilder<'a> {
595    fn deref_mut(&mut self) -> &mut Self::Target {
596        &mut self.0
597    }
598}
599///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayModeCreateInfoKHR.html) · Structure
600#[doc(alias = "VkDisplayModeCreateInfoKHR")]
601#[derive(Copy, Clone)]
602#[repr(C)]
603pub struct DisplayModeCreateInfoKHR {
604    pub s_type: crate::vk1_0::StructureType,
605    pub p_next: *const std::ffi::c_void,
606    pub flags: crate::extensions::khr_display::DisplayModeCreateFlagsKHR,
607    pub parameters: crate::extensions::khr_display::DisplayModeParametersKHR,
608}
609impl DisplayModeCreateInfoKHR {
610    pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::DISPLAY_MODE_CREATE_INFO_KHR;
611}
612impl Default for DisplayModeCreateInfoKHR {
613    fn default() -> Self {
614        Self {
615            s_type: Self::STRUCTURE_TYPE,
616            p_next: std::ptr::null(),
617            flags: Default::default(),
618            parameters: Default::default(),
619        }
620    }
621}
622impl std::fmt::Debug for DisplayModeCreateInfoKHR {
623    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
624        f.debug_struct("DisplayModeCreateInfoKHR")
625            .field("s_type", &self.s_type)
626            .field("p_next", &self.p_next)
627            .field("flags", &self.flags)
628            .field("parameters", &self.parameters)
629            .finish()
630    }
631}
632impl DisplayModeCreateInfoKHR {
633    #[inline]
634    pub fn into_builder<'a>(self) -> DisplayModeCreateInfoKHRBuilder<'a> {
635        DisplayModeCreateInfoKHRBuilder(self, std::marker::PhantomData)
636    }
637}
638#[derive(Copy, Clone)]
639///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayModeCreateInfoKHR.html) · Builder of [`DisplayModeCreateInfoKHR`]
640#[repr(transparent)]
641pub struct DisplayModeCreateInfoKHRBuilder<'a>(
642    DisplayModeCreateInfoKHR,
643    std::marker::PhantomData<&'a ()>,
644);
645impl<'a> DisplayModeCreateInfoKHRBuilder<'a> {
646    #[inline]
647    pub fn new() -> DisplayModeCreateInfoKHRBuilder<'a> {
648        DisplayModeCreateInfoKHRBuilder(Default::default(), std::marker::PhantomData)
649    }
650    #[inline]
651    #[must_use]
652    pub fn flags(
653        mut self,
654        flags: crate::extensions::khr_display::DisplayModeCreateFlagsKHR,
655    ) -> Self {
656        self.0.flags = flags as _;
657        self
658    }
659    #[inline]
660    #[must_use]
661    pub fn parameters(
662        mut self,
663        parameters: crate::extensions::khr_display::DisplayModeParametersKHR,
664    ) -> Self {
665        self.0.parameters = parameters as _;
666        self
667    }
668    #[inline]
669    /// Discards all lifetime information.
670    /// Use the `Deref` and `DerefMut` implementations if possible.
671    pub fn build_dangling(self) -> DisplayModeCreateInfoKHR {
672        self.0
673    }
674}
675impl<'a> std::default::Default for DisplayModeCreateInfoKHRBuilder<'a> {
676    fn default() -> DisplayModeCreateInfoKHRBuilder<'a> {
677        Self::new()
678    }
679}
680impl<'a> std::fmt::Debug for DisplayModeCreateInfoKHRBuilder<'a> {
681    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
682        std::fmt::Debug::fmt(&self.0, f)
683    }
684}
685impl<'a> std::ops::Deref for DisplayModeCreateInfoKHRBuilder<'a> {
686    type Target = DisplayModeCreateInfoKHR;
687    fn deref(&self) -> &Self::Target {
688        &self.0
689    }
690}
691impl<'a> std::ops::DerefMut for DisplayModeCreateInfoKHRBuilder<'a> {
692    fn deref_mut(&mut self) -> &mut Self::Target {
693        &mut self.0
694    }
695}
696///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayPlaneCapabilitiesKHR.html) · Structure
697#[doc(alias = "VkDisplayPlaneCapabilitiesKHR")]
698#[derive(Copy, Clone, Hash, PartialEq, Eq)]
699#[repr(C)]
700pub struct DisplayPlaneCapabilitiesKHR {
701    pub supported_alpha: crate::extensions::khr_display::DisplayPlaneAlphaFlagsKHR,
702    pub min_src_position: crate::vk1_0::Offset2D,
703    pub max_src_position: crate::vk1_0::Offset2D,
704    pub min_src_extent: crate::vk1_0::Extent2D,
705    pub max_src_extent: crate::vk1_0::Extent2D,
706    pub min_dst_position: crate::vk1_0::Offset2D,
707    pub max_dst_position: crate::vk1_0::Offset2D,
708    pub min_dst_extent: crate::vk1_0::Extent2D,
709    pub max_dst_extent: crate::vk1_0::Extent2D,
710}
711impl Default for DisplayPlaneCapabilitiesKHR {
712    fn default() -> Self {
713        Self {
714            supported_alpha: Default::default(),
715            min_src_position: Default::default(),
716            max_src_position: Default::default(),
717            min_src_extent: Default::default(),
718            max_src_extent: Default::default(),
719            min_dst_position: Default::default(),
720            max_dst_position: Default::default(),
721            min_dst_extent: Default::default(),
722            max_dst_extent: Default::default(),
723        }
724    }
725}
726impl std::fmt::Debug for DisplayPlaneCapabilitiesKHR {
727    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
728        f.debug_struct("DisplayPlaneCapabilitiesKHR")
729            .field("supported_alpha", &self.supported_alpha)
730            .field("min_src_position", &self.min_src_position)
731            .field("max_src_position", &self.max_src_position)
732            .field("min_src_extent", &self.min_src_extent)
733            .field("max_src_extent", &self.max_src_extent)
734            .field("min_dst_position", &self.min_dst_position)
735            .field("max_dst_position", &self.max_dst_position)
736            .field("min_dst_extent", &self.min_dst_extent)
737            .field("max_dst_extent", &self.max_dst_extent)
738            .finish()
739    }
740}
741impl DisplayPlaneCapabilitiesKHR {
742    #[inline]
743    pub fn into_builder<'a>(self) -> DisplayPlaneCapabilitiesKHRBuilder<'a> {
744        DisplayPlaneCapabilitiesKHRBuilder(self, std::marker::PhantomData)
745    }
746}
747#[derive(Copy, Clone)]
748///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplayPlaneCapabilitiesKHR.html) · Builder of [`DisplayPlaneCapabilitiesKHR`]
749#[repr(transparent)]
750pub struct DisplayPlaneCapabilitiesKHRBuilder<'a>(
751    DisplayPlaneCapabilitiesKHR,
752    std::marker::PhantomData<&'a ()>,
753);
754impl<'a> DisplayPlaneCapabilitiesKHRBuilder<'a> {
755    #[inline]
756    pub fn new() -> DisplayPlaneCapabilitiesKHRBuilder<'a> {
757        DisplayPlaneCapabilitiesKHRBuilder(Default::default(), std::marker::PhantomData)
758    }
759    #[inline]
760    #[must_use]
761    pub fn supported_alpha(
762        mut self,
763        supported_alpha: crate::extensions::khr_display::DisplayPlaneAlphaFlagsKHR,
764    ) -> Self {
765        self.0.supported_alpha = supported_alpha as _;
766        self
767    }
768    #[inline]
769    #[must_use]
770    pub fn min_src_position(mut self, min_src_position: crate::vk1_0::Offset2D) -> Self {
771        self.0.min_src_position = min_src_position as _;
772        self
773    }
774    #[inline]
775    #[must_use]
776    pub fn max_src_position(mut self, max_src_position: crate::vk1_0::Offset2D) -> Self {
777        self.0.max_src_position = max_src_position as _;
778        self
779    }
780    #[inline]
781    #[must_use]
782    pub fn min_src_extent(mut self, min_src_extent: crate::vk1_0::Extent2D) -> Self {
783        self.0.min_src_extent = min_src_extent as _;
784        self
785    }
786    #[inline]
787    #[must_use]
788    pub fn max_src_extent(mut self, max_src_extent: crate::vk1_0::Extent2D) -> Self {
789        self.0.max_src_extent = max_src_extent as _;
790        self
791    }
792    #[inline]
793    #[must_use]
794    pub fn min_dst_position(mut self, min_dst_position: crate::vk1_0::Offset2D) -> Self {
795        self.0.min_dst_position = min_dst_position as _;
796        self
797    }
798    #[inline]
799    #[must_use]
800    pub fn max_dst_position(mut self, max_dst_position: crate::vk1_0::Offset2D) -> Self {
801        self.0.max_dst_position = max_dst_position as _;
802        self
803    }
804    #[inline]
805    #[must_use]
806    pub fn min_dst_extent(mut self, min_dst_extent: crate::vk1_0::Extent2D) -> Self {
807        self.0.min_dst_extent = min_dst_extent as _;
808        self
809    }
810    #[inline]
811    #[must_use]
812    pub fn max_dst_extent(mut self, max_dst_extent: crate::vk1_0::Extent2D) -> Self {
813        self.0.max_dst_extent = max_dst_extent as _;
814        self
815    }
816    #[inline]
817    pub fn build(self) -> DisplayPlaneCapabilitiesKHR {
818        self.0
819    }
820}
821impl<'a> std::default::Default for DisplayPlaneCapabilitiesKHRBuilder<'a> {
822    fn default() -> DisplayPlaneCapabilitiesKHRBuilder<'a> {
823        Self::new()
824    }
825}
826impl<'a> std::fmt::Debug for DisplayPlaneCapabilitiesKHRBuilder<'a> {
827    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
828        std::fmt::Debug::fmt(&self.0, f)
829    }
830}
831impl<'a> std::ops::Deref for DisplayPlaneCapabilitiesKHRBuilder<'a> {
832    type Target = DisplayPlaneCapabilitiesKHR;
833    fn deref(&self) -> &Self::Target {
834        &self.0
835    }
836}
837impl<'a> std::ops::DerefMut for DisplayPlaneCapabilitiesKHRBuilder<'a> {
838    fn deref_mut(&mut self) -> &mut Self::Target {
839        &mut self.0
840    }
841}
842///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplaySurfaceCreateInfoKHR.html) · Structure
843#[doc(alias = "VkDisplaySurfaceCreateInfoKHR")]
844#[derive(Copy, Clone)]
845#[repr(C)]
846pub struct DisplaySurfaceCreateInfoKHR {
847    pub s_type: crate::vk1_0::StructureType,
848    pub p_next: *const std::ffi::c_void,
849    pub flags: crate::extensions::khr_display::DisplaySurfaceCreateFlagsKHR,
850    pub display_mode: crate::extensions::khr_display::DisplayModeKHR,
851    pub plane_index: u32,
852    pub plane_stack_index: u32,
853    pub transform: crate::extensions::khr_surface::SurfaceTransformFlagBitsKHR,
854    pub global_alpha: std::os::raw::c_float,
855    pub alpha_mode: crate::extensions::khr_display::DisplayPlaneAlphaFlagBitsKHR,
856    pub image_extent: crate::vk1_0::Extent2D,
857}
858impl DisplaySurfaceCreateInfoKHR {
859    pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::DISPLAY_SURFACE_CREATE_INFO_KHR;
860}
861impl Default for DisplaySurfaceCreateInfoKHR {
862    fn default() -> Self {
863        Self {
864            s_type: Self::STRUCTURE_TYPE,
865            p_next: std::ptr::null(),
866            flags: Default::default(),
867            display_mode: Default::default(),
868            plane_index: Default::default(),
869            plane_stack_index: Default::default(),
870            transform: Default::default(),
871            global_alpha: Default::default(),
872            alpha_mode: Default::default(),
873            image_extent: Default::default(),
874        }
875    }
876}
877impl std::fmt::Debug for DisplaySurfaceCreateInfoKHR {
878    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
879        f.debug_struct("DisplaySurfaceCreateInfoKHR")
880            .field("s_type", &self.s_type)
881            .field("p_next", &self.p_next)
882            .field("flags", &self.flags)
883            .field("display_mode", &self.display_mode)
884            .field("plane_index", &self.plane_index)
885            .field("plane_stack_index", &self.plane_stack_index)
886            .field("transform", &self.transform)
887            .field("global_alpha", &self.global_alpha)
888            .field("alpha_mode", &self.alpha_mode)
889            .field("image_extent", &self.image_extent)
890            .finish()
891    }
892}
893impl DisplaySurfaceCreateInfoKHR {
894    #[inline]
895    pub fn into_builder<'a>(self) -> DisplaySurfaceCreateInfoKHRBuilder<'a> {
896        DisplaySurfaceCreateInfoKHRBuilder(self, std::marker::PhantomData)
897    }
898}
899#[derive(Copy, Clone)]
900///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkDisplaySurfaceCreateInfoKHR.html) · Builder of [`DisplaySurfaceCreateInfoKHR`]
901#[repr(transparent)]
902pub struct DisplaySurfaceCreateInfoKHRBuilder<'a>(
903    DisplaySurfaceCreateInfoKHR,
904    std::marker::PhantomData<&'a ()>,
905);
906impl<'a> DisplaySurfaceCreateInfoKHRBuilder<'a> {
907    #[inline]
908    pub fn new() -> DisplaySurfaceCreateInfoKHRBuilder<'a> {
909        DisplaySurfaceCreateInfoKHRBuilder(Default::default(), std::marker::PhantomData)
910    }
911    #[inline]
912    #[must_use]
913    pub fn flags(
914        mut self,
915        flags: crate::extensions::khr_display::DisplaySurfaceCreateFlagsKHR,
916    ) -> Self {
917        self.0.flags = flags as _;
918        self
919    }
920    #[inline]
921    #[must_use]
922    pub fn display_mode(
923        mut self,
924        display_mode: crate::extensions::khr_display::DisplayModeKHR,
925    ) -> Self {
926        self.0.display_mode = display_mode as _;
927        self
928    }
929    #[inline]
930    #[must_use]
931    pub fn plane_index(mut self, plane_index: u32) -> Self {
932        self.0.plane_index = plane_index as _;
933        self
934    }
935    #[inline]
936    #[must_use]
937    pub fn plane_stack_index(mut self, plane_stack_index: u32) -> Self {
938        self.0.plane_stack_index = plane_stack_index as _;
939        self
940    }
941    #[inline]
942    #[must_use]
943    pub fn transform(
944        mut self,
945        transform: crate::extensions::khr_surface::SurfaceTransformFlagBitsKHR,
946    ) -> Self {
947        self.0.transform = transform as _;
948        self
949    }
950    #[inline]
951    #[must_use]
952    pub fn global_alpha(mut self, global_alpha: std::os::raw::c_float) -> Self {
953        self.0.global_alpha = global_alpha as _;
954        self
955    }
956    #[inline]
957    #[must_use]
958    pub fn alpha_mode(
959        mut self,
960        alpha_mode: crate::extensions::khr_display::DisplayPlaneAlphaFlagBitsKHR,
961    ) -> Self {
962        self.0.alpha_mode = alpha_mode as _;
963        self
964    }
965    #[inline]
966    #[must_use]
967    pub fn image_extent(mut self, image_extent: crate::vk1_0::Extent2D) -> Self {
968        self.0.image_extent = image_extent as _;
969        self
970    }
971    #[inline]
972    /// Discards all lifetime information.
973    /// Use the `Deref` and `DerefMut` implementations if possible.
974    pub fn build_dangling(self) -> DisplaySurfaceCreateInfoKHR {
975        self.0
976    }
977}
978impl<'a> std::default::Default for DisplaySurfaceCreateInfoKHRBuilder<'a> {
979    fn default() -> DisplaySurfaceCreateInfoKHRBuilder<'a> {
980        Self::new()
981    }
982}
983impl<'a> std::fmt::Debug for DisplaySurfaceCreateInfoKHRBuilder<'a> {
984    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
985        std::fmt::Debug::fmt(&self.0, f)
986    }
987}
988impl<'a> std::ops::Deref for DisplaySurfaceCreateInfoKHRBuilder<'a> {
989    type Target = DisplaySurfaceCreateInfoKHR;
990    fn deref(&self) -> &Self::Target {
991        &self.0
992    }
993}
994impl<'a> std::ops::DerefMut for DisplaySurfaceCreateInfoKHRBuilder<'a> {
995    fn deref_mut(&mut self) -> &mut Self::Target {
996        &mut self.0
997    }
998}
999///Provided by [`crate::extensions::khr_display`]
1000impl crate::InstanceLoader {
1001    #[inline]
1002    #[track_caller]
1003    ///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceDisplayPropertiesKHR.html) · Function
1004    #[doc(alias = "vkGetPhysicalDeviceDisplayPropertiesKHR")]
1005    pub unsafe fn get_physical_device_display_properties_khr(
1006        &self,
1007        physical_device: crate::vk1_0::PhysicalDevice,
1008        property_count: Option<u32>,
1009    ) -> crate::utils::VulkanResult<
1010            crate::SmallVec<crate::extensions::khr_display::DisplayPropertiesKHR>,
1011        > {
1012        let _function = self
1013            .get_physical_device_display_properties_khr
1014            .expect(crate::NOT_LOADED_MESSAGE);
1015        let mut property_count = match property_count {
1016            Some(v) => v,
1017            None => {
1018                let mut v = Default::default();
1019                _function(physical_device as _, &mut v, std::ptr::null_mut());
1020                v
1021            }
1022        };
1023        let mut properties = crate::SmallVec::from_elem(
1024            Default::default(),
1025            property_count as _,
1026        );
1027        let _return = _function(
1028            physical_device as _,
1029            &mut property_count,
1030            properties.as_mut_ptr(),
1031        );
1032        crate::utils::VulkanResult::new(_return, properties)
1033    }
1034    #[inline]
1035    #[track_caller]
1036    ///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceDisplayPlanePropertiesKHR.html) · Function
1037    #[doc(alias = "vkGetPhysicalDeviceDisplayPlanePropertiesKHR")]
1038    pub unsafe fn get_physical_device_display_plane_properties_khr(
1039        &self,
1040        physical_device: crate::vk1_0::PhysicalDevice,
1041        property_count: Option<u32>,
1042    ) -> crate::utils::VulkanResult<
1043            crate::SmallVec<crate::extensions::khr_display::DisplayPlanePropertiesKHR>,
1044        > {
1045        let _function = self
1046            .get_physical_device_display_plane_properties_khr
1047            .expect(crate::NOT_LOADED_MESSAGE);
1048        let mut property_count = match property_count {
1049            Some(v) => v,
1050            None => {
1051                let mut v = Default::default();
1052                _function(physical_device as _, &mut v, std::ptr::null_mut());
1053                v
1054            }
1055        };
1056        let mut properties = crate::SmallVec::from_elem(
1057            Default::default(),
1058            property_count as _,
1059        );
1060        let _return = _function(
1061            physical_device as _,
1062            &mut property_count,
1063            properties.as_mut_ptr(),
1064        );
1065        crate::utils::VulkanResult::new(_return, properties)
1066    }
1067    #[inline]
1068    #[track_caller]
1069    ///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetDisplayPlaneSupportedDisplaysKHR.html) · Function
1070    #[doc(alias = "vkGetDisplayPlaneSupportedDisplaysKHR")]
1071    pub unsafe fn get_display_plane_supported_displays_khr(
1072        &self,
1073        physical_device: crate::vk1_0::PhysicalDevice,
1074        plane_index: u32,
1075        display_count: Option<u32>,
1076    ) -> crate::utils::VulkanResult<
1077            crate::SmallVec<crate::extensions::khr_display::DisplayKHR>,
1078        > {
1079        let _function = self
1080            .get_display_plane_supported_displays_khr
1081            .expect(crate::NOT_LOADED_MESSAGE);
1082        let mut display_count = match display_count {
1083            Some(v) => v,
1084            None => {
1085                let mut v = Default::default();
1086                _function(
1087                    physical_device as _,
1088                    plane_index as _,
1089                    &mut v,
1090                    std::ptr::null_mut(),
1091                );
1092                v
1093            }
1094        };
1095        let mut displays = crate::SmallVec::from_elem(
1096            Default::default(),
1097            display_count as _,
1098        );
1099        let _return = _function(
1100            physical_device as _,
1101            plane_index as _,
1102            &mut display_count,
1103            displays.as_mut_ptr(),
1104        );
1105        crate::utils::VulkanResult::new(_return, displays)
1106    }
1107    #[inline]
1108    #[track_caller]
1109    ///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetDisplayModePropertiesKHR.html) · Function
1110    #[doc(alias = "vkGetDisplayModePropertiesKHR")]
1111    pub unsafe fn get_display_mode_properties_khr(
1112        &self,
1113        physical_device: crate::vk1_0::PhysicalDevice,
1114        display: crate::extensions::khr_display::DisplayKHR,
1115        property_count: Option<u32>,
1116    ) -> crate::utils::VulkanResult<
1117            crate::SmallVec<crate::extensions::khr_display::DisplayModePropertiesKHR>,
1118        > {
1119        let _function = self
1120            .get_display_mode_properties_khr
1121            .expect(crate::NOT_LOADED_MESSAGE);
1122        let mut property_count = match property_count {
1123            Some(v) => v,
1124            None => {
1125                let mut v = Default::default();
1126                _function(
1127                    physical_device as _,
1128                    display as _,
1129                    &mut v,
1130                    std::ptr::null_mut(),
1131                );
1132                v
1133            }
1134        };
1135        let mut properties = crate::SmallVec::from_elem(
1136            Default::default(),
1137            property_count as _,
1138        );
1139        let _return = _function(
1140            physical_device as _,
1141            display as _,
1142            &mut property_count,
1143            properties.as_mut_ptr(),
1144        );
1145        crate::utils::VulkanResult::new(_return, properties)
1146    }
1147    #[inline]
1148    #[track_caller]
1149    ///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateDisplayModeKHR.html) · Function
1150    #[doc(alias = "vkCreateDisplayModeKHR")]
1151    pub unsafe fn create_display_mode_khr(
1152        &self,
1153        physical_device: crate::vk1_0::PhysicalDevice,
1154        display: crate::extensions::khr_display::DisplayKHR,
1155        create_info: &crate::extensions::khr_display::DisplayModeCreateInfoKHR,
1156        allocator: Option<&crate::vk1_0::AllocationCallbacks>,
1157    ) -> crate::utils::VulkanResult<crate::extensions::khr_display::DisplayModeKHR> {
1158        let _function = self.create_display_mode_khr.expect(crate::NOT_LOADED_MESSAGE);
1159        let mut mode = Default::default();
1160        let _return = _function(
1161            physical_device as _,
1162            display as _,
1163            create_info as _,
1164            match allocator {
1165                Some(v) => v,
1166                None => std::ptr::null(),
1167            },
1168            &mut mode,
1169        );
1170        crate::utils::VulkanResult::new(_return, mode)
1171    }
1172    #[inline]
1173    #[track_caller]
1174    ///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetDisplayPlaneCapabilitiesKHR.html) · Function
1175    #[doc(alias = "vkGetDisplayPlaneCapabilitiesKHR")]
1176    pub unsafe fn get_display_plane_capabilities_khr(
1177        &self,
1178        physical_device: crate::vk1_0::PhysicalDevice,
1179        mode: crate::extensions::khr_display::DisplayModeKHR,
1180        plane_index: u32,
1181    ) -> crate::utils::VulkanResult<
1182            crate::extensions::khr_display::DisplayPlaneCapabilitiesKHR,
1183        > {
1184        let _function = self
1185            .get_display_plane_capabilities_khr
1186            .expect(crate::NOT_LOADED_MESSAGE);
1187        let mut capabilities = Default::default();
1188        let _return = _function(
1189            physical_device as _,
1190            mode as _,
1191            plane_index as _,
1192            &mut capabilities,
1193        );
1194        crate::utils::VulkanResult::new(_return, capabilities)
1195    }
1196    #[inline]
1197    #[track_caller]
1198    ///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCreateDisplayPlaneSurfaceKHR.html) · Function
1199    #[doc(alias = "vkCreateDisplayPlaneSurfaceKHR")]
1200    pub unsafe fn create_display_plane_surface_khr(
1201        &self,
1202        create_info: &crate::extensions::khr_display::DisplaySurfaceCreateInfoKHR,
1203        allocator: Option<&crate::vk1_0::AllocationCallbacks>,
1204    ) -> crate::utils::VulkanResult<crate::extensions::khr_surface::SurfaceKHR> {
1205        let _function = self
1206            .create_display_plane_surface_khr
1207            .expect(crate::NOT_LOADED_MESSAGE);
1208        let mut surface = Default::default();
1209        let _return = _function(
1210            self.handle,
1211            create_info as _,
1212            match allocator {
1213                Some(v) => v,
1214                None => std::ptr::null(),
1215            },
1216            &mut surface,
1217        );
1218        crate::utils::VulkanResult::new(_return, surface)
1219    }
1220}