diff options
author | Roman Stratiienko <roman.o.stratiienko@globallogic.com> | 2021-10-22 18:13:09 +0300 |
---|---|---|
committer | Roman Stratiienko <roman.o.stratiienko@globallogic.com> | 2021-10-23 20:13:05 +0300 |
commit | 40b374b1400d668c9975c5c3d239d54c84429dc6 (patch) | |
tree | 4ea560be6d866a64811e9982f3af456c5692b1ba /drm | |
parent | 13f61b8bedf0922db0f4c98d71e5e8f7f68bc5aa (diff) | |
download | drm_hwcomposer-40b374b1400d668c9975c5c3d239d54c84429dc6.tar.gz |
drm_hwcomposer: Move CreateModeBlob to DrmMode class
CreateModeBlob doesn't architecturally belongs to DrmDisplayCompositor.
+ align DrmMode internal types with libdrm types to avoid compilation errors.
Signed-off-by: Roman Stratiienko <roman.o.stratiienko@globallogic.com>
Diffstat (limited to 'drm')
-rw-r--r-- | drm/DrmMode.cpp | 63 | ||||
-rw-r--r-- | drm/DrmMode.h | 53 |
2 files changed, 64 insertions, 52 deletions
diff --git a/drm/DrmMode.cpp b/drm/DrmMode.cpp index c714458..971c327 100644 --- a/drm/DrmMode.cpp +++ b/drm/DrmMode.cpp @@ -49,24 +49,6 @@ bool DrmMode::operator==(const drmModeModeInfo &m) const { v_scan_ == m.vscan && flags_ == m.flags && type_ == m.type; } -void DrmMode::ToDrmModeModeInfo(drm_mode_modeinfo *m) const { - m->clock = clock_; - m->hdisplay = h_display_; - m->hsync_start = h_sync_start_; - m->hsync_end = h_sync_end_; - m->htotal = h_total_; - m->hskew = h_skew_; - m->vdisplay = v_display_; - m->vsync_start = v_sync_start_; - m->vsync_end = v_sync_end_; - m->vtotal = v_total_; - m->vscan = v_scan_; - m->vrefresh = v_refresh_; - m->flags = flags_; - m->type = type_; - strncpy(m->name, name_.c_str(), DRM_DISPLAY_MODE_LEN); -} - uint32_t DrmMode::id() const { return id_; } @@ -79,43 +61,43 @@ uint32_t DrmMode::clock() const { return clock_; } -uint32_t DrmMode::h_display() const { +uint16_t DrmMode::h_display() const { return h_display_; } -uint32_t DrmMode::h_sync_start() const { +uint16_t DrmMode::h_sync_start() const { return h_sync_start_; } -uint32_t DrmMode::h_sync_end() const { +uint16_t DrmMode::h_sync_end() const { return h_sync_end_; } -uint32_t DrmMode::h_total() const { +uint16_t DrmMode::h_total() const { return h_total_; } -uint32_t DrmMode::h_skew() const { +uint16_t DrmMode::h_skew() const { return h_skew_; } -uint32_t DrmMode::v_display() const { +uint16_t DrmMode::v_display() const { return v_display_; } -uint32_t DrmMode::v_sync_start() const { +uint16_t DrmMode::v_sync_start() const { return v_sync_start_; } -uint32_t DrmMode::v_sync_end() const { +uint16_t DrmMode::v_sync_end() const { return v_sync_end_; } -uint32_t DrmMode::v_total() const { +uint16_t DrmMode::v_total() const { return v_total_; } -uint32_t DrmMode::v_scan() const { +uint16_t DrmMode::v_scan() const { return v_scan_; } @@ -135,4 +117,29 @@ uint32_t DrmMode::type() const { std::string DrmMode::name() const { return name_; } + +auto DrmMode::CreateModeBlob(const DrmDevice &drm) + -> DrmModeUserPropertyBlobUnique { + struct drm_mode_modeinfo drm_mode = { + .clock = clock_, + .hdisplay = h_display_, + .hsync_start = h_sync_start_, + .hsync_end = h_sync_end_, + .htotal = h_total_, + .hskew = h_skew_, + .vdisplay = v_display_, + .vsync_start = v_sync_start_, + .vsync_end = v_sync_end_, + .vtotal = v_total_, + .vscan = v_scan_, + .vrefresh = v_refresh_, + .flags = flags_, + .type = type_, + }; + strncpy(drm_mode.name, name_.c_str(), DRM_DISPLAY_MODE_LEN); + + return drm.RegisterUserPropertyBlob(&drm_mode, + sizeof(struct drm_mode_modeinfo)); +} + } // namespace android diff --git a/drm/DrmMode.h b/drm/DrmMode.h index 313a8ea..0974b5a 100644 --- a/drm/DrmMode.h +++ b/drm/DrmMode.h @@ -22,32 +22,35 @@ #include <string> +#include "DrmUnique.h" + namespace android { +class DrmDevice; + class DrmMode { public: DrmMode() = default; DrmMode(drmModeModeInfoPtr m); bool operator==(const drmModeModeInfo &m) const; - void ToDrmModeModeInfo(drm_mode_modeinfo *m) const; uint32_t id() const; void set_id(uint32_t id); uint32_t clock() const; - uint32_t h_display() const; - uint32_t h_sync_start() const; - uint32_t h_sync_end() const; - uint32_t h_total() const; - uint32_t h_skew() const; - - uint32_t v_display() const; - uint32_t v_sync_start() const; - uint32_t v_sync_end() const; - uint32_t v_total() const; - uint32_t v_scan() const; + uint16_t h_display() const; + uint16_t h_sync_start() const; + uint16_t h_sync_end() const; + uint16_t h_total() const; + uint16_t h_skew() const; + + uint16_t v_display() const; + uint16_t v_sync_start() const; + uint16_t v_sync_end() const; + uint16_t v_total() const; + uint16_t v_scan() const; float v_refresh() const; uint32_t flags() const; @@ -55,23 +58,25 @@ class DrmMode { std::string name() const; + auto CreateModeBlob(const DrmDevice &drm) -> DrmModeUserPropertyBlobUnique; + private: uint32_t id_ = 0; uint32_t clock_ = 0; - uint32_t h_display_ = 0; - uint32_t h_sync_start_ = 0; - uint32_t h_sync_end_ = 0; - uint32_t h_total_ = 0; - uint32_t h_skew_ = 0; - - uint32_t v_display_ = 0; - uint32_t v_sync_start_ = 0; - uint32_t v_sync_end_ = 0; - uint32_t v_total_ = 0; - uint32_t v_scan_ = 0; - uint32_t v_refresh_ = 0; + uint16_t h_display_ = 0; + uint16_t h_sync_start_ = 0; + uint16_t h_sync_end_ = 0; + uint16_t h_total_ = 0; + uint16_t h_skew_ = 0; + + uint16_t v_display_ = 0; + uint16_t v_sync_start_ = 0; + uint16_t v_sync_end_ = 0; + uint16_t v_total_ = 0; + uint16_t v_scan_ = 0; + uint16_t v_refresh_ = 0; uint32_t flags_ = 0; uint32_t type_ = 0; |