From: Daniel Golle Date: Sat, 3 May 2025 03:38:05 +0000 (+0100) Subject: mesa: update to 25.0.5 X-Git-Url: http://git.openwrt.org/?a=commitdiff_plain;h=2ebf064c0583f031dc41e4c1bf4f404bbcd3f3c7;p=feed%2Fvideo.git mesa: update to 25.0.5 Improve build and make dependency on LLVM conditional. Fixes: #60 Signed-off-by: Daniel Golle --- diff --git a/libs/mesa/Makefile b/libs/mesa/Makefile index f26c43a..ef3477b 100644 --- a/libs/mesa/Makefile +++ b/libs/mesa/Makefile @@ -1,22 +1,20 @@ include $(TOPDIR)/rules.mk PKG_NAME:=mesa -PKG_VERSION:=24.3.1 +PKG_VERSION:=25.0.5 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=https://archive.mesa3d.org/ -PKG_HASH:=9c795900449ce5bc7c526ba0ab3532a22c3c951cab7e0dd9de5fcac41b0843af +PKG_HASH:=c0d245dea0aa4b49f74b3d474b16542e4a8799791cd33d676c69f650ad4378d0 PKG_MAINTAINER:=Daniel Golle PKG_LICENSE:=BSD-3-Clause PKG_INSTALL:=1 -# arc, powerpc and powerpc64 LLVM builds are currently broken, but powerpc{,64} would support JIT in theory -LLVM_SUPPORTED:=(aarch64||arm||i386||i686||loongarch64||mips||mipsel||mips64||mips64el||riscv64||x86_64) +PKG_BUILD_DEPENDS:=glslang/host python3/host libva MESA_USE_LLVM:llvm MESA_USE_LLVM:mesa/host -PKG_BUILD_DEPENDS:=glslang/host python3/host libva (x86_64||i386||i686):mesa/host $(LLVM_SUPPORTED):llvm HOST_BUILD_DEPENDS:=python3/host spirv-tools/host llvm PKG_CONFIG_DEPENDS:= \ @@ -51,12 +49,6 @@ PYTHON3_PKG_BUILD:=0 MESON_USE_STAGING_PYTHON:=1 HOST_PYTHON3_PACKAGE_BUILD_DEPENDS:=./host-pip-requirements.txt -ifneq ($(CONFIG_aarch64)$(CONFIG_arm)$(CONFIG_i386)$(CONFIG_i686)$(CONFIG_loongarch64)$(CONFIG_mips)$(CONFIG_mipsel)$(CONFIG_mips64)$(CONFIG_mips64el)$(CONFIG_riscv64)$(CONFIG_x86_64),) -MESA_USE_LLVM:=1 -else -MESA_USE_LLVM:= -endif - include $(TOPDIR)/feeds/packages/lang/rust/rust-values.mk include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/host-build.mk @@ -72,41 +64,40 @@ define Package/mesa/Default SECTION:=libs CATEGORY:=Libraries SUBMENU:=Video + DEPENDS:=+powerpc:libatomic TITLE:=Mesa3D URL:=https://www.mesa3d.org endef -define Package/libmesa/Default -$(call Package/mesa/Default) - DEPENDS:=+libglapi +libstdcpp +zlib +libdrm +libsensors +libwayland +libzstd \ - +wayland-protocols - TITLE+= OpenGL and friends - PROVIDES:=libmesa -endef - - -define Package/libglapi +define Package/mesa3d $(call Package/mesa/Default) - TITLE+= libglapi - DEPENDS:=+libpthread +libatomic - VARIANT:=softpipe -endef - -define Package/libglapi/description -Free implementation of the GL API. + HIDDEN:=1 endef -define Package/libglapi/config +define Package/mesa3d/config config HAVE_MESA bool default y + +config MESA_USE_LLVM + bool "Use LLVM to build MESA" + depends on aarch64||arm||i386||i686||loongarch64||mips||mipsel||mips64||mips64el||riscv64||x86_64 + default y +endef + +define Package/libmesa/Default +$(call Package/mesa/Default) + DEPENDS+=+libstdcpp +zlib +libdrm +libsensors +libwayland +libzstd \ + +wayland-protocols + PROVIDES:=libmesa + TITLE+= OpenGL and friends endef define Package/libmesa-amd $(call Package/libmesa/Default) TITLE+= (AMD) - DEPENDS+=+libdrm-amdgpu +libdrm-radeon +libelf @$(LLVM_SUPPORTED) + DEPENDS+=+libdrm-amdgpu +libdrm-radeon +libelf @MESA_USE_LLVM VARIANT:=amd endef @@ -130,7 +121,7 @@ endef define Package/libmesa-intel $(call Package/libmesa/Default) - DEPENDS+=+libdrm-intel @(i386||i686||x86_64) + DEPENDS+=+libdrm-intel @(i386||i686||x86_64) @MESA_USE_LLVM TITLE+= (Intel) VARIANT:=intel endef @@ -186,7 +177,7 @@ endef define Package/libmesa-nouveau $(call Package/libmesa/Default) - DEPENDS+=+libdrm-nouveau @$(LLVM_SUPPORTED) + DEPENDS+=+libdrm-nouveau @MESA_USE_LLVM TITLE+= (NVIDIA) VARIANT:=nouveau endef @@ -287,7 +278,7 @@ define Package/libmesa-zink $(call Package/libmesa/Default) TITLE+= (Zink GL via Vulkan) VARIANT:=vulkan - DEPENDS+=@$(LLVM_SUPPORTED) + DEPENDS+=@MESA_USE_LLVM endef define Package/libmesa-zink/description @@ -313,7 +304,7 @@ endef define Package/libmesa-llvmpipe $(call Package/libmesa/Default) TITLE+= (LLVMpipe) - DEPENDS+=@$(LLVM_SUPPORTED) + DEPENDS+=@MESA_USE_LLVM VARIANT:=llvmpipe endef @@ -331,7 +322,8 @@ define Package/libopencl/Default $(call Package/mesa/Default) TITLE+= OpenCL PROVIDES:=libopencl - DEPENDS:=+$(LLVM_SUPPORTED):libclang-cpp +libdrm +libelf +libexpat +libstdcpp +libzstd +zlib @$(LLVM_SUPPORTED) + DEPENDS+=+MESA_USE_LLVM:libclang-cpp +libdrm +libelf +libexpat +libstdcpp \ + +libzstd +zlib @MESA_USE_LLVM endef @@ -358,7 +350,7 @@ endef define Package/libosmesa/Default $(call Package/mesa/Default) - DEPENDS:=+libdrm +libglapi +libstdcpp +zlib +libwayland +libzstd +wayland-protocols + DEPENDS+=+libdrm +libstdcpp +zlib +libwayland +libzstd +wayland-protocols TITLE+= off-screen rendering library endef @@ -385,7 +377,7 @@ endef define Package/libosmesa-llvmpipe $(call Package/libosmesa/Default) TITLE+= (LLVMpipe) - DEPENDS+=@$(LLVM_SUPPORTED) + DEPENDS+=@MESA_USE_LLVM VARIANT:=llvmpipe endef @@ -398,7 +390,7 @@ endef define Package/libvulkan-broadcom $(call Package/mesa/Default) - DEPENDS:=+libdrm +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib \ + DEPENDS+=+libdrm +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib \ @(arm||aarch64) @HAS_FPU TITLE+= Broadcom Vulkan driver VARIANT:=vulkan @@ -411,8 +403,8 @@ endef define Package/libvulkan-imagination $(call Package/mesa/Default) - DEPENDS:=+libatomic +libdrm +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib \ - @(aarch64||arm||mips||mips64||mipsel||mips64el||riscv64) + DEPENDS+=+libatomic +libdrm +libexpat +libstdcpp +libudev +libwayland +libzstd \ + +zlib @(aarch64||arm||mips||mips64||mipsel||mips64el||riscv64) TITLE+= Imagination PowerVR driver (EXPERIMENTAL) VARIANT:=vulkan endef @@ -435,8 +427,8 @@ endef define Package/libvulkan-intel $(call Package/mesa/Default) - DEPENDS:=+libdrm-intel +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib \ - @(i386||i686||x86_64) + DEPENDS+=+libdrm-intel +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib \ + @(i386||i686||x86_64) @MESA_USE_LLVM TITLE+= Intel Gen9+ Vulkan driver VARIANT:=vulkan endef @@ -448,8 +440,8 @@ endef define Package/libvulkan-intel-hasvk $(call Package/mesa/Default) - DEPENDS:=+libdrm-intel +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib \ - @(i386||i686||x86_64) + DEPENDS+=+libdrm-intel +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib \ + @(i386||i686||x86_64) @MESA_USE_LLVM TITLE+= Intel Gen7/Gen8 Vulkan driver VARIANT:=vulkan endef @@ -461,7 +453,7 @@ endef define Package/libvulkan-lvp $(call Package/mesa/Default) - DEPENDS:=+libatomic +libdrm +libstdcpp +libudev +libwayland +libzstd +zlib @$(LLVM_SUPPORTED) + DEPENDS+=+libatomic +libdrm +libstdcpp +libudev +libwayland +libzstd +zlib @MESA_USE_LLVM TITLE+= LLVM JIT CPU rendering Vulkan driver VARIANT:=vulkan endef @@ -474,7 +466,7 @@ endef define Package/libvulkan-nouveau $(call Package/mesa/Default) TITLE+= nouveau Vulkan driver for nVidia GPUs - DEPENDS:=$(RUST_ARCH_DEPENDS) @BROKEN + DEPENDS+=$(RUST_ARCH_DEPENDS) @MESA_USE_LLVM @BROKEN VARIANT:=vulkan # needs rust-bindgen which currently can't be built endef @@ -490,7 +482,7 @@ endef define Package/libvulkan-panfrost $(call Package/mesa/Default) - DEPENDS:=+libdrm +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib \ + DEPENDS+=+libdrm +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib \ @(arm||aarch64) TITLE+= ARM Mali Midgard/Bifrost/Valhall Vulkan driver VARIANT:=vulkan @@ -504,7 +496,8 @@ endef define Package/libvulkan-radeon $(call Package/mesa/Default) TITLE+= AMD Radeon Vulkan driver - DEPENDS:=+libatomic +libdrm-amdgpu +libelf +libexpat +libstdcpp +libudev +libwayland +libzstd +zlib @$(LLVM_SUPPORTED) + DEPENDS+=+libdrm-amdgpu +libelf +libexpat +libstdcpp +libudev +libwayland \ + +libzstd +zlib @MESA_USE_LLVM VARIANT:=vulkan endef @@ -562,12 +555,15 @@ MESON_HOST_ARGS += \ -Dgallium-xa=disabled \ -Dtools=nir \ -Dllvm=enabled \ + -Dmesa-clc=enabled \ + -Dprecomp-compiler=enabled \ -Dshared-llvm=disabled \ - -Dshared-glapi=disabled \ -Ddraw-use-llvm=false \ -Dintel-clc=enabled \ -Dstatic-libclc=all \ - -Dinstall-intel-clc=true + -Dinstall-intel-clc=true \ + -Dinstall-mesa-clc=true \ + -Dinstall-precomp-compiler=true MESON_ARGS += \ -Dplatforms=wayland \ @@ -582,11 +578,12 @@ MESON_ARGS += \ -Dlibunwind=disabled \ -Dvalgrind=disabled \ -Dtools= \ - -Dllvm=$(if $(MESA_USE_LLVM),en,dis)abled \ - -Dshared-glapi=enabled \ - -Dgallium-opencl=$(if $(MESA_USE_LLVM),standalone,disabled) \ - -Ddraw-use-llvm=$(if $(MESA_USE_LLVM),true,false) \ - -Dintel-clc=system + -Dllvm=$(if $(CONFIG_MESA_USE_LLVM),en,dis)abled \ + -Dgallium-opencl=$(if $(CONFIG_MESA_USE_LLVM),standalone,disabled) \ + -Ddraw-use-llvm=$(if $(CONFIG_MESA_USE_LLVM),true,false) \ + -Dintel-clc=system \ + -Dmesa-clc=system \ + -Dprecomp-compiler=system ifeq ($(BUILD_VARIANT),amd) MESON_ARGS += \ @@ -670,7 +667,7 @@ define Host/Configure $(LN) $(STAGING_DIR_HOST)/llvm-mesa/include $(HOST_BUILD_DIR)/subprojects/llvm $(LN) $(STAGING_DIR_HOST)/llvm-mesa/lib $(HOST_BUILD_DIR)/subprojects/llvm $(CP) ./llvm-meson.build.in $(HOST_BUILD_DIR)/subprojects/llvm/meson.build - LLVM_BUILDDIR=$(wildcard $(BUILD_DIR_HOST)/llvm-mesa/llvm-project-*) ; LLVM_VER=$$$${LLVM_BUILDDIR##*llvm-project-} ; LLVM_VER=$$$${LLVM_VER%%.src} ;\ + LLVM_BUILDDIR=$(lastword $(wildcard $(BUILD_DIR_HOST)/llvm-mesa/llvm-project-*)) ; LLVM_VER=$$$${LLVM_BUILDDIR##*llvm-project-} ; LLVM_VER=$$$${LLVM_VER%%.src} ;\ $(SED) "s%@LLVM_VERSION@%$$$${LLVM_VER}%" $(HOST_BUILD_DIR)/subprojects/llvm/meson.build LLVM_LIBS=$$$$( next_comma='' ; for lib in $(STAGING_DIR_HOST)/llvm-mesa/lib/*.a; do \ lib=$$$${lib##*/lib} ; \ @@ -715,11 +712,6 @@ define Build/InstallDev $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc $(1)/usr/lib/pkgconfig endef -define Package/libglapi/install - $(INSTALL_DIR) $(1)/usr/lib - $(CP) $(PKG_INSTALL_DIR)/usr/lib/libglapi.so* $(1)/usr/lib -endef - define Package/libmesa/install $(INSTALL_DIR) $(1)/usr/lib $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*GL*.so* $(1)/usr/lib @@ -821,7 +813,7 @@ Package/libopencl-nouveau/install = $(Package/libopencl/install) Package/libosmesa-softpipe/install = $(Package/libosmesa/install) Package/libosmesa-llvmpipe/install = $(Package/libosmesa/install) -$(eval $(call BuildPackage,libglapi)) +$(eval $(call BuildPackage,mesa3d)) $(eval $(call BuildPackage,libmesa-amd)) $(eval $(call BuildPackage,libmesa-intel)) $(eval $(call BuildPackage,libmesa-tegra)) diff --git a/libs/mesa/patches/100-use-llvm-subproject-vars.patch b/libs/mesa/patches/100-use-llvm-subproject-vars.patch index d293793..b6b5cf7 100644 --- a/libs/mesa/patches/100-use-llvm-subproject-vars.patch +++ b/libs/mesa/patches/100-use-llvm-subproject-vars.patch @@ -1,6 +1,6 @@ --- a/meson.build +++ b/meson.build -@@ -1748,21 +1748,26 @@ _llvm = get_option('llvm') +@@ -1782,21 +1782,26 @@ _llvm = get_option('llvm') dep_llvm = null_dep with_llvm = false if _llvm.allowed() @@ -42,7 +42,7 @@ endif if with_llvm pre_args += '-DMESA_LLVM_VERSION_STRING="@0@"'.format(dep_llvm.version()) -@@ -1861,7 +1866,11 @@ endif +@@ -1895,7 +1900,11 @@ endif dep_clang = null_dep if with_clc or with_gallium_clover @@ -76,8 +76,8 @@ ) --- a/src/gallium/frontends/clover/meson.build +++ b/src/gallium/frontends/clover/meson.build -@@ -31,6 +31,12 @@ if with_clover_spirv - clover_spirv_cpp_args += '-DHAVE_CLOVER_SPIRV' +@@ -26,6 +26,12 @@ if with_opencl_icd + clover_cpp_args += '-DHAVE_CLOVER_ICD' endif +if dep_llvm.type_name() == 'internal' @@ -89,9 +89,9 @@ libclllvm = static_library( 'clllvm', files( -@@ -50,7 +56,7 @@ libclllvm = static_library( +@@ -44,7 +50,7 @@ libclllvm = static_library( + clover_cpp_args, clover_opencl_cpp_args, - clover_spirv_cpp_args, '-DCLANG_RESOURCE_DIR="@0@"'.format(join_paths( - dep_llvm.get_variable(cmake : 'LLVM_LIBRARY_DIR', configtool: 'libdir'), 'clang', + llvm_libdir, 'clang',