diff mbox series

[PATCHv2] mesa: update 25.0.5 -> 25.1.0

Message ID 20250519055150.25280-1-f_l_k@t-online.de
State Accepted, archived
Commit 3d334e5b1e0e152178afce73f01cd1a3ded30677
Headers show
Series [PATCHv2] mesa: update 25.0.5 -> 25.1.0 | expand

Commit Message

Markus Volk May 19, 2025, 5:51 a.m. UTC
- drop two merged patches
- clover frontend is always compiled, even if not enabled
  clover is deprecated and was removed in master branch
  add a patch to fix that
- install gbm_backend_abi.h

Signed-off-by: Markus Volk <f_l_k@t-online.de>
---
 ...-clover-Don-t-include-libclc-headers.patch | 143 ------------------
 .../0001-dont-build-clover-frontend.patch     |  29 ++++
 ...o-not-use-LLVM_LIBRARY_DIR-for-FALLB.patch |  34 -----
 ...option-to-force-inclusion-of-OpenCL-.patch |  57 -------
 meta/recipes-graphics/mesa/mesa.inc           |  10 +-
 5 files changed, 33 insertions(+), 240 deletions(-)
 delete mode 100644 meta/recipes-graphics/mesa/files/0001-clover-Don-t-include-libclc-headers.patch
 create mode 100644 meta/recipes-graphics/mesa/files/0001-dont-build-clover-frontend.patch
 delete mode 100644 meta/recipes-graphics/mesa/files/0001-gallium-clover-Do-not-use-LLVM_LIBRARY_DIR-for-FALLB.patch
 delete mode 100644 meta/recipes-graphics/mesa/files/0001-mesa-clc-add-an-option-to-force-inclusion-of-OpenCL-.patch

Comments

Ross Burton May 19, 2025, 1:13 p.m. UTC | #1
On 19 May 2025, at 06:51, Markus Volk via lists.openembedded.org <f_l_k=t-online.de@lists.openembedded.org> wrote:
> 
> - drop two merged patches
> - clover frontend is always compiled, even if not enabled
>  clover is deprecated and was removed in master branch
>  add a patch to fix that
> - install gbm_backend_abi.h

"Mesa 25.1.0 is a new development release. People who are concerned with stability and reliability should stick with a previous release or wait for Mesa 25.1.1.”

I’d suggest posting the .0 releases as RFC patches, as we don’t really want to merge them into master.

Ross
Alexander Kanavin May 20, 2025, 1:13 p.m. UTC | #2
On Mon, 19 May 2025 at 15:14, Ross Burton via lists.openembedded.org
<ross.burton=arm.com@lists.openembedded.org> wrote:
> > - drop two merged patches
> > - clover frontend is always compiled, even if not enabled
> >  clover is deprecated and was removed in master branch
> >  add a patch to fix that
> > - install gbm_backend_abi.h
>
> "Mesa 25.1.0 is a new development release. People who are concerned with stability and reliability should stick with a previous release or wait for Mesa 25.1.1.”
>
> I’d suggest posting the .0 releases as RFC patches, as we don’t really want to merge them into master.

This is an automated text that has been in place for years, and I'm
not sure it's accurate anymore. .0 release is always preceded by
numerous release candidates, and it's not as 'unstable' as mesa
announcements make it seem. Also, .1 is usually released fairly
quickly after with some bugfixes, but nothing critical, and can be
done as a simple followup.

Alex
diff mbox series

Patch

diff --git a/meta/recipes-graphics/mesa/files/0001-clover-Don-t-include-libclc-headers.patch b/meta/recipes-graphics/mesa/files/0001-clover-Don-t-include-libclc-headers.patch
deleted file mode 100644
index 0f9a01d823..0000000000
--- a/meta/recipes-graphics/mesa/files/0001-clover-Don-t-include-libclc-headers.patch
+++ /dev/null
@@ -1,143 +0,0 @@ 
-From e94da9ccbc099468df752227716880efef66411b Mon Sep 17 00:00:00 2001
-From: Nikita Popov <npopov@redhat.com>
-Date: Thu, 27 Feb 2025 15:44:27 +0100
-Subject: [PATCH] clover: Don't include libclc headers
-
-Per https://github.com/llvm/llvm-project/issues/119967 these
-headers are internal implementation details of libclc and were
-never supposed to be installed. They are not available anymore
-since LLVM 20. Instead opencl-c.h should be used.
-
-There already ise a code path for including opencl-c.h, so always
-use it.
-
-This didn't work for me out of the box, because the build system
-currently hardcodes the clang resource directory, which is incorrect
-for Fedora at least. Fix this by using GetResourcePath +
-CLANG_RESOURCE_DIR provided by clang instead. This is basically
-the same as what is done in clc_helper.c
-
-I've still retained the old behavior as a fallback just in case
-(e.g. if clang is linked statically?)
-
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33805/]
-Reviewed-by: Karol Herbst <kherbst@redhat.com>
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33805>
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- .../frontends/clover/llvm/invocation.cpp      | 53 +++++++++++++------
- src/gallium/frontends/clover/meson.build      |  5 +-
- 2 files changed, 39 insertions(+), 19 deletions(-)
-
-diff --git a/src/gallium/frontends/clover/llvm/invocation.cpp b/src/gallium/frontends/clover/llvm/invocation.cpp
-index 3cbb05b..ca030b4 100644
---- a/src/gallium/frontends/clover/llvm/invocation.cpp
-+++ b/src/gallium/frontends/clover/llvm/invocation.cpp
-@@ -24,6 +24,8 @@
- // OTHER DEALINGS IN THE SOFTWARE.
- //
- 
-+#include <dlfcn.h>
-+
- #include <llvm/IR/DiagnosticPrinter.h>
- #include <llvm/IR/DiagnosticInfo.h>
- #include <llvm/IR/LLVMContext.h>
-@@ -39,6 +41,8 @@
- #include <clang/Frontend/TextDiagnosticBuffer.h>
- #include <clang/Frontend/TextDiagnosticPrinter.h>
- #include <clang/Basic/TargetInfo.h>
-+#include <clang/Config/config.h>
-+#include <clang/Driver/Driver.h>
- 
- #if LLVM_VERSION_MAJOR >= 20
- #include <llvm/Support/VirtualFileSystem.h>
-@@ -323,6 +327,30 @@ namespace {
-       return c;
-    }
- 
-+   std::string getResourceDirectory() {
-+      Dl_info info;
-+      if (dladdr((void *)clang::CompilerInvocation::CreateFromArgs, &info) == 0) {
-+         return FALLBACK_CLANG_RESOURCE_DIR;
-+      }
-+
-+      char *libclang_path = realpath(info.dli_fname, NULL);
-+      if (libclang_path == nullptr) {
-+         return FALLBACK_CLANG_RESOURCE_DIR;
-+      }
-+
-+      // GetResourcePath is a way to retrieve the actual libclang resource dir based on a given
-+      // binary or library.
-+      std::string clang_resource_dir =
-+#if LLVM_VERSION_MAJOR >= 20
-+         clang::driver::Driver::GetResourcesPath(std::string(libclang_path));
-+#else
-+         clang::driver::Driver::GetResourcesPath(std::string(libclang_path), CLANG_RESOURCE_DIR);
-+#endif
-+      free(libclang_path);
-+
-+      return clang_resource_dir;
-+   }
-+
-    std::unique_ptr<Module>
-    compile(LLVMContext &ctx, clang::CompilerInstance &c,
-            const std::string &name, const std::string &source,
-@@ -331,25 +359,18 @@ namespace {
-       c.getFrontendOpts().ProgramAction = clang::frontend::EmitLLVMOnly;
-       c.getHeaderSearchOpts().UseBuiltinIncludes = true;
-       c.getHeaderSearchOpts().UseStandardSystemIncludes = true;
--      c.getHeaderSearchOpts().ResourceDir = CLANG_RESOURCE_DIR;
- 
--      if (use_libclc) {
--         // Add libclc generic search path
--         c.getHeaderSearchOpts().AddPath(LIBCLC_INCLUDEDIR,
--                                         clang::frontend::Angled,
--                                         false, false);
-+      std::string clang_resource_dir = getResourceDirectory();
-+      c.getHeaderSearchOpts().ResourceDir = clang_resource_dir;
- 
--         // Add libclc include
--         c.getPreprocessorOpts().Includes.push_back("clc/clc.h");
--      } else {
--         // Add opencl-c generic search path
--         c.getHeaderSearchOpts().AddPath(CLANG_RESOURCE_DIR,
--                                         clang::frontend::Angled,
--                                         false, false);
-+      // Add opencl-c generic search path
-+      std::string clang_include_path = clang_resource_dir + "/include";
-+      c.getHeaderSearchOpts().AddPath(clang_include_path,
-+                                      clang::frontend::Angled,
-+                                      false, false);
- 
--         // Add opencl include
--         c.getPreprocessorOpts().Includes.push_back("opencl-c.h");
--      }
-+      // Add opencl include
-+      c.getPreprocessorOpts().Includes.push_back("opencl-c.h");
- 
-       // Add definition for the OpenCL version
-       const auto dev_version = dev.device_version();
-diff --git a/src/gallium/frontends/clover/meson.build b/src/gallium/frontends/clover/meson.build
-index e569b86..56a9894 100644
---- a/src/gallium/frontends/clover/meson.build
-+++ b/src/gallium/frontends/clover/meson.build
-@@ -10,7 +10,6 @@ clover_opencl_cpp_args = [
-   '-DCL_USE_DEPRECATED_OPENCL_2_0_APIS',
-   '-DCL_USE_DEPRECATED_OPENCL_2_1_APIS',
-   '-DCL_USE_DEPRECATED_OPENCL_2_2_APIS',
--  '-DLIBCLC_INCLUDEDIR="@0@/"'.format(dep_clc.get_variable(pkgconfig : 'includedir')),
-   '-DLIBCLC_LIBEXECDIR="@0@/"'.format(dep_clc.get_variable(pkgconfig : 'libexecdir'))
- ]
- clover_incs = [inc_include, inc_src, inc_gallium, inc_gallium_aux]
-@@ -43,9 +42,9 @@ libclllvm = static_library(
-   cpp_args : [
-     clover_cpp_args,
-     clover_opencl_cpp_args,
--    '-DCLANG_RESOURCE_DIR="@0@"'.format(join_paths(
-+    '-DFALLBACK_CLANG_RESOURCE_DIR="@0@"'.format(join_paths(
-       dep_llvm.get_variable(cmake : 'LLVM_LIBRARY_DIR', configtool: 'libdir'), 'clang',
--      dep_llvm.version(), 'include',
-+      dep_llvm.version()
-     )),
-   ],
-   gnu_symbol_visibility : 'hidden',
diff --git a/meta/recipes-graphics/mesa/files/0001-dont-build-clover-frontend.patch b/meta/recipes-graphics/mesa/files/0001-dont-build-clover-frontend.patch
new file mode 100644
index 0000000000..5f45f94fea
--- /dev/null
+++ b/meta/recipes-graphics/mesa/files/0001-dont-build-clover-frontend.patch
@@ -0,0 +1,29 @@ 
+From: Markus Volk <f_l_k@t-online.de>
+Date: Sun, 19 Mai 2025 15:34:46 +0100
+Subject: [PATCH] dont build clover frontend
+
+The clover frontend is deprecated and is always built with opencl, even if
+using rusticl. Additionally it adds a reproducibility issue.
+
+Upstream-Status: Inappropriate [oe-specific]
+Signed-off-by: Markus Volk <f_l_k@t-online.de>
+
+--- a/src/gallium/meson.build	2025-05-07 18:35:10.000000000 +0200
++++ b/src/gallium/meson.build	2025-05-18 17:05:23.677694272 +0200
+@@ -195,15 +195,11 @@
+ else
+   driver_d3d12 = declare_dependency()
+ endif
+-if with_gallium_clover or with_tests
++if with_tests
+   # At the moment, clover and gallium/tests are the only two consumers
+   # for pipe-loader
+   subdir('targets/pipe-loader')
+ endif
+-if with_gallium_clover
+-  subdir('frontends/clover')
+-  subdir('targets/opencl')
+-endif
+ if with_gallium_rusticl
+   subdir('frontends/rusticl')
+   subdir('targets/rusticl')
diff --git a/meta/recipes-graphics/mesa/files/0001-gallium-clover-Do-not-use-LLVM_LIBRARY_DIR-for-FALLB.patch b/meta/recipes-graphics/mesa/files/0001-gallium-clover-Do-not-use-LLVM_LIBRARY_DIR-for-FALLB.patch
deleted file mode 100644
index 8b2ce2f63b..0000000000
--- a/meta/recipes-graphics/mesa/files/0001-gallium-clover-Do-not-use-LLVM_LIBRARY_DIR-for-FALLB.patch
+++ /dev/null
@@ -1,34 +0,0 @@ 
-From 5ea5c5d48e049d7b10b7ffb814e84e3ddef7fff9 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Fri, 25 Apr 2025 19:00:14 -0700
-Subject: [PATCH] gallium/clover: Do not use LLVM_LIBRARY_DIR for
- FALLBACK_CLANG_RESOURCE_DIR
-
-This option -DFALLBACK_CLANG_RESOURCE_DIR is synthesized by meson from
-LLVM_LIBRARY_DIR which is resolved to absolute path under <recipe_sysroot>
-and its used in clover front-end as string in .c files, which encodes it
-into binary as string and shows up in yocto QA error.
-
-ERROR: mesa-2_25.0.2-r0 do_package_qa: QA Issue: File /usr/lib/libMesaOpenCL.so.1.0.0 in package libopencl-mesa contains reference to TMPDIR [buildpaths]
-ERROR: mesa-2_25.0.2-r0 do_package_qa: Fatal QA errors were found, failing task.
-ERROR: Logfile of failure stored in: /mnt/b/yoe/master/sources/poky/build/tmp/work/cortexa57-poky-linux/mesa/25.0.2/temp/log.do_package_qa.974870
-
-Upstream-Status: Inappropriate [OE-Specific]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- src/gallium/frontends/clover/meson.build | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/gallium/frontends/clover/meson.build b/src/gallium/frontends/clover/meson.build
-index 56a9894..32c21d6 100644
---- a/src/gallium/frontends/clover/meson.build
-+++ b/src/gallium/frontends/clover/meson.build
-@@ -43,7 +43,7 @@ libclllvm = static_library(
-     clover_cpp_args,
-     clover_opencl_cpp_args,
-     '-DFALLBACK_CLANG_RESOURCE_DIR="@0@"'.format(join_paths(
--      dep_llvm.get_variable(cmake : 'LLVM_LIBRARY_DIR', configtool: 'libdir'), 'clang',
-+     '/usr/lib/clang',
-       dep_llvm.version()
-     )),
-   ],
diff --git a/meta/recipes-graphics/mesa/files/0001-mesa-clc-add-an-option-to-force-inclusion-of-OpenCL-.patch b/meta/recipes-graphics/mesa/files/0001-mesa-clc-add-an-option-to-force-inclusion-of-OpenCL-.patch
deleted file mode 100644
index d65ba574d2..0000000000
--- a/meta/recipes-graphics/mesa/files/0001-mesa-clc-add-an-option-to-force-inclusion-of-OpenCL-.patch
+++ /dev/null
@@ -1,57 +0,0 @@ 
-From f9b6175e7c446a82c568ff1a214885d707c95f49 Mon Sep 17 00:00:00 2001
-From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
-Date: Wed, 16 Apr 2025 14:35:37 +0300
-Subject: [PATCH] mesa-clc: add an option to force inclusion of OpenCL headers
-
-Currently mesa-clc bundles OpenCL headers from Clang only if the static
-LLVM is used (which means Clang / LLVM are not present on the target
-system). In some cases (e.g. when building in OpenEmbedded environemnt)
-it is desirable to have shared LLVM library, but skip installing the
-whole Clang runtime just to compile shaders. Add an option that forces
-OpenCL headers to be bundled with the mesa-clc binary.
-
-Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
-Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34551]
----
- meson_options.txt                | 10 ++++++++++
- src/compiler/clc/meson.build |  3 ++-
- 2 files changed, 12 insertions(+), 1 deletion(-)
-
-diff --git a/meson_options.txt b/meson_options.txt
-index 18da31eff507..addd274ecef7 100644
---- a/meson_options.txt
-+++ b/meson_options.txt
-@@ -797,6 +797,16 @@ option(
-   description : 'Install the mesa-clc compiler (if needed for cross builds).'
- )
- 
-+option(
-+  'mesa-clc-bundle-headers',
-+  type : 'combo',
-+  value : 'auto',
-+  choices : [
-+    'enabled', 'auto'
-+  ],
-+  description : 'Bundle the OpenCL headers into the mesa-clc binary (default to bundle if static LLVM is used). Note, it might require rebuilding mesa-clc if opencl-c.h or opencl-c-base.h are changed (e.g. on Clang upgrades).'
-+)
-+
- option(
-   'precomp-compiler',
-   type : 'combo',
-diff --git a/src/compiler/clc/meson.build b/src/compiler/clc/meson.build
-index 263eba527191..9ff61440f0da 100644
---- a/src/compiler/clc/meson.build
-+++ b/src/compiler/clc/meson.build
-@@ -11,7 +11,8 @@ _libmesaclc_c_args = []
- _libmesaclc_cpp_args = ['-DLLVM_LIB_DIR="@0@"'.format(llvm_libdir)]
- _libmesaclc_sources = []
- 
--if not _shared_llvm
-+if not _shared_llvm or \
-+    get_option('mesa-clc-bundle-headers') == 'enabled'
-   # LLVM 16 moved clang header path from using full version to only major version
-   if dep_llvm.version().version_compare('< 16')
-     # Prior to LLVM 16, this path used a full version
--- 
-2.47.2
-
diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc
index 288027bbb9..5d09b37e3f 100644
--- a/meta/recipes-graphics/mesa/mesa.inc
+++ b/meta/recipes-graphics/mesa/mesa.inc
@@ -17,13 +17,11 @@  PE = "2"
 SRC_URI = "https://archive.mesa3d.org/mesa-${PV}.tar.xz \
            file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
            file://0001-freedreno-don-t-encode-build-path-into-binaries.patch \
-           file://0001-mesa-clc-add-an-option-to-force-inclusion-of-OpenCL-.patch \
-           file://0001-clover-Don-t-include-libclc-headers.patch \
-           file://0001-gallium-clover-Do-not-use-LLVM_LIBRARY_DIR-for-FALLB.patch \
+           file://0001-dont-build-clover-frontend.patch \
 "
 
-SRC_URI[sha256sum] = "c0d245dea0aa4b49f74b3d474b16542e4a8799791cd33d676c69f650ad4378d0"
-PV = "25.0.5"
+SRC_URI[sha256sum] = "b1c45888969ee5df997e2542654f735ab1b772924b442f3016d2293414c99c14"
+PV = "25.1.0"
 
 UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)"
 
@@ -356,7 +354,7 @@  FILES:libxatracker = "${libdir}/libxatracker.so.*"
 
 FILES:${PN}-dev = "${libdir}/pkgconfig/dri.pc ${includedir}/vulkan ${libdir}/vdpau/*.so"
 FILES:libegl-mesa-dev = "${libdir}/libEGL*.* ${includedir}/EGL ${includedir}/KHR ${libdir}/pkgconfig/egl.pc"
-FILES:libgbm-dev = "${libdir}/libgbm.* ${libdir}/pkgconfig/gbm.pc ${includedir}/gbm.h"
+FILES:libgbm-dev = "${libdir}/libgbm.* ${libdir}/pkgconfig/gbm.pc ${includedir}/gbm.h ${includedir}/gbm_backend_abi.h"
 FILES:libgl-mesa-dev = "${libdir}/libGL.* ${includedir}/GL ${libdir}/pkgconfig/gl.pc"
 FILES:libglx-mesa-dev = "${libdir}/libGLX*.*"
 FILES:libglapi-dev = "${libdir}/libglapi.*"