diff --git a/recipes-graphics/mesa/files/0001-dont-build-clover-frontend.patch b/recipes-graphics/mesa/files/0001-dont-build-clover-frontend.patch new file mode 100644 index 0000000..5f45f94 --- /dev/null +++ b/recipes-graphics/mesa/files/0001-dont-build-clover-frontend.patch @@ -0,0 +1,29 @@ +From: Markus Volk +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 + +--- 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/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch b/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch new file mode 100644 index 0000000..953a724 --- /dev/null +++ b/recipes-graphics/mesa/files/0001-freedreno-don-t-encode-build-path-into-binaries.patch @@ -0,0 +1,110 @@ +From 027ac36756cc75eea9ed4fee135a351af30b35fd Mon Sep 17 00:00:00 2001 +From: Dmitry Baryshkov +Date: Tue, 16 Jul 2024 12:32:47 +0300 +Subject: [PATCH] freedreno: don't encode build path into binaries + +Encoding build-specific path into installed binaries is generally +frowned upon. It harms the reproducibility of the build and e.g. +OpenEmbedded now considers that to be an error. + +Instead of hardcoding rnn_src_path into the RNN_DEF_PATH define specify +it manually when running the tests. + +Upstream-Status: Submitted [https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30206] +Signed-off-by: Dmitry Baryshkov +--- + src/freedreno/afuc/meson.build | 4 ++++ + src/freedreno/decode/meson.build | 4 +++- + src/freedreno/meson.build | 2 +- + 3 files changed, 8 insertions(+), 2 deletions(-) + +diff --git a/src/freedreno/afuc/meson.build b/src/freedreno/afuc/meson.build +index bb7cebf5a748..351cc31ef2de 100644 +--- a/src/freedreno/afuc/meson.build ++++ b/src/freedreno/afuc/meson.build +@@ -56,10 +56,12 @@ if with_tests + asm_fw = custom_target('afuc_test.fw', + output: 'afuc_test.fw', + command: [asm, files('../.gitlab-ci/traces/afuc_test.asm'), '@OUTPUT@'], ++ env: {'RNN_PATH': rnn_src_path}, + ) + asm_fw_a7xx = custom_target('afuc_test_a7xx.fw', + output: 'afuc_test_a7xx.fw', + command: [asm, files('../.gitlab-ci/traces/afuc_test_a7xx.asm'), '@OUTPUT@'], ++ env: {'RNN_PATH': rnn_src_path}, + ) + test('afuc-asm', + diff, +@@ -120,11 +122,13 @@ if cc.sizeof('size_t') > 4 + disasm_fw = custom_target('afuc_test.asm', + output: 'afuc_test.asm', + command: [disasm, '-u', files('../.gitlab-ci/reference/afuc_test.fw')], ++ env: {'RNN_PATH': rnn_src_path}, + capture: true + ) + disasm_fw_a7xx = custom_target('afuc_test_a7xx.asm', + output: 'afuc_test_a7xx.asm', + command: [disasm, '-u', files('../.gitlab-ci/reference/afuc_test_a7xx.fw')], ++ env: {'RNN_PATH': rnn_src_path}, + capture: true + ) + test('afuc-disasm', +diff --git a/src/freedreno/decode/meson.build b/src/freedreno/decode/meson.build +index 469eeb4eb597..dfa1c12d0d9f 100644 +--- a/src/freedreno/decode/meson.build ++++ b/src/freedreno/decode/meson.build +@@ -194,6 +194,7 @@ if dep_lua.found() and dep_libarchive.found() + log = custom_target(name + '.log', + output: name + '.log', + command: [cffdump, '--unit-test', args, files('../.gitlab-ci/traces/' + name + '.rd.gz')], ++ env: {'RNN_PATH': rnn_src_path}, + capture: true, + ) + test('cffdump-' + name, +@@ -247,7 +248,8 @@ if with_tests + output: name + '.log', + command: [crashdec, args, files('../.gitlab-ci/traces/' + name + '.devcore')], + capture: true, +- env: {'GALLIUM_DUMP_CPU': 'false'}, ++ env: {'GALLIUM_DUMP_CPU': 'false', ++ 'RNN_PATH': rnn_src_path}, + ) + + test('crashdec-' + name, +diff --git a/src/freedreno/meson.build b/src/freedreno/meson.build +index 98e49b8fcf0e..145e72597eb9 100644 +--- a/src/freedreno/meson.build ++++ b/src/freedreno/meson.build +@@ -6,7 +6,7 @@ inc_freedreno_rnn = include_directories('rnn') + + rnn_src_path = dir_source_root + '/src/freedreno/registers' + rnn_install_path = get_option('datadir') + '/freedreno/registers' +-rnn_path = rnn_src_path + ':' + get_option('prefix') + '/' + rnn_install_path ++rnn_path = get_option('prefix') + '/' + rnn_install_path + + dep_libarchive = dependency('libarchive', allow_fallback: true, required: false) + dep_libxml2 = dependency('libxml-2.0', allow_fallback: true, required: false) +diff --git a/src/freedreno/registers/gen_header.py b/src/freedreno/registers/gen_header.py +--- a/src/freedreno/registers/gen_header.py ++++ b/src/freedreno/registers/gen_header.py +@@ -885,13 +885,14 @@ The rules-ng-ng source files this header + """) + maxlen = 0 + for filepath in p.xml_files: +- maxlen = max(maxlen, len(filepath)) ++ maxlen = max(maxlen, len(os.path.basename(filepath))) + for filepath in p.xml_files: +- pad = " " * (maxlen - len(filepath)) ++ filename = os.path.basename(filepath) ++ pad = " " * (maxlen - len(filename)) + filesize = str(os.path.getsize(filepath)) + filesize = " " * (7 - len(filesize)) + filesize + filetime = time.ctime(os.path.getmtime(filepath)) +- print("- " + filepath + pad + " (" + filesize + " bytes, from " + filetime + ")") ++ print("- " + filename + pad + " (" + filesize + " bytes, from " + filetime + ")") + if p.copyright_year: + current_year = str(datetime.date.today().year) + print() +--- +2.39.2 + diff --git a/recipes-graphics/mesa/mesa.bbappend b/recipes-graphics/mesa/mesa.bbappend index 4ee31b2..704b658 100644 --- a/recipes-graphics/mesa/mesa.bbappend +++ b/recipes-graphics/mesa/mesa.bbappend @@ -1,13 +1,19 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" + +LIC_FILES_CHKSUM = "file://docs/license.rst;md5=ffe678546d4337b732cfd12262e6af11" + PACKAGECONFIG:append:rpi = " gallium gallium-llvm vc4 v3d ${@bb.utils.contains('DISTRO_FEATURES', 'x11 opengl', 'x11', '', d)} ${@bb.utils.contains('DISTRO_FEATURES', 'vulkan', 'vulkan broadcom', '', d)}" DRIDRIVERS:class-target:rpi = "" # Remove unused patches SRC_URI = "https://mesa.freedesktop.org/archive/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-dont-build-clover-frontend.patch \ " -SRC_URI[sha256sum] = "9c795900449ce5bc7c526ba0ab3532a22c3c951cab7e0dd9de5fcac41b0843af" -PV = "24.3.1" +SRC_URI[sha256sum] = "ffcb6cadb5fd356d56008e6308641dfe4b2929f30139f6585436ca6e3cddba7f" +PV = "25.1.3" # -Dglvnd is deprecated from true/false to enabled/disabled PACKAGECONFIG[glvnd] = "-Dglvnd=enabled, -Dglvnd=disabled, libglvnd" @@ -17,12 +23,42 @@ PACKAGECONFIG[glvnd] = "-Dglvnd=enabled, -Dglvnd=disabled, libglvnd" PACKAGECONFIG:remove = "dri3" unset PACKAGECONFIG[dri3] +unset VULKAN_DRIVERS +VULKAN_DRIVERS_AMD = "${@bb.utils.contains('PACKAGECONFIG', 'amd', ',amd', '', d)}" +VULKAN_DRIVERS_ASAHI = "${@bb.utils.contains('PACKAGECONFIG', 'asahi libclc opencl', ',asahi', '', d)}" +VULKAN_DRIVERS_INTEL = "${@bb.utils.contains('PACKAGECONFIG', 'intel libclc', ',intel', '', d)}" +VULKAN_DRIVERS_SWRAST = ",swrast" +# Crashes on x32 +VULKAN_DRIVERS_SWRAST:x86-x32 = "" +VULKAN_DRIVERS_LLVM = "${VULKAN_DRIVERS_SWRAST}${VULKAN_DRIVERS_AMD}${VULKAN_DRIVERS_ASAHI}${VULKAN_DRIVERS_INTEL}" + +VULKAN_DRIVERS = "" +VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'freedreno', ',freedreno', '', d)}" +VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'broadcom', ',broadcom', '', d)}" +VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'gallium-llvm', '${VULKAN_DRIVERS_LLVM}', '', d)}" +VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'imagination', ',imagination-experimental', '', d)}" +VULKAN_DRIVERS:append = "${@bb.utils.contains('PACKAGECONFIG', 'panfrost', ',panfrost', '', d)}" +PACKAGECONFIG[vulkan] = "-Dvulkan-drivers=${@strip_comma('${VULKAN_DRIVERS}')}, -Dvulkan-drivers='',glslang-native vulkan-loader vulkan-headers" + +GALLIUMDRIVERS = "softpipe" + +PACKAGECONFIG[opencl] = "-Dgallium-opencl=icd,-Dgallium-opencl=disabled," + DEPENDS += " wayland-protocols llvm python3-pyyaml python3-pyyaml-native" RDEPENDS:libgl-mesa += " llvm wayland-protocols" -FILES:libgbm += " ${libdir}/gbm/dri_gbm*.so" +PACKAGES =+ " \ + libgallium \ +" + +FILES:libgbm = "${libdir}/libgbm.so.* ${libdir}/gbm/*_gbm.so" +FILES:libgbm-dev = "${libdir}/libgbm.* ${libdir}/pkgconfig/gbm.pc ${includedir}/gbm.h ${includedir}/gbm_backend_abi.h" +FILES:libgallium = "${libdir}/libgallium-*.so" FILES:libgl-mesa += " ${libdir}/libgallium*.so" FILES:libgbm-dev += " ${includedir}/gbm.h" + +# All DRI drivers are symlinks to libdril_dri.so +INSANE_SKIP:${PN}-megadriver += "dev-so"