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