jay_ash/extensions/khr/
display.rs1use crate::RawPtr;
4use crate::prelude::*;
5use crate::vk;
6use alloc::vec::Vec;
7use core::mem;
8
9impl crate::khr::display::Instance {
10 #[inline]
12 pub unsafe fn get_physical_device_display_properties(
13 &self,
14 physical_device: vk::PhysicalDevice,
15 ) -> VkResult<Vec<vk::DisplayPropertiesKHR<'_>>> {
16 unsafe {
17 read_into_uninitialized_vector(|count, data| {
18 (self.fp.get_physical_device_display_properties_khr)(physical_device, count, data)
19 })
20 }
21 }
22
23 #[inline]
25 pub unsafe fn get_physical_device_display_plane_properties(
26 &self,
27 physical_device: vk::PhysicalDevice,
28 ) -> VkResult<Vec<vk::DisplayPlanePropertiesKHR>> {
29 unsafe {
30 read_into_uninitialized_vector(|count, data| {
31 (self.fp.get_physical_device_display_plane_properties_khr)(
32 physical_device,
33 count,
34 data,
35 )
36 })
37 }
38 }
39
40 #[inline]
42 pub unsafe fn get_display_plane_supported_displays(
43 &self,
44 physical_device: vk::PhysicalDevice,
45 plane_index: u32,
46 ) -> VkResult<Vec<vk::DisplayKHR>> {
47 unsafe {
48 read_into_uninitialized_vector(|count, data| {
49 (self.fp.get_display_plane_supported_displays_khr)(
50 physical_device,
51 plane_index,
52 count,
53 data,
54 )
55 })
56 }
57 }
58
59 #[inline]
61 pub unsafe fn get_display_mode_properties(
62 &self,
63 physical_device: vk::PhysicalDevice,
64 display: vk::DisplayKHR,
65 ) -> VkResult<Vec<vk::DisplayModePropertiesKHR>> {
66 unsafe {
67 read_into_uninitialized_vector(|count, data| {
68 (self.fp.get_display_mode_properties_khr)(physical_device, display, count, data)
69 })
70 }
71 }
72
73 #[inline]
75 pub unsafe fn create_display_mode(
76 &self,
77 physical_device: vk::PhysicalDevice,
78 display: vk::DisplayKHR,
79 create_info: &vk::DisplayModeCreateInfoKHR<'_>,
80 allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>,
81 ) -> VkResult<vk::DisplayModeKHR> {
82 unsafe {
83 let mut display_mode = mem::MaybeUninit::uninit();
84 (self.fp.create_display_mode_khr)(
85 physical_device,
86 display,
87 create_info,
88 allocation_callbacks.as_raw_ptr(),
89 display_mode.as_mut_ptr(),
90 )
91 .assume_init_on_success(display_mode)
92 }
93 }
94
95 #[inline]
97 pub unsafe fn get_display_plane_capabilities(
98 &self,
99 physical_device: vk::PhysicalDevice,
100 mode: vk::DisplayModeKHR,
101 plane_index: u32,
102 ) -> VkResult<vk::DisplayPlaneCapabilitiesKHR> {
103 unsafe {
104 let mut display_plane_capabilities = mem::MaybeUninit::uninit();
105 (self.fp.get_display_plane_capabilities_khr)(
106 physical_device,
107 mode,
108 plane_index,
109 display_plane_capabilities.as_mut_ptr(),
110 )
111 .assume_init_on_success(display_plane_capabilities)
112 }
113 }
114
115 #[inline]
117 pub unsafe fn create_display_plane_surface(
118 &self,
119 create_info: &vk::DisplaySurfaceCreateInfoKHR<'_>,
120 allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>,
121 ) -> VkResult<vk::SurfaceKHR> {
122 unsafe {
123 let mut surface = mem::MaybeUninit::uninit();
124 (self.fp.create_display_plane_surface_khr)(
125 self.handle,
126 create_info,
127 allocation_callbacks.as_raw_ptr(),
128 surface.as_mut_ptr(),
129 )
130 .assume_init_on_success(surface)
131 }
132 }
133}