xf86-video-intel: 2 commits - src/sna/sna_display.c src/sna/sna_driver.c

Chris Wilson ickle at kemper.freedesktop.org
Thu Nov 9 00:36:45 UTC 2017


 src/sna/sna_display.c |    2 +-
 src/sna/sna_driver.c  |    9 ++++++---
 2 files changed, 7 insertions(+), 4 deletions(-)

New commits:
commit 37a682aa8a420a75a920e0fa7cf8659f834ed60f
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Nov 9 00:08:15 2017 +0000

    sna: Update vtSema for Leave/EnterVT
    
    Xorg changed behaviour in 78f0667d6df9 (xf86Events: split xf86VTSwitch
    into xf86VTLeave and xf86VTEnter functions) and stopped altering the
    state of scrn->vtSema around calls to Leave/EnterVT. So we must do so
    ourselves (albeit a bit belated in noticing the change!)
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c
index 1b4015de..5492c59d 100644
--- a/src/sna/sna_driver.c
+++ b/src/sna/sna_driver.c
@@ -945,14 +945,16 @@ static void sna_leave_vt(VT_FUNC_ARGS_DECL)
 	SCRN_INFO_PTR(arg);
 	struct sna *sna = to_sna(scrn);
 
-	DBG(("%s\n", __FUNCTION__));
+	DBG(("%s(vtSema=%d)\n", __FUNCTION__, scrn->vtSema));
 
 	sna_mode_reset(sna);
 	sna_accel_leave(sna);
 
-	if (intel_put_master(sna->dev))
+	if (scrn->vtSema && intel_put_master(sna->dev))
 		xf86DrvMsg(scrn->scrnIndex, X_WARNING,
 			   "drmDropMaster failed: %s\n", strerror(errno));
+
+	scrn->vtSema = FALSE;
 }
 
 static Bool sna_early_close_screen(CLOSE_SCREEN_ARGS_DECL)
@@ -1272,10 +1274,11 @@ static Bool sna_enter_vt(VT_FUNC_ARGS_DECL)
 	SCRN_INFO_PTR(arg);
 	struct sna *sna = to_sna(scrn);
 
-	DBG(("%s\n", __FUNCTION__));
+	DBG(("%s(vtSema=%d)\n", __FUNCTION__, scrn->vtSema));
 	if (intel_get_master(sna->dev))
 		return FALSE;
 
+	scrn->vtSema = TRUE;
 	sna_accel_enter(sna);
 
 	if (sna->flags & SNA_REPROBE) {
commit 8dfb6477bef580383bb57ea3555cf32147062979
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Wed Nov 8 23:30:02 2017 +0000

    sna: Disable DPMS-deferred modesetting when run as a secondary screen
    
    When being run as a secondary screen, we do not receive DPMS events
    (xf86DPMS() only operates on the primary screen, I guess one day we will
    have to fix that and undo this hack). As such we cannot defer the
    modesets until the final DPMS as it will never be sent.
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103618
    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 eadc3cda..ea2f148d 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -7524,7 +7524,7 @@ bool sna_mode_pre_init(ScrnInfoPtr scrn, struct sna *sna)
 	}
 
 	probe_capabilities(sna);
-	sna->mode.hidden = 1;
+	sna->mode.hidden = !isGPU(scrn); /* No DPMS passthrough */
 
 	if (!xf86GetOptValInteger(sna->Options, OPTION_VIRTUAL, &num_fake))
 		num_fake = 1;


More information about the xorg-commit mailing list