From 2f87e4c2f3bccf33bfffcd8d9822b81f41a47a3e Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Tue, 9 May 2023 15:01:45 +0200 Subject: renderer,config: add custom DRM modeline support (#2254) This allows specifying custom display resolutions for the DRM backend. This is useful for display overclocking, working around broken EDIDs, etc. To use this feature, specify a modeline instead of a resolution in the config, for example: monitor = DP-1, modeline 1071.101 3840 3848 3880 3920 2160 2263 2271 2277 +hsync -vsync, 0x0, 1 This example is a custom 3840x2160@120Hz mode with tightened timings. I use it because the standard timings don't work with my monitor and GPU combination (M28U with RX580). The syntax is compatible with Sway and Xorg. --- src/helpers/Monitor.hpp | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) (limited to 'src/helpers/Monitor.hpp') diff --git a/src/helpers/Monitor.hpp b/src/helpers/Monitor.hpp index 1f41c691..28dad111 100644 --- a/src/helpers/Monitor.hpp +++ b/src/helpers/Monitor.hpp @@ -6,6 +6,7 @@ #include #include #include +#include #include "Timer.hpp" struct SMonitorRule; @@ -15,21 +16,23 @@ class CMonitor { CMonitor(); ~CMonitor(); - Vector2D vecPosition = Vector2D(-1, -1); // means unset - Vector2D vecSize = Vector2D(0, 0); - Vector2D vecPixelSize = Vector2D(0, 0); - Vector2D vecTransformedSize = Vector2D(0, 0); + Vector2D vecPosition = Vector2D(-1, -1); // means unset + Vector2D vecSize = Vector2D(0, 0); + Vector2D vecPixelSize = Vector2D(0, 0); + Vector2D vecTransformedSize = Vector2D(0, 0); - bool primary = false; + bool primary = false; - uint64_t ID = -1; - int activeWorkspace = -1; - float scale = 1; + uint64_t ID = -1; + int activeWorkspace = -1; + float scale = 1; - std::string szName = ""; + std::string szName = ""; - Vector2D vecReservedTopLeft = Vector2D(0, 0); - Vector2D vecReservedBottomRight = Vector2D(0, 0); + Vector2D vecReservedTopLeft = Vector2D(0, 0); + Vector2D vecReservedBottomRight = Vector2D(0, 0); + + drmModeModeInfo customDrmMode = {}; // WLR stuff wlr_damage_ring damage; -- cgit v1.2.3