aboutsummaryrefslogtreecommitdiff
path: root/include/backend/drm
diff options
context:
space:
mode:
authoremersion <contact@emersion.fr>2018-09-04 15:09:07 +0200
committeremersion <contact@emersion.fr>2018-09-04 15:09:07 +0200
commitb877daded11612891af0406fb43cb8bcf1e02809 (patch)
tree3b581aee91e6666e293dd08e880a6b3c6eb5b085 /include/backend/drm
parent73423c988c864167447cd4292bacd3a248ef07f8 (diff)
backend/drm: better hotplug handling
This commit handles better situations in which the number of connected outputs is greater than the number of available CRTCs. It'll enable as many outputs as possible, and transfer CRTCs to outputs that need one on unplug. This changes CRTC and plane reallocation to happen after scanning DRM connectors instead of on modeset. This cleanups CRTCs and planes on unplug to allow them to be re-used for other outputs. On modeset, if an output doesn't have a CRTC, the desired mode is saved and used later when the output gains a CRTC. Future work includes giving priority to enabled outputs over disabled ones for CRTC allocation. This requires the compositor to know about all outputs (even outputs without CRTCs) to properly modeset outputs enabled in the compositor config file and disable outputs disabled in the config file.
Diffstat (limited to 'include/backend/drm')
-rw-r--r--include/backend/drm/drm.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/backend/drm/drm.h b/include/backend/drm/drm.h
index 5d6ff231..fe279917 100644
--- a/include/backend/drm/drm.h
+++ b/include/backend/drm/drm.h
@@ -119,6 +119,7 @@ struct wlr_drm_connector {
struct wlr_output output;
enum wlr_drm_connector_state state;
+ struct wlr_output_mode *desired_mode;
uint32_t id;
struct wlr_drm_crtc *crtc;