diff options
| author | Andrei Alexeyev <akari@taisei-project.org> | 2023-05-09 15:01:45 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-05-09 14:01:45 +0100 |
| commit | 2f87e4c2f3bccf33bfffcd8d9822b81f41a47a3e (patch) | |
| tree | 272531afecf8560bc33fb388958f23502fa48061 /src/helpers/Monitor.hpp | |
| parent | e7c2ea9724ef11038b14367587d9b4987708b1d1 (diff) | |
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.
Diffstat (limited to 'src/helpers/Monitor.hpp')
| -rw-r--r-- | src/helpers/Monitor.hpp | 25 |
1 files changed, 14 insertions, 11 deletions
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 <vector> #include <array> #include <memory> +#include <xf86drmMode.h> #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; |
