[packages/Mesa] up to 23.1.3

atler atler at pld-linux.org
Thu Jun 22 19:41:17 CEST 2023


commit 75196731370b301c7e7541f68e3a1551d1e50041
Author: Jan Palus <atler at pld-linux.org>
Date:   Thu Jun 22 19:16:05 2023 +0200

    up to 23.1.3
    
    - add patch fixing memory leak on mode change when using panfrost driver
      from: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23746

 Mesa.spec               |  6 ++--
 panfrost-mem-leak.patch | 76 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 80 insertions(+), 2 deletions(-)
---
diff --git a/Mesa.spec b/Mesa.spec
index b719028..3cb7410 100644
--- a/Mesa.spec
+++ b/Mesa.spec
@@ -73,14 +73,15 @@
 Summary:	Free OpenGL implementation
 Summary(pl.UTF-8):	Wolnodostępna implementacja standardu OpenGL
 Name:		Mesa
-Version:	23.1.2
+Version:	23.1.3
 Release:	1
 License:	MIT (core) and others - see license.html file
 Group:		X11/Libraries
 #Source0:	ftp://ftp.freedesktop.org/pub/mesa/mesa-%{version}.tar.xz
 ## Source0-md5:	7c61a801311fb8d2f7b3cceb7b5cf308
 Source0:	https://archive.mesa3d.org/mesa-%{version}.tar.xz
-# Source0-md5:	0e9859110df4425e83186e0645452daa
+# Source0-md5:	0dce0342dbf08dc5afbaf51e729da1a1
+Patch0:		panfrost-mem-leak.patch
 URL:		https://www.mesa3d.org/
 %if %{with opencl_spirv} || %{with gallium_rusticl}
 BuildRequires:	SPIRV-LLVM-Translator-devel >= 8.0.1.3
@@ -1441,6 +1442,7 @@ radv - eksperymentalny sterownik Vulkan dla GPU firmy AMD.
 
 %prep
 %setup -q -n mesa-%{version}
+%patch0 -p1
 
 %build
 %if %{with opencl}
diff --git a/panfrost-mem-leak.patch b/panfrost-mem-leak.patch
new file mode 100644
index 0000000..fe286e2
--- /dev/null
+++ b/panfrost-mem-leak.patch
@@ -0,0 +1,76 @@
+From 88c6429e4babcb00eb4d324089e4a6916d0a62aa Mon Sep 17 00:00:00 2001
+From: Robert Beckett <bob.beckett at collabora.com>
+Date: Wed, 26 Apr 2023 13:28:40 +0100
+Subject: [PATCH] panfrost: fix scanout buffer alloc
+
+Use ro->bo_map to alloc scanout.
+This fixes leaking the scanout.
+
+Fixes: ad4d7ca83324 ("kmsro: Fix renderonly_scanout BO aliasing")
+Signed-off-by: Robert Beckett <bob.beckett at collabora.com>
+Cc: mesa-stable
+---
+ .../winsys/panfrost/drm/panfrost_drm_winsys.c | 25 +++++++++++--------
+ 1 file changed, 14 insertions(+), 11 deletions(-)
+
+diff --git a/src/gallium/winsys/panfrost/drm/panfrost_drm_winsys.c b/src/gallium/winsys/panfrost/drm/panfrost_drm_winsys.c
+index b5ec50d49ef0e..2710217a5b44e 100644
+--- a/src/gallium/winsys/panfrost/drm/panfrost_drm_winsys.c
++++ b/src/gallium/winsys/panfrost/drm/panfrost_drm_winsys.c
+@@ -63,26 +63,32 @@ panfrost_create_kms_dumb_buffer_for_resource(struct pipe_resource *rsc,
+    };
+    struct drm_mode_destroy_dumb destroy_dumb = {0};
+ 
+-   /* Align width to end up with a buffer that's aligned on 64 bytes. */
+-
+-   struct renderonly_scanout *scanout = CALLOC_STRUCT(renderonly_scanout);
+-   if (!scanout)
+-      return NULL;
+-
+    /* create dumb buffer at scanout GPU */
+    int err = drmIoctl(ro->kms_fd, DRM_IOCTL_MODE_CREATE_DUMB, &create_dumb);
+    if (err < 0) {
+       fprintf(stderr, "DRM_IOCTL_MODE_CREATE_DUMB failed: %s\n",
+               strerror(errno));
+-      goto free_scanout;
++      return NULL;
+    }
+ 
+    if (create_dumb.pitch % 64)
+       goto free_dumb;
+ 
++   struct renderonly_scanout *scanout;
++
++   simple_mtx_lock(&ro->bo_map_lock);
++   scanout = util_sparse_array_get(&ro->bo_map, create_dumb.handle);
++   simple_mtx_unlock(&ro->bo_map_lock);
++
++   if (!scanout)
++      goto free_dumb;
++
+    scanout->handle = create_dumb.handle;
+    scanout->stride = create_dumb.pitch;
+ 
++   assert(p_atomic_read(&scanout->refcnt) == 0);
++   p_atomic_set(&scanout->refcnt, 1);
++
+    if (!out_handle)
+       return scanout;
+ 
+@@ -101,12 +107,9 @@ panfrost_create_kms_dumb_buffer_for_resource(struct pipe_resource *rsc,
+    return scanout;
+ 
+ free_dumb:
+-   destroy_dumb.handle = scanout->handle;
++   destroy_dumb.handle = create_dumb.handle;
+    drmIoctl(ro->kms_fd, DRM_IOCTL_MODE_DESTROY_DUMB, &destroy_dumb);
+ 
+-free_scanout:
+-   FREE(scanout);
+-
+    return NULL;
+ }
+ 
+-- 
+GitLab
+
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/Mesa.git/commitdiff/75196731370b301c7e7541f68e3a1551d1e50041



More information about the pld-cvs-commit mailing list