Struct libdrm_amdgpu_sys::drmModeRes
source · pub struct drmModeRes(/* private fields */);
Implementations§
source§impl drmModeRes
impl drmModeRes
sourcepub fn get(fd: i32) -> Option<Self>
pub fn get(fd: i32) -> Option<Self>
Examples found in repository?
examples/drm_mode.rs (line 13)
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
fn main() {
let fd = {
use std::os::fd::IntoRawFd;
let f = File::open("/dev/dri/card0").unwrap();
f.into_raw_fd()
};
let drm_mode_res = drmModeRes::get(fd).unwrap();
let current_connectors = drm_mode_res.get_all_connector_current(fd);
for connector in current_connectors.iter() {
println!(
"Connector {} ({}-{}), {}",
connector.connector_id(),
connector.connector_type(),
connector.connector_type_id(),
connector.connection(),
);
let modes = connector.get_modes();
if !modes.is_empty() {
println!(" Modes");
for mode in connector.get_modes() {
println!(
" {}x{}@{:.2}{}{}",
mode.vdisplay,
mode.hdisplay,
mode.refresh_rate(),
if mode.type_is_preferred() { " preferred" } else { "" },
if mode.type_is_driver() { " driver" } else { "" },
);
}
}
if let Some(conn_prop) = connector.get_connector_props(fd) {
let mode_props = conn_prop.get_mode_property(fd);
for (prop, value) in mode_props {
let type_ = prop.property_type();
println!(
" {:?}, id: {}, value: {}, type: {}",
prop.name(),
prop.prop_id(),
value,
type_,
);
match type_ {
drmModePropType::RANGE =>
println!(" values: {:?}", prop.values()),
drmModePropType::ENUM => {
print!(" enums: [");
for enum_ in prop.enums().iter() {
print!("{:?}={}, ", enum_.name(), enum_.value);
}
println!("] ");
},
drmModePropType::BLOB => {
if let Some(b) = drmModePropertyBlob::get(fd, value as u32) {
print!(" blob:");
for (i, byte) in b.data().iter().enumerate() {
if (i % 16) == 0 { print!("\n "); }
print!("{byte:02x}");
}
println!();
}
},
_ => {},
}
}
}
println!();
}
}
sourcepub fn get_all_connector_current(&self, fd: i32) -> Vec<drmModeConnector>
pub fn get_all_connector_current(&self, fd: i32) -> Vec<drmModeConnector>
Examples found in repository?
examples/drm_mode.rs (line 14)
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
fn main() {
let fd = {
use std::os::fd::IntoRawFd;
let f = File::open("/dev/dri/card0").unwrap();
f.into_raw_fd()
};
let drm_mode_res = drmModeRes::get(fd).unwrap();
let current_connectors = drm_mode_res.get_all_connector_current(fd);
for connector in current_connectors.iter() {
println!(
"Connector {} ({}-{}), {}",
connector.connector_id(),
connector.connector_type(),
connector.connector_type_id(),
connector.connection(),
);
let modes = connector.get_modes();
if !modes.is_empty() {
println!(" Modes");
for mode in connector.get_modes() {
println!(
" {}x{}@{:.2}{}{}",
mode.vdisplay,
mode.hdisplay,
mode.refresh_rate(),
if mode.type_is_preferred() { " preferred" } else { "" },
if mode.type_is_driver() { " driver" } else { "" },
);
}
}
if let Some(conn_prop) = connector.get_connector_props(fd) {
let mode_props = conn_prop.get_mode_property(fd);
for (prop, value) in mode_props {
let type_ = prop.property_type();
println!(
" {:?}, id: {}, value: {}, type: {}",
prop.name(),
prop.prop_id(),
value,
type_,
);
match type_ {
drmModePropType::RANGE =>
println!(" values: {:?}", prop.values()),
drmModePropType::ENUM => {
print!(" enums: [");
for enum_ in prop.enums().iter() {
print!("{:?}={}, ", enum_.name(), enum_.value);
}
println!("] ");
},
drmModePropType::BLOB => {
if let Some(b) = drmModePropertyBlob::get(fd, value as u32) {
print!(" blob:");
for (i, byte) in b.data().iter().enumerate() {
if (i % 16) == 0 { print!("\n "); }
print!("{byte:02x}");
}
println!();
}
},
_ => {},
}
}
}
println!();
}
}
pub fn get_all_connector(&self, fd: i32) -> Vec<drmModeConnector>
Trait Implementations§
source§impl Clone for drmModeRes
impl Clone for drmModeRes
source§fn clone(&self) -> drmModeRes
fn clone(&self) -> drmModeRes
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for drmModeRes
impl Debug for drmModeRes
Auto Trait Implementations§
impl Freeze for drmModeRes
impl RefUnwindSafe for drmModeRes
impl !Send for drmModeRes
impl !Sync for drmModeRes
impl Unpin for drmModeRes
impl UnwindSafe for drmModeRes
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more