#4 ati 19.1.0
Merged 4 years ago by ofourdan. Opened 4 years ago by mdaenzer.
rpms/ mdaenzer/xorg-x11-drv-ati master  into  master

file modified
+1
@@ -37,3 +37,4 @@ 

  /xf86-video-ati-18.0.1.tar.bz2

  /xf86-video-ati-18.1.0.tar.bz2

  /xf86-video-ati-19.0.1.tar.bz2

+ /xf86-video-ati-19.1.0.tar.bz2

@@ -0,0 +1,33 @@ 

+ From 4d84cf438e7f1bebf0053035ef0292e9fed257d1 Mon Sep 17 00:00:00 2001

+ From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <mdaenzer@redhat.com>

+ Date: Fri, 29 Nov 2019 16:37:32 +0100

+ Subject: [PATCH 1/2] Handle NULL fb_ptr in pixmap_get_fb

+ MIME-Version: 1.0

+ Content-Type: text/plain; charset=UTF-8

+ Content-Transfer-Encoding: 8bit

+ 

+ This can happen when HW acceleration is disabled.

+ 

+ Fixes https://gitlab.freedesktop.org/xorg/driver/xf86-video-ati/issues/188

+ 

+ Signed-off-by: Michel Dänzer <mdaenzer@redhat.com>

+ ---

+  src/radeon.h | 2 +-

+  1 file changed, 1 insertion(+), 1 deletion(-)

+ 

+ diff --git a/src/radeon.h b/src/radeon.h

+ index 2c913466..8e964805 100644

+ --- a/src/radeon.h

+ +++ b/src/radeon.h

+ @@ -896,7 +896,7 @@ radeon_pixmap_get_fb(PixmapPtr pix)

+  				   handle);

+      }

+  

+ -    return *fb_ptr;

+ +    return fb_ptr ? *fb_ptr : NULL;

+  }

+  

+  

+ -- 

+ 2.26.2

+ 

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

- 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

- 

@@ -0,0 +1,72 @@ 

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

+ From: Alexey Sheplyakov <asheplyakov@altlinux.org>

+ Date: Wed, 27 Nov 2019 20:50:58 +0400

+ Subject: [PATCH 2/2] Don't crash X server if GPU acceleration is not available

+ MIME-Version: 1.0

+ Content-Type: text/plain; charset=UTF-8

+ Content-Transfer-Encoding: 8bit

+ 

+ Commit d1d8e3c8d0a0a0394d395eba171460501745209b causes X server

+ to fail on startup when GPU acceleration is not working (or is

+ disabled). The reason is that `radeon_get_pixmap_bo` function

+ gets called too early (before EXA has been initialized) and

+ fails with an assert:

+ 

+  #0  __GI_raise (sig=<optimized out>) at ../sysdeps/unix/sysv/linux/raise.c:50

+  #1  0x76ab1c6c in __GI_abort () at abort.c:79

+  #2  0x76ac0b64 in __assert_fail_base (fmt=0x76bfbce4 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=0x7658c80c "key->initialized", file=<optimized out>, line=121,

+      function=0x7658d040 <__PRETTY_FUNCTION__.10607> "dixGetPrivateAddr") at assert.c:92

+  #3  0x76ac0c0c in __GI___assert_fail (assertion=0x7658c80c "key->initialized", file=0x7658c9d0 "../include/privates.h", line=121,

+      function=0x7658d040 <__PRETTY_FUNCTION__.10607> "dixGetPrivateAddr") at assert.c:101

+  #4  0x76579e6c in dixGetPrivateAddr (key=<optimized out>, key=<optimized out>, privates=<optimized out>) at ../include/privates.h:121

+  #5  0x7657a954 in dixGetPrivateAddr (key=<optimized out>, key=<optimized out>, privates=<optimized out>) at exa.c:70

+  #6  dixGetPrivate (key=<optimized out>, privates=<optimized out>) at ../include/privates.h:136

+  #7  exaGetPixmapDriverPrivate (pPix=<optimized out>) at exa.c:68

+  #8  0x7623d460 in radeon_get_pixmap_bo (pPix=0x71c1b8) at radeon.h:804

+  #9  radeon_get_pixmap_handle (pixmap=0x71c1b8, handle=0x7fa22328) at radeon_bo_helper.c:357

+  #10 0x76244458 in radeon_pixmap_get_fb (pix=0x71c1b8) at radeon.h:886

+  #11 drmmode_set_mode_major (crtc=0x691860, mode=0x69191c, rotation=<optimized out>, x=<optimized out>, y=<optimized out>) at drmmode_display.c:918

+  #12 0x762467e8 in drmmode_set_desired_modes (pScrn=0x67c678, drmmode=<optimized out>, set_hw=1) at drmmode_display.c:3128

+  #13 0x0047bfa4 in MapWindow (client=0x669ec8, pWin=0x7206c0) at window.c:2722

+  #14 MapWindow (pWin=0x7206c0, client=0x669ec8) at window.c:2665

+  #15 0x00449650 in dix_main (argc=3, argv=0x7fa22604, envp=<optimized out>) at main.c:247

+  #16 0x76ab2198 in __libc_start_main (main=0x42db10 <main>, argc=3, argv=0x7fa22604, init=<optimized out>, fini=0x606434 <__libc_csu_fini>, rtld_fini=0x77229930 <_dl_fini>,

+      stack_end=0x7fa225e0) at libc-start.c:308

+  #17 0x0042db80 in __start () at ../sysdeps/mips/start.S:110

+ 

+ Don't call `exaGetPixmapDriverPrivate` if the acceleration (EXA) is not

+ enabled [yet] to avoid the problem.

+ 

+ Closes: https://gitlab.freedesktop.org/xorg/driver/xf86-video-ati/issues/188

+ Closes: https://bugzilla.altlinux.org/show_bug.cgi?id=37539

+ Signed-off-by: Michel Dänzer <mdaenzer@redhat.com>

+ ---

+  src/radeon.h | 4 ++--

+  1 file changed, 2 insertions(+), 2 deletions(-)

+ 

+ diff --git a/src/radeon.h b/src/radeon.h

+ index 8e964805..e4a2ba66 100644

+ --- a/src/radeon.h

+ +++ b/src/radeon.h

+ @@ -790,8 +790,8 @@ static inline Bool radeon_set_pixmap_bo(PixmapPtr pPix, struct radeon_buffer *bo

+  

+  static inline struct radeon_buffer *radeon_get_pixmap_bo(PixmapPtr pPix)

+  {

+ -#ifdef USE_GLAMOR

+      RADEONInfoPtr info = RADEONPTR(xf86ScreenToScrn(pPix->drawable.pScreen));

+ +#ifdef USE_GLAMOR

+  

+      if (info->use_glamor) {

+  	struct radeon_pixmap *priv;

+ @@ -799,7 +799,7 @@ static inline struct radeon_buffer *radeon_get_pixmap_bo(PixmapPtr pPix)

+  	return priv ? priv->bo : NULL;

+      } else

+  #endif

+ -    {

+ +    if (info->accelOn) {

+  	struct radeon_exa_pixmap_priv *driver_priv;

+  	driver_priv = exaGetPixmapDriverPrivate(pPix);

+  	return driver_priv ? driver_priv->bo : NULL;

+ -- 

+ 2.26.2

+ 

file modified
+1 -1
@@ -1,1 +1,1 @@ 

- SHA512 (xf86-video-ati-19.0.1.tar.bz2) = e04c5395e3a49d81b8f7a4b0e11fe8c9ebd17af056a4eab4541873796dce05b103c93fb185f3a00873010df0655cd7311e6d27e177aeb7345c4c8017bbd1eb17

+ SHA512 (xf86-video-ati-19.1.0.tar.bz2) = 73a81f6c492daf2e89067fb52b3033dc0fe6841f109627ddca1aee54a45a738c8c134443753a2a2aaa2c131e1d560057ebc76351ff2304c16407df3ff568fcd6

file modified
+16 -6
@@ -12,16 +12,17 @@ 

  

  Summary:   Xorg X11 ati video driver

  Name:      xorg-x11-drv-ati

- Version:   19.0.1

- Release:   5%{?gver}%{?dist}

+ Version:   19.1.0

+ Release:   1%{?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

- Patch2:    0001-Fix-link-failure-with-gcc-10.patch

+ Patch1:    0001-Fix-link-failure-with-gcc-10.patch

+ Patch2:    0001-Handle-NULL-fb_ptr-in-pixmap_get_fb.patch

+ Patch3:    0002-Don-t-crash-X-server-if-GPU-acceleration-is-not-avai.patch

  

  ExcludeArch: s390 s390x

  
@@ -43,8 +44,9 @@ 

  

  %prep

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

- %patch1 -p1 -b .flush-glamor

- %patch2 -p1 -b .gcc10

+ %patch1 -p1 -b .gcc10

+ %patch2 -p1 -b .null-fb_ptr

+ %patch3 -p1 -b .shadowfb-crash-fix

  

  %build

  autoreconf -iv
@@ -63,6 +65,14 @@ 

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

  

  %changelog

+ * Tue May 26 2020 Michel Dänzer <mdaenzer@redhat.com> - 19.1.0-1

+ - ati 19.1.0

+ - Drop patch 0001-dri3-Always-flush-glamor-before-sharing-pixmap-stora.patch,

+   merged upstream

+ - Add patches 0001-Handle-NULL-fb_ptr-in-pixmap_get_fb.patch &

+   0002-Don-t-crash-X-server-if-GPU-acceleration-is-not-avai.patch from

+   upstream Git master, fixing crashes with ShadowFB

+ 

  * Thu Feb 06 2020 Adam Jackson <ajax@redhat.com> - 19.0.1-5

  - Fix link error with gcc 10

  

Drop patch 0001-dri3-Always-flush-glamor-before-sharing-pixmap-stora.patch,
merged upstream.

Add patches 0001-Handle-NULL-fb_ptr-in-pixmap_get_fb.patch &
0002-Don-t-crash-X-server-if-GPU-acceleration-is-not-avai.patch from
upstream Git master, fixing crashes with ShadowFB.

rebased onto 2ba9dec

4 years ago

Pull-Request has been merged by ofourdan

4 years ago