* [PATCH 1/3] mesa: Upgrade to 26.1.5
@ 2026-07-18 5:05 Zoltán Böszörményi
2026-07-18 5:05 ` [PATCH 2/3] mesa-libclc: New recipe for forking libclc for Rusticl purposes in Mesa Zoltán Böszörményi
2026-07-18 5:05 ` [PATCH 3/3] mesa, mesa-tools-native: Use mesa-libclc Zoltán Böszörményi
0 siblings, 2 replies; 3+ messages in thread
From: Zoltán Böszörményi @ 2026-07-18 5:05 UTC (permalink / raw)
To: openembedded-core; +Cc: Zoltán Böszörményi
See the announcement:
https://lists.freedesktop.org/archives/mesa-dev/2026-July/226671.html
Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
---
meta/recipes-graphics/mesa/mesa.inc | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc
index bb071e2411..15d56c804d 100644
--- a/meta/recipes-graphics/mesa/mesa.inc
+++ b/meta/recipes-graphics/mesa/mesa.inc
@@ -23,8 +23,8 @@ SRC_URI = "https://archive.mesa3d.org/mesa-${PV}.tar.xz \
file://0001-src-util-u_math.c-do-not-use-arm-fpu-instructions-if.patch \
"
-SRC_URI[sha256sum] = "072705caa9adf4740f1489194b13e278ad959166863b5271fe423a86353c9ab6"
-PV = "26.1.4"
+SRC_URI[sha256sum] = "79e421c7ce18cd9e790b8375920325779f10798630bf30e0b22f1a21c8617122"
+PV = "26.1.5"
UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)"
--
2.55.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/3] mesa-libclc: New recipe for forking libclc for Rusticl purposes in Mesa
2026-07-18 5:05 [PATCH 1/3] mesa: Upgrade to 26.1.5 Zoltán Böszörményi
@ 2026-07-18 5:05 ` Zoltán Böszörményi
2026-07-18 5:05 ` [PATCH 3/3] mesa, mesa-tools-native: Use mesa-libclc Zoltán Böszörményi
1 sibling, 0 replies; 3+ messages in thread
From: Zoltán Böszörményi @ 2026-07-18 5:05 UTC (permalink / raw)
To: openembedded-core; +Cc: Zoltán Böszörményi
See the reasoning and discussion at
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/43020
TL;DR: LLVM constantly introduces breaking changes that cause
regressions for running OpenCL CTS with Rusticl and finally
Karol Herbst had enough.
This fork is from the LLVM 22 version of libclc and contains the
necessary fixes to make Rusticl pass OpenCL CTS.
Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
---
meta/recipes-graphics/mesa/mesa-libclc_git.bb | 27 +++++++++++++++++++
1 file changed, 27 insertions(+)
create mode 100644 meta/recipes-graphics/mesa/mesa-libclc_git.bb
diff --git a/meta/recipes-graphics/mesa/mesa-libclc_git.bb b/meta/recipes-graphics/mesa/mesa-libclc_git.bb
new file mode 100644
index 0000000000..8a3a78d051
--- /dev/null
+++ b/meta/recipes-graphics/mesa/mesa-libclc_git.bb
@@ -0,0 +1,27 @@
+SUMMARY = "Mesa fork of libclc: Implementation of the library requirements of the OpenCL C programming language."
+HOMEPAGE = "https://gitlab.freedesktop.org/karolherbst/mesa-libclc/"
+SECTION = "devel"
+LICENSE = "Apache-2.0-with-LLVM-exception"
+LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=7cc795f6cbb2d801d84336b83c8017db"
+
+SRC_URI = "git://gitlab.freedesktop.org/karolherbst/mesa-libclc.git;protocol=https;branch=llvm_22"
+
+SRCREV = "b1934c37694714352edc19232e23480feaf18ab4"
+PV = "0.1.0"
+
+inherit cmake pkgconfig
+
+# Depend explicitly on clang-native instead of using TOOLCHAIN as the build
+# objects from this recipe are build explicitly using clang for GPU targets.
+# We could INHIBIT_DEFAULT_DEPS to avoid any other toolchain but then we need
+# to wrestle CMake to configure without a toolchain.
+DEPENDS += "clang-native spirv-llvm-translator-native"
+
+# Semicolon-separated list of targets to build
+LIBCLC_TARGETS ?= "all"
+
+EXTRA_OECMAKE += "-DLIBCLC_TARGETS_TO_BUILD='${LIBCLC_TARGETS}'"
+
+FILES:${PN} += "${datadir}/mesa-clc"
+
+BBCLASSEXTEND = "native nativesdk"
--
2.55.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 3/3] mesa, mesa-tools-native: Use mesa-libclc
2026-07-18 5:05 [PATCH 1/3] mesa: Upgrade to 26.1.5 Zoltán Böszörményi
2026-07-18 5:05 ` [PATCH 2/3] mesa-libclc: New recipe for forking libclc for Rusticl purposes in Mesa Zoltán Böszörményi
@ 2026-07-18 5:05 ` Zoltán Böszörményi
1 sibling, 0 replies; 3+ messages in thread
From: Zoltán Böszörményi @ 2026-07-18 5:05 UTC (permalink / raw)
To: openembedded-core; +Cc: Zoltán Böszörményi
Backport two patches from
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/43020
to use mesa-libclc, which makes Rusticl's OpenCL C more correct.
Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
---
...-optional-for-configs-not-needing-it.patch | 123 ++++++++++++++++++
...lc-use-our-downstream-fork-of-libclc.patch | 43 ++++++
.../mesa/mesa-tools-native.bb | 2 +-
meta/recipes-graphics/mesa/mesa.inc | 6 +-
4 files changed, 171 insertions(+), 3 deletions(-)
create mode 100644 meta/recipes-graphics/mesa/files/0001-clc-make-libclc-optional-for-configs-not-needing-it.patch
create mode 100644 meta/recipes-graphics/mesa/files/0002-clc-use-our-downstream-fork-of-libclc.patch
diff --git a/meta/recipes-graphics/mesa/files/0001-clc-make-libclc-optional-for-configs-not-needing-it.patch b/meta/recipes-graphics/mesa/files/0001-clc-make-libclc-optional-for-configs-not-needing-it.patch
new file mode 100644
index 0000000000..a52931dbf5
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/0001-clc-make-libclc-optional-for-configs-not-needing-it.patch
@@ -0,0 +1,123 @@
+From 5df2fb59c32fd6e3ad53bdaf98afccfddbdd14fc Mon Sep 17 00:00:00 2001
+From: Karol Herbst <kherbst@redhat.com>
+Date: Fri, 17 Jul 2026 17:45:45 +0200
+Subject: [PATCH 1/2] clc: make libclc optional for configs not needing it
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/43020]
+---
+ meson.build | 2 +-
+ src/compiler/clc/meson.build | 73 +++++++++++++++++++-----------------
+ 2 files changed, 39 insertions(+), 36 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 1eca91fc940..68bbb942b99 100644
+--- a/meson.build
++++ b/meson.build
+@@ -949,7 +949,7 @@ with_poly = [
+ ].contains(true)
+
+ dep_clc = null_dep
+-if with_clc
++if with_gallium_rusticl or with_microsoft_clc
+ dep_clc = dependency('libclc')
+ endif
+
+diff --git a/src/compiler/clc/meson.build b/src/compiler/clc/meson.build
+index 9ff61440f0d..249fd31f478 100644
+--- a/src/compiler/clc/meson.build
++++ b/src/compiler/clc/meson.build
+@@ -4,7 +4,6 @@
+ files_libmesaclc = files(
+ 'clc.c',
+ 'clc_helpers.cpp',
+- 'nir_load_libclc.c',
+ )
+
+ _libmesaclc_c_args = []
+@@ -41,45 +40,49 @@ if not _shared_llvm or \
+ _libmesaclc_cpp_args += ['-DUSE_STATIC_OPENCL_C_H=1']
+ endif
+
+-_basedir = dep_clc.get_variable(pkgconfig : 'libexecdir')
++if dep_clc.found()
++ files_libmesaclc += 'nir_load_libclc.c'
+
+-_static_libclc = get_option('static-libclc')
+-if _static_libclc.length() > 0
+- if _static_libclc.contains('all')
+- _static_libclc = ['spirv', 'spirv64']
+- endif
+- prog_zstd = find_program('zstd', required : false, native : true)
+- _zstd_static_libclc = dep_zstd.found() and prog_zstd.found()
+- if _zstd_static_libclc
+- _libmesaclc_c_args += '-DHAVE_STATIC_LIBCLC_ZSTD'
+- endif
+- foreach s : _static_libclc
+- _libmesaclc_c_args += '-DHAVE_STATIC_LIBCLC_@0@'.format(s.to_upper())
+- f = '@0@-mesa3d-.spv'.format(s)
+- _libclc_file = _basedir / f
++ _basedir = dep_clc.get_variable(pkgconfig : 'libexecdir')
++
++ _static_libclc = get_option('static-libclc')
++ if _static_libclc.length() > 0
++ if _static_libclc.contains('all')
++ _static_libclc = ['spirv', 'spirv64']
++ endif
++ prog_zstd = find_program('zstd', required : false, native : true)
++ _zstd_static_libclc = dep_zstd.found() and prog_zstd.found()
+ if _zstd_static_libclc
+- _libclc_file = custom_target(
+- '@0@.zstd'.format(f),
+- command : [prog_zstd, '-f', '@INPUT@', '-o', '@OUTPUT@'],
++ _libmesaclc_c_args += '-DHAVE_STATIC_LIBCLC_ZSTD'
++ endif
++ foreach s : _static_libclc
++ _libmesaclc_c_args += '-DHAVE_STATIC_LIBCLC_@0@'.format(s.to_upper())
++ f = '@0@-mesa3d-.spv'.format(s)
++ _libclc_file = _basedir / f
++ if _zstd_static_libclc
++ _libclc_file = custom_target(
++ '@0@.zstd'.format(f),
++ command : [prog_zstd, '-f', '@INPUT@', '-o', '@OUTPUT@'],
++ input : [_libclc_file],
++ output : '@0@.zstd'.format(f),
++ )
++ endif
++ files_libmesaclc += custom_target(
++ '@0@.h'.format(f),
++ command : [
++ prog_python, files_xxd, '-b', '@INPUT@', '@OUTPUT@',
++ '-n', 'libclc_@0@_mesa3d_spv'.format(s),
++ ],
+ input : [_libclc_file],
+- output : '@0@.zstd'.format(f),
++ output : '@0@.h'.format(f),
++ depend_files : files_xxd,
+ )
++ endforeach
++ else
++ _libmesaclc_c_args += ['-DDYNAMIC_LIBCLC_PATH="@0@/"'.format(_basedir)]
++ if not cc.has_function('mmap')
++ error('mmap required for dynamic libCLC loading')
+ endif
+- files_libmesaclc += custom_target(
+- '@0@.h'.format(f),
+- command : [
+- prog_python, files_xxd, '-b', '@INPUT@', '@OUTPUT@',
+- '-n', 'libclc_@0@_mesa3d_spv'.format(s),
+- ],
+- input : [_libclc_file],
+- output : '@0@.h'.format(f),
+- depend_files : files_xxd,
+- )
+- endforeach
+-else
+- _libmesaclc_c_args += ['-DDYNAMIC_LIBCLC_PATH="@0@/"'.format(_basedir)]
+- if not cc.has_function('mmap')
+- error('mmap required for dynamic libCLC loading')
+ endif
+ endif
+
+--
+2.55.0
+
diff --git a/meta/recipes-graphics/mesa/files/0002-clc-use-our-downstream-fork-of-libclc.patch b/meta/recipes-graphics/mesa/files/0002-clc-use-our-downstream-fork-of-libclc.patch
new file mode 100644
index 0000000000..39e120b036
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/0002-clc-use-our-downstream-fork-of-libclc.patch
@@ -0,0 +1,43 @@
+From 8bda7974958e5ba56b0eec25a7876c004b6b743b Mon Sep 17 00:00:00 2001
+From: Karol Herbst <kherbst@redhat.com>
+Date: Thu, 16 Jul 2026 21:20:52 +0200
+Subject: [PATCH 2/2] clc: use our downstream fork of libclc
+
+There are a couple of issues with the upstream versions and release
+schedules and overall experience makes it dificult for us to rely on
+users using a proper functional implementation.
+
+And we want to ship a conformant OpenCL implementation here and that's
+difficult if users run untested libclc versions or libclc with known bugs
+that aren't going to get fixed upstream because the release is already
+EoL.
+
+Backport-to: *
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/43020]
+---
+ meson.build | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 68bbb942b99..6e2590cc2c6 100644
+--- a/meson.build
++++ b/meson.build
+@@ -950,7 +950,14 @@ with_poly = [
+
+ dep_clc = null_dep
+ if with_gallium_rusticl or with_microsoft_clc
+- dep_clc = dependency('libclc')
++ dep_clc = dependency('mesa-libclc', required : false,
++ not_found_message :
++ 'mesa-libclc not found. Build will fall back to upstream libclc, however ' +
++ 'certain versions are known to contain bugs that make OpenCL builtins ' +
++ 'return incorrect results.')
++ if not dep_clc.found()
++ dep_clc = dependency('libclc')
++ endif
+ endif
+
+ gl_pkgconfig_c_flags = []
+--
+2.55.0
+
diff --git a/meta/recipes-graphics/mesa/mesa-tools-native.bb b/meta/recipes-graphics/mesa/mesa-tools-native.bb
index 20207450bf..c495d2e8a8 100644
--- a/meta/recipes-graphics/mesa/mesa-tools-native.bb
+++ b/meta/recipes-graphics/mesa/mesa-tools-native.bb
@@ -11,7 +11,7 @@ PACKAGECONFIG += "gallium-llvm"
# to PACKAGECONFIG like in mesa.inc
PACKAGECONFIG += "${@bb.utils.filter('DISTRO_FEATURES', 'x11 wayland', d)}"
-DEPENDS += "libclc-native spirv-tools-native spirv-llvm-translator-native"
+DEPENDS += "mesa-libclc-native spirv-tools-native spirv-llvm-translator-native"
EXTRA_OEMESON += " \
-Dmesa-clc=enabled -Dinstall-mesa-clc=true -Dmesa-clc-bundle-headers=enabled \
diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc
index 15d56c804d..dea7a8295f 100644
--- a/meta/recipes-graphics/mesa/mesa.inc
+++ b/meta/recipes-graphics/mesa/mesa.inc
@@ -21,6 +21,8 @@ SRC_URI = "https://archive.mesa3d.org/mesa-${PV}.tar.xz \
file://0001-src-intel-compiler-jay-jay_ir.h-do-not-used-typed-en.patch \
file://0001-src-intel-compiler-jay-fix-GCC-10-case-label-declara.patch \
file://0001-src-util-u_math.c-do-not-use-arm-fpu-instructions-if.patch \
+ file://0001-clc-make-libclc-optional-for-configs-not-needing-it.patch \
+ file://0002-clc-use-our-downstream-fork-of-libclc.patch \
"
SRC_URI[sha256sum] = "79e421c7ce18cd9e790b8375920325779f10798630bf30e0b22f1a21c8617122"
@@ -110,7 +112,7 @@ PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=false"
# "opencl" also requires libclc and gallium-llvm to be present in PACKAGECONFIG!
# Be sure to enable them both for the target and for the native build.
-PACKAGECONFIG[opencl] = "-Dgallium-rusticl=true -Dmesa-clc-bundle-headers=enabled, -Dgallium-rusticl=false, bindgen-cli-native clang libclc spirv-tools spirv-llvm-translator"
+PACKAGECONFIG[opencl] = "-Dgallium-rusticl=true -Dmesa-clc-bundle-headers=enabled, -Dgallium-rusticl=false, bindgen-cli-native clang mesa-libclc spirv-tools spirv-llvm-translator"
X11_DEPS = "xorgproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes xrandr xorgproto libxshmfence"
# "x11" requires "opengl"
@@ -254,7 +256,7 @@ RPROVIDES:libopencl-mesa += "virtual-opencl-icd"
RPROVIDES:libgles2-mesa += "libgles3-mesa"
RPROVIDES:libgles2-mesa-dev += "libgles3-mesa-dev"
-RDEPENDS:libopencl-mesa += "${@bb.utils.contains('PACKAGECONFIG', 'opencl', 'libclc', '', d)}"
+RDEPENDS:libopencl-mesa += "${@bb.utils.contains('PACKAGECONFIG', 'opencl', 'mesa-libclc', '', d)}"
PACKAGES =+ "libegl-mesa libegl-mesa-dev \
libgallium \
--
2.55.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-07-18 5:05 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-18 5:05 [PATCH 1/3] mesa: Upgrade to 26.1.5 Zoltán Böszörményi
2026-07-18 5:05 ` [PATCH 2/3] mesa-libclc: New recipe for forking libclc for Rusticl purposes in Mesa Zoltán Böszörményi
2026-07-18 5:05 ` [PATCH 3/3] mesa, mesa-tools-native: Use mesa-libclc Zoltán Böszörményi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox