pub struct drmModeObjectProperties(/* private fields */);Implementations§
Source§impl drmModeObjectProperties
impl drmModeObjectProperties
pub fn get(fd: i32, object_id: u32, object_type: u32) -> Option<Self>
pub fn set( fd: i32, object_id: u32, object_type: u32, property_id: u32, value: u64, ) -> Result<(), i32>
Sourcepub fn get_mode_property(&self, fd: i32) -> Vec<(drmModeProperty, u64)>
pub fn get_mode_property(&self, fd: i32) -> Vec<(drmModeProperty, u64)>
Examples found in repository?
examples/drm_mode.rs (line 43)
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()
};
libdrm_amdgpu_sys::set_all_client_caps(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!();
}
}Trait Implementations§
Source§impl Clone for drmModeObjectProperties
impl Clone for drmModeObjectProperties
Source§fn clone(&self) -> drmModeObjectProperties
fn clone(&self) -> drmModeObjectProperties
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 drmModeObjectProperties
impl Debug for drmModeObjectProperties
Auto Trait Implementations§
impl Freeze for drmModeObjectProperties
impl RefUnwindSafe for drmModeObjectProperties
impl !Send for drmModeObjectProperties
impl !Sync for drmModeObjectProperties
impl Unpin for drmModeObjectProperties
impl UnwindSafe for drmModeObjectProperties
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