summaryrefslogtreecommitdiff
path: root/pcr/xf86-video-qxl
diff options
context:
space:
mode:
authorOmar Vega Ramos <ovruni@gnu.org.pe>2015-11-30 20:26:21 -0500
committerOmar Vega Ramos <ovruni@gnu.org.pe>2015-11-30 20:26:21 -0500
commitf60c5987b6aa98b43cbaf581c5ed4e5eaa476361 (patch)
tree79746c49d8973aa8e074c04546ee4e8a0b0778bb /pcr/xf86-video-qxl
parentc90ed53b40a125b1dd016722a6afadfbeb6481cb (diff)
xf86-video-qxl-0.1.4-6: rebuild
Diffstat (limited to 'pcr/xf86-video-qxl')
-rw-r--r--pcr/xf86-video-qxl/0002-kms-initialize-primary-surface-to-screen-virtual-siz.patch34
-rw-r--r--pcr/xf86-video-qxl/0003-kms-do-not-overwrite-screen-virtualX-Y.patch31
-rw-r--r--pcr/xf86-video-qxl/0004-Fix-drawable-mm_time-with-KMS.patch30
-rw-r--r--pcr/xf86-video-qxl/PKGBUILD44
-rw-r--r--pcr/xf86-video-qxl/fix-cast.patch12
5 files changed, 125 insertions, 26 deletions
diff --git a/pcr/xf86-video-qxl/0002-kms-initialize-primary-surface-to-screen-virtual-siz.patch b/pcr/xf86-video-qxl/0002-kms-initialize-primary-surface-to-screen-virtual-siz.patch
new file mode 100644
index 000000000..2a41c94fe
--- /dev/null
+++ b/pcr/xf86-video-qxl/0002-kms-initialize-primary-surface-to-screen-virtual-siz.patch
@@ -0,0 +1,34 @@
+From 16ac8fa8fac56a01050ffa9f0978ae04b1a1efa4 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>
+Date: Wed, 13 May 2015 18:12:26 +0200
+Subject: [PATCH 1/3] kms: initialize primary surface to screen virtual size
+
+The pScrn->virtualX/Y are set after drmmode_pre_init(), use that
+resolution instead of hard-coded 1024x768.
+
+This fixes rendering glitches when restarting X server with
+different primary size than actual monitor modes.
+
+Signed-off-by: Christian Hesse <mail@eworm.de>
+---
+ src/qxl_kms.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/qxl_kms.c b/src/qxl_kms.c
+index c31c62d..b6952f3 100644
+--- a/src/qxl_kms.c
++++ b/src/qxl_kms.c
+@@ -164,8 +164,8 @@ Bool qxl_pre_init_kms(ScrnInfoPtr pScrn, int flags)
+ if (drmmode_pre_init(pScrn, &qxl->drmmode, pScrn->bitsPerPixel / 8) == FALSE)
+ goto out;
+
+- qxl->virtual_x = 1024;
+- qxl->virtual_y = 768;
++ qxl->virtual_x = pScrn->virtualX;
++ qxl->virtual_y = pScrn->virtualY;
+
+ pScrn->display->virtualX = qxl->virtual_x;
+ pScrn->display->virtualY = qxl->virtual_y;
+--
+2.6.2
+
diff --git a/pcr/xf86-video-qxl/0003-kms-do-not-overwrite-screen-virtualX-Y.patch b/pcr/xf86-video-qxl/0003-kms-do-not-overwrite-screen-virtualX-Y.patch
new file mode 100644
index 000000000..1dbe311a8
--- /dev/null
+++ b/pcr/xf86-video-qxl/0003-kms-do-not-overwrite-screen-virtualX-Y.patch
@@ -0,0 +1,31 @@
+From 8babd05ea9c196390570928a386f5a17a8a37fb9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com>
+Date: Wed, 13 May 2015 19:10:06 +0200
+Subject: [PATCH 2/3] kms: do not overwrite screen virtualX/Y
+
+The pScrn->currentMode is the resolution of the first monitor,
+not the resolution of the whole virtual screen.
+
+This fixes restarting X when several monitors are enabled.
+
+Signed-off-by: Christian Hesse <mail@eworm.de>
+---
+ src/qxl_kms.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/src/qxl_kms.c b/src/qxl_kms.c
+index b6952f3..4ffb4e7 100644
+--- a/src/qxl_kms.c
++++ b/src/qxl_kms.c
+@@ -286,8 +286,6 @@ Bool qxl_screen_init_kms(SCREEN_INIT_ARGS_DECL)
+ goto out;
+ pScrn->displayWidth = pScrn->virtualX;
+
+- pScrn->virtualX = pScrn->currentMode->HDisplay;
+- pScrn->virtualY = pScrn->currentMode->VDisplay;
+ if (!qxl_fb_init (qxl, pScreen))
+ goto out;
+
+--
+2.6.2
+
diff --git a/pcr/xf86-video-qxl/0004-Fix-drawable-mm_time-with-KMS.patch b/pcr/xf86-video-qxl/0004-Fix-drawable-mm_time-with-KMS.patch
new file mode 100644
index 000000000..3e35df5a6
--- /dev/null
+++ b/pcr/xf86-video-qxl/0004-Fix-drawable-mm_time-with-KMS.patch
@@ -0,0 +1,30 @@
+From e765cc5ea35bfab017201307b280368400cf1d10 Mon Sep 17 00:00:00 2001
+From: Javier Celaya <javier.celaya@flexvdi.com>
+Date: Fri, 19 Jun 2015 14:05:10 +0200
+Subject: [PATCH 3/3] Fix drawable mm_time with KMS
+
+When KMS is enabled, the mm_time value of a QXLDrawable is undefined.
+This results in severe synchronization problems. This patch sets it to
+zero to force the spice-server to use the local clock.
+
+Signed-off-by: Christian Hesse <mail@eworm.de>
+---
+ src/qxl_surface.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/qxl_surface.c b/src/qxl_surface.c
+index c5e76e0..6fc2146 100644
+--- a/src/qxl_surface.c
++++ b/src/qxl_surface.c
+@@ -86,6 +86,8 @@ make_drawable (qxl_screen_t *qxl, qxl_surface_t *surf, uint8_t type,
+
+ if (!qxl->kms_enabled)
+ drawable->mm_time = qxl->rom->mm_clock;
++ else
++ drawable->mm_time = 0;
+
+ qxl->bo_funcs->bo_unmap(draw_bo);
+ return draw_bo;
+--
+2.6.2
+
diff --git a/pcr/xf86-video-qxl/PKGBUILD b/pcr/xf86-video-qxl/PKGBUILD
index 2f2d6c6ba..a672eafa1 100644
--- a/pcr/xf86-video-qxl/PKGBUILD
+++ b/pcr/xf86-video-qxl/PKGBUILD
@@ -5,30 +5,36 @@
pkgname=xf86-video-qxl
pkgver=0.1.4
-pkgrel=3.1
+pkgrel=6
pkgdesc='Xorg X11 qxl video driver'
arch=('x86_64' 'i686')
url='http://www.x.org'
license=('MIT')
groups=('xorg-drivers')
depends=('spice')
-optdepends=('python2: for Xspice')
-makedepends=('xorg-server-devel' 'X-ABI-VIDEODRV_VERSION=19' 'spice-protocol'
+optdepends_x86_64=('python2: for Xspice')
+makedepends=('xorg-server-devel' 'X-ABI-VIDEODRV_VERSION=20' 'spice-protocol'
'xf86dgaproto' 'xproto' 'fontsproto' 'randrproto' 'renderproto'
'videoproto' 'resourceproto' 'scrnsaverproto')
-conflicts=('xf86-video-qxl-git' 'X-ABI-VIDEODRV_VERSION<19' 'X-ABI-VIDEODRV_VERSION>=20')
-validpgpkeys=('94A9F75661F77A6168649B23A9D8C21429AC6C82')
-source=("http://xorg.freedesktop.org/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2"{,.sig}
- 'fix-cast.patch')
+conflicts=('xf86-video-qxl-git' 'X-ABI-VIDEODRV_VERSION<20' 'X-ABI-VIDEODRV_VERSION>=21')
+#validpgpkeys=('94A9F75661F77A6168649B23A9D8C21429AC6C82')
+source=("http://xorg.freedesktop.org/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2" #{,.sig}
+ '0002-kms-initialize-primary-surface-to-screen-virtual-siz.patch'
+ '0003-kms-do-not-overwrite-screen-virtualX-Y.patch'
+ '0004-Fix-drawable-mm_time-with-KMS.patch')
sha256sums=('e57ad22f0b1daf8979e722be0cc38d351bfcc2e41568edc566d2bade5a621105'
- 'SKIP'
- '30b09971562d82b5bc9dc26e43514ff38e5eaa680c15471194f07c9129e1e0ed')
+
+ '2bee0ec4dacbe1bfd996373701090696b3bfdfd00f347329a8bc5b20c6da8853'
+ '561dd6f41ccfdfdd666d631dd0dc66e8f671bff6191bad8359881e16d9a1d849'
+ 'b8ab4f53d367615bfb0b6297511e6aa7a83b4324de3c76aad558516da1b76f2f')
prepare() {
cd "${srcdir}/${pkgname}-${pkgver}/"
- # fix cast from pointer to integer of different size
- patch -Np1 < "${srcdir}/fix-cast.patch"
+ # fix Xorg 1.18
+ patch -Np1 < "${srcdir}"/0002-kms-initialize-primary-surface-to-screen-virtual-siz.patch
+ patch -Np1 < "${srcdir}"/0003-kms-do-not-overwrite-screen-virtualX-Y.patch
+ patch -Np1 < "${srcdir}"/0004-Fix-drawable-mm_time-with-KMS.patch
# this is python 2.x
sed -i '1c #!/usr/bin/python2' scripts/Xspice
@@ -37,9 +43,15 @@ prepare() {
build() {
cd "${srcdir}/${pkgname}-${pkgver}/"
- ./configure \
- --enable-xspice \
- --prefix=/usr
+ if [ "${CARCH}" = "x86_64" ]; then
+ ./configure \
+ --enable-xspice \
+ --prefix=/usr
+ else
+ ./configure \
+ --prefix=/usr
+ fi
+
make
}
@@ -47,5 +59,9 @@ package() {
cd "${srcdir}/${pkgname}-${pkgver}/"
make DESTDIR="${pkgdir}/" install
+
+ if [ "${CARCH}" = "x86_64" ]; then
+ install -v -D -m0755 scripts/Xspice "${pkgdir}"/usr/bin/Xspice
+ fi
}
diff --git a/pcr/xf86-video-qxl/fix-cast.patch b/pcr/xf86-video-qxl/fix-cast.patch
deleted file mode 100644
index 55f281f14..000000000
--- a/pcr/xf86-video-qxl/fix-cast.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/src/spiceqxl_display.c b/src/spiceqxl_display.c
-index a3a8978..748c2db 100644
---- a/src/spiceqxl_display.c
-+++ b/src/spiceqxl_display.c
-@@ -350,6 +350,6 @@ void qxl_add_spice_display_interface(qxl_screen_t *qxl)
-
- void spiceqxl_display_monitors_config(qxl_screen_t *qxl)
- {
-- spice_qxl_monitors_config_async(&qxl->display_sin, (QXLPHYSICAL)qxl->monitors_config,
-+ spice_qxl_monitors_config_async(&qxl->display_sin, qxl->monitors_config,
- MEMSLOT_GROUP, 0);
- }