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

Chris Wilson ickle at kemper.freedesktop.org
Thu Mar 12 07:01:22 PDT 2015


 src/sna/sna_accel.c   |   22 ++++++++++++++--------
 src/sna/sna_display.c |   43 +++++++++++++++++++++++++++++++++++++++----
 2 files changed, 53 insertions(+), 12 deletions(-)

New commits:
commit 341654dc276d254aa23593efdb8e4c27a9ca1f77
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Mar 12 13:50:39 2015 +0000

    sna: Compute half resolution modes
    
    Sitting here with a 3200x1600 panel but no 1600x900 intermediate mode,
    and I am too lazy to add it by hand.
    
    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 f648d62..5e800ec 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -3100,14 +3100,49 @@ done:
 	}
 }
 
+static bool duplicate_mode(DisplayModePtr modes, DisplayModePtr m)
+{
+	if (m == NULL)
+		return false;
+
+	while (modes) {
+		if (xf86ModesEqual(modes, m))
+			return true;
+
+		modes = modes->next;
+	}
+
+	return false;
+}
+
 static DisplayModePtr
-default_modes(void)
+default_modes(DisplayModePtr preferred)
 {
+	DisplayModePtr modes;
+
 #if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,6,99,900,0)
-	return xf86GetDefaultModes();
+	modes = xf86GetDefaultModes();
 #else
-	return xf86GetDefaultModes(0, 0);
+	modes = xf86GetDefaultModes(0, 0);
+#endif
+
+#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,4,99,901,0)
+	if (preferred) {
+		DisplayModePtr m;
+
+		/* Add a half-resolution mode useful for large panels */
+		m = xf86GTFMode(preferred->HDisplay/2,
+				preferred->VDisplay/2,
+				xf86ModeVRefresh(preferred),
+				FALSE, FALSE);
+		if (!duplicate_mode(modes, m))
+			modes = xf86ModesAdd(modes, m);
+		else
+			free(m);
+	}
 #endif
+
+	return modes;
 }
 
 static DisplayModePtr
@@ -3132,7 +3167,7 @@ sna_output_add_default_modes(xf86OutputPtr output, DisplayModePtr modes)
 	max_vrefresh = max(max_vrefresh, 60.0);
 	max_vrefresh *= (1 + SYNC_TOLERANCE);
 
-	m = default_modes();
+	m = default_modes(preferred);
 	xf86ValidateModesSize(output->scrn, m, max_x, max_y, 0);
 
 	for (i = m; i; i = i->next) {
commit 71318389bedc87d3a2ea386343c371e5caed2880
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Thu Mar 12 12:39:55 2015 +0000

    sna: Futureproof acceleration backend selection
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
index eb58ab5..2713dde 100644
--- a/src/sna/sna_accel.c
+++ b/src/sna/sna_accel.c
@@ -17849,6 +17849,9 @@ static bool sna_option_accel_none(struct sna *sna)
 	if (xf86ReturnOptValBool(sna->Options, OPTION_ACCEL_DISABLE, FALSE))
 		return true;
 
+	if (sna->kgem.gen >= 0120)
+		return true;
+
 	if (!intel_option_cast_to_bool(sna->Options,
 				       OPTION_ACCEL_METHOD,
 				       !IS_DEFAULT_ACCEL_METHOD(NOACCEL)))
@@ -17869,6 +17872,9 @@ static bool sna_option_accel_blt(struct sna *sna)
 {
 	const char *s;
 
+	if (sna->kgem.gen >= 0110)
+		return true;
+
 	s = xf86GetOptValString(sna->Options, OPTION_ACCEL_METHOD);
 	if (s == NULL)
 		return false;
@@ -17957,21 +17963,21 @@ bool sna_accel_init(ScreenPtr screen, struct sna *sna)
 		backend = "disabled";
 		sna->kgem.wedged = true;
 		sna_render_mark_wedged(sna);
-	} else if (sna_option_accel_blt(sna) || sna->info->gen >= 0110)
+	} else if (sna_option_accel_blt(sna))
 		(void)backend;
-	else if (sna->info->gen >= 0100)
+	else if (sna->kgem.gen >= 0100)
 		backend = gen8_render_init(sna, backend);
-	else if (sna->info->gen >= 070)
+	else if (sna->kgem.gen >= 070)
 		backend = gen7_render_init(sna, backend);
-	else if (sna->info->gen >= 060)
+	else if (sna->kgem.gen >= 060)
 		backend = gen6_render_init(sna, backend);
-	else if (sna->info->gen >= 050)
+	else if (sna->kgem.gen >= 050)
 		backend = gen5_render_init(sna, backend);
-	else if (sna->info->gen >= 040)
+	else if (sna->kgem.gen >= 040)
 		backend = gen4_render_init(sna, backend);
-	else if (sna->info->gen >= 030)
+	else if (sna->kgem.gen >= 030)
 		backend = gen3_render_init(sna, backend);
-	else if (sna->info->gen >= 020)
+	else if (sna->kgem.gen >= 020)
 		backend = gen2_render_init(sna, backend);
 
 	DBG(("%s(backend=%s, prefer_gpu=%x)\n",


More information about the xorg-commit mailing list