#2 Fix corruption with latest xserver
Merged 4 years ago by ajax. Opened 4 years ago by ofourdan.
rpms/ ofourdan/xorg-x11-drv-ati master  into  master

@@ -0,0 +1,58 @@ 

+ From f758908db4e71406e5d437d32e43aabd38a63504 Mon Sep 17 00:00:00 2001

+ From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <michel.daenzer@amd.com>

+ 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 <alexander.deucher@amd.com>

+ ---

+  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

+ 

file modified
+7 -1
@@ -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 @@ 

  

  %prep

  %setup -q -n %{tarball}-%{?gitdate:%{gitdate}}%{?!gitdate:%{version}}

+ %patch1 -p1 -b .flush-glamor

  

  %build

  autoreconf -iv
@@ -58,6 +61,9 @@ 

  %{_datadir}/X11/xorg.conf.d/10-radeon.conf

  

  %changelog

+ * Fri Jul  5 2019 Olivier Fourdan <ofourdan@redhat.com> - 19.0.1-2

+ - Fix corruption with latest xserver (rhbz#1725499)

+ 

  * Thu Mar 21 2019 Adam Jackson <ajax@redhat.com> - 19.0.1-1

  - ati 19.0.1

  

Pull-Request has been merged by ajax

4 years ago