diff options
Diffstat (limited to 'drm/DrmDevice.h')
-rw-r--r-- | drm/DrmDevice.h | 68 |
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 |