dc97703f2d5e18c2845adab9812b820f2ace6748
1 #pragma once
3 #include <cstdint>
4 #include <vector>
5 #include <map>
7 #include "decls.h"
8 #include "pipeline.h"
10 namespace kms
11 {
12 class Card
13 {
14 public:
15 Card();
16 ~Card();
18 Card(const Card& other) = delete;
19 Card& operator=(const Card& other) = delete;
21 int fd() const { return m_fd; }
23 Connector* get_first_connected_connector() const;
25 DrmObject* get_object(uint32_t id) const;
26 Connector* get_connector(uint32_t id) const;
27 Crtc* get_crtc(uint32_t id) const;
28 Crtc* get_crtc_by_index(uint32_t idx) const;
29 Encoder* get_encoder(uint32_t id) const;
30 Property* get_prop(uint32_t id) const;
31 Property* get_prop(const std::string& name) const;
33 bool master() const { return m_master; }
34 bool has_atomic() const { return m_has_atomic; }
35 bool has_has_universal_planes() const { return m_has_universal_planes; }
37 void print_short() const;
39 std::vector<Connector*> get_connectors() const;
40 std::vector<Crtc*> get_crtcs() const;
41 std::vector<DrmObject*> get_objects() const;
42 std::vector<Plane*> get_planes() const;
44 std::vector<Pipeline> get_connected_pipelines();
46 void call_page_flip_handlers();
48 private:
49 void restore_modes();
51 std::map<uint32_t, DrmObject*> m_obmap;
53 int m_fd;
54 bool m_master;
56 bool m_has_atomic;
57 bool m_has_universal_planes;
58 };
59 }