• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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