diff options
Diffstat (limited to 'pcr')
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); - } |