[arch-commits] Commit in mesa/trunk (6 files)

Laurent Carlier lcarlier at archlinux.org
Sat Jan 27 05:51:56 UTC 2018


    Date: Saturday, January 27, 2018 @ 05:51:47
  Author: lcarlier
Revision: 315482

upgpkg: mesa 17.3.3-2

fix FS#57199

Added:
  mesa/trunk/0001-glvnd-fix-gl-dot-pc.patch
    (from rev 315481, mesa/trunk/0002-glvnd-fix-gl-dot-pc.patch)
  mesa/trunk/0001-radeon-vcn-add-and-manage-render-picture-list.patch
  mesa/trunk/0002-radeon-uvd-add-and-manage-render-picture-list.patch
  mesa/trunk/winsys-radeon-Compute-is_displayable-in-surf_drm_to_winsys.patch
Modified:
  mesa/trunk/PKGBUILD
Deleted:
  mesa/trunk/0002-glvnd-fix-gl-dot-pc.patch

------------------------------------------------------------------+
 0001-glvnd-fix-gl-dot-pc.patch                                   |   12 +
 0001-radeon-vcn-add-and-manage-render-picture-list.patch         |   95 +++++++++
 0002-glvnd-fix-gl-dot-pc.patch                                   |   12 -
 0002-radeon-uvd-add-and-manage-render-picture-list.patch         |   96 ++++++++++
 PKGBUILD                                                         |   19 +
 winsys-radeon-Compute-is_displayable-in-surf_drm_to_winsys.patch |   14 +
 6 files changed, 232 insertions(+), 16 deletions(-)

Copied: mesa/trunk/0001-glvnd-fix-gl-dot-pc.patch (from rev 315481, mesa/trunk/0002-glvnd-fix-gl-dot-pc.patch)
===================================================================
--- 0001-glvnd-fix-gl-dot-pc.patch	                        (rev 0)
+++ 0001-glvnd-fix-gl-dot-pc.patch	2018-01-27 05:51:47 UTC (rev 315482)
@@ -0,0 +1,12 @@
+diff -up mesa-12.0.3/src/mesa/gl.pc.in.jx mesa-12.0.3/src/mesa/gl.pc.in
+--- mesa-12.0.3/src/mesa/gl.pc.in.jx	2016-01-18 02:39:26.000000000 -0500
++++ mesa-12.0.3/src/mesa/gl.pc.in	2016-10-25 13:06:44.013159358 -0400
+@@ -7,7 +7,7 @@ Name: gl
+ Description: Mesa OpenGL library
+ Requires.private: @GL_PC_REQ_PRIV@
+ Version: @PACKAGE_VERSION@
+-Libs: -L${libdir} -l at GL_LIB@
++Libs: -L${libdir} -lGL
+ Libs.private: @GL_PC_LIB_PRIV@
+ Cflags: -I${includedir} @GL_PC_CFLAGS@
+ glx_tls: @GLX_TLS@

Added: 0001-radeon-vcn-add-and-manage-render-picture-list.patch
===================================================================
--- 0001-radeon-vcn-add-and-manage-render-picture-list.patch	                        (rev 0)
+++ 0001-radeon-vcn-add-and-manage-render-picture-list.patch	2018-01-27 05:51:47 UTC (rev 315482)
@@ -0,0 +1,95 @@
+From: Boyuan Zhang <boyuan.zhang at amd.com>
+
+Create a list in decoder to store all render picture buffer pointers that
+currently being used in reference picture lists.
+
+During get message buffer call, check each pointer in render_pic_list[]
+within given pic->ref[] list, remove pointer that no longer being used by
+pic->ref[]. Then add current render surface pointer to the render_pic_list[]
+and assign the associated index to result.curr_idx.
+
+As a result, result.curr_idx will have the correct index to represent the
+current render picture, instead of the previous increamenting values.
+
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104745
+
+Signed-off-by: Boyuan Zhang <boyuan.zhang at amd.com>
+Reviewed-by: Christian König <christian.koenig at amd.com>
+Cc: mesa-stable at lists.freedesktop.org
+(cherry picked from commit f2bfd1cbb7e72945ca192845a1ad28426c7aea89)
+---
+ src/gallium/drivers/radeon/radeon_vcn_dec.c | 28 ++++++++++++++++++++++++----
+ 1 file changed, 24 insertions(+), 4 deletions(-)
+
+diff --git a/src/gallium/drivers/radeon/radeon_vcn_dec.c b/src/gallium/drivers/radeon/radeon_vcn_dec.c
+index 2ece4a3..8010010 100644
+--- a/src/gallium/drivers/radeon/radeon_vcn_dec.c
++++ b/src/gallium/drivers/radeon/radeon_vcn_dec.c
+@@ -78,6 +78,7 @@ struct radeon_decoder {
+ 
+ 	unsigned			bs_size;
+ 	unsigned			cur_buffer;
++	void				*render_pic_list[16];
+ };
+ 
+ static rvcn_dec_message_avc_t get_h264_msg(struct radeon_decoder *dec,
+@@ -186,7 +187,7 @@ static rvcn_dec_message_hevc_t get_h265_msg(struct radeon_decoder *dec,
+ 					struct pipe_h265_picture_desc *pic)
+ {
+ 	rvcn_dec_message_hevc_t result;
+-	unsigned i;
++	unsigned i, j;
+ 
+ 	memset(&result, 0, sizeof(result));
+ 	result.sps_info_flags = 0;
+@@ -273,11 +274,28 @@ static rvcn_dec_message_hevc_t get_h265_msg(struct radeon_decoder *dec,
+ 		result.row_height_minus1[i] = pic->pps->row_height_minus1[i];
+ 
+ 	result.num_delta_pocs_ref_rps_idx = pic->NumDeltaPocsOfRefRpsIdx;
+-	result.curr_idx = pic->CurrPicOrderCntVal;
+ 	result.curr_poc = pic->CurrPicOrderCntVal;
+ 
++	for (i = 0 ; i < 16 ; i++) {
++		for (j = 0; (pic->ref[j] != NULL) && (j < 16) ; j++) {
++			if (dec->render_pic_list[i] == pic->ref[j])
++				break;
++			if (j == 15)
++				dec->render_pic_list[i] = NULL;
++			else if (pic->ref[j+1] == NULL)
++				dec->render_pic_list[i] = NULL;
++		}
++	}
++	for (i = 0 ; i < 16 ; i++) {
++		if (dec->render_pic_list[i] == NULL) {
++			dec->render_pic_list[i] = target;
++			result.curr_idx = i;
++			break;
++		}
++	}
++
+ 	vl_video_buffer_set_associated_data(target, &dec->base,
+-					    (void *)(uintptr_t)pic->CurrPicOrderCntVal,
++					    (void *)(uintptr_t)result.curr_idx,
+ 					    &radeon_dec_destroy_associated_data);
+ 
+ 	for (i = 0; i < 16; ++i) {
+@@ -320,7 +338,7 @@ static rvcn_dec_message_hevc_t get_h265_msg(struct radeon_decoder *dec,
+ 	memcpy(dec->it + 864, pic->pps->sps->ScalingList32x32, 2 * 64);
+ 
+ 	for (i = 0 ; i < 2 ; i++) {
+-		for (int j = 0 ; j < 15 ; j++)
++		for (j = 0 ; j < 15 ; j++)
+ 			result.direct_reflist[i][j] = pic->RefPicList[i][j];
+ 	}
+ 
+@@ -1236,6 +1254,8 @@ struct pipe_video_codec *radeon_create_decoder(struct pipe_context *context,
+ 		goto error;
+ 	}
+ 
++	for (i = 0; i < 16; i++)
++		dec->render_pic_list[i] = NULL;
+ 	bs_buf_size = width * height * (512 / (16 * 16));
+ 	for (i = 0; i < NUM_BUFFERS; ++i) {
+ 		unsigned msg_fb_it_size = FB_BUFFER_OFFSET + FB_BUFFER_SIZE;
+-- 
+2.7.4

Deleted: 0002-glvnd-fix-gl-dot-pc.patch
===================================================================
--- 0002-glvnd-fix-gl-dot-pc.patch	2018-01-26 18:58:21 UTC (rev 315481)
+++ 0002-glvnd-fix-gl-dot-pc.patch	2018-01-27 05:51:47 UTC (rev 315482)
@@ -1,12 +0,0 @@
-diff -up mesa-12.0.3/src/mesa/gl.pc.in.jx mesa-12.0.3/src/mesa/gl.pc.in
---- mesa-12.0.3/src/mesa/gl.pc.in.jx	2016-01-18 02:39:26.000000000 -0500
-+++ mesa-12.0.3/src/mesa/gl.pc.in	2016-10-25 13:06:44.013159358 -0400
-@@ -7,7 +7,7 @@ Name: gl
- Description: Mesa OpenGL library
- Requires.private: @GL_PC_REQ_PRIV@
- Version: @PACKAGE_VERSION@
--Libs: -L${libdir} -l at GL_LIB@
-+Libs: -L${libdir} -lGL
- Libs.private: @GL_PC_LIB_PRIV@
- Cflags: -I${includedir} @GL_PC_CFLAGS@
- glx_tls: @GLX_TLS@

Added: 0002-radeon-uvd-add-and-manage-render-picture-list.patch
===================================================================
--- 0002-radeon-uvd-add-and-manage-render-picture-list.patch	                        (rev 0)
+++ 0002-radeon-uvd-add-and-manage-render-picture-list.patch	2018-01-27 05:51:47 UTC (rev 315482)
@@ -0,0 +1,96 @@
+From: Boyuan Zhang <boyuan.zhang at amd.com>
+
+Create a list in decoder to store all render picture buffer pointers that
+currently being used in reference picture lists.
+
+During get message buffer call, check each pointer in render_pic_list[]
+within given pic->ref[] list, remove pointer that no longer being used by
+pic->ref[]. Then add current render surface pointer to the render_pic_list[]
+and assign the associated index to result.curr_idx.
+
+As a result, result.curr_idx will have the correct index to represent the
+current render picture, instead of the previous increamenting values.
+
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=104745
+
+Signed-off-by: Boyuan Zhang <boyuan.zhang at amd.com>
+Reviewed-by: Christian König <christian.koenig at amd.com>
+Cc: mesa-stable at lists.freedesktop.org
+(cherry picked from commit 2ec48039b8aa1f6a5e16f3f12483b88981d0f5d3)
+---
+ src/gallium/drivers/radeon/radeon_uvd.c | 29 +++++++++++++++++++++++++----
+ 1 file changed, 25 insertions(+), 4 deletions(-)
+
+diff --git a/src/gallium/drivers/radeon/radeon_uvd.c b/src/gallium/drivers/radeon/radeon_uvd.c
+index 032ed7c..87e7858 100644
+--- a/src/gallium/drivers/radeon/radeon_uvd.c
++++ b/src/gallium/drivers/radeon/radeon_uvd.c
+@@ -97,6 +97,8 @@ struct ruvd_decoder {
+ 		unsigned		cmd;
+ 		unsigned		cntl;
+ 	} reg;
++
++	void				*render_pic_list[16];
+ };
+ 
+ /* flush IB to the hardware */
+@@ -596,7 +598,7 @@ static struct ruvd_h265 get_h265_msg(struct ruvd_decoder *dec, struct pipe_video
+ 				     struct pipe_h265_picture_desc *pic)
+ {
+ 	struct ruvd_h265 result;
+-	unsigned i;
++	unsigned i, j;
+ 
+ 	memset(&result, 0, sizeof(result));
+ 
+@@ -676,11 +678,28 @@ static struct ruvd_h265 get_h265_msg(struct ruvd_decoder *dec, struct pipe_video
+ 		result.row_height_minus1[i] = pic->pps->row_height_minus1[i];
+ 
+ 	result.num_delta_pocs_ref_rps_idx = pic->NumDeltaPocsOfRefRpsIdx;
+-	result.curr_idx = pic->CurrPicOrderCntVal;
+ 	result.curr_poc = pic->CurrPicOrderCntVal;
+ 
++	for (i = 0 ; i < 16 ; i++) {
++		for (j = 0; (pic->ref[j] != NULL) && (j < 16) ; j++) {
++			if (dec->render_pic_list[i] == pic->ref[j])
++				break;
++			if (j == 15)
++				dec->render_pic_list[i] = NULL;
++			else if (pic->ref[j+1] == NULL)
++				dec->render_pic_list[i] = NULL;
++		}
++	}
++	for (i = 0 ; i < 16 ; i++) {
++		if (dec->render_pic_list[i] == NULL) {
++			dec->render_pic_list[i] = target;
++			result.curr_idx = i;
++			break;
++		}
++	}
++
+ 	vl_video_buffer_set_associated_data(target, &dec->base,
+-					    (void *)(uintptr_t)pic->CurrPicOrderCntVal,
++					    (void *)(uintptr_t)result.curr_idx,
+ 					    &ruvd_destroy_associated_data);
+ 
+ 	for (i = 0; i < 16; ++i) {
+@@ -723,7 +742,7 @@ static struct ruvd_h265 get_h265_msg(struct ruvd_decoder *dec, struct pipe_video
+ 	memcpy(dec->it + 864, pic->pps->sps->ScalingList32x32, 2 * 64);
+ 
+ 	for (i = 0 ; i < 2 ; i++) {
+-		for (int j = 0 ; j < 15 ; j++)
++		for (j = 0 ; j < 15 ; j++)
+ 			result.direct_reflist[i][j] = pic->RefPicList[i][j];
+ 	}
+ 
+@@ -1407,6 +1426,8 @@ struct pipe_video_codec *si_common_uvd_create_decoder(struct pipe_context *conte
+ 		goto error;
+ 	}
+ 
++	for (i = 0; i < 16; i++)
++		 dec->render_pic_list[i] = NULL;
+ 	dec->fb_size = (info.family == CHIP_TONGA) ? FB_BUFFER_SIZE_TONGA :
+ 			FB_BUFFER_SIZE;
+ 	bs_buf_size = width * height * (512 / (16 * 16));
+-- 
+2.7.4

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2018-01-26 18:58:21 UTC (rev 315481)
+++ PKGBUILD	2018-01-27 05:51:47 UTC (rev 315482)
@@ -5,7 +5,7 @@
 pkgbase=mesa
 pkgname=('opencl-mesa' 'vulkan-intel' 'vulkan-radeon' 'libva-mesa-driver' 'mesa-vdpau' 'mesa')
 pkgver=17.3.3
-pkgrel=1
+pkgrel=2
 arch=('x86_64')
 makedepends=('python2-mako' 'libxml2' 'libx11' 'glproto' 'libdrm' 'dri2proto' 'dri3proto' 'presentproto' 
              'libxshmfence' 'libxxf86vm' 'libxdamage' 'libvdpau' 'libva' 'wayland' 'wayland-protocols'
@@ -14,11 +14,17 @@
 license=('custom')
 source=(https://mesa.freedesktop.org/archive/mesa-${pkgver}.tar.xz{,.sig}
         LICENSE
-        0002-glvnd-fix-gl-dot-pc.patch)
+        0001-glvnd-fix-gl-dot-pc.patch
+        0001-radeon-vcn-add-and-manage-render-picture-list.patch
+	0002-radeon-uvd-add-and-manage-render-picture-list.patch
+        winsys-radeon-Compute-is_displayable-in-surf_drm_to_winsys.patch)
 sha256sums=('41bac5de0ef6adc1f41a1ec0f80c19e361298ce02fa81b5f9ba4fdca33a9379b'
             'SKIP'
             '7fdc119cf53c8ca65396ea73f6d10af641ba41ea1dd2bd44a824726e01c8b3f2'
-            '64a77944a28026b066c1682c7258d02289d257b24b6f173a9f7580c48beed966')
+            '64a77944a28026b066c1682c7258d02289d257b24b6f173a9f7580c48beed966'
+            '96ed41a77b397577c27bee4ecb1faad82aa3eeeb09252ce2256ff9fff6545bd4'
+            '9bd66588f8f0d21ea3207b7c75c491a273db16d12f9fde0c66f69bdf6f66dff1'
+            'a4f56b8812c35bb36600255dab0de8030402860165cadc4f3118a4c12333120f')
 validpgpkeys=('8703B6700E7EE06D7A39B8D6EDAE37B02CEB490D') # Emil Velikov <emil.l.velikov at gmail.com>
 validpgpkeys+=('946D09B5E4C9845E63075FF1D961C596A7203456') # Andres Gomez <tanty at igalia.com>
 validpgpkeys+=('E3E8F480C52ADD73B278EE78E1ECBE07D7D70895') # Juan Antonio Suárez Romero (Igalia, S.L.) <jasuarez at igalia.com>"
@@ -28,8 +34,13 @@
 
   # glvnd support patches - from Fedora
   # non-upstreamed ones
-  patch -Np1 -i ../0002-glvnd-fix-gl-dot-pc.patch
+  patch -Np1 -i ../0001-glvnd-fix-gl-dot-pc.patch
   
+  # fix FS#57199 - [mesa-vdpau] [linux-firmware] AMD polaris firmware update breaks VDPAU without Mesa patch
+  patch -Np1 -i ../0001-radeon-vcn-add-and-manage-render-picture-list.patch
+  patch -Np1 -i ../0002-radeon-uvd-add-and-manage-render-picture-list.patch
+  # fix FS#56881 - [xorg-server-xwayland] cannot run firefox/chromium ?
+  patch -Np1 -i ../winsys-radeon-Compute-is_displayable-in-surf_drm_to_winsys.patch 
   autoreconf -fiv
 }
 

Added: winsys-radeon-Compute-is_displayable-in-surf_drm_to_winsys.patch
===================================================================
--- winsys-radeon-Compute-is_displayable-in-surf_drm_to_winsys.patch	                        (rev 0)
+++ winsys-radeon-Compute-is_displayable-in-surf_drm_to_winsys.patch	2018-01-27 05:51:47 UTC (rev 315482)
@@ -0,0 +1,14 @@
+diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_surface.c b/src/gallium/winsys/radeon/drm/radeon_drm_surface.c
+index 5ee01ff90f9..77fb7757c20 100644
+--- a/src/gallium/winsys/radeon/drm/radeon_drm_surface.c
++++ b/src/gallium/winsys/radeon/drm/radeon_drm_surface.c
+@@ -215,6 +215,9 @@ static void surf_drm_to_winsys(struct radeon_drm_winsys *ws,
+     }
+ 
+     set_micro_tile_mode(surf_ws, &ws->info);
++    surf_ws->is_displayable = surf_ws->is_linear ||
++			      surf_ws->micro_tile_mode == RADEON_MICRO_MODE_DISPLAY ||
++			      surf_ws->micro_tile_mode == RADEON_MICRO_MODE_ROTATED;
+ }
+ 
+ static int radeon_winsys_surface_init(struct radeon_winsys *rws,



More information about the arch-commits mailing list