Date: Tuesday, April 14, 2015 @ 17:04:13 Author: lcarlier Revision: 236536
Add intel video driver with dri3 support Added: xf86-video-intel-dri3/ xf86-video-intel-dri3/repos/ xf86-video-intel-dri3/trunk/ xf86-video-intel-dri3/trunk/PKGBUILD xf86-video-intel-dri3/trunk/git-fixes.patch xf86-video-intel-dri3/trunk/xf86-video-intel.install --------------------------+ PKGBUILD | 57 ++++++++++++++ git-fixes.patch | 175 +++++++++++++++++++++++++++++++++++++++++++++ xf86-video-intel.install | 20 +++++ 3 files changed, 252 insertions(+) Added: xf86-video-intel-dri3/trunk/PKGBUILD =================================================================== --- xf86-video-intel-dri3/trunk/PKGBUILD (rev 0) +++ xf86-video-intel-dri3/trunk/PKGBUILD 2015-04-14 15:04:13 UTC (rev 236536) @@ -0,0 +1,57 @@ +# $Id$ +# Maintainer: AndyRTR <[email protected]> +# Maintainer: Jan de Groot <[email protected]> + +pkgname=xf86-video-intel-dri3 +pkgver=2.99.917 +pkgrel=1 +arch=(i686 x86_64) +url="http://xorg.freedesktop.org/" +license=('custom') +install=$pkgname.install +pkgdesc="X.org Intel i810/i830/i915/945G/G965+ video drivers with dri3 support" +depends=('mesa-dri' 'libxvmc' 'pixman' 'xcb-util>=0.3.9') +makedepends=('xorg-server-devel' 'X-ABI-VIDEODRV_VERSION=19' 'libx11' 'libxrender' + # additional deps for intel-virtual-output + 'libxrandr' 'libxinerama' 'libxcursor' 'libxtst') +optdepends=('libxrandr: for intel-virtual-output' + 'libxinerama: for intel-virtual-output' + 'libxcursor: for intel-virtual-output' + 'libxtst: for intel-virtual-output') +replaces=('xf86-video-intel-uxa' 'xf86-video-intel-sna') +provides=('xf86-video-intel-uxa' 'xf86-video-intel-sna') +conflicts=('xorg-server<1.16' 'X-ABI-VIDEODRV_VERSION<19' 'X-ABI-VIDEODRV_VERSION>=20' + 'xf86-video-intel-sna' 'xf86-video-intel-uxa' 'xf86-video-i810' 'xf86-video-intel-legacy' + 'xf86-video-intel') +groups=('xorg-drivers' 'xorg') +source=(${url}/archive/individual/driver/${pkgname}-${pkgver}.tar.bz2 + git-fixes.patch) +sha256sums=('00b781eea055582820a123c47b62411bdf6aabf4f03dc0568faec55faf9667c9' + '3b38b844fbc8088401ebbbafbbf1399d87f077caa5020cbd822487b7d26514e0') + +prepare() { + cd ${pkgname}-${pkgver} + # fix FS#43840, FS#43906 + patch -Np1 -i ../git-fixes.patch +} + +build() { + cd ${pkgname}-${pkgver} + ./configure --prefix=/usr --libexecdir=/usr/lib \ + --enable-dri3 + make +} + +check() { + cd $pkgname-$pkgver + make check +} + +package() { + cd ${pkgname}-${pkgver} + + make DESTDIR="${pkgdir}" install + + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" +} Property changes on: xf86-video-intel-dri3/trunk/PKGBUILD ___________________________________________________________________ Added: svn:keywords ## -0,0 +1 ## +Id \ No newline at end of property Added: xf86-video-intel-dri3/trunk/git-fixes.patch =================================================================== --- xf86-video-intel-dri3/trunk/git-fixes.patch (rev 0) +++ xf86-video-intel-dri3/trunk/git-fixes.patch 2015-04-14 15:04:13 UTC (rev 236536) @@ -0,0 +1,175 @@ +From 127aae5a72a69df325fed0b63d345e81583d5ca1 Mon Sep 17 00:00:00 2001 +From: Chris Wilson <[email protected]> +Date: Mon, 16 Feb 2015 21:37:35 +0000 +Subject: tools/intel-virtual-output: Check for DRI3 more carefully + +Using xcb, we cannot simply call xcb_dri3_query_version() without it +terminating the connection if DRI3 is not enabled on the target display. +Oops. + +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89172 +Signed-off-by: Chris Wilson <[email protected]> + +diff --git a/tools/virtual.c b/tools/virtual.c +index 8e2b4a2..3bcd057 100644 +--- a/tools/virtual.c ++++ b/tools/virtual.c +@@ -218,6 +218,13 @@ static inline XRRScreenResources *_XRRGetScreenResourcesCurrent(Display *dpy, Wi + static int _x_error_occurred; + + static int ++_io_error_handler(Display *display) ++{ ++ fprintf(stderr, "XIO error on display %s\n", DisplayString(display)); ++ abort(); ++} ++ ++static int + _check_error_handler(Display *display, + XErrorEvent *event) + { +@@ -320,6 +327,7 @@ can_use_shm(Display *dpy, + #include <X11/Xlib-xcb.h> + #include <X11/xshmfence.h> + #include <xcb/xcb.h> ++#include <xcb/xcbext.h> + #include <xcb/dri3.h> + #include <xcb/sync.h> + static Pixmap dri3_create_pixmap(Display *dpy, +@@ -357,6 +365,7 @@ static int dri3_query_version(Display *dpy, int *major, int *minor) + { + xcb_connection_t *c = XGetXCBConnection(dpy); + xcb_dri3_query_version_reply_t *reply; ++ xcb_generic_error_t *error; + + *major = *minor = -1; + +@@ -364,7 +373,8 @@ static int dri3_query_version(Display *dpy, int *major, int *minor) + xcb_dri3_query_version(c, + XCB_DRI3_MAJOR_VERSION, + XCB_DRI3_MINOR_VERSION), +- NULL); ++ &error); ++ free(error); + if (reply == NULL) + return -1; + +@@ -377,8 +387,14 @@ static int dri3_query_version(Display *dpy, int *major, int *minor) + + static int dri3_exists(Display *dpy) + { ++ xcb_extension_t dri3 = { "DRI3", 0 }; ++ const xcb_query_extension_reply_t *ext; + int major, minor; + ++ ext = xcb_get_extension_data(XGetXCBConnection(dpy), &dri3); ++ if (ext == NULL || !ext->present) ++ return 0; ++ + if (dri3_query_version(dpy, &major, &minor) < 0) + return 0; + +@@ -3228,6 +3244,7 @@ int main(int argc, char **argv) + return -ret; + + XSetErrorHandler(_check_error_handler); ++ XSetIOErrorHandler(_io_error_handler); + + ret = add_fd(&ctx, display_open(&ctx, src_name)); + if (ret) { +-- +cgit v0.10.2 +From db82617464e55432522e6199a88408ff0187f6ff Mon Sep 17 00:00:00 2001 +From: Chris Wilson <[email protected]> +Date: Wed, 4 Mar 2015 17:12:30 +0000 +Subject: sna: Decouple RandR pointers early in CloseScreen + +RR resources are freed before CloseScreen (as they are a ServerClient +resource), but on entering our CloseScreen callbacks we are left with a +set of stale pointers. Decouple those before proceeding so that we are +not tempted to dereference them. + +Bugzilla: https://bugs.archlinux.org/task/43906 +Signed-off-by: Chris Wilson <[email protected]> + +diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c +index 88db508..fd6c46c 100644 +--- a/src/sna/sna_display.c ++++ b/src/sna/sna_display.c +@@ -6292,9 +6292,26 @@ sna_mode_enable(struct sna *sna) + sna->mode.dirty = false; + } + ++static void sna_randr_close(struct sna *sna) ++{ ++ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(sna->scrn); ++ int n; ++ ++ /* The RR structs are freed early during CloseScreen as they ++ * are tracked as Resources. However, we may be tempted to ++ * access them during shutdown so decouple them now. ++ */ ++ for (n = 0; n < config->num_output; n++) ++ config->output[n]->randr_output = NULL; ++ ++ for (n = 0; n < config->num_crtc; n++) ++ config->crtc[n]->randr_crtc = NULL; ++} ++ + void + sna_mode_close(struct sna *sna) + { ++ sna_randr_close(sna); + sna_mode_wakeup(sna); + + if (sna->flags & SNA_IS_HOSTED) +-- +cgit v0.10.2 +From 9c109f3dc56621215e580e74a6161f00035bdac3 Mon Sep 17 00:00:00 2001 +From: Chris Wilson <[email protected]> +Date: Sun, 12 Apr 2015 21:15:54 +0100 +Subject: [PATCH] sna: Mark the GPU as available before doing the mode restore + on VT enter + +Sometimes we want to render with the GPU when doing a mode switch, e.g. +if we need to initialise an output surface. To do so, we need to prepare +the acceleration layer first. + +Lots of thanks to Vasily for tracking this one down. + +Reported-by: Vasily Khoruzhick <[email protected]> +Bugzilla: https://bugs.archlinux.org/task/43534 +Signed-off-by: Chris Wilson <[email protected]> +--- + src/sna/sna_driver.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/sna/sna_driver.c b/src/sna/sna_driver.c +index 31500e7..488ca9b 100644 +--- a/src/sna/sna_driver.c ++++ b/src/sna/sna_driver.c +@@ -1213,6 +1213,8 @@ static Bool sna_enter_vt(VT_FUNC_ARGS_DECL) + if (intel_get_master(sna->dev)) + return FALSE; + ++ sna_accel_enter(sna); ++ + if (sna->flags & SNA_REPROBE) { + DBG(("%s: reporting deferred hotplug event\n", __FUNCTION__)); + sna_mode_discover(sna); +@@ -1221,11 +1223,11 @@ static Bool sna_enter_vt(VT_FUNC_ARGS_DECL) + sna_mode_check(sna); + + if (!sna_set_desired_mode(sna)) { ++ sna_accel_leave(sna); + intel_put_master(sna->dev); + return FALSE; + } + +- sna_accel_enter(sna); + return TRUE; + } + +-- +2.3.5 + Added: xf86-video-intel-dri3/trunk/xf86-video-intel.install =================================================================== --- xf86-video-intel-dri3/trunk/xf86-video-intel.install (rev 0) +++ xf86-video-intel-dri3/trunk/xf86-video-intel.install 2015-04-14 15:04:13 UTC (rev 236536) @@ -0,0 +1,20 @@ +post_upgrade() { + if (( $(vercmp $2 2.21.15) < 0 )); then + post_install + fi +} + +post_install() { + cat <<MSG +>>> This driver uses SNA as the default acceleration method. You can try + falling back to UXA if you run into trouble. To do so, save a file with + the following content as /etc/X11/xorg.conf.d/20-intel.conf : + Section "Device" + Identifier "Intel Graphics" + Driver "intel" + Option "AccelMethod" "uxa" + #Option "AccelMethod" "sna" + EndSection +MSG +} +
