diff --git a/0001-Revert-dri-fix-__DRI_IMAGE_FORMAT-to-PIPE_FORMAT-map.patch b/0001-Revert-dri-fix-__DRI_IMAGE_FORMAT-to-PIPE_FORMAT-map.patch new file mode 100644 index 0000000..cb45b1d --- /dev/null +++ b/0001-Revert-dri-fix-__DRI_IMAGE_FORMAT-to-PIPE_FORMAT-map.patch @@ -0,0 +1,59 @@ +From 102d282d8add081f5f1aab35974218f151744ac5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?= +Date: Mon, 23 Feb 2026 08:40:07 +0100 +Subject: [PATCH] Revert "dri: fix __DRI_IMAGE_FORMAT* to PIPE_FORMAT* + mappings" + +This reverts commit 2ae8d0362bec12e84f787f226d2ba7a18130084f. +--- + src/loader/loader_dri_helper.h | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) + +diff --git a/src/loader/loader_dri_helper.h b/src/loader/loader_dri_helper.h +index 169e36b5d80..0d801e99648 100644 +--- a/src/loader/loader_dri_helper.h ++++ b/src/loader/loader_dri_helper.h +@@ -61,8 +61,10 @@ struct loader_screen_resources { + + + /** +- * These formats are endian independent they result in the same layout +- * regradless of a big or little endian cpu. ++ * These formats correspond to the similarly named MESA_FORMAT_* ++ * tokens, except in the native endian of the CPU. For example, on ++ * little endian __DRI_IMAGE_FORMAT_XRGB8888 corresponds to ++ * MESA_FORMAT_XRGB8888, but MESA_FORMAT_XRGB8888_REV on big endian. + * + * __DRI_IMAGE_FORMAT_NONE is for images that aren't directly usable + * by the driver (YUV planar formats) but serve as a base image for +@@ -73,21 +75,21 @@ struct loader_screen_resources { + * createImageFromNames (NONE, see above) and fromPlane (R8 & GR88). + */ + #define __DRI_IMAGE_FORMAT_RGB565 PIPE_FORMAT_B5G6R5_UNORM +-#define __DRI_IMAGE_FORMAT_XRGB8888 PIPE_FORMAT_B8G8R8X8_UNORM +-#define __DRI_IMAGE_FORMAT_ARGB8888 PIPE_FORMAT_B8G8R8A8_UNORM +-#define __DRI_IMAGE_FORMAT_ABGR8888 PIPE_FORMAT_R8G8B8A8_UNORM +-#define __DRI_IMAGE_FORMAT_XBGR8888 PIPE_FORMAT_R8G8B8X8_UNORM ++#define __DRI_IMAGE_FORMAT_XRGB8888 PIPE_FORMAT_BGRX8888_UNORM ++#define __DRI_IMAGE_FORMAT_ARGB8888 PIPE_FORMAT_BGRA8888_UNORM ++#define __DRI_IMAGE_FORMAT_ABGR8888 PIPE_FORMAT_RGBA8888_UNORM ++#define __DRI_IMAGE_FORMAT_XBGR8888 PIPE_FORMAT_RGBX8888_UNORM + #define __DRI_IMAGE_FORMAT_RGB888 PIPE_FORMAT_B8G8R8_UNORM + #define __DRI_IMAGE_FORMAT_BGR888 PIPE_FORMAT_R8G8B8_UNORM + #define __DRI_IMAGE_FORMAT_R8 PIPE_FORMAT_R8_UNORM +-#define __DRI_IMAGE_FORMAT_GR88 PIPE_FORMAT_R8G8_UNORM ++#define __DRI_IMAGE_FORMAT_GR88 PIPE_FORMAT_RG88_UNORM + #define __DRI_IMAGE_FORMAT_NONE PIPE_FORMAT_NONE + #define __DRI_IMAGE_FORMAT_XRGB2101010 PIPE_FORMAT_B10G10R10X2_UNORM + #define __DRI_IMAGE_FORMAT_ARGB2101010 PIPE_FORMAT_B10G10R10A2_UNORM + #define __DRI_IMAGE_FORMAT_SARGB8 PIPE_FORMAT_BGRA8888_SRGB + #define __DRI_IMAGE_FORMAT_ARGB1555 PIPE_FORMAT_B5G5R5A1_UNORM + #define __DRI_IMAGE_FORMAT_R16 PIPE_FORMAT_R16_UNORM +-#define __DRI_IMAGE_FORMAT_GR1616 PIPE_FORMAT_R16G16_UNORM ++#define __DRI_IMAGE_FORMAT_GR1616 PIPE_FORMAT_RG1616_UNORM + #define __DRI_IMAGE_FORMAT_XBGR2101010 PIPE_FORMAT_R10G10B10X2_UNORM + #define __DRI_IMAGE_FORMAT_ABGR2101010 PIPE_FORMAT_R10G10B10A2_UNORM + #define __DRI_IMAGE_FORMAT_SABGR8 PIPE_FORMAT_RGBA8888_SRGB +-- +2.53.0 + diff --git a/0001-gallivm-handle-u16-correct-on-const-loads.patch b/0001-gallivm-handle-u16-correct-on-const-loads.patch new file mode 100644 index 0000000..9769f7a --- /dev/null +++ b/0001-gallivm-handle-u16-correct-on-const-loads.patch @@ -0,0 +1,36 @@ +From c016346b50e9085b531f9bcbd7cfd63d3806a3e1 Mon Sep 17 00:00:00 2001 +From: Dave Airlie +Date: Wed, 11 Feb 2026 05:47:57 +1000 +Subject: [PATCH] gallivm: handle u16 correct on const loads. + +I somehow screwed this up on my previous attempt at fixing this bug, + +This should fix the loop limiter bug on big endian properly. + +Reviewed-by: Georg Lehmann +Cc: mesa-stable +Fixes: e28cfb2bada2 ("gallivm: handle u8/u16 const loads properly on big-endian.") +Part-of: +--- + src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c | 5 +---- + 1 file changed, 1 insertion(+), 4 deletions(-) + +diff --git a/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c +index 770f1cc6592..e755225dce9 100644 +--- a/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c ++++ b/src/gallium/auxiliary/gallivm/lp_bld_nir_soa.c +@@ -1269,10 +1269,7 @@ emit_load_const(struct lp_build_nir_soa_context *bld, + + for (unsigned i = 0; i < instr->def.num_components; i++) { + outval[i] = lp_build_const_int_vec(bld->base.gallivm, int_bld->type, +- bits == 8 ? instr->value[i].u8 : +- bits == 16 ? instr->value[i].u32 : +- bits == 32 ? instr->value[i].u32 : +- instr->value[i].u64); ++ nir_const_value_as_uint(instr->value[i], bits)); + } + for (unsigned i = instr->def.num_components; i < NIR_MAX_VEC_COMPONENTS; i++) { + outval[i] = NULL; +-- +2.53.0 + diff --git a/mesa.spec b/mesa.spec index 864e5bd..d740f70 100644 --- a/mesa.spec +++ b/mesa.spec @@ -140,6 +140,11 @@ Source15: https://crates.io/api/v1/crates/rustc-hash/%{rustc_hash_ver}/dow Patch11: 0001-device-select-add-a-layer-setting-to-disable-device-.patch Patch12: 0002-zink-use-device-select-layer-settings-to-disable-dev.patch +# Fix s390x regressions: +# https://issues.redhat.com/browse/RHEL-144813 +Patch13: 0001-gallivm-handle-u16-correct-on-const-loads.patch +Patch14: 0001-Revert-dri-fix-__DRI_IMAGE_FORMAT-to-PIPE_FORMAT-map.patch + BuildRequires: meson BuildRequires: gcc BuildRequires: gcc-c++