Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mesa: update to 24.3.1. #53470

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
181 changes: 181 additions & 0 deletions srcpkgs/mesa/patches/egl-implicit-modifiers-fixes.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
From 35852799aef8efdb4516c51913f86cd7d795a8d7 Mon Sep 17 00:00:00 2001
From: Simon Ser <[email protected]>
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 <[email protected]>
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 268ec3d86c8a3..e1f51619c5fa3 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;
--
GitLab


From 3c78ff12864e87d5a293cea55ebd1ae9ca3e6df0 Mon Sep 17 00:00:00 2001
From: Simon Ser <[email protected]>
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 <[email protected]>
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 513d2d0709b14..472665a36b0dd 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)
--
GitLab


From bf278ee26628898b674d86d39198babe0174f8bf Mon Sep 17 00:00:00 2001
From: Simon Ser <[email protected]>
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 <[email protected]>
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 472665a36b0dd..2406bc18b7448 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 ||
--
GitLab

7 changes: 3 additions & 4 deletions srcpkgs/mesa/template
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
# Template file for 'mesa'
pkgname=mesa
reverts="24.3.1_1"
version=24.2.8
version=24.3.1
revision=1

Check failure on line 4 in srcpkgs/mesa/template

View workflow job for this annotation

GitHub Actions / Lint templates

Template Lint

undo a revert with same revision as before
build_style=meson
_llvmver=19
#Disable LTO flag should be present, see https://gitlab.freedesktop.org/mesa/mesa/-/issues/6911
configure_args="-Dglvnd=true -Dshared-glapi=enabled -Dgbm=enabled -Degl=enabled
-Dosmesa=true -Dgles1=enabled -Dgles2=enabled -Dglx=dri -Ddri3=enabled
-Dosmesa=true -Dgles1=enabled -Dgles2=enabled -Dglx=dri
-Dlmsensors=enabled -Dplatforms=x11$(vopt_if wayland ,wayland)
-Dllvm=enabled -Db_lto=false -Dcpp_std=gnu++17"
hostmakedepends="gettext flex pkg-config python3-Mako glslang llvm${_llvmver}
Expand All @@ -25,7 +24,7 @@
homepage="https://www.mesa3d.org/"
changelog="https://docs.mesa3d.org/relnotes.html"
distfiles="https://mesa.freedesktop.org/archive/mesa-${version}.tar.xz"
checksum=999d0a854f43864fc098266aaf25600ce7961318a1e2e358bff94a7f53580e30
checksum=9c795900449ce5bc7c526ba0ab3532a22c3c951cab7e0dd9de5fcac41b0843af

build_helper="qemu"
build_options="wayland"
Expand Down
Loading