xf86-video-intel: 3 commits - configure.ac src/intel_device.c src/intel_driver.h src/sna/sna_display.c src/sna/sna_dri2.c src/sna/sna.h src/sna/sna_present.c

Chris Wilson ickle at kemper.freedesktop.org
Tue Feb 10 06:07:33 PST 2015


 configure.ac          |   11 -----------
 src/intel_device.c    |    8 ++++++--
 src/intel_driver.h    |    1 +
 src/sna/sna.h         |    1 -
 src/sna/sna_display.c |   46 ++++------------------------------------------
 src/sna/sna_dri2.c    |    2 +-
 src/sna/sna_present.c |   10 ----------
 7 files changed, 12 insertions(+), 67 deletions(-)

New commits:
commit 61e957cb5f4ba31b00d7b283d852ad972b850074
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Tue Feb 10 14:03:11 2015 +0000

    Enable support for render-nodes by default with DRI3
    
    DRI3 can use render nodes if provided by the kernel, so enable it.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/configure.ac b/configure.ac
index 9dc4327..afe162d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -741,17 +741,6 @@ if test "x$TEARFREE" = "xyes"; then
 	xp_msg="$xp_msg TearFree"
 fi
 
-AC_ARG_ENABLE(rendernode,
-	      AS_HELP_STRING([--enable-rendernode],
-			     [Enable use of render nodes (experimental) [default=no]]),
-	      [RENDERNODE="$enableval"],
-	      [RENDERNODE="no"])
-AM_CONDITIONAL(USE_RENDERNODE, test "x$RENDERNODE" = "xyes")
-if test "x$RENDERNODE" = "xyes"; then
-	AC_DEFINE(USE_RENDERNODE,1,[Assume "rendernode" support])
-	xp_msg="$xp_msg rendernode"
-fi
-
 AC_ARG_ENABLE(create2,
 	      AS_HELP_STRING([--enable-create2],
 			     [Enable use of create2 ioctl (experimental) [default=no]]),
diff --git a/src/intel_device.c b/src/intel_device.c
index 3e84413..76b0831 100644
--- a/src/intel_device.c
+++ b/src/intel_device.c
@@ -461,7 +461,6 @@ static int is_render_node(int fd, struct stat *st)
 
 static char *find_render_node(int fd)
 {
-#if defined(USE_RENDERNODE)
 	struct stat master, render;
 	char buf[128];
 	int i;
@@ -484,7 +483,6 @@ static char *find_render_node(int fd)
 		    render.st_rdev == (master.st_rdev | 0x80))
 			return strdup(buf);
 	}
-#endif
 
 	return NULL;
 }
commit 5568b24a328d13494a26cffb6e6f2b7168475aee
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Tue Feb 10 14:01:17 2015 +0000

    dri2: Disable integration with render-nodes
    
    The executive decision has been made to render DRI2 inoperable with
    render-nodes, so keep on passing the master device path to clients.
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/intel_device.c b/src/intel_device.c
index c835a5d..3e84413 100644
--- a/src/intel_device.c
+++ b/src/intel_device.c
@@ -682,6 +682,12 @@ struct intel_device *intel_get_device(ScrnInfoPtr scrn, int *fd)
 	return dev;
 }
 
+const char *intel_get_master_name(struct intel_device *dev)
+{
+	assert(dev && dev->master_node);
+	return dev->master_node;
+}
+
 const char *intel_get_client_name(struct intel_device *dev)
 {
 	assert(dev && dev->render_node);
diff --git a/src/intel_driver.h b/src/intel_driver.h
index 28ed1a0..fc9beaf 100644
--- a/src/intel_driver.h
+++ b/src/intel_driver.h
@@ -127,6 +127,7 @@ int intel_open_device(int entity_num,
 int __intel_peek_fd(ScrnInfoPtr scrn);
 struct intel_device *intel_get_device(ScrnInfoPtr scrn, int *fd);
 int intel_has_render_node(struct intel_device *dev);
+const char *intel_get_master_name(struct intel_device *dev);
 const char *intel_get_client_name(struct intel_device *dev);
 int intel_get_client_fd(struct intel_device *dev);
 int intel_get_device_id(struct intel_device *dev);
diff --git a/src/sna/sna_dri2.c b/src/sna/sna_dri2.c
index 4a6ea15..f4e2ced 100644
--- a/src/sna/sna_dri2.c
+++ b/src/sna/sna_dri2.c
@@ -3349,7 +3349,7 @@ bool sna_dri2_open(struct sna *sna, ScreenPtr screen)
 	memset(&info, '\0', sizeof(info));
 	info.fd = sna->kgem.fd;
 	info.driverName = dri_driver_name(sna);
-	info.deviceName = intel_get_client_name(sna->dev);
+	info.deviceName = intel_get_master_name(sna->dev);
 
 	DBG(("%s: loading dri driver '%s' [gen=%d] for device '%s'\n",
 	     __FUNCTION__, info.driverName, sna->kgem.gen, info.deviceName));
commit d1ebd27a31ad3fa76db408b05dea2a5c70cac75c
Author: Chris Wilson <chris at chris-wilson.co.uk>
Date:   Tue Feb 10 13:50:31 2015 +0000

    sna: Prefer first active CRTC for offscreen drawables
    
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

diff --git a/src/sna/sna.h b/src/sna/sna.h
index bd5c38b..9075167 100644
--- a/src/sna/sna.h
+++ b/src/sna/sna.h
@@ -506,7 +506,6 @@ extern xf86CrtcPtr sna_covering_crtc(struct sna *sna,
 				     const BoxRec *box,
 				     xf86CrtcPtr desired);
 extern xf86CrtcPtr sna_primary_crtc(struct sna *sna);
-extern xf86CrtcPtr sna_first_active_crtc(struct sna *sna);
 
 extern bool sna_wait_for_scanline(struct sna *sna, PixmapPtr pixmap,
 				  xf86CrtcPtr crtc, const BoxRec *clip);
diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 038e0ee..9bd47e2 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -6159,8 +6159,8 @@ xf86CrtcPtr
 sna_covering_crtc(struct sna *sna, const BoxRec *box, xf86CrtcPtr desired)
 {
 	xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(sna->scrn);
-	xf86CrtcPtr best_crtc;
-	int best_coverage, c;
+	xf86CrtcPtr best_crtc = NULL;
+	int best_coverage = -1, c;
 
 	if (sna->flags & SNA_IS_HOSTED)
 		return NULL;
@@ -6196,10 +6196,10 @@ sna_covering_crtc(struct sna *sna, const BoxRec *box, xf86CrtcPtr desired)
 			     cover_box.x2, cover_box.y2));
 			return desired;
 		}
+		best_crtc = desired;
+		best_coverage = 0;
 	}
 
-	best_crtc = NULL;
-	best_coverage = 0;
 	for (c = 0; c < sna->mode.num_real_crtc; c++) {
 		xf86CrtcPtr crtc = config->crtc[c];
 		BoxRec cover_box;
@@ -6245,44 +6245,6 @@ sna_covering_crtc(struct sna *sna, const BoxRec *box, xf86CrtcPtr desired)
 	return best_crtc;
 }
 
-xf86CrtcPtr sna_first_active_crtc(struct sna *sna)
-{
-	xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(sna->scrn);
-	rrScrPrivPtr rr;
-	int c;
-
-	if (sna->flags & SNA_IS_HOSTED)
-		return NULL;
-
-	/* If we do not own the VT, we do not own the CRTC either */
-	if (!sna->scrn->vtSema) {
-		DBG(("%s: none, VT switched\n", __FUNCTION__));
-		return NULL;
-	}
-
-	if (sna->mode.hidden) {
-		DBG(("%s: none, hidden outputs\n", __FUNCTION__));
-		return NULL;
-	}
-
-	rr = rrGetScrPriv(xf86ScrnToScreen(sna->scrn));
-	if (rr && rr->primaryOutput) {
-		xf86OutputPtr output = rr->primaryOutput->devPrivate;
-		xf86CrtcPtr crtc = output->crtc;
-		if (crtc && to_sna_crtc(crtc) && to_sna_crtc(crtc)->bo)
-			return crtc;
-	}
-
-	for (c = 0; c < sna->mode.num_real_crtc; c++) {
-		if (to_sna_crtc(config->crtc[c])->bo == NULL)
-			continue;
-
-		return config->crtc[c];
-	}
-
-	return NULL;
-}
-
 xf86CrtcPtr sna_primary_crtc(struct sna *sna)
 {
 	rrScrPrivPtr rr = rrGetScrPriv(xf86ScrnToScreen(sna->scrn));
diff --git a/src/sna/sna_present.c b/src/sna/sna_present.c
index 5026ece..c2a9c5d 100644
--- a/src/sna/sna_present.c
+++ b/src/sna/sna_present.c
@@ -95,16 +95,6 @@ sna_present_get_crtc(WindowPtr window)
 	if (crtc)
 		return crtc->randr_crtc;
 
-	/* Offscreen Window - use any CRTC as a clocksource.
-	 * This is likely to be either a Window on either VIRTUAL or PRIME
-	 * screen real estate, and ideally we would delegate to the
-	 * slave CRTC, but using our hardware is preferable to falling back
-	 * to Present's timer implemetation.
-	 */
-	crtc = sna_first_active_crtc(sna);
-	if (crtc)
-		return crtc->randr_crtc;
-
 	return NULL;
 }
 


More information about the xorg-commit mailing list