[arch-commits] Commit in xf86-video-intel/trunk (2 files)

Andreas Radke andyrtr at archlinux.org
Wed Sep 5 06:14:44 UTC 2018


    Date: Wednesday, September 5, 2018 @ 06:14:44
  Author: andyrtr
Revision: 333418

upgpkg: xf86-video-intel 1:2.99.917+842+g3d395062-1

update to latest git commit, apply patch for multi monitor output - FS#58895

Added:
  xf86-video-intel/trunk/0001-SNA-fix-PRIME-output-support-since-xserver-1.20.patch
Modified:
  xf86-video-intel/trunk/PKGBUILD

------------------------------------------------------------+
 0001-SNA-fix-PRIME-output-support-since-xserver-1.20.patch |   93 +++++++++++
 PKGBUILD                                                   |   16 +
 2 files changed, 104 insertions(+), 5 deletions(-)

Added: 0001-SNA-fix-PRIME-output-support-since-xserver-1.20.patch
===================================================================
--- 0001-SNA-fix-PRIME-output-support-since-xserver-1.20.patch	                        (rev 0)
+++ 0001-SNA-fix-PRIME-output-support-since-xserver-1.20.patch	2018-09-05 06:14:44 UTC (rev 333418)
@@ -0,0 +1,93 @@
+From e85424325911626556fbe5a313c698a5da701163 Mon Sep 17 00:00:00 2001
+From: Peter Wu <peter at lekensteyn.nl>
+Date: Mon, 13 Aug 2018 22:59:50 +0200
+Subject: [PATCH xf86-video-intel] SNA: fix PRIME output support since xserver
+ 1.20
+
+Since xorg-server 1.20, an external monitor would remain blank when used
+in a PRIME output slave setup. Only a cursor was visible. The cause is
+"Make PixmapDirtyUpdateRec::src a DrawablePtr" in xserver, the "src"
+pointer might point to the root window (created by the server) instead
+of a pixmap (as created by xf86-video-intel). Use get_drawable_pixmap to
+handle both cases.
+
+When built with -fsanitize=address, the following test will trigger a
+heap-buffer-overflow error due to to_sna_from_pixmap receiving a window
+instead of a pixmap.
+
+Test on a hybrid graphics laptop (Intel + modesetting/nouveau):
+
+    xrandr --setprovideroutputsource modesetting Intel
+    xrandr --output DP-1-1 --mode 2560x1440  # should not crash
+    glxgears  # should display gears on both screens
+
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100086
+Signed-off-by: Peter Wu <peter at lekensteyn.nl>
+---
+Tested with xserver 1.20.1 with ASAN enabled. Survives multiple
+resolution changes, works with a Plasma desktop session, it seems
+stable. Something like this patch is required to make multi-monitor
+setups usable in a hybrid graphics setting with Xorg 1.20.
+---
+ src/sna/sna_accel.c | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+diff --git a/src/sna/sna_accel.c b/src/sna/sna_accel.c
+index 2f669bcf..80b116a3 100644
+--- a/src/sna/sna_accel.c
++++ b/src/sna/sna_accel.c
+@@ -17510,7 +17510,11 @@ static bool has_offload_slaves(struct sna *sna)
+ 	PixmapDirtyUpdatePtr dirty;
+ 
+ 	xorg_list_for_each_entry(dirty, &screen->pixmap_dirty_list, ent) {
++#ifdef HAS_DIRTYTRACKING_DRAWABLE_SRC
++		assert(dirty->src == &sna->front->drawable);
++#else
+ 		assert(dirty->src == sna->front);
++#endif
+ 		if (RegionNotEmpty(DamageRegion(dirty->damage)))
+ 			return true;
+ 	}
+@@ -17671,7 +17675,11 @@ static void sna_accel_post_damage(struct sna *sna)
+ 		if (RegionNil(damage))
+ 			continue;
+ 
++#ifdef HAS_DIRTYTRACKING_DRAWABLE_SRC
++		src = get_drawable_pixmap(dirty->src);
++#else
+ 		src = dirty->src;
++#endif
+ 		dst = dirty->slave_dst->master_pixmap;
+ 
+ 		region.extents.x1 = dirty->x;
+@@ -17922,9 +17930,15 @@ migrate_dirty_tracking(PixmapPtr old_front, PixmapPtr new_front)
+ 	PixmapDirtyUpdatePtr dirty, safe;
+ 
+ 	xorg_list_for_each_entry_safe(dirty, safe, &screen->pixmap_dirty_list, ent) {
++#ifdef HAS_DIRTYTRACKING_DRAWABLE_SRC
++		assert(dirty->src == &old_front->drawable);
++		if (dirty->src != &old_front->drawable)
++			continue;
++#else
+ 		assert(dirty->src == old_front);
+ 		if (dirty->src != old_front)
+ 			continue;
++#endif
+ 
+ 		DamageUnregister(&dirty->src->drawable, dirty->damage);
+ 		DamageDestroy(dirty->damage);
+@@ -17939,7 +17953,11 @@ migrate_dirty_tracking(PixmapPtr old_front, PixmapPtr new_front)
+ 		}
+ 
+ 		DamageRegister(&new_front->drawable, dirty->damage);
++#ifdef HAS_DIRTYTRACKING_DRAWABLE_SRC
++		dirty->src = &new_front->drawable;
++#else
+ 		dirty->src = new_front;
++#endif
+ 	}
+ #endif
+ }
+-- 
+2.18.0
+

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2018-09-05 05:55:36 UTC (rev 333417)
+++ PKGBUILD	2018-09-05 06:14:44 UTC (rev 333418)
@@ -3,8 +3,8 @@
 # Maintainer: Jan de Groot <jgc at archlinux.org>
 
 pkgname=xf86-video-intel
-_commit=e7bfc9065345085f767235eea8b148c356e5bd2b # master
-pkgver=2.99.917+831+ge7bfc906
+_commit=3d395062ce73f85e8340218df01c2ebf4bc25023 # master
+pkgver=2.99.917+842+g3d395062
 pkgrel=1
 epoch=1
 arch=(x86_64)
@@ -28,8 +28,10 @@
 conflicts=('xorg-server<1.20' 'X-ABI-VIDEODRV_VERSION<24' 'X-ABI-VIDEODRV_VERSION>=25'
            'xf86-video-intel-sna' 'xf86-video-intel-uxa' 'xf86-video-i810' 'xf86-video-intel-legacy')
 groups=('xorg-drivers')
-source=("git+https://anongit.freedesktop.org/git/xorg/driver/xf86-video-intel#commit=$_commit")
-sha256sums=('SKIP')
+source=("git+https://anongit.freedesktop.org/git/xorg/driver/xf86-video-intel#commit=$_commit" 
+        0001-SNA-fix-PRIME-output-support-since-xserver-1.20.patch)
+sha256sums=('SKIP'
+            '7cdc310953379ede9693a387ecac6c803cc4c4461df5ad9ab875b35e90a552f5')
 #options=('!makeflags')
 
 pkgver() {
@@ -39,9 +41,13 @@
 
 prepare() {
   cd $pkgname
+
+  # fix external monitor - FS#58895
+  # https://bugs.freedesktop.org/show_bug.cgi?id=100086
+  patch -Np1 -i ../0001-SNA-fix-PRIME-output-support-since-xserver-1.20.patch
+
   NOCONFIGURE=1 ./autogen.sh
 
-
 #  mkdir build
 }
 



More information about the arch-commits mailing list