Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package Mesa for openSUSE:Factory checked in 
at 2024-12-10 23:43:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/Mesa (Old)
 and      /work/SRC/openSUSE:Factory/.Mesa.new.29675 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "Mesa"

Tue Dec 10 23:43:12 2024 rev:525 rq:1229753 version:unknown

Changes:
--------
--- /work/SRC/openSUSE:Factory/Mesa/Mesa.changes        2024-12-06 
14:25:05.841242091 +0100
+++ /work/SRC/openSUSE:Factory/.Mesa.new.29675/Mesa.changes     2024-12-10 
23:43:25.956304470 +0100
@@ -1,0 +2,21 @@
+Mon Dec  9 19:04:25 UTC 2024 - Stefan Dirsch <sndir...@suse.com>
+
+- aarch64: disable build of etnaviv driver on sle15-sp7 due to
+  python3-pycparser >= 2.20 not available
+
+-------------------------------------------------------------------
+Mon Dec  9 14:36:46 UTC 2024 - Stefan Dirsch <sndir...@suse.com>
+
+- don't apply patches of previous changelog for s390x; Mesa 24.1.7
+  doesn't suffer from this issue, only Mesa 24.3.1 ... 
+
+-------------------------------------------------------------------
+Sun Dec  8 21:58:37 UTC 2024 - Stefan Dirsch <sndir...@suse.com>
+
+- 0001-dri-don-t-fetch-X11-modifiers-if-we-don-t-support-th.patch
+  0002-egl-wayland-only-supply-LINEAR-modifier-when-support.patch
+  0003-egl-wayland-fallback-to-implicit-modifiers-if-advert.patch
+  * fixes mesa 24.3.1 gallium crash/segfault on GPUs without
+    format modifiers (mesa issue#12253, mesa MR#32535, boo#1234302)
+
+-------------------------------------------------------------------

New:
----
  0001-dri-don-t-fetch-X11-modifiers-if-we-don-t-support-th.patch
  0002-egl-wayland-only-supply-LINEAR-modifier-when-support.patch
  0003-egl-wayland-fallback-to-implicit-modifiers-if-advert.patch

BETA DEBUG BEGIN:
  New:
- 0001-dri-don-t-fetch-X11-modifiers-if-we-don-t-support-th.patch
  0002-egl-wayland-only-supply-LINEAR-modifier-when-support.patch
  New:- 0001-dri-don-t-fetch-X11-modifiers-if-we-don-t-support-th.patch
  0002-egl-wayland-only-supply-LINEAR-modifier-when-support.patch
  0003-egl-wayland-fallback-to-implicit-modifiers-if-advert.patch
  New:  0002-egl-wayland-only-supply-LINEAR-modifier-when-support.patch
  0003-egl-wayland-fallback-to-implicit-modifiers-if-advert.patch
  * fixes mesa 24.3.1 gallium crash/segfault on GPUs without
BETA DEBUG END:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ Mesa.spec ++++++
--- /var/tmp/diff_new_pack.wcEhDb/_old  2024-12-10 23:43:27.016348637 +0100
+++ /var/tmp/diff_new_pack.wcEhDb/_new  2024-12-10 23:43:27.020348803 +0100
@@ -202,6 +202,9 @@
 %else
 Patch500:       u_dep_xcb-s390x.patch
 %endif
+Patch501:       0001-dri-don-t-fetch-X11-modifiers-if-we-don-t-support-th.patch
+Patch502:       0002-egl-wayland-only-supply-LINEAR-modifier-when-support.patch
+Patch503:       0003-egl-wayland-fallback-to-implicit-modifiers-if-advert.patch
 %ifnarch s390x
 Patch1222040:   u_mesa-CVE-2023-45913.patch
 %else
@@ -292,8 +295,10 @@
 Provides:       libtxc_dxtn = %{version}
 Obsoletes:      libtxc_dxtn < %{version}
 %ifarch %{arm} aarch64
+%if 0%{?suse_version} >= 1550
 BuildRequires:  python3-pycparser >= 2.20
 BuildRequires:  pkgconfig(libdrm_etnaviv) >= 2.4.89
+%endif
 BuildRequires:  pkgconfig(libdrm_freedreno) >= 2.4.74
 BuildRequires:  pkgconfig(libelf)
 %endif
@@ -873,6 +878,11 @@
 %patch -P 100 -p1
 %patch -P 400 -p1
 %patch -P 500 -p1
+%ifnarch s390x
+%patch -P 501 -p1
+%patch -P 502 -p1
+%patch -P 503 -p1
+%endif
 %patch -P 1222040 -p1
 %patch -P 1222041 -p1
 %patch -P 1222042 -p1
@@ -966,7 +976,11 @@
             -Dgallium-d3d12-graphics=enabled \
   %else
   %ifarch %{arm} aarch64
+%if 0%{?suse_version} >= 1550
             
-Dgallium-drivers=r300,r600,radeonsi,nouveau,softpipe,llvmpipe,virgl,iris,freedreno,vc4,etnaviv,lima,panfrost,v3d,svga,tegra,zink
 \
+%else
+            
-Dgallium-drivers=r300,r600,radeonsi,nouveau,softpipe,llvmpipe,virgl,iris,freedreno,vc4,lima,panfrost,v3d,svga,tegra,zink
 \
+%endif
   %else
   %ifarch ppc64 ppc64le riscv64
             
-Dgallium-drivers=r300,r600,radeonsi,nouveau,softpipe,llvmpipe,virgl,iris,zink \

++++++ 0001-dri-don-t-fetch-X11-modifiers-if-we-don-t-support-th.patch ++++++
>From 35852799aef8efdb4516c51913f86cd7d795a8d7 Mon Sep 17 00:00:00 2001
From: Simon Ser <cont...@emersion.fr>
Date: Sat, 7 Dec 2024 13:10:04 +0100
Subject: [PATCH 1/3] dri: don't fetch X11 modifiers if we don't support them

If we supply modifiers to dri_create_image_with_modifiers() and
the driver doesn't support them, the function will fail. The X11
server always supports implicit modifiers so we can always fall
back to that.

Signed-off-by: Simon Ser <cont...@emersion.fr>
Fixes: 4c065158927d ("dri: revert INVALID modifier special-casing")
---
 src/gallium/frontends/dri/loader_dri3_helper.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/gallium/frontends/dri/loader_dri3_helper.c 
b/src/gallium/frontends/dri/loader_dri3_helper.c
index 268ec3d86c8..e1f51619c5f 100644
--- a/src/gallium/frontends/dri/loader_dri3_helper.c
+++ b/src/gallium/frontends/dri/loader_dri3_helper.c
@@ -36,9 +36,11 @@
 
 #include "loader_dri_helper.h"
 #include "loader_dri3_helper.h"
+#include "pipe/p_screen.h"
 #include "util/macros.h"
 #include "util/simple_mtx.h"
 #include "drm-uapi/drm_fourcc.h"
+#include "dri_screen.h"
 #include "dri_util.h"
 
 /**
@@ -1401,7 +1403,7 @@ dri3_alloc_render_buffer(struct loader_dri3_drawable 
*draw, unsigned int fourcc,
 
    if (draw->dri_screen_render_gpu == draw->dri_screen_display_gpu) {
 #ifdef HAVE_X11_DRM
-      if (draw->multiplanes_available) {
+      if (draw->multiplanes_available && 
draw->dri_screen_render_gpu->base.screen->resource_create_with_modifiers) {
          xcb_dri3_get_supported_modifiers_cookie_t mod_cookie;
          xcb_dri3_get_supported_modifiers_reply_t *mod_reply;
          xcb_generic_error_t *error = NULL;
-- 
2.43.0


++++++ 0002-egl-wayland-only-supply-LINEAR-modifier-when-support.patch ++++++
>From 3c78ff12864e87d5a293cea55ebd1ae9ca3e6df0 Mon Sep 17 00:00:00 2001
From: Simon Ser <cont...@emersion.fr>
Date: Sat, 7 Dec 2024 13:12:40 +0100
Subject: [PATCH 2/3] egl/wayland: only supply LINEAR modifier when supported

If we supply modifiers to dri_create_image_with_modifiers() and
the driver doesn't support them, the function will fail. We pass
__DRI_IMAGE_USE_LINEAR anyways so stripping the modifier is fine.

Signed-off-by: Simon Ser <cont...@emersion.fr>
Fixes: 4c065158927d ("dri: revert INVALID modifier special-casing")
---
 src/egl/drivers/dri2/platform_wayland.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/egl/drivers/dri2/platform_wayland.c 
b/src/egl/drivers/dri2/platform_wayland.c
index 513d2d0709b..472665a36b0 100644
--- a/src/egl/drivers/dri2/platform_wayland.c
+++ b/src/egl/drivers/dri2/platform_wayland.c
@@ -45,11 +45,13 @@
 #include "util/u_vector.h"
 #include "util/format/u_formats.h"
 #include "main/glconfig.h"
+#include "pipe/p_screen.h"
 #include "egl_dri2.h"
 #include "eglglobals.h"
 #include "kopper_interface.h"
 #include "loader.h"
 #include "loader_dri_helper.h"
+#include "dri_screen.h"
 #include "dri_util.h"
 #include <loader_wayland_helper.h>
 
@@ -1193,14 +1195,25 @@ get_back_bo(struct dri2_egl_surface *dri2_surf)
    if (dri2_dpy->fd_render_gpu != dri2_dpy->fd_display_gpu &&
        dri2_surf->back->linear_copy == NULL) {
       uint64_t linear_mod = DRM_FORMAT_MOD_LINEAR;
+      const uint64_t *render_modifiers = NULL, *display_modifiers = NULL;
+      unsigned int render_num_modifiers = 0, display_num_modifiers = 0;
       struct dri_image *linear_copy_display_gpu_image = NULL;
 
+      if 
(dri2_dpy->dri_screen_render_gpu->base.screen->resource_create_with_modifiers) {
+         render_modifiers = &linear_mod;
+         render_num_modifiers = 1;
+      }
+      if 
(dri2_dpy->dri_screen_display_gpu->base.screen->resource_create_with_modifiers) 
{
+         display_modifiers = &linear_mod;
+         display_num_modifiers = 1;
+      }
+
       if (dri2_dpy->dri_screen_display_gpu) {
          linear_copy_display_gpu_image = dri_create_image_with_modifiers(
             dri2_dpy->dri_screen_display_gpu,
             dri2_surf->base.Width, dri2_surf->base.Height,
             linear_pipe_format, use_flags | __DRI_IMAGE_USE_LINEAR,
-            &linear_mod, 1, NULL);
+            display_modifiers, display_num_modifiers, NULL);
 
          if (linear_copy_display_gpu_image) {
             int i, ret = 1;
@@ -1285,7 +1298,7 @@ get_back_bo(struct dri2_egl_surface *dri2_surf)
             dri2_dpy->dri_screen_render_gpu,
             dri2_surf->base.Width, dri2_surf->base.Height,
             linear_pipe_format, use_flags | __DRI_IMAGE_USE_LINEAR,
-            &linear_mod, 1, NULL);
+            render_modifiers, render_num_modifiers, NULL);
       }
 
       if (dri2_surf->back->linear_copy == NULL)
-- 
2.43.0


++++++ 0003-egl-wayland-fallback-to-implicit-modifiers-if-advert.patch ++++++
>From bf278ee26628898b674d86d39198babe0174f8bf Mon Sep 17 00:00:00 2001
From: Simon Ser <cont...@emersion.fr>
Date: Sat, 7 Dec 2024 13:15:57 +0100
Subject: [PATCH 3/3] egl/wayland: fallback to implicit modifiers if advertised
 by compositor

The Wayland protocol defines INVALID as a special marker indicating
that implicit modifiers are supported. If the driver doesn't support
explicit modifiers and the compositor advertises support for implicit
modifiers, fallback to these.

This effectively restores logic removed in 4c065158927d, but only
for the specific case of Wayland instead of affecting all APIs.
(Wayland is one of the few APIs defining a special meaning for
INVALID.)

Signed-off-by: Simon Ser <cont...@emersion.fr>
Fixes: 4c065158927d ("dri: revert INVALID modifier special-casing")
---
 src/egl/drivers/dri2/platform_wayland.c | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/src/egl/drivers/dri2/platform_wayland.c 
b/src/egl/drivers/dri2/platform_wayland.c
index 472665a36b0..2406bc18b74 100644
--- a/src/egl/drivers/dri2/platform_wayland.c
+++ b/src/egl/drivers/dri2/platform_wayland.c
@@ -1010,6 +1010,7 @@ create_dri_image(struct dri2_egl_surface *dri2_surf,
    uint64_t *modifiers;
    unsigned int num_modifiers;
    struct u_vector *modifiers_present;
+   bool implicit_mod_supported;
 
    assert(visual_idx != -1);
 
@@ -1049,6 +1050,25 @@ create_dri_image(struct dri2_egl_surface *dri2_surf,
       num_modifiers = u_vector_length(modifiers_present);
    }
 
+   if 
(!dri2_dpy->dri_screen_render_gpu->base.screen->resource_create_with_modifiers) 
{
+      /* We don't support explicit modifiers, check if the compositor supports
+       * implicit modifiers. */
+      implicit_mod_supported = false;
+      for (unsigned int i = 0; i < num_modifiers; i++) {
+         if (modifiers[i] == DRM_FORMAT_MOD_INVALID) {
+            implicit_mod_supported = true;
+            break;
+         }
+      }
+
+      if (!implicit_mod_supported) {
+         return;
+      }
+
+      num_modifiers = 0;
+      modifiers = NULL;
+   }
+
    /* For the purposes of this function, an INVALID modifier on
     * its own means the modifiers aren't supported. */
    if (num_modifiers == 0 ||
-- 
2.43.0

Reply via email to