Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package Mesa for openSUSE:Factory checked in at 2026-10-18 22:54:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/Mesa (Old) and /work/SRC/openSUSE:Factory/.Mesa.new.3698736 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "Mesa" Sun Oct 18 22:54:13 2026 rev:591 rq:1385476 version:26.2.5 Changes: -------- --- /work/SRC/openSUSE:Factory/Mesa/Mesa.changes 2026-10-02 23:02:49.920007634 +0200 +++ /work/SRC/openSUSE:Factory/.Mesa.new.3698736/Mesa.changes 2026-10-18 22:54:33.964243884 +0200 @@ -1,0 +2,22 @@ +Sat Oct 17 11:56:57 UTC 2026 - Stefan Dirsch <[email protected]> + +- Mesa-libRusticlOpenCL: no longer require libclc(llvmN); see + changes during update of libclc to version 23.1.0 ... + +------------------------------------------------------------------- +Fri Oct 16 07:41:39 UTC 2026 - Stefan Dirsch <[email protected]> + +- Update to 26.2.5 bugfix release + --> https://docs.mesa3d.org/relnotes/26.2.5 + +------------------------------------------------------------------- +Thu Oct 15 21:10:24 UTC 2026 - Aaron Puchert <[email protected]> + +- Add n_hardcode-libclc-path.patch to work around missing libclc.pc + with libclc 23. Upstream might solve this via config option. +- Downport upstream patches so that we find newer libclc files: + * U_nir-load_libclc-do-not-compare-sys_path-against-NULL.patch + * U_nir-load_libclc-turn-sys_path-into-an-array.patch + * U_nir-load_libclc-add-llvm-23-libclc-paths.patch + +------------------------------------------------------------------- Old: ---- mesa-26.2.4.tar.xz mesa-26.2.4.tar.xz.sig New: ---- U_nir-load_libclc-add-llvm-23-libclc-paths.patch U_nir-load_libclc-do-not-compare-sys_path-against-NULL.patch U_nir-load_libclc-turn-sys_path-into-an-array.patch mesa-26.2.5.tar.xz mesa-26.2.5.tar.xz.sig n_hardcode-libclc-path.patch ----------(New B)---------- New: * U_nir-load_libclc-turn-sys_path-into-an-array.patch * U_nir-load_libclc-add-llvm-23-libclc-paths.patch New:- Downport upstream patches so that we find newer libclc files: * U_nir-load_libclc-do-not-compare-sys_path-against-NULL.patch * U_nir-load_libclc-turn-sys_path-into-an-array.patch New: * U_nir-load_libclc-do-not-compare-sys_path-against-NULL.patch * U_nir-load_libclc-turn-sys_path-into-an-array.patch * U_nir-load_libclc-add-llvm-23-libclc-paths.patch New: - Add n_hardcode-libclc-path.patch to work around missing libclc.pc with libclc 23. Upstream might solve this via config option. ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ Mesa.spec ++++++ --- /var/tmp/diff_new_pack.lBhoNu/_old 2026-10-18 22:54:39.383470741 +0200 +++ /var/tmp/diff_new_pack.lBhoNu/_new 2026-10-18 22:54:39.385470825 +0200 @@ -151,9 +151,9 @@ %endif Name: Mesa%{psuffix} -Version: 26.2.4 +Version: 26.2.5 Release: 0 -%define pkg_version 26.2.4 +%define pkg_version 26.2.5 Summary: System for rendering 3-D graphics License: MIT Group: System/Libraries @@ -184,6 +184,10 @@ # download with 'osc service runall download_files'; github tarballs have different checksums! Source22: http://static.crates.io/crates/rustc-hash/rustc-hash-%{_rustc_hash_crate_ver}.crate#/rustc-hash-%{_rustc_hash_crate_ver}.tar.gz Patch2: n_add-Mesa-headers-again.patch +Patch3: n_hardcode-libclc-path.patch +Patch4: U_nir-load_libclc-do-not-compare-sys_path-against-NULL.patch +Patch5: U_nir-load_libclc-turn-sys_path-into-an-array.patch +Patch6: U_nir-load_libclc-add-llvm-23-libclc-paths.patch Patch17: tlsdesc_test.patch # never to be upstreamed Patch54: n_drirc-disable-rgb10-for-chromium-on-amd.patch @@ -615,11 +619,7 @@ %package -n Mesa-libRusticlOpenCL Summary: Mesa OpenCL implementation (Rusticl) Group: System/Libraries -%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150300 -Requires: libclc(llvm%{_llvm_sonum}) -%else Requires: libclc -%endif %description -n Mesa-libRusticlOpenCL This package contains the Mesa Rust-written OpenCL implementation. @@ -789,6 +789,10 @@ %if %provide_gl_headers_for_mesa == 0 %patch -P 2 -p1 %endif +%patch -P 3 -p1 +%patch -P 4 -p1 +%patch -P 5 -p1 +%patch -P 6 -p1 %patch -P 17 -p1 # no longer needed since gstreamer-plugins-vaapi 1.18.4 %if 0%{?suse_version} < 1550 ++++++ U_nir-load_libclc-add-llvm-23-libclc-paths.patch ++++++ >From 6b9cd5ab9cc3bfd0c79d9500a07a5e74351c72d1 Mon Sep 17 00:00:00 2001 From: Karol Herbst <[email protected]> Date: Tue, 22 Sep 2026 14:13:28 +0200 Subject: [PATCH 3/3] nir/load_libclc: add llvm-23 libclc paths Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/44624> --- src/compiler/clc/nir_load_libclc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/compiler/clc/nir_load_libclc.c b/src/compiler/clc/nir_load_libclc.c index 17b901db47c..889bde610a3 100644 --- a/src/compiler/clc/nir_load_libclc.c +++ b/src/compiler/clc/nir_load_libclc.c @@ -52,7 +52,7 @@ struct clc_file { unsigned bit_size; const char *static_data; size_t static_data_size; - const char *sys_paths[1]; + const char *sys_paths[2]; }; static const struct clc_file libclc_files[] = { @@ -65,6 +65,7 @@ static const struct clc_file libclc_files[] = { #ifdef DYNAMIC_LIBCLC_PATH .sys_paths = { DYNAMIC_LIBCLC_PATH "spirv-mesa3d-.spv", + DYNAMIC_LIBCLC_PATH "spirv32-unknown-unknown/libclc.spv", }, #endif }, @@ -77,6 +78,7 @@ static const struct clc_file libclc_files[] = { #ifdef DYNAMIC_LIBCLC_PATH .sys_paths = { DYNAMIC_LIBCLC_PATH "spirv64-mesa3d-.spv", + DYNAMIC_LIBCLC_PATH "spirv64-unknown-unknown/libclc.spv", }, #endif }, -- 2.55.0 ++++++ U_nir-load_libclc-do-not-compare-sys_path-against-NULL.patch ++++++ >From 1219dc3f7fe83b1f7f200190bf02a86ab57b3d4f Mon Sep 17 00:00:00 2001 From: Karol Herbst <[email protected]> Date: Tue, 22 Sep 2026 13:53:43 +0200 Subject: [PATCH 1/3] nir/load_libclc: do not compare sys_path against NULL sys_path will become an array and the NULL checks were all a bit awkward because all the code was already guarded with DYNAMIC_LIBCLC_PATH anyway and most likely constant folded away. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/44624> --- src/compiler/clc/nir_load_libclc.c | 76 ++++++++++++++---------------- 1 file changed, 35 insertions(+), 41 deletions(-) diff --git a/src/compiler/clc/nir_load_libclc.c b/src/compiler/clc/nir_load_libclc.c index edcd13b3b26..913dd8ff7a7 100644 --- a/src/compiler/clc/nir_load_libclc.c +++ b/src/compiler/clc/nir_load_libclc.c @@ -145,20 +145,18 @@ map_clc_data(struct clc_data *clc) } #ifdef DYNAMIC_LIBCLC_PATH - if (clc->file->sys_path != NULL) { - if (clc->size % SPIRV_WORD_SIZE != 0) { - fprintf(stderr, "File length isn't a multiple of the word size\n"); - return false; - } - - clc->data = mmap(NULL, clc->size, PROT_READ, MAP_PRIVATE, clc->fd, 0); - if (clc->data == MAP_FAILED) { - fprintf(stderr, "Failed to mmap libclc SPIR-V: %m\n"); - return false; - } + if (clc->size % SPIRV_WORD_SIZE != 0) { + fprintf(stderr, "File length isn't a multiple of the word size\n"); + return false; + } - return true; + clc->data = mmap(NULL, clc->size, PROT_READ, MAP_PRIVATE, clc->fd, 0); + if (clc->data == MAP_FAILED) { + fprintf(stderr, "Failed to mmap libclc SPIR-V: %m\n"); + return false; } + + return true; #endif return true; @@ -175,12 +173,10 @@ close_clc_data(struct clc_data *clc) } #ifdef DYNAMIC_LIBCLC_PATH - if (clc->file->sys_path != NULL) { - if (clc->data) - munmap((void *)clc->data, clc->size); - clc->data = NULL; - close(clc->fd); - } + if (clc->data) + munmap((void *)clc->data, clc->size); + clc->data = NULL; + close(clc->fd); #endif } @@ -198,34 +194,32 @@ open_clc_data(struct clc_data *clc, unsigned ptr_bit_size) } #ifdef DYNAMIC_LIBCLC_PATH - if (clc->file->sys_path != NULL) { - int fd = open(clc->file->sys_path, O_RDONLY); - if (fd < 0) - return false; + int fd = open(clc->file->sys_path, O_RDONLY); + if (fd < 0) + return false; - struct stat stat; - int ret = fstat(fd, &stat); - if (ret < 0) { - fprintf(stderr, "fstat failed on %s: %m\n", clc->file->sys_path); - close(fd); - return false; - } + struct stat stat; + int ret = fstat(fd, &stat); + if (ret < 0) { + fprintf(stderr, "fstat failed on %s: %m\n", clc->file->sys_path); + close(fd); + return false; + } - clc->fd = fd; - clc->size = stat.st_size; + clc->fd = fd; + clc->size = stat.st_size; - if (!map_clc_data(clc)) { - close_clc_data(clc); - return false; - } + if (!map_clc_data(clc)) { + close_clc_data(clc); + return false; + } - blake3_hasher ctx; - _mesa_blake3_init(&ctx); - _mesa_blake3_update(&ctx, clc->data, clc->size); - _mesa_blake3_final(&ctx, clc->cache_key); + blake3_hasher ctx; + _mesa_blake3_init(&ctx); + _mesa_blake3_update(&ctx, clc->data, clc->size); + _mesa_blake3_final(&ctx, clc->cache_key); - return true; - } + return true; #endif return false; -- 2.55.0 ++++++ U_nir-load_libclc-turn-sys_path-into-an-array.patch ++++++ >From 62ee563fd398169005906245831db680f813b19f Mon Sep 17 00:00:00 2001 From: Karol Herbst <[email protected]> Date: Tue, 22 Sep 2026 14:11:09 +0200 Subject: [PATCH 2/3] nir/load_libclc: turn sys_path into an array Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/44624> --- src/compiler/clc/nir_load_libclc.c | 55 +++++++++++++++++------------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/src/compiler/clc/nir_load_libclc.c b/src/compiler/clc/nir_load_libclc.c index 913dd8ff7a7..17b901db47c 100644 --- a/src/compiler/clc/nir_load_libclc.c +++ b/src/compiler/clc/nir_load_libclc.c @@ -52,7 +52,7 @@ struct clc_file { unsigned bit_size; const char *static_data; size_t static_data_size; - const char *sys_path; + const char *sys_paths[1]; }; static const struct clc_file libclc_files[] = { @@ -63,7 +63,9 @@ static const struct clc_file libclc_files[] = { .static_data_size = sizeof(libclc_spirv_mesa3d_spv), #endif #ifdef DYNAMIC_LIBCLC_PATH - .sys_path = DYNAMIC_LIBCLC_PATH "spirv-mesa3d-.spv", + .sys_paths = { + DYNAMIC_LIBCLC_PATH "spirv-mesa3d-.spv", + }, #endif }, { @@ -73,7 +75,9 @@ static const struct clc_file libclc_files[] = { .static_data_size = sizeof(libclc_spirv64_mesa3d_spv), #endif #ifdef DYNAMIC_LIBCLC_PATH - .sys_path = DYNAMIC_LIBCLC_PATH "spirv64-mesa3d-.spv", + .sys_paths = { + DYNAMIC_LIBCLC_PATH "spirv64-mesa3d-.spv", + }, #endif }, }; @@ -194,32 +198,35 @@ open_clc_data(struct clc_data *clc, unsigned ptr_bit_size) } #ifdef DYNAMIC_LIBCLC_PATH - int fd = open(clc->file->sys_path, O_RDONLY); - if (fd < 0) - return false; + for (unsigned i = 0; i < ARRAY_SIZE(clc->file->sys_paths); i++) { + const char *sys_path = clc->file->sys_paths[i]; + int fd = open(sys_path, O_RDONLY); + if (fd < 0) + continue; - struct stat stat; - int ret = fstat(fd, &stat); - if (ret < 0) { - fprintf(stderr, "fstat failed on %s: %m\n", clc->file->sys_path); - close(fd); - return false; - } + struct stat stat; + int ret = fstat(fd, &stat); + if (ret < 0) { + fprintf(stderr, "fstat failed on %s: %m\n", sys_path); + close(fd); + continue; + } - clc->fd = fd; - clc->size = stat.st_size; + clc->fd = fd; + clc->size = stat.st_size; - if (!map_clc_data(clc)) { - close_clc_data(clc); - return false; - } + if (!map_clc_data(clc)) { + close_clc_data(clc); + continue; + } - blake3_hasher ctx; - _mesa_blake3_init(&ctx); - _mesa_blake3_update(&ctx, clc->data, clc->size); - _mesa_blake3_final(&ctx, clc->cache_key); + blake3_hasher ctx; + _mesa_blake3_init(&ctx); + _mesa_blake3_update(&ctx, clc->data, clc->size); + _mesa_blake3_final(&ctx, clc->cache_key); - return true; + return true; + } #endif return false; -- 2.55.0 ++++++ mesa-26.2.4.tar.xz -> mesa-26.2.5.tar.xz ++++++ /work/SRC/openSUSE:Factory/Mesa/mesa-26.2.4.tar.xz /work/SRC/openSUSE:Factory/.Mesa.new.3698736/mesa-26.2.5.tar.xz differ: char 27, line 1 ++++++ n_hardcode-libclc-path.patch ++++++ libclc 23 removed libclc.pc, so we hardcode the path for now. diff --git a/meson.build b/meson.build index ee207a97e7a..72030fb67b5 100644 --- a/meson.build +++ b/meson.build @@ -1048,17 +1048,6 @@ with_poly = [ with_kosmickrisp_vk, ].contains(true) -dep_clc = null_dep -if with_gallium_rusticl or with_microsoft_clc - dep_clc = dependency('mesa-libclc', required : false, - not_found_message : - 'mesa-libclc not found. Build will fall back to upstream libclc, however ' + - 'this is not recommended for most use cases.') - if not dep_clc.found() - dep_clc = dependency('libclc') - endif -endif - with_gfx_compute = [ with_any_opengl, with_any_vk, diff --git a/src/compiler/clc/meson.build b/src/compiler/clc/meson.build index 249fd31f478..e86da476cca 100644 --- a/src/compiler/clc/meson.build +++ b/src/compiler/clc/meson.build @@ -40,10 +40,10 @@ if not _shared_llvm or \ _libmesaclc_cpp_args += ['-DUSE_STATIC_OPENCL_C_H=1'] endif -if dep_clc.found() +if true files_libmesaclc += 'nir_load_libclc.c' - _basedir = dep_clc.get_variable(pkgconfig : 'libexecdir') + _basedir = '/usr/share/clc' _static_libclc = get_option('static-libclc') if _static_libclc.length() > 0
