mirror of
https://git.yoctoproject.org/poky
synced 2026-05-09 05:29:32 +00:00
mesa: update 25.0.5 -> 25.1.0
- 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 (From OE-Core rev: 3d334e5b1e0e152178afce73f01cd1a3ded30677) Signed-off-by: Markus Volk <f_l_k@t-online.de> Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
d83d45adc4
commit
eea9ce3911
@@ -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',
|
|
||||||
@@ -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')
|
||||||
-34
@@ -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()
|
|
||||||
)),
|
|
||||||
],
|
|
||||||
-57
@@ -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
|
|
||||||
|
|
||||||
@@ -17,13 +17,11 @@ PE = "2"
|
|||||||
SRC_URI = "https://archive.mesa3d.org/mesa-${PV}.tar.xz \
|
SRC_URI = "https://archive.mesa3d.org/mesa-${PV}.tar.xz \
|
||||||
file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
|
file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \
|
||||||
file://0001-freedreno-don-t-encode-build-path-into-binaries.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-dont-build-clover-frontend.patch \
|
||||||
file://0001-clover-Don-t-include-libclc-headers.patch \
|
|
||||||
file://0001-gallium-clover-Do-not-use-LLVM_LIBRARY_DIR-for-FALLB.patch \
|
|
||||||
"
|
"
|
||||||
|
|
||||||
SRC_URI[sha256sum] = "c0d245dea0aa4b49f74b3d474b16542e4a8799791cd33d676c69f650ad4378d0"
|
SRC_URI[sha256sum] = "b1c45888969ee5df997e2542654f735ab1b772924b442f3016d2293414c99c14"
|
||||||
PV = "25.0.5"
|
PV = "25.1.0"
|
||||||
|
|
||||||
UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)"
|
UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)"
|
||||||
|
|
||||||
@@ -343,7 +341,7 @@ FILES:mesa-megadriver = "${libdir}/dri/* ${datadir}/drirc.d"
|
|||||||
FILES:mesa-vulkan-drivers = "${libdir}/libvulkan_*.so ${libdir}/libpowervr_rogue.so ${datadir}/vulkan"
|
FILES:mesa-vulkan-drivers = "${libdir}/libvulkan_*.so ${libdir}/libpowervr_rogue.so ${datadir}/vulkan"
|
||||||
FILES:${PN}-vdpau-drivers = "${libdir}/vdpau/*.so.*"
|
FILES:${PN}-vdpau-drivers = "${libdir}/vdpau/*.so.*"
|
||||||
FILES:libegl-mesa = "${libdir}/libEGL*.so.* ${datadir}/glvnd/egl_vendor.d"
|
FILES:libegl-mesa = "${libdir}/libEGL*.so.* ${datadir}/glvnd/egl_vendor.d"
|
||||||
FILES:libgbm = "${libdir}/libgbm.so.* ${libdir}/gbm/*_gbm.so"
|
FILES:libgbm = "${libdir}/libgbm.so.* ${libdir}/gbm/*_gbm.so ${includedir}/gbm_backend_abi.h"
|
||||||
FILES:libgallium = "${libdir}/libgallium-*.so"
|
FILES:libgallium = "${libdir}/libgallium-*.so"
|
||||||
FILES:libgles1-mesa = "${libdir}/libGLESv1*.so.*"
|
FILES:libgles1-mesa = "${libdir}/libGLESv1*.so.*"
|
||||||
FILES:libgles2-mesa = "${libdir}/libGLESv2.so.*"
|
FILES:libgles2-mesa = "${libdir}/libGLESv2.so.*"
|
||||||
|
|||||||
Reference in New Issue
Block a user