From 3805c85add37865e9d3d4ae72fe0546904891d7a Mon Sep 17 00:00:00 2001 From: nyanmisaka Date: Sun, 2 Feb 2025 03:59:13 +0800 Subject: [PATCH] Update Mesa version to 25.0 Signed-off-by: nyanmisaka --- Dockerfile.in | 3 ++- Dockerfile.make | 5 +++-- build | 27 ++++++++++++++++----------- docker-build.sh | 44 ++++++++++++++++++++++++++------------------ 4 files changed, 47 insertions(+), 32 deletions(-) diff --git a/Dockerfile.in b/Dockerfile.in index d1c2ebdc0d0..9c566e28fe2 100644 --- a/Dockerfile.in +++ b/Dockerfile.in @@ -10,6 +10,7 @@ ENV DEBIAN_FRONTEND=noninteractive ENV ARCH=BUILD_ARCHITECTURE ENV GCC_VER=GCC_RELEASE_VERSION ENV LLVM_VER=LLVM_RELEASE_VERSION +ENV LLVMSPIRVLIB_VER=LLVMSPIRVLIB_RELEASE_VERSION ENV SOURCE_DIR=/ffmpeg ENV ARTIFACT_DIR=/dist ENV TARGET_DIR=/usr/lib/jellyfin-ffmpeg @@ -38,7 +39,7 @@ RUN apt-get update \ # Install newer tools from pip3 RUN pip3 install $(pip3 help install | grep -o "\-\-break-system-packages") --ignore-installed pip \ - && pip3 install $(pip3 help install | grep -o "\-\-break-system-packages") meson cmake mako jinja2 + && pip3 install $(pip3 help install | grep -o "\-\-break-system-packages") meson cmake mako jinja2 pyyaml # Avoids timeouts when using git and disable the detachedHead advice RUN git config --global http.postbuffer 524288000 \ diff --git a/Dockerfile.make b/Dockerfile.make index 575a808c352..46af9742ab2 100644 --- a/Dockerfile.make +++ b/Dockerfile.make @@ -1,10 +1,11 @@ #!/usr/bin/make DISTRO=noble GCC_VER=13 -LLVM_VER=17 +LLVM_VER=19 +LLVMSPIRVLIB_VER=18 ARCH=amd64 .PHONY: Dockerfile Dockerfile: Dockerfile.in - sed 's/DISTRO/$(DISTRO)/; s/BUILD_ARCHITECTURE/$(ARCH)/; s/GCC_RELEASE_VERSION/$(GCC_VER)/; s/LLVM_RELEASE_VERSION/$(LLVM_VER)/' $< > $@ || rm -f $@ + sed 's/DISTRO/$(DISTRO)/; s/BUILD_ARCHITECTURE/$(ARCH)/; s/GCC_RELEASE_VERSION/$(GCC_VER)/; s/LLVM_RELEASE_VERSION/$(LLVM_VER)/; s/LLVMSPIRVLIB_RELEASE_VERSION/$(LLVMSPIRVLIB_VER)/' $< > $@ || rm -f $@ clean: rm -f Dockerfile diff --git a/build b/build index e68a99c2a79..48b1c58dbdf 100755 --- a/build +++ b/build @@ -20,28 +20,33 @@ cli_release="${1}" case ${cli_release} in 'bullseye') release="debian:bullseye" - gcc_version="10" - llvm_version="16" + gcc_ver="10" + llvm_ver="16" + llvmspirvlib_ver="11" ;; 'bookworm') release="debian:bookworm" - gcc_version="12" - llvm_version="16" + gcc_ver="12" + llvm_ver="19" + llvmspirvlib_ver="15" ;; 'focal') release="ubuntu:focal" - gcc_version="9" - llvm_version="12" + gcc_ver="9" + llvm_ver="18" + llvmspirvlib_ver="10" ;; 'jammy') release="ubuntu:jammy" - gcc_version="11" - llvm_version="15" + gcc_ver="11" + llvm_ver="15" + llvmspirvlib_ver="15" ;; 'noble') release="ubuntu:noble" - gcc_version="13" - llvm_version="17" + gcc_ver="13" + llvm_ver="19" + llvmspirvlib_ver="18" ;; *) echo "Invalid release." @@ -95,7 +100,7 @@ cleanup() { trap cleanup EXIT INT # Generate Dockerfile -make -f Dockerfile.make DISTRO=${release} GCC_VER=${gcc_version} LLVM_VER=${llvm_version} ARCH=${arch} +make -f Dockerfile.make DISTRO=${release} GCC_VER=${gcc_ver} LLVM_VER=${llvm_ver} LLVMSPIRVLIB_VER=${llvmspirvlib_ver} ARCH=${arch} # Set up the build environment docker image ${container_cmd} build . -t "${image_name}" # Build the APKs and copy out to ${package_temporary_dir} diff --git a/docker-build.sh b/docker-build.sh index 4ebc0cc07bb..5312dd05190 100755 --- a/docker-build.sh +++ b/docker-build.sh @@ -509,7 +509,7 @@ prepare_extra_amd64() { popd # SHADERC - shaderc_ver="v2023.7" + shaderc_ver="v2024.4" #"v2023.7" if [[ ${GCC_VER} -lt 9 ]]; then shaderc_ver="v2023.5" fi @@ -538,16 +538,21 @@ prepare_extra_amd64() { # MESA # Minimal libs for AMD VAAPI, AMD RADV and Intel ANV - if [[ ${LLVM_VER} -ge 11 ]]; then - mesa_branch="llvm15" - mesa_codecs="all" - if [[ ${LLVM_VER} -lt 15 ]]; then - mesa_branch="llvm11" - mesa_codecs="vc1dec,h264dec,h264enc,h265dec,h265enc" + if [[ ${LLVM_VER} -ge 15 ]]; then + if [[ ${LLVMSPIRVLIB_VER} -ge 15 ]]; then + # Intel ANV requires llvmspirvlib >= 15 + mesa_vk_drv="amd,intel" + mesa_intel_clc="enabled" + mesa_llvm_clc="enabled" + apt-get install -y {llvm-,libllvmspirvlib-,libclc-,libclang-,libclang-cpp}${LLVMSPIRVLIB_VER}-dev libudev-dev + else + mesa_vk_drv="amd" + mesa_intel_clc="auto" + mesa_llvm_clc="disabled" + apt-get install -y libudev-dev fi - apt-get install -y llvm-${LLVM_VER}-dev libudev-dev pushd ${SOURCE_DIR} - git clone -b ${mesa_branch} --depth=1 https://gitlab.freedesktop.org/nyanmisaka/mesa.git + git clone -b staging/25.0 --depth=1 https://gitlab.freedesktop.org/mesa/mesa.git meson setup mesa mesa_build \ --prefix=${TARGET_DIR} \ --libdir=lib \ @@ -557,34 +562,37 @@ prepare_extra_amd64() { -Db_lto=false \ -Dplatforms=x11 \ -Dgallium-drivers=radeonsi \ - -Dvulkan-drivers=amd,intel \ + -Dvulkan-drivers=${mesa_vk_drv} \ -Dvulkan-layers=device-select,overlay \ - -Ddri3=enabled \ -Degl=disabled \ - -Dgallium-{extra-hud,nine}=false \ - -Dgallium-{omx,vdpau,xa,opencl}=disabled \ + -Dgallium-{extra-hud,nine,rusticl}=false \ + -Dgallium-{vdpau,xa,opencl}=disabled \ -Dgallium-va=enabled \ - -Dvideo-codecs=${mesa_codecs} \ + -Dvideo-codecs=all \ -Dgbm=disabled \ -Dgles1=disabled \ -Dgles2=disabled \ -Dopengl=false \ - -Dglvnd=false \ + -Dglvnd=disabled \ -Dglx=disabled \ -Dlibunwind=disabled \ - -Dllvm=enabled \ + -Dllvm=${mesa_llvm_clc} \ + -Damd-use-llvm=false \ -Dlmsensors=disabled \ -Dosmesa=false \ -Dshared-glapi=disabled \ -Dvalgrind=disabled \ -Dtools=[] \ -Dzstd=enabled \ - -Dmicrosoft-clc=disabled + -Dmicrosoft-clc=disabled \ + -Dintel-clc=${mesa_intel_clc} \ + -Dintel-elk=false meson configure mesa_build ninja -j$(nproc) -C mesa_build install cp -a ${TARGET_DIR}/lib/libvulkan_*.so ${SOURCE_DIR}/mesa cp -a ${TARGET_DIR}/lib/libVkLayer_MESA*.so ${SOURCE_DIR}/mesa - cp -a ${TARGET_DIR}/lib/dri/radeonsi_drv_video.so ${SOURCE_DIR}/mesa + # radeonsi_drv_video.so -> libgallium_drv_video.so is soft link + cp ${TARGET_DIR}/lib/dri/radeonsi_drv_video.so ${SOURCE_DIR}/mesa echo "mesa/lib*.so usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST} echo "mesa/radeonsi_drv_video.so usr/lib/jellyfin-ffmpeg/lib/dri" >> ${DPKG_INSTALL_LIST} cp ${TARGET_DIR}/share/drirc.d/*.conf ${SOURCE_DIR}/mesa