From 748e2e9a706a1fc129524f8978b3d2c5a37df193 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sun, 14 Feb 2021 00:52:18 +1000 Subject: [PATCH] DRMDisplay: Add mode queries --- src/common/drm_display.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/common/drm_display.h b/src/common/drm_display.h index 789b9be69..d0411a50f 100644 --- a/src/common/drm_display.h +++ b/src/common/drm_display.h @@ -18,6 +18,15 @@ public: u32 GetWidth() const { return m_mode->hdisplay; } u32 GetHeight() const { return m_mode->vdisplay; } + u32 GetModeCount() const { return m_connector->count_modes; } + u32 GetModeWidth(u32 i) const { return m_connector->modes[i].hdisplay; } + u32 GetModeHeight(u32 i) const { return m_connector->modes[i].vdisplay; } + float GetModeRefreshRate(u32 i) const + { + return (static_cast(m_connector->modes[i].clock) * 1000.0f) / + (static_cast(m_connector->modes[i].htotal) * static_cast(m_connector->modes[i].vtotal)); + } + std::optional AddBuffer(u32 width, u32 height, u32 format, u32 handle, u32 pitch, u32 offset); void RemoveBuffer(u32 fb_id); void PresentBuffer(u32 fb_id, bool wait_for_vsync); @@ -33,6 +42,8 @@ private: int m_card_id = 0; int m_card_fd = -1; u32 m_crtc_id = 0; + + drmModeRes* m_resources = nullptr; drmModeConnector* m_connector = nullptr; drmModeModeInfo* m_mode = nullptr; };