1 2 3 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
|
/// 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());
}
}
|