From 95ce62727398655cd2adb598453a425ff2233d02 Mon Sep 17 00:00:00 2001 From: Olivier Fourdan Date: Jul 08 2019 10:04:15 +0000 Subject: Fix corruption with latest xserver Fixes: rhbz#1725499 --- diff --git a/0001-dri3-Always-flush-glamor-before-sharing-pixmap-stora.patch b/0001-dri3-Always-flush-glamor-before-sharing-pixmap-stora.patch new file mode 100644 index 0000000..6d00307 --- /dev/null +++ b/0001-dri3-Always-flush-glamor-before-sharing-pixmap-stora.patch @@ -0,0 +1,58 @@ +From f758908db4e71406e5d437d32e43aabd38a63504 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michel=20D=C3=A4nzer?= +Date: Thu, 9 May 2019 12:35:37 +0200 +Subject: [PATCH xf86-video-ati] dri3: Always flush glamor before sharing + pixmap storage with clients + +Even if glamor_gbm_bo_from_pixmap / glamor_fd_from_pixmap themselves +don't trigger any drawing, there could already be unflushed drawing to +the pixmap whose storage we share with a client. + +(Ported from amdgpu commit 4b17533fcb30842caf0035ba593b7d986520cc85) +Acked-by: Alex Deucher +--- + src/radeon_dri3.c | 26 +++++--------------------- + 1 file changed, 5 insertions(+), 21 deletions(-) + +diff --git a/src/radeon_dri3.c b/src/radeon_dri3.c +index 73353bf5..f8f91c4b 100644 +--- a/src/radeon_dri3.c ++++ b/src/radeon_dri3.c +@@ -220,29 +220,13 @@ static int radeon_dri3_fd_from_pixmap(ScreenPtr screen, + RADEONInfoPtr info = RADEONPTR(scrn); + + if (info->use_glamor) { +- Bool need_flush = TRUE; +- int ret = -1; +-#if XORG_VERSION_CURRENT >= XORG_VERSION_NUMERIC(1,19,99,904,0) +- struct gbm_bo *gbm_bo = glamor_gbm_bo_from_pixmap(screen, pixmap); ++ int ret = glamor_fd_from_pixmap(screen, pixmap, stride, size); + +- if (gbm_bo) { +- ret = gbm_bo_get_fd(gbm_bo); +- gbm_bo_destroy(gbm_bo); +- +- if (ret >= 0) +- need_flush = FALSE; +- } +-#endif +- +- if (ret < 0) +- ret = glamor_fd_from_pixmap(screen, pixmap, stride, size); +- +- /* glamor might have needed to reallocate the pixmap storage and +- * copy the pixmap contents to the new storage. The copy +- * operation needs to be flushed to the kernel driver before the +- * client starts using the pixmap storage for direct rendering. ++ /* Any pending drawing operations need to be flushed to the ++ * kernel driver before the client starts using the pixmap ++ * storage for direct rendering. + */ +- if (ret >= 0 && need_flush) ++ if (ret >= 0) + radeon_cs_flush_indirect(scrn); + + return ret; +-- +2.21.0 + diff --git a/xorg-x11-drv-ati.spec b/xorg-x11-drv-ati.spec index bd20cff..a19aa59 100644 --- a/xorg-x11-drv-ati.spec +++ b/xorg-x11-drv-ati.spec @@ -13,13 +13,15 @@ Summary: Xorg X11 ati video driver Name: xorg-x11-drv-ati Version: 19.0.1 -Release: 1%{?gver}%{?dist} +Release: 2%{?gver}%{?dist} URL: http://www.x.org License: MIT Source0: https://www.x.org/pub/individual/driver/%{tarball}-%{version}.tar.bz2 #Source0: %{tarball}-%{gitdate}.tar.xz +Patch1: 0001-dri3-Always-flush-glamor-before-sharing-pixmap-stora.patch + ExcludeArch: s390 s390x BuildRequires: xorg-x11-server-devel >= 1.10.99.902 @@ -40,6 +42,7 @@ X.Org X11 ati video driver. %prep %setup -q -n %{tarball}-%{?gitdate:%{gitdate}}%{?!gitdate:%{version}} +%patch1 -p1 -b .flush-glamor %build autoreconf -iv @@ -58,6 +61,9 @@ find $RPM_BUILD_ROOT -regex ".*\.la$" | xargs rm -f -- %{_datadir}/X11/xorg.conf.d/10-radeon.conf %changelog +* Fri Jul 5 2019 Olivier Fourdan - 19.0.1-2 +- Fix corruption with latest xserver (rhbz#1725499) + * Thu Mar 21 2019 Adam Jackson - 19.0.1-1 - ati 19.0.1