xf86-video-intel: src/sna/sna_display.c
Chris Wilson
ickle at kemper.freedesktop.org
Mon Dec 1 02:55:09 PST 2014
src/sna/sna_display.c | 23 +++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
New commits:
commit 88e9bb760fbd1249bb364a6b68aceee0b442738c
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date: Mon Dec 1 10:47:32 2014 +0000
sna: Explicitly disable unused pipes after an output reconfiguration
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index aa5bdc3..1633333 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -4064,7 +4064,7 @@ static void sort_randr_outputs(struct sna *sna, ScreenPtr screen)
}
}
-static void disable_unused_crtc(struct sna *sna)
+static bool disable_unused_crtc(struct sna *sna)
{
xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(sna->scrn);
bool update = false;
@@ -4076,7 +4076,6 @@ static void disable_unused_crtc(struct sna *sna)
if (!crtc->enabled)
continue;
-
for (o = 0; o < sna->mode.num_real_output; o++) {
xf86OutputPtr output = config->output[o];
if (output->crtc == crtc)
@@ -4084,13 +4083,19 @@ static void disable_unused_crtc(struct sna *sna)
}
if (o == sna->mode.num_real_output) {
+ DBG(("%s: CRTC:%d was enabled with no outputs\n",
+ __FUNCTION__, to_sna_crtc(crtc)->id));
crtc->enabled = false;
update = true;
}
}
- if (update)
+ if (update) {
+ DBG(("%s: disabling unused functions\n", __FUNCTION__));
xf86DisableUnusedFunctions(sna->scrn);
+ }
+
+ return update;
}
void sna_mode_discover(struct sna *sna)
@@ -5790,13 +5795,19 @@ sna_crtc_config_notify(ScreenPtr screen)
if (!sna->mode.dirty)
return;
- /* XXX DisableUnusedOutputs? */
+ if (disable_unused_crtc(sna)) {
+ /* This will have recursed, so simply bail at this point */
+ assert(sna->mode.dirty == false);
+#ifdef RANDR_12_INTERFACE
+ xf86RandR12TellChanged(screen);
+#endif
+ return;
+ }
- probe_capabilities(sna);
update_flush_interval(sna);
-
sna_cursors_reload(sna);
+ probe_capabilities(sna);
sna_present_update(sna);
sna->mode.dirty = false;
More information about the xorg-commit
mailing list