From 673711a24688115547f0d1701c9ebe4115bafbcd Mon Sep 17 00:00:00 2001 From: Bananymous Date: Sat, 22 Nov 2025 00:40:14 +0200 Subject: [PATCH] ports/mesa: Require llvm I dont't really even want to suppot softpipe as that is so slow --- ports/mesa/build.sh | 73 ++++++++++--------- .../0005-dont-include-sys-ioccom.patch | 13 ++++ .../patches/0005-dont-use-drm-with-llvm.patch | 21 ------ 3 files changed, 50 insertions(+), 57 deletions(-) create mode 100644 ports/mesa/patches/0005-dont-include-sys-ioccom.patch delete mode 100644 ports/mesa/patches/0005-dont-use-drm-with-llvm.patch diff --git a/ports/mesa/build.sh b/ports/mesa/build.sh index 86715646..e3eade4e 100755 --- a/ports/mesa/build.sh +++ b/ports/mesa/build.sh @@ -8,55 +8,56 @@ CONFIGURE_OPTIONS=( '-Dprefix=/usr' '-Dosmesa=true' '-Dvulkan-drivers=[]' + '-Dgallium-drivers=llvmpipe' '-Dplatforms=[]' '-Dglx=disabled' '-Dbuildtype=release' ) -configure() { +pre_configure() { llvm_version='20.1.8' - llvm_root="../../llvm/llvm-$llvm_version-$BANAN_ARCH" + llvm_root="$(realpath ../../llvm)/llvm-$llvm_version-$BANAN_ARCH" + llvm_lib="$llvm_root/build/lib" - gallium_driver=softpipe - - if [ -d "$llvm_root" ]; then - llvm_lib=$(realpath "$llvm_root/build/lib") - - mkdir -p subprojects/llvm - - wrap_file='subprojects/llvm/meson.build' - echo "project('llvm', ['cpp'])" >$wrap_file - echo "" >>$wrap_file - echo "cpp = meson.get_compiler('cpp')" >>$wrap_file - echo "" >>$wrap_file - echo "_deps = []" >>$wrap_file - echo "_search = '$llvm_lib'" >>$wrap_file - echo "foreach d : [" >>$wrap_file - for path in $llvm_lib/libLLVM*.a; do - name=$(basename $path) - echo " '${name:3:-2}'," >>$wrap_file - done - echo " ]" >>$wrap_file - echo " _deps += cpp.find_library(d, dirs : _search)" >>$wrap_file - echo "endforeach" >>$wrap_file - echo "" >>$wrap_file - echo "dep_llvm = declare_dependency(" >>$wrap_file - echo " include_directories : include_directories(" >>$wrap_file - echo " '$(realpath $llvm_root/llvm/include)'," >>$wrap_file - echo " '$(realpath $llvm_root/build/include)'," >>$wrap_file - echo " )," >>$wrap_file - echo " dependencies : _deps," >>$wrap_file - echo " version : '$llvm_version'," >>$wrap_file - echo ")" >>$wrap_file - - gallium_driver=llvmpipe + if [ ! -d "$llvm_lib" ]; then + pushd ../../llvm >/dev/null || exit 1 + ./build.sh || exit 1 + popd >/dev/null fi + mkdir -p subprojects/llvm + + wrap_file='subprojects/llvm/meson.build' + echo "project('llvm', ['cpp'])" >$wrap_file + echo "" >>$wrap_file + echo "cpp = meson.get_compiler('cpp')" >>$wrap_file + echo "" >>$wrap_file + echo "_deps = []" >>$wrap_file + echo "_search = '$llvm_lib'" >>$wrap_file + echo "foreach d : [" >>$wrap_file + for path in $llvm_lib/libLLVM*.a; do + name=$(basename $path) + echo " '${name:3:-2}'," >>$wrap_file + done + echo " ]" >>$wrap_file + echo " _deps += cpp.find_library(d, dirs : _search)" >>$wrap_file + echo "endforeach" >>$wrap_file + echo "" >>$wrap_file + echo "dep_llvm = declare_dependency(" >>$wrap_file + echo " include_directories : include_directories(" >>$wrap_file + echo " '$llvm_root/llvm/include'," >>$wrap_file + echo " '$llvm_root/build/include'," >>$wrap_file + echo " )," >>$wrap_file + echo " dependencies : _deps," >>$wrap_file + echo " version : '$llvm_version'," >>$wrap_file + echo ")" >>$wrap_file +} + +configure() { meson setup \ --reconfigure \ --cross-file "$MESON_CROSS_FILE" \ "${CONFIGURE_OPTIONS[@]}" \ - "-Dgallium-drivers=$gallium_driver" \ build || exit 1 } diff --git a/ports/mesa/patches/0005-dont-include-sys-ioccom.patch b/ports/mesa/patches/0005-dont-include-sys-ioccom.patch new file mode 100644 index 00000000..c7a6ea3f --- /dev/null +++ b/ports/mesa/patches/0005-dont-include-sys-ioccom.patch @@ -0,0 +1,13 @@ +diff -ruN mesa-25.0.7/include/drm-uapi/drm.h mesa-25.0.7-banan_os/include/drm-uapi/drm.h +--- mesa-25.0.7/include/drm-uapi/drm.h 2025-05-28 18:20:23.000000000 +0300 ++++ mesa-25.0.7-banan_os/include/drm-uapi/drm.h 2025-11-07 00:31:02.881817684 +0200 +@@ -44,7 +44,9 @@ + #else /* One of the BSDs */ + + #include ++#if 0 + #include ++#endif + #include + typedef int8_t __s8; + typedef uint8_t __u8; diff --git a/ports/mesa/patches/0005-dont-use-drm-with-llvm.patch b/ports/mesa/patches/0005-dont-use-drm-with-llvm.patch deleted file mode 100644 index 566d8648..00000000 --- a/ports/mesa/patches/0005-dont-use-drm-with-llvm.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -ru mesa-25.0.7-banan_os/src/gallium/drivers/llvmpipe/lp_texture.c mesa-25.0.7-x86_64/src/gallium/drivers/llvmpipe/lp_texture.c ---- mesa-25.0.7-banan_os/src/gallium/drivers/llvmpipe/lp_texture.c 2025-05-28 18:20:23.000000000 +0300 -+++ mesa-25.0.7-x86_64/src/gallium/drivers/llvmpipe/lp_texture.c 2025-08-03 19:16:20.254971098 +0300 -@@ -59,7 +59,7 @@ - #include "frontend/sw_winsys.h" - #include "git_sha1.h" - --#ifndef _WIN32 -+#if !defined(_WIN32) && !defined(__banan_os__) - #include "drm-uapi/drm_fourcc.h" - #endif - -@@ -1713,7 +1713,7 @@ - case PIPE_RESOURCE_PARAM_LAYER_STRIDE: - *value = lpr->img_stride[level]; - return true; --#ifndef _WIN32 -+#if !defined(_WIN32) && !defined(__banan_os__) - case PIPE_RESOURCE_PARAM_MODIFIER: - *value = lpr->dmabuf ? DRM_FORMAT_MOD_LINEAR : DRM_FORMAT_MOD_INVALID; - return true;