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