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:
commit
b1b4a7a066
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
16
Mesa.changes
16
Mesa.changes
@ -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>
|
||||
|
||||
|
20
Mesa.spec
20
Mesa.spec
@ -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
|
||||
|
@ -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
3
mesa-24.3.3.tar.xz
Normal 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
BIN
mesa-24.3.3.tar.xz.sig
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user