1 /// Check the `util` module to see how the `Card` structure is implemented. 2 pub mod utils; 3 use crate::utils::*; 4 main()5 pub fn main() { 6 let card = Card::open_global(); 7 8 // Enable all possible client capabilities 9 for &cap in capabilities::CLIENT_CAP_ENUMS { 10 if let Err(e) = card.set_client_capability(cap, true) { 11 eprintln!("Unable to activate capability {:?}: {}", cap, e); 12 return; 13 } 14 } 15 16 let resources = card.resource_handles().unwrap(); 17 let plane_res = card.plane_handles().unwrap(); 18 19 // Print out all card resource handles 20 println!("Connectors:\t{:?}", resources.connectors()); 21 println!("Encoders:\t{:?}", resources.encoders()); 22 println!("CRTCs:\t\t{:?}", resources.crtcs()); 23 println!("Framebuffers:\t{:?}", resources.framebuffers()); 24 println!("Planes:\t\t{:?}", plane_res); 25 26 for &handle in resources.connectors() { 27 let info = card.get_connector(handle, false).unwrap(); 28 println!("Connector: {:?}", handle); 29 println!("\t{:?}-{}", info.interface(), info.interface_id()); 30 println!("\t{:?}", info.state()); 31 println!("\t{:?}", info.size()); 32 println!("\t{:?}", info.encoders()); 33 println!("\t{:?}", info.current_encoder()); 34 35 for mode in card.get_modes(handle).unwrap() { 36 println!("{:?}", mode); 37 } 38 } 39 println!("\n"); 40 41 for &handle in resources.encoders() { 42 let info = card.get_encoder(handle).unwrap(); 43 println!("Encoder: {:?}", handle); 44 println!("\t{:?}", info.kind()); 45 println!("\t{:?}", info.crtc()); 46 } 47 println!("\n"); 48 49 for &handle in resources.crtcs() { 50 let info = card.get_crtc(handle).unwrap(); 51 println!("CRTC: {:?}", handle); 52 println!("\tPosition: {:?}", info.position()); 53 println!("\tMode: {:?}", info.mode()); 54 println!("\tFramebuffer: {:?}", info.framebuffer()); 55 println!("\tGamma Length: {:?}", info.gamma_length()); 56 } 57 println!("\n"); 58 59 for &handle in resources.framebuffers() { 60 let info = card.get_framebuffer(handle).unwrap(); 61 println!("Framebuffer: {:?}", handle); 62 println!("\tSize: {:?}", info.size()); 63 println!("\tPitch: {:?}", info.pitch()); 64 println!("\tBPP: {:?}", info.bpp()); 65 println!("\tDepth: {:?}", info.depth()); 66 } 67 68 println!("\n"); 69 70 for handle in plane_res { 71 let info = card.get_plane(handle).unwrap(); 72 println!("Plane: {:?}", handle); 73 println!("\tCRTC: {:?}", info.crtc()); 74 println!("\tFramebuffer: {:?}", info.framebuffer()); 75 println!("\tFormats: {:?}", info.formats()); 76 } 77 } 78