xf86-video-intel: src/sna/sna_display.c

Chris Wilson ickle at kemper.freedesktop.org
Sat Mar 25 01:22:57 UTC 2017


 src/sna/sna_display.c |   23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

New commits:
commit cb6ba2da056f3298a765b4da5cd626343c00a533
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Sat Mar 25 01:19:47 2017 +0000

    sna: Use the first active crtc as the primary output fallback
    
    When desperate for any crtc, check all available crtc for an active one
    first.
    
    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 1eca8cc0..9b77550e 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -7900,6 +7900,24 @@ sna_covering_crtc(struct sna *sna, const BoxRec *box, xf86CrtcPtr desired)
 	return best_crtc;
 }
 
+static xf86CrtcPtr first_active_crtc(struct sna *sna)
+{
+	xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(sna->scrn);
+	int n;
+
+	for (n = 0; n < sna->mode.num_real_crtc; n++) {
+		xf86CrtcPtr crtc = config->crtc[n];
+		if (to_sna_crtc(crtc)->bo)
+			return crtc;
+	}
+
+	/* No active, use the first as a placeholder */
+	if (sna->mode.num_real_crtc)
+		return config->crtc[0];
+
+	return NULL;
+}
+
 xf86CrtcPtr sna_primary_crtc(struct sna *sna)
 {
 	rrScrPrivPtr rr = rrGetScrPriv(xf86ScrnToScreen(sna->scrn));
@@ -7911,10 +7929,7 @@ xf86CrtcPtr sna_primary_crtc(struct sna *sna)
 			return output->crtc;
 	}
 
-	if (sna->mode.num_real_crtc)
-		return XF86_CRTC_CONFIG_PTR(sna->scrn)->crtc[0];
-
-	return NULL;
+	return first_active_crtc(sna);
 }
 
 #define MI_LOAD_REGISTER_IMM			(0x22<<23)


More information about the xorg-commit mailing list