blob: 0379c3fb7c9795882258bf49a3c7eda7a7f5702b [file] [log] [blame]
/// Check the `util` module to see how the `Card` structure is implemented.
pub mod utils;
use crate::utils::*;
pub fn main() {
let card = Card::open_global();
// Enable all possible client capabilities
for &cap in capabilities::CLIENT_CAP_ENUMS {
if let Err(e) = card.set_client_capability(cap, true) {
eprintln!("Unable to activate capability {:?}: {}", cap, e);
return;
}
}
let resources = card.resource_handles().unwrap();
let plane_res = card.plane_handles().unwrap();
// Print out all card resource handles
println!("Connectors:\t{:?}", resources.connectors());
println!("Encoders:\t{:?}", resources.encoders());
println!("CRTCs:\t\t{:?}", resources.crtcs());
println!("Framebuffers:\t{:?}", resources.framebuffers());
println!("Planes:\t\t{:?}", plane_res);
for &handle in resources.connectors() {
let info = card.get_connector(handle, false).unwrap();
println!("Connector: {:?}", handle);
println!("\t{:?}-{}", info.interface(), info.interface_id());
println!("\t{:?}", info.state());
println!("\t{:?}", info.size());
println!("\t{:?}", info.encoders());
println!("\t{:?}", info.current_encoder());
for mode in card.get_modes(handle).unwrap() {
println!("{:?}", mode);
}
}
println!("\n");
for &handle in resources.encoders() {
let info = card.get_encoder(handle).unwrap();
println!("Encoder: {:?}", handle);
println!("\t{:?}", info.kind());
println!("\t{:?}", info.crtc());
}
println!("\n");
for &handle in resources.crtcs() {
let info = card.get_crtc(handle).unwrap();
println!("CRTC: {:?}", handle);
println!("\tPosition: {:?}", info.position());
println!("\tMode: {:?}", info.mode());
println!("\tFramebuffer: {:?}", info.framebuffer());
println!("\tGamma Length: {:?}", info.gamma_length());
}
println!("\n");
for &handle in resources.framebuffers() {
let info = card.get_framebuffer(handle).unwrap();
println!("Framebuffer: {:?}", handle);
println!("\tSize: {:?}", info.size());
println!("\tPitch: {:?}", info.pitch());
println!("\tBPP: {:?}", info.bpp());
println!("\tDepth: {:?}", info.depth());
}
println!("\n");
for handle in plane_res {
let info = card.get_plane(handle).unwrap();
println!("Plane: {:?}", handle);
println!("\tCRTC: {:?}", info.crtc());
println!("\tFramebuffer: {:?}", info.framebuffer());
println!("\tFormats: {:?}", info.formats());
}
}