From 1445a62da8a08acd8a732176d085fd098f68cec3 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 3 Jul 2013 12:59:31 +0100 Subject: [PATCH] intel: Add an option for forced rediscovery of output status on startup Specifying Section "Device" Option "ReprobeOutputs" "true" EndSection will restore the old behaviour of scanning each output on startup and picking a spanning mode. The behaviour was changed in commit 8a6a21bff86100144ba7960fc32a299ac54ada83 [2.21.11] Author: Chris Wilson Date: Wed Jun 26 13:29:48 2013 +0100 sna: Use the existing configuration for initial modes Please do notify us of any circumstances that force you to use this flag. References: https://bugs.freedesktop.org/show_bug.cgi?id=66494 Signed-off-by: Chris Wilson --- man/intel.man | 13 +++++++++++++ src/intel_options.c | 1 + src/intel_options.h | 1 + src/sna/sna_display.c | 3 +++ 4 files changed, 18 insertions(+) diff --git a/man/intel.man b/man/intel.man index fbd0230a..9e19687b 100644 --- a/man/intel.man +++ b/man/intel.man @@ -134,6 +134,19 @@ disable render acceleration and only use the BLT engine. .IP Default: use UXA (render acceleration) .TP +.BI "Option \*qReprobeOutputs\*q \*q" boolean \*q +Disable or enable rediscovery of connected displays during server startup. +As the kernel driver loads it scans for connected displays and configures a +console spanning those outputs. When the X server starts, we then take the +list of connected displays and framebuffer layout and use that for the +initial configuration. Sometimes, not all displays are correctly detected by +the kernel and so it is useful in a few circumstances for X to force the +kernel to reprobe all displays when it starts. To make the X server recheck +the status of connected displays, set the \*qReprobeOutputs\*q option to true. +Please do file a bug for any circumstances which require this workaround. +.IP +Default: reprobing is disabled for a faster startup. +.TP .BI "Option \*qVideoKey\*q \*q" integer \*q This is the same as the .B \*qColorKey\*q diff --git a/src/intel_options.c b/src/intel_options.c index ca172b5c..b81bde6e 100644 --- a/src/intel_options.c +++ b/src/intel_options.c @@ -17,6 +17,7 @@ const OptionInfoRec intel_options[] = { {OPTION_TRIPLE_BUFFER, "TripleBuffer", OPTV_BOOLEAN, {0}, 1}, {OPTION_PREFER_OVERLAY, "XvPreferOverlay", OPTV_BOOLEAN, {0}, 0}, {OPTION_HOTPLUG, "HotPlug", OPTV_BOOLEAN, {0}, 1}, + {OPTION_REPROBE, "ReprobeOutputs", OPTV_BOOLEAN, {0}, 0}, #ifdef INTEL_XVMC {OPTION_XVMC, "XvMC", OPTV_BOOLEAN, {0}, 1}, #endif diff --git a/src/intel_options.h b/src/intel_options.h index 8cee054a..112983d5 100644 --- a/src/intel_options.h +++ b/src/intel_options.h @@ -23,6 +23,7 @@ enum intel_options { OPTION_TRIPLE_BUFFER, OPTION_PREFER_OVERLAY, OPTION_HOTPLUG, + OPTION_REPROBE, #if defined(XvMCExtension) && defined(ENABLE_XVMC) OPTION_XVMC, #define INTEL_XVMC 1 diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c index eaf54e98..de27a365 100644 --- a/src/sna/sna_display.c +++ b/src/sna/sna_display.c @@ -2936,6 +2936,9 @@ static bool sna_probe_initial_configuration(struct sna *sna) int width, height; int i, j; + if (xf86ReturnOptValBool(sna->Options, OPTION_REPROBE, FALSE)) + return false; + /* First scan through all outputs and look for user overrides */ for (i = 0; i < config->num_output; i++) { xf86OutputPtr output = config->output[i];