summaryrefslogtreecommitdiff
path: root/src/helpers
diff options
context:
space:
mode:
authorAndrei Alexeyev <akari@taisei-project.org>2023-05-09 15:01:45 +0200
committerGitHub <noreply@github.com>2023-05-09 14:01:45 +0100
commit2f87e4c2f3bccf33bfffcd8d9822b81f41a47a3e (patch)
tree272531afecf8560bc33fb388958f23502fa48061 /src/helpers
parente7c2ea9724ef11038b14367587d9b4987708b1d1 (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')
-rw-r--r--src/helpers/Monitor.hpp25
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;