diff options
7 files changed, 117 insertions, 242 deletions
diff --git a/meta/recipes-graphics/mesa/files/0001-Revert-meson-do-not-pull-in-clc-for-clover.patch b/meta/recipes-graphics/mesa/files/0001-Revert-meson-do-not-pull-in-clc-for-clover.patch deleted file mode 100644 index 1711e22585..0000000000 --- a/meta/recipes-graphics/mesa/files/0001-Revert-meson-do-not-pull-in-clc-for-clover.patch +++ /dev/null | |||
@@ -1,53 +0,0 @@ | |||
1 | From 051f41beda540f0ae77b341db01a6de83c9e938a Mon Sep 17 00:00:00 2001 | ||
2 | From: Markus Volk <f_l_k@t-online.de> | ||
3 | Date: Fri, 8 Mar 2024 15:53:11 +0100 | ||
4 | Subject: [PATCH] Revert "meson: do not pull in clc for clover" | ||
5 | |||
6 | This reverts commit 815a6647eb1383e9dc704ffcc266d85f3b13338a. | ||
7 | Upstream-Status: Inappropriate [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27783/diffs?commit_id=a976f2c9f0c07f9e06cc9affd9124b45bc60c2bd] | ||
8 | |||
9 | Once the merge request above was added, it will only be possible to provide opencl spir-v with gallium-rusticl=true. This is not yet supported in the mesa recipe. | ||
10 | For now reverting this commit allows to still use clover with opencl-spirv, which would otherwise be broken starting from mesa 24.0.2. | ||
11 | |||
12 | After it was merged, this patch needs to be removed and rusticl support will be required | ||
13 | |||
14 | Signed-off-by: Markus Volk <f_l_k@t-online.de> | ||
15 | --- | ||
16 | meson.build | 3 ++- | ||
17 | src/compiler/meson.build | 2 +- | ||
18 | 2 files changed, 3 insertions(+), 2 deletions(-) | ||
19 | |||
20 | diff --git a/meson.build b/meson.build | ||
21 | index 2db6185..741b5d1 100644 | ||
22 | --- a/meson.build | ||
23 | +++ b/meson.build | ||
24 | @@ -813,6 +813,7 @@ if _opencl != 'disabled' | ||
25 | error('The Clover OpenCL state tracker requires rtti') | ||
26 | endif | ||
27 | |||
28 | + with_clc = true | ||
29 | with_gallium_opencl = true | ||
30 | with_opencl_icd = _opencl == 'icd' | ||
31 | else | ||
32 | @@ -837,7 +838,7 @@ if with_gallium_rusticl | ||
33 | endif | ||
34 | |||
35 | dep_clc = null_dep | ||
36 | -if with_gallium_opencl or with_clc | ||
37 | +if with_clc | ||
38 | dep_clc = dependency('libclc') | ||
39 | endif | ||
40 | |||
41 | diff --git a/src/compiler/meson.build b/src/compiler/meson.build | ||
42 | index 8d73544..1dae56d 100644 | ||
43 | --- a/src/compiler/meson.build | ||
44 | +++ b/src/compiler/meson.build | ||
45 | @@ -79,7 +79,7 @@ subdir('nir') | ||
46 | |||
47 | subdir('spirv') | ||
48 | |||
49 | -if with_clc | ||
50 | +if with_opencl_spirv | ||
51 | subdir('clc') | ||
52 | endif | ||
53 | if with_gallium | ||
diff --git a/meta/recipes-graphics/mesa/files/0001-amd-Include-missing-llvm-IR-header-Module.h.patch b/meta/recipes-graphics/mesa/files/0001-amd-Include-missing-llvm-IR-header-Module.h.patch deleted file mode 100644 index 82ad88a079..0000000000 --- a/meta/recipes-graphics/mesa/files/0001-amd-Include-missing-llvm-IR-header-Module.h.patch +++ /dev/null | |||
@@ -1,41 +0,0 @@ | |||
1 | From 777d69cf15b80ab1f109a4936d6e4801c4b0e0f3 Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Mon, 1 Jul 2024 23:09:29 -0700 | ||
4 | Subject: [PATCH] amd: Include missing llvm IR header Module.h | ||
5 | MIME-Version: 1.0 | ||
6 | Content-Type: text/plain; charset=UTF-8 | ||
7 | Content-Transfer-Encoding: 8bit | ||
8 | |||
9 | With LLVM-19, Module.h header is not being pulled, which results in | ||
10 | compile errors e.g. | ||
11 | |||
12 | src/amd/llvm/ac_llvm_helper.cpp:102:10: error: no matching function for call to ‘unwrap(LLVMOpaqueModule*&)’ | ||
13 | 102 | unwrap(module)->setTargetTriple(TM->getTargetTriple().getTriple()); | ||
14 | | ~~~~~~^~~~~~~~ | ||
15 | In file included from /mnt/b/yoe/master/build/tmp/work/x86_64-linux/mesa-native/24.0.7/recipe-sysroot-native/usr/include/llvm/IR/Type.h:18, | ||
16 | from /mnt/b/yoe/master/build/tmp/work/x86_64-linux/mesa-native/24.0.7/recipe-sysroot-native/usr/include/llvm/IR/DerivedTypes.h:23, | ||
17 | from /mnt/b/yoe/master/build/tmp/work/x86_64-linux/mesa-native/24.0.7/recipe-sysroot-native/usr/include/llvm/IR/InstrTypes.h:26, | ||
18 | from /mnt/b/yoe/master/build/tmp/work/x86_64-linux/mesa-native/24.0.7/recipe-sysroot-native/usr/include/llvm/Analysis/TargetLibraryInfo.h:14, | ||
19 | from ../mesa-24.0.7/src/amd/llvm/ac_llvm_helper.cpp:8: | ||
20 | |||
21 | Its getting the definition from llvm/IR/Type.h instead of Module.h and caused | ||
22 | confusion to compiler | ||
23 | |||
24 | Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29993] | ||
25 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
26 | --- | ||
27 | src/amd/llvm/ac_llvm_helper.cpp | 1 + | ||
28 | 1 file changed, 1 insertion(+) | ||
29 | |||
30 | diff --git a/src/amd/llvm/ac_llvm_helper.cpp b/src/amd/llvm/ac_llvm_helper.cpp | ||
31 | index 5d065279ad1..af4a50f8409 100644 | ||
32 | --- a/src/amd/llvm/ac_llvm_helper.cpp | ||
33 | +++ b/src/amd/llvm/ac_llvm_helper.cpp | ||
34 | @@ -8,6 +8,7 @@ | ||
35 | #include <llvm/Analysis/TargetLibraryInfo.h> | ||
36 | #include <llvm/IR/IRBuilder.h> | ||
37 | #include <llvm/IR/LegacyPassManager.h> | ||
38 | +#include <llvm/IR/Module.h> | ||
39 | #include <llvm/IR/Verifier.h> | ||
40 | #include <llvm/Target/TargetMachine.h> | ||
41 | #include <llvm/MC/MCSubtargetInfo.h> | ||
diff --git a/meta/recipes-graphics/mesa/files/0001-drisw-fix-build-without-dri3.patch b/meta/recipes-graphics/mesa/files/0001-drisw-fix-build-without-dri3.patch deleted file mode 100644 index ab16152090..0000000000 --- a/meta/recipes-graphics/mesa/files/0001-drisw-fix-build-without-dri3.patch +++ /dev/null | |||
@@ -1,58 +0,0 @@ | |||
1 | From 4bd15a419e892da843489c374c58c5b29c40b5d6 Mon Sep 17 00:00:00 2001 | ||
2 | From: Romain Naour <romain.naour@smile.fr> | ||
3 | Date: Tue, 6 Feb 2024 09:47:09 +0100 | ||
4 | Subject: [PATCH 1/2] drisw: fix build without dri3 | ||
5 | |||
6 | commit 1887368df41 ("glx/sw: check for modifier support in the kopper path") | ||
7 | added dri3_priv.h header and dri3_check_multibuffer() function in drisw that | ||
8 | can be build without dri3. | ||
9 | |||
10 | i686-buildroot-linux-gnu/bin/ld: src/glx/libglx.a.p/drisw_glx.c.o: in function `driswCreateScreenDriver': | ||
11 | drisw_glx.c:(.text.driswCreateScreenDriver+0x3a0): undefined reference to `dri3_check_multibuffer' | ||
12 | collect2: error: ld returned 1 exit status | ||
13 | |||
14 | Add HAVE_DRI3 guard around dri3_priv.h header and the zink code using | ||
15 | dri3_check_multibuffer(). | ||
16 | |||
17 | Fixes: 1887368df41 ("glx/sw: check for modifier support in the kopper path") | ||
18 | |||
19 | Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27478] | ||
20 | Signed-off-by: Romain Naour <romain.naour@smile.fr> | ||
21 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
22 | --- | ||
23 | src/glx/drisw_glx.c | 4 ++++ | ||
24 | 1 file changed, 4 insertions(+) | ||
25 | |||
26 | diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c | ||
27 | index 3d3f752..4b19e2d 100644 | ||
28 | --- a/src/glx/drisw_glx.c | ||
29 | +++ b/src/glx/drisw_glx.c | ||
30 | @@ -32,7 +32,9 @@ | ||
31 | #include <dlfcn.h> | ||
32 | #include "dri_common.h" | ||
33 | #include "drisw_priv.h" | ||
34 | +#ifdef HAVE_DRI3 | ||
35 | #include "dri3_priv.h" | ||
36 | +#endif | ||
37 | #include <X11/extensions/shmproto.h> | ||
38 | #include <assert.h> | ||
39 | #include <vulkan/vulkan_core.h> | ||
40 | @@ -995,6 +997,7 @@ driswCreateScreenDriver(int screen, struct glx_display *priv, | ||
41 | goto handle_error; | ||
42 | } | ||
43 | |||
44 | +#ifdef HAVE_DRI3 | ||
45 | if (pdpyp->zink) { | ||
46 | bool err; | ||
47 | psc->has_multibuffer = dri3_check_multibuffer(priv->dpy, &err); | ||
48 | @@ -1005,6 +1008,7 @@ driswCreateScreenDriver(int screen, struct glx_display *priv, | ||
49 | goto handle_error; | ||
50 | } | ||
51 | } | ||
52 | +#endif | ||
53 | |||
54 | glx_config_destroy_list(psc->base.configs); | ||
55 | psc->base.configs = configs; | ||
56 | -- | ||
57 | 2.44.0 | ||
58 | |||
diff --git a/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch b/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch index 5975ab4472..953a724dc0 100644 --- a/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch +++ b/meta/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch | |||
@@ -22,18 +22,29 @@ diff --git a/src/freedreno/afuc/meson.build b/src/freedreno/afuc/meson.build | |||
22 | index bb7cebf5a748..351cc31ef2de 100644 | 22 | index bb7cebf5a748..351cc31ef2de 100644 |
23 | --- a/src/freedreno/afuc/meson.build | 23 | --- a/src/freedreno/afuc/meson.build |
24 | +++ b/src/freedreno/afuc/meson.build | 24 | +++ b/src/freedreno/afuc/meson.build |
25 | @@ -56,6 +56,7 @@ if with_tests | 25 | @@ -56,10 +56,12 @@ if with_tests |
26 | asm_fw = custom_target('afuc_test.fw', | 26 | asm_fw = custom_target('afuc_test.fw', |
27 | output: 'afuc_test.fw', | 27 | output: 'afuc_test.fw', |
28 | command: [asm, '-g', '6', files('../.gitlab-ci/traces/afuc_test.asm'), '@OUTPUT@'], | 28 | command: [asm, files('../.gitlab-ci/traces/afuc_test.asm'), '@OUTPUT@'], |
29 | + env: {'RNN_PATH': rnn_src_path}, | ||
30 | ) | ||
31 | asm_fw_a7xx = custom_target('afuc_test_a7xx.fw', | ||
32 | output: 'afuc_test_a7xx.fw', | ||
33 | command: [asm, files('../.gitlab-ci/traces/afuc_test_a7xx.asm'), '@OUTPUT@'], | ||
29 | + env: {'RNN_PATH': rnn_src_path}, | 34 | + env: {'RNN_PATH': rnn_src_path}, |
30 | ) | 35 | ) |
31 | test('afuc-asm', | 36 | test('afuc-asm', |
32 | diff, | 37 | diff, |
33 | @@ -120,6 +122,7 @@ if cc.sizeof('size_t') > 4 | 38 | @@ -120,11 +122,13 @@ if cc.sizeof('size_t') > 4 |
34 | disasm_fw = custom_target('afuc_test.asm', | 39 | disasm_fw = custom_target('afuc_test.asm', |
35 | output: 'afuc_test.asm', | 40 | output: 'afuc_test.asm', |
36 | command: [disasm, '-u', files('../.gitlab-ci/reference/afuc_test.fw'), '-g', '630'], | 41 | command: [disasm, '-u', files('../.gitlab-ci/reference/afuc_test.fw')], |
42 | + env: {'RNN_PATH': rnn_src_path}, | ||
43 | capture: true | ||
44 | ) | ||
45 | disasm_fw_a7xx = custom_target('afuc_test_a7xx.asm', | ||
46 | output: 'afuc_test_a7xx.asm', | ||
47 | command: [disasm, '-u', files('../.gitlab-ci/reference/afuc_test_a7xx.fw')], | ||
37 | + env: {'RNN_PATH': rnn_src_path}, | 48 | + env: {'RNN_PATH': rnn_src_path}, |
38 | capture: true | 49 | capture: true |
39 | ) | 50 | ) |
@@ -71,8 +82,29 @@ index 98e49b8fcf0e..145e72597eb9 100644 | |||
71 | -rnn_path = rnn_src_path + ':' + get_option('prefix') + '/' + rnn_install_path | 82 | -rnn_path = rnn_src_path + ':' + get_option('prefix') + '/' + rnn_install_path |
72 | +rnn_path = get_option('prefix') + '/' + rnn_install_path | 83 | +rnn_path = get_option('prefix') + '/' + rnn_install_path |
73 | 84 | ||
74 | dep_lua = dependency('lua54', 'lua53', 'lua52', 'lua', required: false, | 85 | dep_libarchive = dependency('libarchive', allow_fallback: true, required: false) |
75 | allow_fallback: true, version: '>=5.2') | 86 | dep_libxml2 = dependency('libxml-2.0', allow_fallback: true, required: false) |
76 | -- | 87 | diff --git a/src/freedreno/registers/gen_header.py b/src/freedreno/registers/gen_header.py |
88 | --- a/src/freedreno/registers/gen_header.py | ||
89 | +++ b/src/freedreno/registers/gen_header.py | ||
90 | @@ -885,13 +885,14 @@ The rules-ng-ng source files this header | ||
91 | """) | ||
92 | maxlen = 0 | ||
93 | for filepath in p.xml_files: | ||
94 | - maxlen = max(maxlen, len(filepath)) | ||
95 | + maxlen = max(maxlen, len(os.path.basename(filepath))) | ||
96 | for filepath in p.xml_files: | ||
97 | - pad = " " * (maxlen - len(filepath)) | ||
98 | + filename = os.path.basename(filepath) | ||
99 | + pad = " " * (maxlen - len(filename)) | ||
100 | filesize = str(os.path.getsize(filepath)) | ||
101 | filesize = " " * (7 - len(filesize)) + filesize | ||
102 | filetime = time.ctime(os.path.getmtime(filepath)) | ||
103 | - print("- " + filepath + pad + " (" + filesize + " bytes, from " + filetime + ")") | ||
104 | + print("- " + filename + pad + " (" + filesize + " bytes, from " + filetime + ")") | ||
105 | if p.copyright_year: | ||
106 | current_year = str(datetime.date.today().year) | ||
107 | print() | ||
108 | --- | ||
77 | 2.39.2 | 109 | 2.39.2 |
78 | 110 | ||
diff --git a/meta/recipes-graphics/mesa/files/0001-meson-disable-SIMD-blake-optimisations-on-x32-host.patch b/meta/recipes-graphics/mesa/files/0001-meson-disable-SIMD-blake-optimisations-on-x32-host.patch new file mode 100644 index 0000000000..bebe30037a --- /dev/null +++ b/meta/recipes-graphics/mesa/files/0001-meson-disable-SIMD-blake-optimisations-on-x32-host.patch | |||
@@ -0,0 +1,28 @@ | |||
1 | From f3c34b8da2662643089b33be8b93e56a4da8703d Mon Sep 17 00:00:00 2001 | ||
2 | From: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> | ||
3 | Date: Wed, 2 Apr 2025 15:30:20 +0300 | ||
4 | Subject: [PATCH] meson: disable SIMD blake optimisations on x32 host | ||
5 | |||
6 | On X.org startup libgallium crashes on x32 hosts inside | ||
7 | blake3_hash_many_sse41(), most likely because of the different pointer | ||
8 | size. Disable SIMD blake implementation if x32 is detected. | ||
9 | |||
10 | Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com> | ||
11 | Upstream-Status: Pending [will be submitted upstream after internal clearance] | ||
12 | --- | ||
13 | src/util/blake3/meson.build | 2 ++ | ||
14 | 1 file changed, 2 insertions(+) | ||
15 | |||
16 | diff --git a/src/util/blake3/meson.build b/src/util/blake3/meson.build | ||
17 | index 6b53daab6b32..ce6dd85ac1ea 100644 | ||
18 | --- a/src/util/blake3/meson.build | ||
19 | +++ b/src/util/blake3/meson.build | ||
20 | @@ -24,6 +24,8 @@ if cpu_family == 'x86_64' | ||
21 | else | ||
22 | files_blake3 += ['blake3_sse2_x86-64_windows_gnu.S', 'blake3_sse41_x86-64_windows_gnu.S', 'blake3_avx2_x86-64_windows_gnu.S', 'blake3_avx512_x86-64_windows_gnu.S'] | ||
23 | endif | ||
24 | + elif meson.get_compiler('c').sizeof('void *') == 4 | ||
25 | + blake3_defs += blake3_x86_no_simd_defs | ||
26 | else | ||
27 | files_blake3 += ['blake3_sse2_x86-64_unix.S', 'blake3_sse41_x86-64_unix.S', 'blake3_avx2_x86-64_unix.S', 'blake3_avx512_x86-64_unix.S'] | ||
28 | endif | ||
diff --git a/meta/recipes-graphics/mesa/files/0002-glxext-don-t-try-zink-if-not-enabled-in-mesa.patch b/meta/recipes-graphics/mesa/files/0002-glxext-don-t-try-zink-if-not-enabled-in-mesa.patch deleted file mode 100644 index 036a0b4945..0000000000 --- a/meta/recipes-graphics/mesa/files/0002-glxext-don-t-try-zink-if-not-enabled-in-mesa.patch +++ /dev/null | |||
@@ -1,42 +0,0 @@ | |||
1 | From 62495ebb977866c52d5bed8499a547c49f0d9bc1 Mon Sep 17 00:00:00 2001 | ||
2 | From: Romain Naour <romain.naour@smile.fr> | ||
3 | Date: Tue, 6 Feb 2024 09:47:10 +0100 | ||
4 | Subject: [PATCH 2/2] glxext: don't try zink if not enabled in mesa | ||
5 | |||
6 | Commit 7d9ea77b459 ("glx: add automatic zink fallback loading between hw and sw drivers") | ||
7 | added an automatic zink fallback even when the zink gallium is not | ||
8 | enabled at build time. | ||
9 | |||
10 | It leads to unexpected error log while loading drisw driver and | ||
11 | zink is not installed on the rootfs: | ||
12 | |||
13 | MESA-LOADER: failed to open zink: /usr/lib/dri/zink_dri.so | ||
14 | |||
15 | Fixes: 7d9ea77b459 ("glx: add automatic zink fallback loading between hw and sw drivers") | ||
16 | |||
17 | Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27478] | ||
18 | Signed-off-by: Romain Naour <romain.naour@smile.fr> | ||
19 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
20 | --- | ||
21 | src/glx/glxext.c | 2 ++ | ||
22 | 1 file changed, 2 insertions(+) | ||
23 | |||
24 | diff --git a/src/glx/glxext.c b/src/glx/glxext.c | ||
25 | index 05c825a..7a06aa9 100644 | ||
26 | --- a/src/glx/glxext.c | ||
27 | +++ b/src/glx/glxext.c | ||
28 | @@ -908,9 +908,11 @@ __glXInitialize(Display * dpy) | ||
29 | #endif /* HAVE_DRI3 */ | ||
30 | if (!debug_get_bool_option("LIBGL_DRI2_DISABLE", false)) | ||
31 | dpyPriv->dri2Display = dri2CreateDisplay(dpy); | ||
32 | +#if defined(HAVE_ZINK) | ||
33 | if (!dpyPriv->dri3Display && !dpyPriv->dri2Display) | ||
34 | try_zink = !debug_get_bool_option("LIBGL_KOPPER_DISABLE", false) && | ||
35 | !getenv("GALLIUM_DRIVER"); | ||
36 | +#endif /* HAVE_ZINK */ | ||
37 | } | ||
38 | #endif /* GLX_USE_DRM */ | ||
39 | if (glx_direct) | ||
40 | -- | ||
41 | 2.44.0 | ||
42 | |||
diff --git a/meta/recipes-graphics/mesa/mesa.inc b/meta/recipes-graphics/mesa/mesa.inc index f6a91a7002..9edce6b228 100644 --- a/meta/recipes-graphics/mesa/mesa.inc +++ b/meta/recipes-graphics/mesa/mesa.inc | |||
@@ -10,21 +10,18 @@ HOMEPAGE = "http://mesa3d.org" | |||
10 | BUGTRACKER = "https://bugs.freedesktop.org" | 10 | BUGTRACKER = "https://bugs.freedesktop.org" |
11 | SECTION = "x11" | 11 | SECTION = "x11" |
12 | LICENSE = "MIT" | 12 | LICENSE = "MIT" |
13 | LIC_FILES_CHKSUM = "file://docs/license.rst;md5=63779ec98d78d823a9dc533a0735ef10" | 13 | LIC_FILES_CHKSUM = "file://docs/license.rst;md5=ffe678546d4337b732cfd12262e6af11" |
14 | 14 | ||
15 | PE = "2" | 15 | PE = "2" |
16 | 16 | ||
17 | SRC_URI = "https://archive.mesa3d.org/mesa-${PV}.tar.xz \ | 17 | SRC_URI = "https://archive.mesa3d.org/mesa-${PV}.tar.xz \ |
18 | file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \ | 18 | file://0001-meson-misdetects-64bit-atomics-on-mips-clang.patch \ |
19 | file://0001-drisw-fix-build-without-dri3.patch \ | 19 | file://0001-meson-disable-SIMD-blake-optimisations-on-x32-host.patch \ |
20 | file://0002-glxext-don-t-try-zink-if-not-enabled-in-mesa.patch \ | ||
21 | file://0001-Revert-meson-do-not-pull-in-clc-for-clover.patch \ | ||
22 | file://0001-amd-Include-missing-llvm-IR-header-Module.h.patch \ | ||
23 | file://0001-freedreno-don-t-encode-build-path-into-binaries.patch\ | 20 | file://0001-freedreno-don-t-encode-build-path-into-binaries.patch\ |
24 | " | 21 | " |
25 | 22 | ||
26 | SRC_URI[sha256sum] = "7454425f1ed4a6f1b5b107e1672b30c88b22ea0efea000ae2c7d96db93f6c26a" | 23 | SRC_URI[sha256sum] = "adf904d083b308df95898600ffed435f4b5c600d95fb6ec6d4c45638627fdc97" |
27 | PV = "24.0.7" | 24 | PV = "25.0.2" |
28 | 25 | ||
29 | UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)" | 26 | UPSTREAM_CHECK_GITTAGREGEX = "mesa-(?P<pver>\d+(\.\d+)+)" |
30 | 27 | ||
@@ -38,8 +35,7 @@ do_install:append() { | |||
38 | fi | 35 | fi |
39 | } | 36 | } |
40 | 37 | ||
41 | DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib chrpath-replacement-native python3-mako-native gettext-native" | 38 | DEPENDS = "expat makedepend-native flex-native bison-native libxml2-native zlib chrpath-replacement-native python3-mako-native gettext-native python3-pyyaml-native" |
42 | DEPENDS:append:class-target = " ${@bb.utils.contains('PACKAGECONFIG', 'opencl', 'mesa-native', '', d)}" | ||
43 | EXTRANATIVEPATH += "chrpath-native" | 39 | EXTRANATIVEPATH += "chrpath-native" |
44 | PROVIDES = " \ | 40 | PROVIDES = " \ |
45 | ${@bb.utils.contains('PACKAGECONFIG', 'opengl', 'virtual/libgl', '', d)} \ | 41 | ${@bb.utils.contains('PACKAGECONFIG', 'opengl', 'virtual/libgl', '', d)} \ |
@@ -77,44 +73,47 @@ EXTRA_OEMESON = " \ | |||
77 | -Dplatforms='${@",".join("${PLATFORMS}".split())}' \ | 73 | -Dplatforms='${@",".join("${PLATFORMS}".split())}' \ |
78 | " | 74 | " |
79 | 75 | ||
80 | EXTRA_OEMESON:append:class-target = " ${@bb.utils.contains('PACKAGECONFIG', 'opencl', '-Dintel-clc=system', '', d)}" | ||
81 | EXTRA_OEMESON:append:class-native = " ${@bb.utils.contains('PACKAGECONFIG', 'opencl', '-Dintel-clc=enabled', '', d)}" | ||
82 | |||
83 | def strip_comma(s): | 76 | def strip_comma(s): |
84 | return s.strip(',') | 77 | return s.strip(',') |
85 | 78 | ||
79 | |||
86 | PACKAGECONFIG = " \ | 80 | PACKAGECONFIG = " \ |
87 | gallium \ | 81 | gallium \ |
88 | video-codecs \ | 82 | video-codecs \ |
89 | ${@bb.utils.filter('DISTRO_FEATURES', 'x11 vulkan wayland', d)} \ | 83 | ${@bb.utils.filter('DISTRO_FEATURES', 'x11 vulkan wayland', d)} \ |
90 | ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl egl gles gbm virgl', '', d)} \ | 84 | ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'opengl egl gles gbm virgl', '', d)} \ |
91 | ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'dri3', '', d)} \ | ||
92 | ${@bb.utils.contains('DISTRO_FEATURES', 'x11 vulkan', 'dri3', '', d)} \ | ||
93 | ${@bb.utils.contains('DISTRO_FEATURES', 'vulkan', 'zink', '', d)} \ | 85 | ${@bb.utils.contains('DISTRO_FEATURES', 'vulkan', 'zink', '', d)} \ |
94 | " | 86 | " |
95 | 87 | ||
96 | PACKAGECONFIG:append:class-native = " gallium-llvm r600" | 88 | PACKAGECONFIG:append:x86 = " libclc gallium-llvm" |
89 | PACKAGECONFIG:append:x86-64 = " libclc gallium-llvm" | ||
90 | PACKAGECONFIG:append:i686 = " libclc gallium-llvm" | ||
91 | PACKAGECONFIG:append:class-native = " libclc gallium-llvm r600" | ||
97 | 92 | ||
98 | # "gbm" requires "opengl" | 93 | # "gbm" requires "opengl" |
99 | PACKAGECONFIG[gbm] = "-Dgbm=enabled,-Dgbm=disabled" | 94 | PACKAGECONFIG[gbm] = "-Dgbm=enabled,-Dgbm=disabled" |
100 | 95 | ||
101 | X11_DEPS = "xorgproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes xrandr" | 96 | X11_DEPS = "xorgproto virtual/libx11 libxext libxxf86vm libxdamage libxfixes xrandr xorgproto libxshmfence" |
102 | # "x11" requires "opengl" | 97 | # "x11" requires "opengl" |
103 | PACKAGECONFIG[x11] = ",-Dglx=disabled,${X11_DEPS}" | 98 | PACKAGECONFIG[x11] = ",-Dglx=disabled,${X11_DEPS}" |
104 | PACKAGECONFIG[wayland] = ",,wayland-native wayland libdrm wayland-protocols" | 99 | PACKAGECONFIG[wayland] = ",,wayland-native wayland libdrm wayland-protocols" |
105 | 100 | ||
106 | PACKAGECONFIG[dri3] = "-Ddri3=enabled, -Ddri3=disabled, xorgproto libxshmfence" | 101 | VULKAN_DRIVERS_AMD = "" |
102 | VULKAN_DRIVERS_AMD:x86 = ",amd" | ||
103 | VULKAN_DRIVERS_AMD:x86-64 = ",amd" | ||
104 | # i686 is a 32 bit override for mesa-native | ||
105 | VULKAN_DRIVERS_AMD:i686 = ",amd" | ||
106 | |||
107 | VULKAN_DRIVERS_INTEL = "${@bb.utils.contains('PACKAGECONFIG', 'libclc', ',intel', '', d)}" | ||
108 | VULKAN_DRIVERS_SWRAST = ",swrast" | ||
109 | # Crashes on x32 | ||
110 | VULKAN_DRIVERS_SWRAST:x86-x32 = "" | ||
111 | VULKAN_DRIVERS_LLVM = "${VULKAN_DRIVERS_SWRAST}${VULKAN_DRIVERS_AMD}${VULKAN_DRIVERS_INTEL}" | ||
107 | 112 | ||
108 | # Vulkan drivers need dri3 enabled | ||
109 | # amd could be enabled as well but requires gallium-llvm with llvm >= 3.9 | ||
110 | VULKAN_DRIVERS = "" | 113 | VULKAN_DRIVERS = "" |
111 | VULKAN_DRIVERS:append:x86 = ",intel,amd" | ||
112 | VULKAN_DRIVERS:append:x86-64 = ",intel,amd" | ||
113 | # i686 is a 32 bit override for mesa-native | ||
114 | VULKAN_DRIVERS:append:i686 = ",intel,amd" | ||
115 | VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}" | 114 | VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}" |
116 | VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'broadcom', ',broadcom', '', d)}" | 115 | VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'broadcom', ',broadcom', '', d)}" |
117 | VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ',swrast', '', d)}" | 116 | VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', '${VULKAN_DRIVERS_LLVM}', '', d)}" |
118 | VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'imagination', ',imagination-experimental', '', d)}" | 117 | VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'imagination', ',imagination-experimental', '', d)}" |
119 | PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${@strip_comma('${VULKAN_DRIVERS}')}, -Dvulkan-drivers='',glslang-native vulkan-loader vulkan-headers" | 118 | PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${@strip_comma('${VULKAN_DRIVERS}')}, -Dvulkan-drivers='',glslang-native vulkan-loader vulkan-headers" |
120 | 119 | ||
@@ -137,7 +136,7 @@ PACKAGECONFIG[freedreno-fdperf] = ",,libconfig" | |||
137 | PACKAGECONFIG[tools] = "-Dtools=${@strip_comma('${TOOLS}')}, -Dtools='', ${TOOLS_DEPS}" | 136 | PACKAGECONFIG[tools] = "-Dtools=${@strip_comma('${TOOLS}')}, -Dtools='', ${TOOLS_DEPS}" |
138 | 137 | ||
139 | PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=false" | 138 | PACKAGECONFIG[opengl] = "-Dopengl=true, -Dopengl=false" |
140 | PACKAGECONFIG[glvnd] = "-Dglvnd=true, -Dglvnd=false, libglvnd" | 139 | PACKAGECONFIG[glvnd] = "-Dglvnd=enabled, -Dglvnd=disabled, libglvnd" |
141 | 140 | ||
142 | # "gles" requires "opengl" | 141 | # "gles" requires "opengl" |
143 | PACKAGECONFIG[gles] = "-Dgles1=enabled -Dgles2=enabled, -Dgles1=disabled -Dgles2=disabled" | 142 | PACKAGECONFIG[gles] = "-Dgles1=enabled -Dgles2=enabled, -Dgles1=disabled -Dgles2=disabled" |
@@ -145,9 +144,9 @@ PACKAGECONFIG[gles] = "-Dgles1=enabled -Dgles2=enabled, -Dgles1=disabled -Dgles2 | |||
145 | # "egl" requires "opengl" | 144 | # "egl" requires "opengl" |
146 | PACKAGECONFIG[egl] = "-Degl=enabled, -Degl=disabled" | 145 | PACKAGECONFIG[egl] = "-Degl=enabled, -Degl=disabled" |
147 | 146 | ||
148 | # "opencl" requires libclc from meta-clang and spirv-tools from OE-Core | 147 | # "opencl" also requires libclc and gallium-llvm to be present in PKGCONFIG! |
149 | OPENCL_NATIVE = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', '-Dopencl-native=true', '', d)}" | 148 | # Be sure to enable them both for the target and for the native build. |
150 | PACKAGECONFIG[opencl] = "-Dgallium-opencl=icd -Dopencl-spirv=true ${OPENCL_NATIVE},-Dgallium-opencl=disabled -Dopencl-spirv=false,libclc spirv-tools python3-ply-native" | 149 | PACKAGECONFIG[opencl] = "-Dgallium-opencl=icd,-Dgallium-opencl=disabled," |
151 | 150 | ||
152 | PACKAGECONFIG[broadcom] = "" | 151 | PACKAGECONFIG[broadcom] = "" |
153 | PACKAGECONFIG[etnaviv] = ",,python3-pycparser-native" | 152 | PACKAGECONFIG[etnaviv] = ",,python3-pycparser-native" |
@@ -157,13 +156,13 @@ PACKAGECONFIG[vc4] = "" | |||
157 | PACKAGECONFIG[v3d] = "" | 156 | PACKAGECONFIG[v3d] = "" |
158 | PACKAGECONFIG[zink] = "" | 157 | PACKAGECONFIG[zink] = "" |
159 | 158 | ||
160 | GALLIUMDRIVERS = "swrast" | 159 | GALLIUMDRIVERS = "softpipe" |
161 | # gallium swrast was found to crash Xorg on startup in x32 qemu | 160 | # gallium swrast was found to crash Xorg on startup in x32 qemu |
162 | GALLIUMDRIVERS:x86-x32 = "" | 161 | GALLIUMDRIVERS:x86-x32 = "" |
163 | GALLIUMDRIVERS:append:x86 = ",i915,iris,crocus" | 162 | GALLIUMDRIVERS:append:x86 = ",i915,crocus" |
164 | GALLIUMDRIVERS:append:x86-64 = ",i915,iris,crocus" | 163 | GALLIUMDRIVERS:append:x86-64 = ",i915,crocus" |
165 | # i686 is a 32 bit override for mesa-native | 164 | # i686 is a 32 bit override for mesa-native |
166 | GALLIUMDRIVERS:append:i686 = ",i915,iris,crocus" | 165 | GALLIUMDRIVERS:append:i686 = ",i915,crocus" |
167 | 166 | ||
168 | GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'etnaviv', ',etnaviv', '', d)}" | 167 | GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'etnaviv', ',etnaviv', '', d)}" |
169 | GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}" | 168 | GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}" |
@@ -173,8 +172,12 @@ GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'v3d', ',v3d', '' | |||
173 | GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'zink', ',zink', '', d)}" | 172 | GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'zink', ',zink', '', d)}" |
174 | 173 | ||
175 | # radeonsi requires LLVM | 174 | # radeonsi requires LLVM |
175 | GALLIUMDRIVERS_IRIS = "${@bb.utils.contains('PACKAGECONFIG', 'libclc', ',iris', '', d)}" | ||
176 | GALLIUMDRIVERS_RADEONSI = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',radeonsi', '', d)}" | 176 | GALLIUMDRIVERS_RADEONSI = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',radeonsi', '', d)}" |
177 | GALLIUMDRIVERS_LLVM = ",r300,nouveau${GALLIUMDRIVERS_RADEONSI}" | 177 | GALLIUMDRIVERS_LLVMPIPE = ",llvmpipe" |
178 | # llvmpipe crashes on x32 | ||
179 | GALLIUMDRIVERS_LLVMPIPE:x86-x32 = "" | ||
180 | GALLIUMDRIVERS_LLVM = ",r300,nouveau${GALLIUMDRIVERS_LLVMPIPE}${GALLIUMDRIVERS_IRIS}${GALLIUMDRIVERS_RADEONSI}" | ||
178 | GALLIUMDRIVERS_LLVM:append:x86 = ",svga" | 181 | GALLIUMDRIVERS_LLVM:append:x86 = ",svga" |
179 | GALLIUMDRIVERS_LLVM:append:x86-64 = ",svga" | 182 | GALLIUMDRIVERS_LLVM:append:x86-64 = ",svga" |
180 | # i686 is a 32 bit override for mesa-native | 183 | # i686 is a 32 bit override for mesa-native |
@@ -187,8 +190,16 @@ GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', ' | |||
187 | GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',r600', '', d)}" | 190 | GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'r600', ',r600', '', d)}" |
188 | GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'virgl', ',virgl', '', d)}" | 191 | GALLIUMDRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'virgl', ',virgl', '', d)}" |
189 | 192 | ||
193 | MESA_CLC = "system" | ||
194 | MESA_CLC:class-native = "enabled" | ||
195 | INSTALL_MESA_CLC = "false" | ||
196 | INSTALL_MESA_CLC:class-native = "true" | ||
197 | MESA_NATIVE = "mesa-native" | ||
198 | MESA_NATIVE:class-native = "" | ||
199 | |||
190 | PACKAGECONFIG[gallium] = "-Dgallium-drivers=${@strip_comma('${GALLIUMDRIVERS}')}, -Dgallium-drivers='', libdrm" | 200 | PACKAGECONFIG[gallium] = "-Dgallium-drivers=${@strip_comma('${GALLIUMDRIVERS}')}, -Dgallium-drivers='', libdrm" |
191 | PACKAGECONFIG[gallium-llvm] = "-Dllvm=enabled -Dshared-llvm=enabled, -Dllvm=disabled, llvm llvm-native elfutils" | 201 | PACKAGECONFIG[gallium-llvm] = "-Dllvm=enabled -Dshared-llvm=enabled, -Dllvm=disabled, llvm llvm-native elfutils" |
202 | PACKAGECONFIG[libclc] = "-Dmesa-clc=${MESA_CLC} -Dinstall-mesa-clc=${INSTALL_MESA_CLC},,libclc spirv-tools spirv-llvm-translator ${MESA_NATIVE}" | ||
192 | PACKAGECONFIG[xa] = "-Dgallium-xa=enabled, -Dgallium-xa=disabled" | 203 | PACKAGECONFIG[xa] = "-Dgallium-xa=enabled, -Dgallium-xa=disabled" |
193 | PACKAGECONFIG[va] = "-Dgallium-va=enabled,-Dgallium-va=disabled,libva-initial" | 204 | PACKAGECONFIG[va] = "-Dgallium-va=enabled,-Dgallium-va=disabled,libva-initial" |
194 | PACKAGECONFIG[vdpau] = "-Dgallium-vdpau=enabled,-Dgallium-vdpau=disabled,libvdpau" | 205 | PACKAGECONFIG[vdpau] = "-Dgallium-vdpau=enabled,-Dgallium-vdpau=disabled,libvdpau" |
@@ -242,6 +253,7 @@ RDEPENDS:libopencl-mesa += "${@bb.utils.contains('PACKAGECONFIG', 'opencl', 'lib | |||
242 | 253 | ||
243 | PACKAGES =+ "libegl-mesa libegl-mesa-dev \ | 254 | PACKAGES =+ "libegl-mesa libegl-mesa-dev \ |
244 | libosmesa libosmesa-dev \ | 255 | libosmesa libosmesa-dev \ |
256 | libgallium \ | ||
245 | libgl-mesa libgl-mesa-dev \ | 257 | libgl-mesa libgl-mesa-dev \ |
246 | libglx-mesa libglx-mesa-dev \ | 258 | libglx-mesa libglx-mesa-dev \ |
247 | libglapi libglapi-dev \ | 259 | libglapi libglapi-dev \ |
@@ -267,13 +279,6 @@ do_install:append () { | |||
267 | rm -f ${D}${libdir}/pkgconfig/wayland-egl.pc | 279 | rm -f ${D}${libdir}/pkgconfig/wayland-egl.pc |
268 | } | 280 | } |
269 | 281 | ||
270 | do_install:append:class-native () { | ||
271 | if ${@bb.utils.contains('PACKAGECONFIG', 'opencl', 'true', 'false', d)}; then | ||
272 | install -d ${D}${bindir} | ||
273 | install -m0755 ${B}/src/intel/compiler/intel_clc ${D}${bindir} | ||
274 | fi | ||
275 | } | ||
276 | |||
277 | # For the packages that make up the OpenGL interfaces, inject variables so that | 282 | # For the packages that make up the OpenGL interfaces, inject variables so that |
278 | # they don't get Debian-renamed (which would remove the -mesa suffix), and | 283 | # they don't get Debian-renamed (which would remove the -mesa suffix), and |
279 | # RPROVIDEs/RCONFLICTs on the generic libgl name. | 284 | # RPROVIDEs/RCONFLICTs on the generic libgl name. |
@@ -344,7 +349,8 @@ FILES:mesa-megadriver = "${libdir}/dri/* ${datadir}/drirc.d" | |||
344 | FILES:mesa-vulkan-drivers = "${libdir}/libvulkan_*.so ${libdir}/libpowervr_rogue.so ${datadir}/vulkan" | 349 | FILES:mesa-vulkan-drivers = "${libdir}/libvulkan_*.so ${libdir}/libpowervr_rogue.so ${datadir}/vulkan" |
345 | FILES:${PN}-vdpau-drivers = "${libdir}/vdpau/*.so.*" | 350 | FILES:${PN}-vdpau-drivers = "${libdir}/vdpau/*.so.*" |
346 | FILES:libegl-mesa = "${libdir}/libEGL*.so.* ${datadir}/glvnd/egl_vendor.d" | 351 | FILES:libegl-mesa = "${libdir}/libEGL*.so.* ${datadir}/glvnd/egl_vendor.d" |
347 | FILES:libgbm = "${libdir}/libgbm.so.*" | 352 | FILES:libgbm = "${libdir}/libgbm.so.* ${libdir}/gbm/*_gbm.so" |
353 | FILES:libgallium = "${libdir}/libgallium-*.so" | ||
348 | FILES:libgles1-mesa = "${libdir}/libGLESv1*.so.*" | 354 | FILES:libgles1-mesa = "${libdir}/libGLESv1*.so.*" |
349 | FILES:libgles2-mesa = "${libdir}/libGLESv2.so.*" | 355 | FILES:libgles2-mesa = "${libdir}/libGLESv2.so.*" |
350 | FILES:libgl-mesa = "${libdir}/libGL.so.*" | 356 | FILES:libgl-mesa = "${libdir}/libGL.so.*" |
@@ -372,6 +378,9 @@ FILES:libxatracker-dev = "${libdir}/libxatracker.so ${libdir}/libxatracker.la \ | |||
372 | FILES:${PN}-tools = "${bindir} ${datadir}" | 378 | FILES:${PN}-tools = "${bindir} ${datadir}" |
373 | ALLOW_EMPTY:${PN}-tools = "1" | 379 | ALLOW_EMPTY:${PN}-tools = "1" |
374 | 380 | ||
381 | # All DRI drivers are symlinks to libdril_dri.so | ||
382 | INSANE_SKIP:${PN}-megadriver += "dev-so" | ||
383 | |||
375 | # Fix upgrade path from mesa to mesa-megadriver | 384 | # Fix upgrade path from mesa to mesa-megadriver |
376 | RREPLACES:mesa-megadriver = "mesa" | 385 | RREPLACES:mesa-megadriver = "mesa" |
377 | RCONFLICTS:mesa-megadriver = "mesa" | 386 | RCONFLICTS:mesa-megadriver = "mesa" |