diff mbox series

[PATCHv2] mesa: update 25.0.5 -> 25.1.0

Message ID 20250519055150.25280-1-f_l_k@t-online.de
State New
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
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.*"