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