aboutsummaryrefslogtreecommitdiff
path: root/drm/DrmDevice.h
diff options
context:
space:
mode:
Diffstat (limited to 'drm/DrmDevice.h')
-rw-r--r--drm/DrmDevice.h68
1 files changed, 32 insertions, 36 deletions
diff --git a/drm/DrmDevice.h b/drm/DrmDevice.h
index 9983d61..f2530ee 100644
--- a/drm/DrmDevice.h
+++ b/drm/DrmDevice.h
@@ -37,66 +37,65 @@ class DrmDevice {
DrmDevice();
~DrmDevice() = default;
- std::tuple<int, int> Init(const char *path, int num_displays);
+ auto Init(const char *path) -> int;
- int fd() const {
+ auto GetFd() const {
return fd_.Get();
}
- const std::vector<std::unique_ptr<DrmConnector>> &connectors() const {
- return connectors_;
- }
-
- const std::vector<std::unique_ptr<DrmPlane>> &planes() const {
- return planes_;
- }
+ auto GetConnectors() -> const std::vector<std::unique_ptr<DrmConnector>> &;
+ auto GetPlanes() -> const std::vector<std::unique_ptr<DrmPlane>> &;
+ auto GetCrtcs() -> const std::vector<std::unique_ptr<DrmCrtc>> &;
+ auto GetEncoders() -> const std::vector<std::unique_ptr<DrmEncoder>> &;
- std::pair<uint32_t, uint32_t> min_resolution() const {
+ auto GetMinResolution() const {
return min_resolution_;
}
- std::pair<uint32_t, uint32_t> max_resolution() const {
+ auto GetMaxResolution() const {
return max_resolution_;
}
- DrmConnector *GetConnectorForDisplay(int display) const;
- DrmCrtc *GetCrtcForDisplay(int display) const;
-
- int GetCrtcProperty(const DrmCrtc &crtc, const char *prop_name,
- DrmProperty *property) const;
- int GetConnectorProperty(const DrmConnector &connector, const char *prop_name,
- DrmProperty *property) const;
-
std::string GetName() const;
- const std::vector<std::unique_ptr<DrmCrtc>> &crtcs() const;
- uint32_t next_mode_id();
-
auto RegisterUserPropertyBlob(void *data, size_t length) const
-> DrmModeUserPropertyBlobUnique;
- bool HandlesDisplay(int display) const;
-
- bool HasAddFb2ModifiersSupport() const {
+ auto HasAddFb2ModifiersSupport() const {
return HasAddFb2ModifiersSupport_;
}
- DrmFbImporter &GetDrmFbImporter() {
- return *mDrmFbImporter;
+ auto &GetDrmFbImporter() {
+ return *drm_fb_importer_;
}
static auto IsKMSDev(const char *path) -> bool;
+ auto FindCrtcById(uint32_t id) const -> DrmCrtc * {
+ for (const auto &crtc : crtcs_) {
+ if (crtc->GetId() == id) {
+ return crtc.get();
+ }
+ };
+
+ return nullptr;
+ }
+
+ auto FindEncoderById(uint32_t id) const -> DrmEncoder * {
+ for (const auto &enc : encoders_) {
+ if (enc->GetId() == id) {
+ return enc.get();
+ }
+ };
+
+ return nullptr;
+ }
+
int GetProperty(uint32_t obj_id, uint32_t obj_type, const char *prop_name,
DrmProperty *property) const;
private:
- int TryEncoderForDisplay(int display, DrmEncoder *enc);
-
- int CreateDisplayPipe(DrmConnector *connector);
-
UniqueFd fd_;
- uint32_t mode_id_ = 0;
std::vector<std::unique_ptr<DrmConnector>> connectors_;
std::vector<std::unique_ptr<DrmConnector>> writeback_connectors_;
@@ -106,13 +105,10 @@ class DrmDevice {
std::pair<uint32_t, uint32_t> min_resolution_;
std::pair<uint32_t, uint32_t> max_resolution_;
- std::map<int, int> displays_;
bool HasAddFb2ModifiersSupport_{};
- std::shared_ptr<DrmDevice> self;
-
- std::unique_ptr<DrmFbImporter> mDrmFbImporter;
+ std::unique_ptr<DrmFbImporter> drm_fb_importer_;
};
} // namespace android