Accepting request 1234954 from X11:XOrg

- Update to release 24.3.3
  --> https://docs.mesa3d.org/relnotes/24.3.3

- Update to release 24.3.2
  --> https://docs.mesa3d.org/relnotes/24.3.2
- supersedes the following patches:
  * 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

OBS-URL: https://build.opensuse.org/request/show/1234954
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/Mesa?expand=0&rev=527
This commit is contained in:
Ana Guerrero 2025-01-06 15:04:36 +00:00 committed by Git OBS Bridge
commit b1b4a7a066
9 changed files with 25 additions and 196 deletions

View File

@ -1,44 +0,0 @@
From 35852799aef8efdb4516c51913f86cd7d795a8d7 Mon Sep 17 00:00:00 2001
From: Simon Ser <contact@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 <contact@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

View File

@ -1,72 +0,0 @@
From 3c78ff12864e87d5a293cea55ebd1ae9ca3e6df0 Mon Sep 17 00:00:00 2001
From: Simon Ser <contact@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 <contact@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

View File

@ -1,63 +0,0 @@
From bf278ee26628898b674d86d39198babe0174f8bf Mon Sep 17 00:00:00 2001
From: Simon Ser <contact@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 <contact@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

View File

@ -1,3 +1,19 @@
-------------------------------------------------------------------
Sat Jan 4 20:46:28 UTC 2025 - Stefan Dirsch <sndirsch@suse.com>
- Update to release 24.3.3
--> https://docs.mesa3d.org/relnotes/24.3.3
-------------------------------------------------------------------
Sat Jan 4 20:08:17 UTC 2025 - Stefan Dirsch <sndirsch@suse.com>
- Update to release 24.3.2
--> https://docs.mesa3d.org/relnotes/24.3.2
- supersedes the following patches:
* 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
-------------------------------------------------------------------
Thu Dec 12 19:59:52 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>

View File

@ -1,7 +1,7 @@
#
# spec file
# spec file for package Mesa
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2025 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -43,7 +43,7 @@
%define glamor 1
%define _name_archive mesa
%ifnarch s390x
%define _version 24.3.1
%define _version 24.3.3
%else
%define _version 24.1.7
%endif
@ -150,7 +150,7 @@
Name: Mesa%{psuffix}
%ifnarch s390x
Version: 24.3.1
Version: 24.3.3
%else
Version: 24.1.7
%endif
@ -181,8 +181,8 @@ Source9: manual-pages.tar.bz2
Source10: Mesa-rpmlintrc
Source11: Mesa.keyring
Source12: README-suse-maintenance.md
Source20: https://archive.mesa3d.org/%{_name_archive}-24.3.1.tar.xz
Source21: https://archive.mesa3d.org/%{_name_archive}-24.3.1.tar.xz.sig
Source20: https://archive.mesa3d.org/%{_name_archive}-24.3.3.tar.xz
Source21: https://archive.mesa3d.org/%{_name_archive}-24.3.3.tar.xz.sig
Patch2: n_add-Mesa-headers-again.patch
Patch11: u_0001-intel-genxml-Drop-from-__future__-import-annotations.patch
Patch12: u_0002-intel-genxml-Add-a-untyped-OrderedDict-fallback-for-.patch
@ -202,9 +202,6 @@ Patch500: u_dep_xcb.patch
%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
@ -878,11 +875,6 @@ cp %{SOURCE6} subprojects/packagecache/
%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

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9c795900449ce5bc7c526ba0ab3532a22c3c951cab7e0dd9de5fcac41b0843af
size 30611028

Binary file not shown.

3
mesa-24.3.3.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:105afc00a4496fa4d29da74e227085544919ec7c86bd92b0b6e7fcc32c7125f4
size 30657916

BIN
mesa-24.3.3.tar.xz.sig Normal file

Binary file not shown.