xf86-video-intel: 6 commits - man/intel.man README src/i915_pciids.h src/intel_module.c src/sna/gen9_render.c src/sna/sna_display.c src/sna/sna_present.c src/sna/sna_render.h

Chris Wilson ickle at kemper.freedesktop.org
Tue Dec 6 09:40:31 UTC 2016


 README                |    6 +++---
 man/intel.man         |    6 +++---
 src/i915_pciids.h     |    4 ++++
 src/intel_module.c    |   39 ++++++++++++++++++++++++++++++++++++---
 src/sna/gen9_render.c |   28 ++++++++++++++++++++++++++++
 src/sna/sna_display.c |   19 +++++++++++--------
 src/sna/sna_present.c |    4 ++--
 src/sna/sna_render.h  |    1 +
 8 files changed, 88 insertions(+), 19 deletions(-)

New commits:
commit 169c74fa6c2cd9c28dd7bfacd9639cd245b8c8a8
Author: Rodrigo Vivi <rodrigo.vivi at intel.com>
Date:   Thu Nov 17 14:46:31 2016 -0800

    intel: Adding Marketing names for Skylake, Kabylake and Apollolake/Broxton.
    
    This commit adding all known marketing names for latest gen9 platforms.
    
    v2: On top of simplified generic string names.
    
    Cc: Chris Wilson <chris at chris-wilson.co.uk>
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>

diff --git a/src/intel_module.c b/src/intel_module.c
index f9b5d99..6b04857 100644
--- a/src/intel_module.c
+++ b/src/intel_module.c
@@ -276,6 +276,33 @@ static const SymTabRec intel_chipsets[] = {
 	{0x22b2, "HD Graphics"},
 	{0x22b3, "HD Graphics"},
 
+	/* Skylake */
+	{0x1902, "HD Graphics 510"},
+	{0x1906, "HD Graphics 510"},
+	{0x190B, "HD Graphics 510"},
+	{0x1912, "HD Graphics 530"},
+	{0x1916, "HD Graphics 520"},
+	{0x191B, "HD Graphics 530"},
+	{0x191D, "HD Graphics P530"},
+	{0x191E, "HD Graphics 515"},
+	{0x1921, "HD Graphics 520"},
+	{0x1926, "Iris Graphics 540"},
+	{0x1927, "Iris Graphics 550"},
+	{0x192B, "Iris Graphics 555"},
+	{0x192D, "Iris Graphics P555"},
+	{0x1932, "Iris Pro Graphics 580"},
+	{0x193A, "Iris Pro Graphics P580"},
+	{0x193B, "Iris Pro Graphics 580"},
+	{0x193D, "Iris Pro Graphics P580"},
+
+	/* Broxton (Apollolake) */
+	{0x5A84, "HD Graphics 505"},
+	{0x5A85, "HD Graphics 500"},
+
+	/* Kabylake */
+	{0x5916, "HD Graphics 620"},
+	{0x591E, "HD Graphics 615"},
+
 	/* When adding new identifiers, also update:
 	 * 1. intel_identify()
 	 * 2. man/intel.man
commit 2948cf0531a5165787dc763028ae4c4ac1eed063
Author: Rodrigo Vivi <rodrigo.vivi at intel.com>
Date:   Thu Nov 17 14:46:30 2016 -0800

    intel: Simplify new platform names.
    
    Modern Intel (R) platforms with integrated graphics comes with common
    names varying the range numbers. So instead of listing all supported
    platforms let's start using the generic marketing strings without
    the numbers.
    
    And for the specific board we list it's actual marketing name if
    available on detection.
    
    Cc: Chris Wilson <chris at chris-wilson.co.uk>
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>

diff --git a/README b/README
index cf4d88d..348983b 100644
--- a/README
+++ b/README
@@ -15,9 +15,9 @@ Intel graphics chipsets including:
 	G/Q33,G/Q35,G41,G/Q43,G/GM/Q45
 	PineView-M (Atom N400 series)
 	PineView-D (Atom D400/D500 series)
-	Intel(R) HD Graphics: 2000-6000,
-	Intel(R) Iris(TM) Graphics: 5100/6100, and
-	Intel(R) Iris(TM) Pro Graphics: 5200/6200/P6300.
+	Intel(R) HD Graphics,
+	Intel(R) Iris(TM) Graphics,
+	Intel(R) Iris(TM) Pro Graphics.
 
 Where to get more information about the driver
 ----------------------------------------------
diff --git a/man/intel.man b/man/intel.man
index 8da496e..be398fb 100644
--- a/man/intel.man
+++ b/man/intel.man
@@ -27,9 +27,9 @@ supports the i810, i810-DC100, i810e, i815, i830M, 845G, 852GM, 855GM,
 865G, 915G, 915GM, 945G, 945GM, 965G, 965Q, 946GZ, 965GM, 945GME,
 G33, Q33, Q35, G35, GM45, G45, Q45, G43, G41 chipsets, Pineview-M in
 Atom N400 series, Pineview-D in Atom D400/D500 series,
-Intel(R) HD Graphics: 2000-6000,
-Intel(R) Iris(TM) Graphics: 5100/6100, and
-Intel(R) Iris(TM) Pro Graphics: 5200/6200/P6300.
+Intel(R) HD Graphics,
+Intel(R) Iris(TM) Graphics,
+Intel(R) Iris(TM) Pro Graphics.
 
 .SH CONFIGURATION DETAILS
 Please refer to __xconfigfile__(__filemansuffix__) for general configuration
diff --git a/src/intel_module.c b/src/intel_module.c
index 68ec9fe..f9b5d99 100644
--- a/src/intel_module.c
+++ b/src/intel_module.c
@@ -471,9 +471,9 @@ static void intel_identify(int flags)
 	if (unique != stack)
 		free(unique);
 
-	xf86Msg(X_INFO, INTEL_NAME ": Driver for Intel(R) HD Graphics: 2000-6000\n");
-	xf86Msg(X_INFO, INTEL_NAME ": Driver for Intel(R) Iris(TM) Graphics: 5100, 6100\n");
-	xf86Msg(X_INFO, INTEL_NAME ": Driver for Intel(R) Iris(TM) Pro Graphics: 5200, 6200, P6300\n");
+	xf86Msg(X_INFO, INTEL_NAME ": Driver for Intel(R) HD Graphics\n");
+	xf86Msg(X_INFO, INTEL_NAME ": Driver for Intel(R) Iris(TM) Graphics\n");
+	xf86Msg(X_INFO, INTEL_NAME ": Driver for Intel(R) Iris(TM) Pro Graphics\n");
 }
 
 static Bool intel_driver_func(ScrnInfoPtr pScrn,
commit ff25ad3402be3bc20f7b6e680e49ad03d7c6e2af
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Dec 5 21:28:35 2016 +0000

    sna: Reorder frontbuffer resize vs flip event queue draining
    
    If we are not careful, we may process an unflip in the middle of
    resizing the frontbuffer - when the ScreenPixmap state is ill-defined.
    First flush all the pending flip events, cancel any residual unflips,
    then update the screen pixmap. This should be enough to close the race.
    
    References: https://bugs.freedesktop.org/show_bug.cgi?id=98855#c11
    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 f6b6e5b..1b271ab 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -5679,6 +5679,14 @@ sna_mode_resize(ScrnInfoPtr scrn, int width, int height)
 	assert(sna->mode.shadow_damage == NULL);
 	assert(sna->mode.shadow == NULL);
 
+	/* Flush pending shadow updates */
+	if (sna->mode.flip_active) {
+		DBG(("%s: waiting for %d outstanding TearFree flips\n",
+		     __FUNCTION__, sna->mode.flip_active));
+		while (sna->mode.flip_active && sna_mode_wait_for_event(sna))
+			sna_mode_wakeup(sna);
+	}
+
 	/* Cancel a pending [un]flip (as the pixmaps no longer match) */
 	sna_present_cancel_flip(sna);
 	copy_front(sna, sna->front, new_front);
@@ -5692,14 +5700,6 @@ sna_mode_resize(ScrnInfoPtr scrn, int width, int height)
 	scrn->virtualY = height;
 	scrn->displayWidth = width;
 
-	/* Flush pending shadow updates */
-	if (sna->mode.flip_active) {
-		DBG(("%s: waiting for %d outstanding TearFree flips\n",
-		     __FUNCTION__, sna->mode.flip_active));
-		while (sna->mode.flip_active && sna_mode_wait_for_event(sna))
-			sna_mode_wakeup(sna);
-	}
-
 	/* Only update the CRTCs if we are in control */
 	if (!scrn->vtSema)
 		return TRUE;
diff --git a/src/sna/sna_present.c b/src/sna/sna_present.c
index cfff0f1..7c536ab 100644
--- a/src/sna/sna_present.c
+++ b/src/sna/sna_present.c
@@ -926,12 +926,12 @@ reset_mode:
 		goto notify;
 	}
 
-	assert(sna_pixmap(screen->GetScreenPixmap(screen))->pinned & PIN_SCANOUT);
-
 	/* Are we unflipping after a failure that left our ScreenP in place? */
 	if (!sna_needs_page_flip(sna, bo))
 		goto notify;
 
+	assert(sna_pixmap(screen->GetScreenPixmap(screen))->pinned & PIN_SCANOUT);
+
 	if (sna->flags & SNA_HAS_ASYNC_FLIP) {
 		DBG(("%s: trying async flip restore\n", __FUNCTION__));
 		if (flip__async(sna, NULL, event_id, 0, bo))
commit fcf943f45b674b080dbd07b65f6bfbc89c427c21
Author: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira at intel.com>
Date:   Mon Dec 5 12:27:14 2016 +0200

    Add Geminialke PCI IDs
    
    Same ids from kernel's
    
    commit 8363e3c3947d0e22955f94a6a87e4f17ce5087b4
    Author: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira at intel.com>
    Date:   Thu Nov 10 17:23:08 2016 +0200
    
        drm/i915/glk: Add Geminilake PCI IDs
    
    Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira at intel.com>

diff --git a/src/i915_pciids.h b/src/i915_pciids.h
index 33466bf..e1f46bb 100644
--- a/src/i915_pciids.h
+++ b/src/i915_pciids.h
@@ -336,4 +336,8 @@
 	INTEL_KBL_GT3_IDS(info), \
 	INTEL_KBL_GT4_IDS(info)
 
+#define INTEL_GLK_IDS(info) \
+	INTEL_VGA_DEVICE(0x3184, info), \
+	INTEL_VGA_DEVICE(0x3185, info)
+
 #endif /* _I915_PCIIDS_H */
diff --git a/src/intel_module.c b/src/intel_module.c
index e443c9e..68ec9fe 100644
--- a/src/intel_module.c
+++ b/src/intel_module.c
@@ -134,6 +134,10 @@ static const struct intel_device_info intel_kabylake_info = {
 	.gen = 0112,
 };
 
+static const struct intel_device_info intel_geminilake_info = {
+	.gen = 0113,
+};
+
 static const SymTabRec intel_chipsets[] = {
 	{PCI_CHIP_I810,				"i810"},
 	{PCI_CHIP_I810_DC100,			"i810-dc100"},
@@ -335,6 +339,8 @@ static const struct pci_id_match intel_device_match[] = {
 
 	INTEL_KBL_IDS(&intel_kabylake_info),
 
+	INTEL_GLK_IDS(&intel_geminilake_info),
+
 	INTEL_VGA_DEVICE(PCI_MATCH_ANY, &intel_generic_info),
 #endif
 
diff --git a/src/sna/gen9_render.c b/src/sna/gen9_render.c
index 5f6b542..e5f12c7 100644
--- a/src/sna/gen9_render.c
+++ b/src/sna/gen9_render.c
@@ -240,6 +240,11 @@ static const struct gt_info kbl_gt_info = {
 	.urb = { .max_vs_entries = 960 },
 };
 
+static const struct gt_info glk_gt_info = {
+	.name = "Geminilake (gen9)",
+	.urb = { .max_vs_entries = 320 },
+};
+
 static bool is_skl(struct sna *sna)
 {
 	return sna->kgem.gen == 0110;
@@ -255,6 +260,11 @@ static bool is_kbl(struct sna *sna)
 	return sna->kgem.gen == 0112;
 }
 
+static bool is_glk(struct sna *sna)
+{
+	return sna->kgem.gen == 0113;
+}
+
 
 static inline bool too_large(int width, int height)
 {
@@ -4028,6 +4038,8 @@ static bool gen9_render_setup(struct sna *sna)
 		state->info = &bxt_gt_info;
 	if (is_kbl(sna))
 		state->info = &kbl_gt_info;
+	if (is_glk(sna))
+		state->info = &glk_gt_info;
 
 	sna_static_stream_init(&general);
 
commit a1b39eb6dd1717501a0546275d07df8321fe4905
Author: James Clarke <jrtc27 at jrtc27.com>
Date:   Mon Dec 5 11:30:27 2016 +0000

    sna: Add missing NULL check for readdir result in has_connector_backlight
    
    Signed-off-by: James Clarke <jrtc27 at jrtc27.com>

diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 1d31d00..f6b6e5b 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -1033,6 +1033,9 @@ static char *has_connector_backlight(xf86OutputPtr output)
 	DBG(("%s: lookup %s\n", __FUNCTION__, path));
 
 	dir = opendir(path);
+	if (dir == NULL)
+		return NULL;
+
 	while ((de = readdir(dir))) {
 		struct stat st;
 
commit 4acd4a7d3d2f41227022fa7581cfb85a0b124eae
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Mon Dec 5 15:13:24 2016 +0000

    sna/gen9: Emit a dummy primitive between VertexElements
    
    References: https://bugs.freedesktop.org/show_bug.cgi?id=98999
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/gen9_render.c b/src/sna/gen9_render.c
index 56c1b8d..5f6b542 100644
--- a/src/sna/gen9_render.c
+++ b/src/sna/gen9_render.c
@@ -1101,6 +1101,17 @@ gen9_emit_vertex_elements(struct sna *sna,
 		return;
 	render->ve_id = id;
 
+	if (render->ve_dirty) {
+		/* dummy primitive to flush vertex before change? */
+		OUT_BATCH(GEN9_3DPRIMITIVE | (7 - 2));
+		OUT_BATCH(0); /* ignored, see VF_TOPOLOGY */
+		OUT_BATCH(0);
+		OUT_BATCH(0);
+		OUT_BATCH(1);	/* single instance */
+		OUT_BATCH(0);	/* start instance location */
+		OUT_BATCH(0);	/* index buffer offset, ignored */
+	}
+
 	/* The VUE layout
 	 *    dword 0-3: pad (0.0, 0.0, 0.0. 0.0)
 	 *    dword 4-7: position (x, y, 1.0, 1.0),
@@ -1198,6 +1209,8 @@ gen9_emit_vertex_elements(struct sna *sna,
 			  offset << VE_OFFSET_SHIFT);
 		OUT_BATCH(dw);
 	}
+
+	render->ve_dirty = true;
 }
 
 inline static void
@@ -1322,6 +1335,7 @@ static bool gen9_magic_ca_pass(struct sna *sna,
 	OUT_BATCH(0);	/* index buffer offset, ignored */
 
 	state->last_primitive = sna->kgem.nbatch;
+	state->ve_dirty = false;
 	return true;
 }
 
@@ -1508,6 +1522,7 @@ static void gen9_emit_primitive(struct sna *sna)
 	sna->render.vertex_start = sna->render.vertex_index;
 
 	sna->render_state.gen9.last_primitive = sna->kgem.nbatch;
+	sna->render_state.gen9.ve_dirty = false;
 }
 
 static bool gen9_rectangle_begin(struct sna *sna,
@@ -3967,6 +3982,7 @@ static void gen9_render_reset(struct sna *sna)
 	sna->render_state.gen9.emit_flush = false;
 	sna->render_state.gen9.needs_invariant = true;
 	sna->render_state.gen9.ve_id = 3 << 2;
+	sna->render_state.gen9.ve_dirty = false;
 	sna->render_state.gen9.last_primitive = -1;
 
 	sna->render_state.gen9.num_sf_outputs = 0;
diff --git a/src/sna/sna_render.h b/src/sna/sna_render.h
index aa2e676..4ba345a 100644
--- a/src/sna/sna_render.h
+++ b/src/sna/sna_render.h
@@ -623,6 +623,7 @@ struct gen9_render_state {
 
 	bool needs_invariant;
 	bool emit_flush;
+	bool ve_dirty;
 };
 
 struct sna_static_stream {


More information about the xorg-commit mailing list