mirror of
https://github.com/jellyfin/jellyfin-ffmpeg.git
synced 2026-09-02 21:03:08 +03:00
Enable Mesa AMD drivers for arm64 builds
Signed-off-by: nyanmisaka <nst799610810@gmail.com>
This commit is contained in:
+2
-6
@@ -18,7 +18,7 @@ ENV DPKG_INSTALL_LIST=${SOURCE_DIR}/debian/jellyfin-ffmpeg8.install
|
|||||||
ENV PATH=${TARGET_DIR}/bin:${PATH}
|
ENV PATH=${TARGET_DIR}/bin:${PATH}
|
||||||
ENV PKG_CONFIG_PATH=${TARGET_DIR}/lib/pkgconfig:${PKG_CONFIG_PATH}
|
ENV PKG_CONFIG_PATH=${TARGET_DIR}/lib/pkgconfig:${PKG_CONFIG_PATH}
|
||||||
ENV LD_LIBRARY_PATH=${TARGET_DIR}/lib:${TARGET_DIR}/lib/mfx:${TARGET_DIR}/lib/xorg:${LD_LIBRARY_PATH}
|
ENV LD_LIBRARY_PATH=${TARGET_DIR}/lib:${TARGET_DIR}/lib/mfx:${TARGET_DIR}/lib/xorg:${LD_LIBRARY_PATH}
|
||||||
ENV LDFLAGS="-Wl,-rpath=${TARGET_DIR}/lib -L${TARGET_DIR}/lib -lm"
|
ENV LDFLAGS="-Wl,--disable-new-dtags -Wl,-rpath=${TARGET_DIR}/lib -L${TARGET_DIR}/lib -lm"
|
||||||
ENV CXXFLAGS="-I${TARGET_DIR}/include $CXXFLAGS"
|
ENV CXXFLAGS="-I${TARGET_DIR}/include $CXXFLAGS"
|
||||||
ENV CPPFLAGS="-I${TARGET_DIR}/include $CPPFLAGS"
|
ENV CPPFLAGS="-I${TARGET_DIR}/include $CPPFLAGS"
|
||||||
ENV CFLAGS="-I${TARGET_DIR}/include $CFLAGS"
|
ENV CFLAGS="-I${TARGET_DIR}/include $CFLAGS"
|
||||||
@@ -30,11 +30,7 @@ RUN apt-get update \
|
|||||||
&& apt-get install -y apt-transport-https \
|
&& apt-get install -y apt-transport-https \
|
||||||
curl ninja-build debhelper gnupg wget devscripts \
|
curl ninja-build debhelper gnupg wget devscripts \
|
||||||
mmv equivs git nasm pkg-config subversion dh-autoreconf \
|
mmv equivs git nasm pkg-config subversion dh-autoreconf \
|
||||||
libpciaccess-dev libwayland-dev libx11-dev libx11-xcb-dev \
|
python3-pip zip unzip tar flex bison gperf ragel \
|
||||||
libxcb-dri2-0-dev libxcb-dri3-dev libxcb-present-dev \
|
|
||||||
libxcb-shm0-dev libxcb-sync-dev libxshmfence-dev libxext-dev \
|
|
||||||
libxfixes-dev libxcb1-dev libxrandr-dev libzstd-dev \
|
|
||||||
libelf-dev python3-pip zip unzip tar flex bison gperf ragel \
|
|
||||||
&& apt-get clean autoclean -y \
|
&& apt-get clean autoclean -y \
|
||||||
&& apt-get autoremove -y
|
&& apt-get autoremove -y
|
||||||
|
|
||||||
|
|||||||
Vendored
-4
@@ -17,16 +17,12 @@ Build-Depends:
|
|||||||
libgnutls28-dev | libgnutls-dev,
|
libgnutls28-dev | libgnutls-dev,
|
||||||
# --enable-libbluray
|
# --enable-libbluray
|
||||||
libbluray-dev,
|
libbluray-dev,
|
||||||
# --enable-libdrm
|
|
||||||
libdrm-dev [!amd64],
|
|
||||||
# --enable-gmp
|
# --enable-gmp
|
||||||
libgmp-dev,
|
libgmp-dev,
|
||||||
# --enable-libmp3lame
|
# --enable-libmp3lame
|
||||||
libmp3lame-dev,
|
libmp3lame-dev,
|
||||||
# --enable-libopus
|
# --enable-libopus
|
||||||
libopus-dev,
|
libopus-dev,
|
||||||
# --enable-libtheora
|
|
||||||
libtheora-dev,
|
|
||||||
# --enable-libvorbis
|
# --enable-libvorbis
|
||||||
libvorbis-dev,
|
libvorbis-dev,
|
||||||
# --enable-libopenmpt
|
# --enable-libopenmpt
|
||||||
|
|||||||
Vendored
+8
-5
@@ -14,8 +14,11 @@ CONFIG := --prefix=${TARGET_DIR} \
|
|||||||
--disable-ffplay \
|
--disable-ffplay \
|
||||||
--disable-static \
|
--disable-static \
|
||||||
--disable-libxcb \
|
--disable-libxcb \
|
||||||
--disable-sdl2 \
|
--disable-libxcb-shm \
|
||||||
|
--disable-libxcb-xfixes \
|
||||||
|
--disable-libxcb-shape \
|
||||||
--disable-xlib \
|
--disable-xlib \
|
||||||
|
--disable-sdl2 \
|
||||||
--enable-lto=auto \
|
--enable-lto=auto \
|
||||||
--enable-gpl \
|
--enable-gpl \
|
||||||
--enable-version3 \
|
--enable-version3 \
|
||||||
@@ -46,6 +49,10 @@ CONFIG := --prefix=${TARGET_DIR} \
|
|||||||
--enable-libzvbi \
|
--enable-libzvbi \
|
||||||
--enable-libzimg \
|
--enable-libzimg \
|
||||||
--enable-libfdk-aac \
|
--enable-libfdk-aac \
|
||||||
|
--enable-libshaderc \
|
||||||
|
--enable-libplacebo \
|
||||||
|
--enable-vulkan \
|
||||||
|
--enable-vaapi \
|
||||||
--enable-ffnvcodec \
|
--enable-ffnvcodec \
|
||||||
--enable-cuda \
|
--enable-cuda \
|
||||||
--enable-cuda-llvm \
|
--enable-cuda-llvm \
|
||||||
@@ -54,10 +61,6 @@ CONFIG := --prefix=${TARGET_DIR} \
|
|||||||
--enable-nvenc \
|
--enable-nvenc \
|
||||||
|
|
||||||
CONFIG_x86 := --arch=amd64 \
|
CONFIG_x86 := --arch=amd64 \
|
||||||
--enable-libshaderc \
|
|
||||||
--enable-libplacebo \
|
|
||||||
--enable-vulkan \
|
|
||||||
--enable-vaapi \
|
|
||||||
--enable-libvpl \
|
--enable-libvpl \
|
||||||
--enable-amf \
|
--enable-amf \
|
||||||
|
|
||||||
|
|||||||
+278
-217
@@ -177,6 +177,40 @@ prepare_extra_common() {
|
|||||||
popd
|
popd
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
# OGG
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
git clone -b v1.3.6 --depth=1 https://github.com/xiph/ogg.git
|
||||||
|
pushd ogg
|
||||||
|
./autogen.sh
|
||||||
|
./configure \
|
||||||
|
${CROSS_OPT} \
|
||||||
|
--prefix=${TARGET_DIR} \
|
||||||
|
--disable-static \
|
||||||
|
--enable-shared \
|
||||||
|
--with-pic
|
||||||
|
make -j$(nproc) && make install && make install DESTDIR=${SOURCE_DIR}/ogg
|
||||||
|
echo "ogg${TARGET_DIR}/lib/libogg.so* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
|
||||||
|
# THEORA
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
git clone -b v1.2.0 --depth=1 https://github.com/xiph/theora.git
|
||||||
|
pushd theora
|
||||||
|
# autotools: relax autoconf requirement to 2.69
|
||||||
|
wget -q -O - https://github.com/xiph/theora/commit/3ae2669.patch | git apply
|
||||||
|
./autogen.sh
|
||||||
|
./configure \
|
||||||
|
${CROSS_OPT} \
|
||||||
|
--prefix=${TARGET_DIR} \
|
||||||
|
--disable-{static,examples,extra-programs,oggtest,vorbistest,spec,doc} \
|
||||||
|
--enable-shared \
|
||||||
|
--with-pic
|
||||||
|
make -j$(nproc) && make install && make install DESTDIR=${SOURCE_DIR}/theora
|
||||||
|
echo "theora${TARGET_DIR}/lib/libtheora{enc,dec}.so* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
|
||||||
# FFTW3
|
# FFTW3
|
||||||
pushd ${SOURCE_DIR}
|
pushd ${SOURCE_DIR}
|
||||||
mkdir fftw3
|
mkdir fftw3
|
||||||
@@ -208,7 +242,7 @@ prepare_extra_common() {
|
|||||||
|
|
||||||
# CHROMAPRINT
|
# CHROMAPRINT
|
||||||
pushd ${SOURCE_DIR}
|
pushd ${SOURCE_DIR}
|
||||||
git clone --depth=1 https://github.com/acoustid/chromaprint.git
|
git clone -b v1.6.0 --depth=1 https://github.com/acoustid/chromaprint.git
|
||||||
pushd chromaprint
|
pushd chromaprint
|
||||||
echo "Libs.private: -lfftw3f -lstdc++" >> libchromaprint.pc.cmake
|
echo "Libs.private: -lfftw3f -lstdc++" >> libchromaprint.pc.cmake
|
||||||
echo "Cflags.private: -DCHROMAPRINT_NODLL" >> libchromaprint.pc.cmake
|
echo "Cflags.private: -DCHROMAPRINT_NODLL" >> libchromaprint.pc.cmake
|
||||||
@@ -230,7 +264,7 @@ prepare_extra_common() {
|
|||||||
|
|
||||||
# ZIMG
|
# ZIMG
|
||||||
pushd ${SOURCE_DIR}
|
pushd ${SOURCE_DIR}
|
||||||
git clone --recursive --depth=1 https://github.com/sekrit-twc/zimg.git
|
git clone -b release-3.0.6 --recursive --depth=1 https://github.com/sekrit-twc/zimg.git
|
||||||
pushd zimg
|
pushd zimg
|
||||||
./autogen.sh
|
./autogen.sh
|
||||||
./configure --prefix=${TARGET_DIR} ${CROSS_OPT}
|
./configure --prefix=${TARGET_DIR} ${CROSS_OPT}
|
||||||
@@ -300,6 +334,246 @@ prepare_extra_common() {
|
|||||||
make PREFIX=${TARGET_DIR} install
|
make PREFIX=${TARGET_DIR} install
|
||||||
popd
|
popd
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
# Install crossbuild dependencies
|
||||||
|
apt-get install -y lib{udev,pciaccess,zstd,elf,expat1}-dev:${ARCH}
|
||||||
|
|
||||||
|
# LIBDRM
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
mkdir libdrm
|
||||||
|
pushd libdrm
|
||||||
|
libdrm_ver="libdrm-2.4.131"
|
||||||
|
libdrm_link="https://gitlab.freedesktop.org/mesa/libdrm/-/archive/${libdrm_ver}/libdrm-${libdrm_ver}.tar.gz"
|
||||||
|
wget ${libdrm_link} -O libdrm.tar.gz
|
||||||
|
tar xaf libdrm.tar.gz
|
||||||
|
meson setup libdrm-${libdrm_ver} drm_build \
|
||||||
|
${MESON_CROSS_OPT} \
|
||||||
|
--prefix=${TARGET_DIR} \
|
||||||
|
--libdir=lib \
|
||||||
|
--buildtype=release \
|
||||||
|
-D{udev,tests,install-test-programs}=false \
|
||||||
|
-D{amdgpu,radeon,intel}=enabled \
|
||||||
|
-D{etnaviv,valgrind,freedreno,vc4,vmwgfx,nouveau,man-pages}=disabled
|
||||||
|
meson configure drm_build
|
||||||
|
ninja -j$(nproc) -C drm_build install
|
||||||
|
cp -a ${TARGET_DIR}/lib/libdrm*.so* ${SOURCE_DIR}/libdrm
|
||||||
|
cp ${TARGET_DIR}/share/libdrm/*.ids ${SOURCE_DIR}/libdrm
|
||||||
|
echo "libdrm/libdrm*.so* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
||||||
|
echo "libdrm/*.ids usr/lib/jellyfin-ffmpeg/share/libdrm" >> ${DPKG_INSTALL_LIST}
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
|
||||||
|
# LIBVA
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
git clone -b 2.24.1 --depth=1 https://github.com/intel/libva.git
|
||||||
|
pushd libva
|
||||||
|
if [ "${ARCH}" = "arm64" ]; then
|
||||||
|
libva_drv_arch_path="/usr/lib/aarch64-linux-gnu/dri"
|
||||||
|
else
|
||||||
|
libva_drv_arch_path="/usr/lib/x86_64-linux-gnu/dri"
|
||||||
|
fi
|
||||||
|
sed -i "s#secure_getenv(\"LIBVA_DRIVERS_PATH\")#\"/usr/lib/jellyfin-ffmpeg/lib/dri:${libva_drv_arch_path}:/usr/lib/dri:/usr/local/lib/dri\"#g" va/va.c
|
||||||
|
sed -i "s#secure_getenv(\"LIBVA_DRIVER_NAME\")#secure_getenv(\"LIBVA_DRIVER_NAME_JELLYFIN\")#g" va/va.c
|
||||||
|
./autogen.sh
|
||||||
|
./configure \
|
||||||
|
${CROSS_OPT} \
|
||||||
|
--prefix=${TARGET_DIR} \
|
||||||
|
--enable-drm \
|
||||||
|
--disable-{glx,x11,wayland,docs}
|
||||||
|
make -j$(nproc) && make install && make install DESTDIR=${SOURCE_DIR}/intel
|
||||||
|
echo "intel${TARGET_DIR}/lib/libva.so* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
||||||
|
echo "intel${TARGET_DIR}/lib/libva-drm.so* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
|
||||||
|
# LIBVA-UTILS
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
git clone -b 2.24.0 --depth=1 https://github.com/intel/libva-utils.git
|
||||||
|
pushd libva-utils
|
||||||
|
./autogen.sh
|
||||||
|
./configure \
|
||||||
|
${CROSS_OPT} \
|
||||||
|
--prefix=${TARGET_DIR}
|
||||||
|
make -j$(nproc) && make install && make install DESTDIR=${SOURCE_DIR}/intel
|
||||||
|
echo "intel${TARGET_DIR}/bin/vainfo usr/lib/jellyfin-ffmpeg" >> ${DPKG_INSTALL_LIST}
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
|
||||||
|
# Vulkan Headers
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
git clone -b v1.4.355 --depth=1 https://github.com/KhronosGroup/Vulkan-Headers.git
|
||||||
|
pushd Vulkan-Headers
|
||||||
|
mkdir build && pushd build
|
||||||
|
cmake \
|
||||||
|
${CMAKE_TOOLCHAIN_OPT} \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=${TARGET_DIR} ..
|
||||||
|
make -j$(nproc) && make install
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
|
||||||
|
# Vulkan ICD Loader
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
git clone -b v1.4.355 --depth=1 https://github.com/KhronosGroup/Vulkan-Loader.git
|
||||||
|
pushd Vulkan-Loader
|
||||||
|
sed -i 's/memset(disable_struct, 0, sizeof.*);/& disable_struct->disable_all_implicit = 1;/' loader/loader_environment.c
|
||||||
|
mkdir build && pushd build
|
||||||
|
cmake \
|
||||||
|
${CMAKE_TOOLCHAIN_OPT} \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=${TARGET_DIR} \
|
||||||
|
-DVULKAN_HEADERS_INSTALL_DIR="${TARGET_DIR}" \
|
||||||
|
-DCMAKE_INSTALL_SYSCONFDIR=${TARGET_DIR}/share \
|
||||||
|
-DCMAKE_INSTALL_DATADIR=${TARGET_DIR}/share \
|
||||||
|
-DCMAKE_INSTALL_LIBDIR=lib \
|
||||||
|
-DBUILD_TESTS=OFF \
|
||||||
|
-DBUILD_WSI_{XCB,XLIB,XLIB_XRANDR,WAYLAND}_SUPPORT=OFF ..
|
||||||
|
make -j$(nproc) && make install
|
||||||
|
cp -a ${TARGET_DIR}/lib/libvulkan.so* ${SOURCE_DIR}/Vulkan-Loader
|
||||||
|
echo "Vulkan-Loader/libvulkan.so* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
|
||||||
|
# SHADERC
|
||||||
|
shaderc_ver="v2026.2"
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
git clone -b ${shaderc_ver} --depth=1 https://github.com/google/shaderc.git
|
||||||
|
pushd shaderc
|
||||||
|
./utils/git-sync-deps
|
||||||
|
shaderc_conf=$(echo -GNinja \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DSHADERC_SKIP_{TESTS,EXAMPLES,COPYRIGHT_CHECK}=ON \
|
||||||
|
-DENABLE_EXCEPTIONS=ON \
|
||||||
|
-DSPIRV_SKIP_EXECUTABLES=ON \
|
||||||
|
-DSPIRV_TOOLS_BUILD_STATIC=ON \
|
||||||
|
-DBUILD_SHARED_LIBS=OFF)
|
||||||
|
# Build native glslangValidator for crossbuild
|
||||||
|
if [ "${ARCH}" != "amd64" ]; then
|
||||||
|
mkdir glslang_build && pushd glslang_build
|
||||||
|
cmake $shaderc_conf \
|
||||||
|
-DENABLE_GLSLANG_BINARIES=ON ..
|
||||||
|
ninja -j$(nproc) third_party/glslang/StandAlone/glslang
|
||||||
|
cp third_party/glslang/StandAlone/glslangValidator ${TARGET_DIR}/bin
|
||||||
|
popd
|
||||||
|
fi
|
||||||
|
# Build target shaderc
|
||||||
|
mkdir shaderc_build && pushd shaderc_build
|
||||||
|
cmake $shaderc_conf \
|
||||||
|
${CMAKE_TOOLCHAIN_OPT} \
|
||||||
|
-DENABLE_GLSLANG_BINARIES=$([ "${ARCH}" = "amd64" ] && echo "ON" || echo "OFF") \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=${TARGET_DIR} ..
|
||||||
|
ninja -j$(nproc)
|
||||||
|
ninja install
|
||||||
|
cp -a ${TARGET_DIR}/lib/libshaderc_shared.so* ${SOURCE_DIR}/shaderc
|
||||||
|
echo "shaderc/libshaderc_shared* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
|
||||||
|
# MESA
|
||||||
|
# Minimal libs for AMD VAAPI, AMD RADV and Intel ANV
|
||||||
|
if [[ ${LLVM_VER} -ge 15 ]]; then
|
||||||
|
if [[ "${ARCH}" = "amd64" && ${LLVMSPIRVLIB_VER} -ge 15 && ${LLVMSPIRVLIB_VER} -le 21 ]]; then
|
||||||
|
# Intel ANV requires llvmspirvlib >= 15 (and <= 21 in mesa 26.0)
|
||||||
|
mesa_vk_drv="amd,intel"
|
||||||
|
mesa_llvm_clc="enabled"
|
||||||
|
apt-get install -y {llvm-,libllvmspirvlib-,libclc-,libclang-,libclang-cpp}${LLVMSPIRVLIB_VER}-dev
|
||||||
|
else
|
||||||
|
mesa_vk_drv="amd"
|
||||||
|
mesa_llvm_clc="disabled"
|
||||||
|
fi
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
mkdir mesa
|
||||||
|
pushd mesa
|
||||||
|
mesa_ver="mesa-26.0.8"
|
||||||
|
mesa_link="https://gitlab.freedesktop.org/mesa/mesa/-/archive/${mesa_ver}/mesa-${mesa_ver}.tar.gz"
|
||||||
|
wget ${mesa_link} -O mesa.tar.gz
|
||||||
|
tar xaf mesa.tar.gz
|
||||||
|
# Enable VAAPI VPP alpha blending support
|
||||||
|
wget -q -O - https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41090.patch | \
|
||||||
|
patch -p1 -d mesa-${mesa_ver}
|
||||||
|
# Fix misc CSC issues in VAAPI VPP
|
||||||
|
wget -q -O - https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/42181.patch | \
|
||||||
|
patch -p1 -d mesa-${mesa_ver}
|
||||||
|
# Fix setting VPE rotation with horizontal flip enabled
|
||||||
|
wget -q -O - https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/42408.patch | \
|
||||||
|
sed 's#/mm/#/#g' | patch -p1 -d mesa-${mesa_ver}
|
||||||
|
# Fix setting chroma swizzle mode in VK Video on GFX9
|
||||||
|
wget -q -O - https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/42763.patch | \
|
||||||
|
patch -p1 -d mesa-${mesa_ver}
|
||||||
|
meson setup mesa-${mesa_ver} mesa_build \
|
||||||
|
${MESON_CROSS_OPT} \
|
||||||
|
--prefix=${TARGET_DIR} \
|
||||||
|
--libdir=lib \
|
||||||
|
--buildtype=release \
|
||||||
|
--wrap-mode=nofallback \
|
||||||
|
-Db_ndebug=true \
|
||||||
|
-Db_lto=false \
|
||||||
|
-Dplatforms=[] \
|
||||||
|
-Dgallium-drivers=radeonsi \
|
||||||
|
-Dvulkan-drivers=${mesa_vk_drv} \
|
||||||
|
-Dvulkan-layers=[] \
|
||||||
|
-Dvulkan-manifest-per-architecture=true \
|
||||||
|
-Degl=disabled \
|
||||||
|
-Dgallium-{extra-hud,rusticl}=false \
|
||||||
|
-Dgallium-mediafoundation=disabled \
|
||||||
|
-Dgallium-va=enabled \
|
||||||
|
-Dvideo-codecs=all \
|
||||||
|
-Dgbm=disabled \
|
||||||
|
-Dgles1=disabled \
|
||||||
|
-Dgles2=disabled \
|
||||||
|
-Dopengl=false \
|
||||||
|
-Dglvnd=disabled \
|
||||||
|
-Dglx=disabled \
|
||||||
|
-Dlibunwind=disabled \
|
||||||
|
-Dllvm=${mesa_llvm_clc} \
|
||||||
|
-Damd-use-llvm=false \
|
||||||
|
-Dlmsensors=disabled \
|
||||||
|
-Dvalgrind=disabled \
|
||||||
|
-Dtools=[] \
|
||||||
|
-Dzstd=enabled \
|
||||||
|
-Dmicrosoft-clc=disabled \
|
||||||
|
-Dintel-elk=false
|
||||||
|
meson configure mesa_build
|
||||||
|
ninja -j$(nproc) -C mesa_build install
|
||||||
|
cp -a ${TARGET_DIR}/lib/libvulkan_*.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
|
||||||
|
echo "mesa/*defaults.conf usr/lib/jellyfin-ffmpeg/share/drirc.d" >> ${DPKG_INSTALL_LIST}
|
||||||
|
cp ${TARGET_DIR}/share/vulkan/icd.d/*.json ${SOURCE_DIR}/mesa
|
||||||
|
echo "mesa/*icd.*.json usr/lib/jellyfin-ffmpeg/share/vulkan/icd.d" >> ${DPKG_INSTALL_LIST}
|
||||||
|
popd
|
||||||
|
popd
|
||||||
|
fi
|
||||||
|
|
||||||
|
# LIBPLACEBO
|
||||||
|
pushd ${SOURCE_DIR}
|
||||||
|
git clone -b v7.360.1 --recursive --depth=1 https://github.com/haasn/libplacebo.git
|
||||||
|
# Fix bit shift when importing P01x non-multiplane image
|
||||||
|
git -C libplacebo apply ${SOURCE_DIR}/builder/patches/libplacebo/*.patch
|
||||||
|
sed -i 's/env: python_env,//g' libplacebo/src/vulkan/meson.build
|
||||||
|
meson setup libplacebo placebo_build \
|
||||||
|
${MESON_CROSS_OPT} \
|
||||||
|
--prefix=${TARGET_DIR} \
|
||||||
|
--libdir=lib \
|
||||||
|
--buildtype=release \
|
||||||
|
--default-library=shared \
|
||||||
|
-Dvulkan=enabled \
|
||||||
|
-Dvk-proc-addr=enabled \
|
||||||
|
-Dvulkan-registry=${TARGET_DIR}/share/vulkan/registry/vk.xml \
|
||||||
|
-Dshaderc=enabled \
|
||||||
|
-Dglslang=disabled \
|
||||||
|
-D{demos,tests,bench,fuzz}=false
|
||||||
|
meson configure placebo_build
|
||||||
|
ninja -j$(nproc) -C placebo_build install
|
||||||
|
cp -a ${TARGET_DIR}/lib/libplacebo.so* ${SOURCE_DIR}/libplacebo
|
||||||
|
echo "libplacebo/libplacebo* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
||||||
|
popd
|
||||||
}
|
}
|
||||||
|
|
||||||
# Prepare extra headers, libs and drivers for x86_64-linux-gnu
|
# Prepare extra headers, libs and drivers for x86_64-linux-gnu
|
||||||
@@ -320,58 +594,6 @@ prepare_extra_amd64() {
|
|||||||
popd
|
popd
|
||||||
popd
|
popd
|
||||||
|
|
||||||
# LIBDRM
|
|
||||||
pushd ${SOURCE_DIR}
|
|
||||||
mkdir libdrm
|
|
||||||
pushd libdrm
|
|
||||||
libdrm_ver="libdrm-2.4.131"
|
|
||||||
libdrm_link="https://gitlab.freedesktop.org/mesa/libdrm/-/archive/${libdrm_ver}/libdrm-${libdrm_ver}.tar.gz"
|
|
||||||
wget ${libdrm_link} -O libdrm.tar.gz
|
|
||||||
tar xaf libdrm.tar.gz
|
|
||||||
meson setup libdrm-${libdrm_ver} drm_build \
|
|
||||||
--prefix=${TARGET_DIR} \
|
|
||||||
--libdir=lib \
|
|
||||||
--buildtype=release \
|
|
||||||
-D{udev,tests,install-test-programs}=false \
|
|
||||||
-D{amdgpu,radeon,intel}=enabled \
|
|
||||||
-D{valgrind,freedreno,vc4,vmwgfx,nouveau,man-pages}=disabled
|
|
||||||
meson configure drm_build
|
|
||||||
ninja -j$(nproc) -C drm_build install
|
|
||||||
cp -a ${TARGET_DIR}/lib/libdrm*.so* ${SOURCE_DIR}/libdrm
|
|
||||||
cp ${TARGET_DIR}/share/libdrm/*.ids ${SOURCE_DIR}/libdrm
|
|
||||||
echo "libdrm/libdrm*.so* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
|
||||||
echo "libdrm/*.ids usr/lib/jellyfin-ffmpeg/share/libdrm" >> ${DPKG_INSTALL_LIST}
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
|
|
||||||
# LIBVA
|
|
||||||
pushd ${SOURCE_DIR}
|
|
||||||
git clone -b 2.24.1 --depth=1 https://github.com/intel/libva.git
|
|
||||||
pushd libva
|
|
||||||
sed -i 's|secure_getenv("LIBVA_DRIVERS_PATH")|"/usr/lib/jellyfin-ffmpeg/lib/dri:/usr/lib/x86_64-linux-gnu/dri:/usr/lib/dri:/usr/local/lib/dri"|g' va/va.c
|
|
||||||
sed -i 's|secure_getenv("LIBVA_DRIVER_NAME")|secure_getenv("LIBVA_DRIVER_NAME_JELLYFIN")|g' va/va.c
|
|
||||||
./autogen.sh
|
|
||||||
./configure \
|
|
||||||
--prefix=${TARGET_DIR} \
|
|
||||||
--enable-drm \
|
|
||||||
--disable-{glx,x11,wayland,docs}
|
|
||||||
make -j$(nproc) && make install && make install DESTDIR=${SOURCE_DIR}/intel
|
|
||||||
echo "intel${TARGET_DIR}/lib/libva.so* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
|
||||||
echo "intel${TARGET_DIR}/lib/libva-drm.so* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
|
|
||||||
# LIBVA-UTILS
|
|
||||||
pushd ${SOURCE_DIR}
|
|
||||||
git clone -b 2.24.0 --depth=1 https://github.com/intel/libva-utils.git
|
|
||||||
pushd libva-utils
|
|
||||||
./autogen.sh
|
|
||||||
./configure --prefix=${TARGET_DIR}
|
|
||||||
make -j$(nproc) && make install && make install DESTDIR=${SOURCE_DIR}/intel
|
|
||||||
echo "intel${TARGET_DIR}/bin/vainfo usr/lib/jellyfin-ffmpeg" >> ${DPKG_INSTALL_LIST}
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
|
|
||||||
# INTEL-VAAPI-DRIVER
|
# INTEL-VAAPI-DRIVER
|
||||||
pushd ${SOURCE_DIR}
|
pushd ${SOURCE_DIR}
|
||||||
git clone --depth=1 https://github.com/intel/intel-vaapi-driver.git
|
git clone --depth=1 https://github.com/intel/intel-vaapi-driver.git
|
||||||
@@ -492,169 +714,6 @@ prepare_extra_amd64() {
|
|||||||
popd
|
popd
|
||||||
popd
|
popd
|
||||||
popd
|
popd
|
||||||
|
|
||||||
# Vulkan Headers
|
|
||||||
pushd ${SOURCE_DIR}
|
|
||||||
git clone -b v1.4.355 --depth=1 https://github.com/KhronosGroup/Vulkan-Headers.git
|
|
||||||
pushd Vulkan-Headers
|
|
||||||
mkdir build && pushd build
|
|
||||||
cmake \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=${TARGET_DIR} ..
|
|
||||||
make -j$(nproc) && make install
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
|
|
||||||
# Vulkan ICD Loader
|
|
||||||
pushd ${SOURCE_DIR}
|
|
||||||
git clone -b v1.4.355 --depth=1 https://github.com/KhronosGroup/Vulkan-Loader.git
|
|
||||||
pushd Vulkan-Loader
|
|
||||||
mkdir build && pushd build
|
|
||||||
cmake \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=${TARGET_DIR} \
|
|
||||||
-DVULKAN_HEADERS_INSTALL_DIR="${TARGET_DIR}" \
|
|
||||||
-DCMAKE_INSTALL_SYSCONFDIR=${TARGET_DIR}/share \
|
|
||||||
-DCMAKE_INSTALL_DATADIR=${TARGET_DIR}/share \
|
|
||||||
-DCMAKE_INSTALL_LIBDIR=lib \
|
|
||||||
-DBUILD_TESTS=OFF \
|
|
||||||
-DBUILD_WSI_{XCB,XLIB,WAYLAND}_SUPPORT=ON ..
|
|
||||||
make -j$(nproc) && make install
|
|
||||||
cp -a ${TARGET_DIR}/lib/libvulkan.so* ${SOURCE_DIR}/Vulkan-Loader
|
|
||||||
echo "Vulkan-Loader/libvulkan.so* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
|
|
||||||
# SHADERC
|
|
||||||
shaderc_ver="v2026.2"
|
|
||||||
pushd ${SOURCE_DIR}
|
|
||||||
git clone -b ${shaderc_ver} --depth=1 https://github.com/google/shaderc.git
|
|
||||||
pushd shaderc
|
|
||||||
./utils/git-sync-deps
|
|
||||||
mkdir build && pushd build
|
|
||||||
cmake \
|
|
||||||
-GNinja \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=${TARGET_DIR} \
|
|
||||||
-DSHADERC_SKIP_{TESTS,EXAMPLES,COPYRIGHT_CHECK}=ON \
|
|
||||||
-DENABLE_{GLSLANG_BINARIES,EXCEPTIONS}=ON \
|
|
||||||
-DENABLE_CTEST=OFF \
|
|
||||||
-DSPIRV_SKIP_EXECUTABLES=ON \
|
|
||||||
-DSPIRV_TOOLS_BUILD_STATIC=ON \
|
|
||||||
-DBUILD_SHARED_LIBS=OFF ..
|
|
||||||
ninja -j$(nproc)
|
|
||||||
ninja install
|
|
||||||
cp -a ${TARGET_DIR}/lib/libshaderc_shared.so* ${SOURCE_DIR}/shaderc
|
|
||||||
echo "shaderc/libshaderc_shared* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
|
|
||||||
# MESA
|
|
||||||
# Minimal libs for AMD VAAPI, AMD RADV and Intel ANV
|
|
||||||
if [[ ${LLVM_VER} -ge 15 ]]; then
|
|
||||||
if [[ ${LLVMSPIRVLIB_VER} -ge 15 && ${LLVMSPIRVLIB_VER} -le 21 ]]; then
|
|
||||||
# Intel ANV requires llvmspirvlib >= 15 (and <= 21 in mesa 26.0)
|
|
||||||
mesa_vk_drv="amd,intel"
|
|
||||||
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_llvm_clc="disabled"
|
|
||||||
apt-get install -y libudev-dev
|
|
||||||
fi
|
|
||||||
pushd ${SOURCE_DIR}
|
|
||||||
mkdir mesa
|
|
||||||
pushd mesa
|
|
||||||
mesa_ver="mesa-26.0.8"
|
|
||||||
mesa_link="https://gitlab.freedesktop.org/mesa/mesa/-/archive/${mesa_ver}/mesa-${mesa_ver}.tar.gz"
|
|
||||||
wget ${mesa_link} -O mesa.tar.gz
|
|
||||||
tar xaf mesa.tar.gz
|
|
||||||
# Enable VAAPI VPP alpha blending support
|
|
||||||
wget -q -O - https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41090.patch | \
|
|
||||||
patch -p1 -d mesa-${mesa_ver}
|
|
||||||
# Fix misc CSC issues in VAAPI VPP
|
|
||||||
wget -q -O - https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/42181.patch | \
|
|
||||||
patch -p1 -d mesa-${mesa_ver}
|
|
||||||
# Fix setting VPE rotation with horizontal flip enabled
|
|
||||||
wget -q -O - https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/42408.patch | \
|
|
||||||
sed 's#/mm/#/#g' | patch -p1 -d mesa-${mesa_ver}
|
|
||||||
# Fix setting chroma swizzle mode in VK Video on GFX9
|
|
||||||
wget -q -O - https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/42763.patch | \
|
|
||||||
patch -p1 -d mesa-${mesa_ver}
|
|
||||||
meson setup mesa-${mesa_ver} mesa_build \
|
|
||||||
--prefix=${TARGET_DIR} \
|
|
||||||
--libdir=lib \
|
|
||||||
--buildtype=release \
|
|
||||||
--wrap-mode=nofallback \
|
|
||||||
-Db_ndebug=true \
|
|
||||||
-Db_lto=false \
|
|
||||||
-Dplatforms=x11 \
|
|
||||||
-Dgallium-drivers=radeonsi \
|
|
||||||
-Dvulkan-drivers=${mesa_vk_drv} \
|
|
||||||
-Dvulkan-layers=device-select \
|
|
||||||
-Dvulkan-manifest-per-architecture=true \
|
|
||||||
-Degl=disabled \
|
|
||||||
-Dgallium-{extra-hud,rusticl}=false \
|
|
||||||
-Dgallium-mediafoundation=disabled \
|
|
||||||
-Dgallium-va=enabled \
|
|
||||||
-Dvideo-codecs=all \
|
|
||||||
-Dgbm=disabled \
|
|
||||||
-Dgles1=disabled \
|
|
||||||
-Dgles2=disabled \
|
|
||||||
-Dopengl=false \
|
|
||||||
-Dglvnd=disabled \
|
|
||||||
-Dglx=disabled \
|
|
||||||
-Dlibunwind=disabled \
|
|
||||||
-Dllvm=${mesa_llvm_clc} \
|
|
||||||
-Damd-use-llvm=false \
|
|
||||||
-Dlmsensors=disabled \
|
|
||||||
-Dvalgrind=disabled \
|
|
||||||
-Dtools=[] \
|
|
||||||
-Dzstd=enabled \
|
|
||||||
-Dmicrosoft-clc=disabled \
|
|
||||||
-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_device_select.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
|
|
||||||
echo "mesa/*defaults.conf usr/lib/jellyfin-ffmpeg/share/drirc.d" >> ${DPKG_INSTALL_LIST}
|
|
||||||
cp ${TARGET_DIR}/share/vulkan/{icd.d,implicit_layer.d}/*.json ${SOURCE_DIR}/mesa
|
|
||||||
echo "mesa/*icd.x86_64.json usr/lib/jellyfin-ffmpeg/share/vulkan/icd.d" >> ${DPKG_INSTALL_LIST}
|
|
||||||
echo "mesa/*device_select.json usr/lib/jellyfin-ffmpeg/share/vulkan/implicit_layer.d" >> ${DPKG_INSTALL_LIST}
|
|
||||||
popd
|
|
||||||
popd
|
|
||||||
fi
|
|
||||||
|
|
||||||
# LIBPLACEBO
|
|
||||||
pushd ${SOURCE_DIR}
|
|
||||||
git clone -b v7.360.1 --recursive --depth=1 https://github.com/haasn/libplacebo.git
|
|
||||||
# Fix bit shift when importing P01x non-multiplane image
|
|
||||||
git -C libplacebo apply ${SOURCE_DIR}/builder/patches/libplacebo/*.patch
|
|
||||||
sed -i 's/env: python_env,//g' libplacebo/src/vulkan/meson.build
|
|
||||||
meson setup libplacebo placebo_build \
|
|
||||||
--prefix=${TARGET_DIR} \
|
|
||||||
--libdir=lib \
|
|
||||||
--buildtype=release \
|
|
||||||
--default-library=shared \
|
|
||||||
-Dvulkan=enabled \
|
|
||||||
-Dvk-proc-addr=enabled \
|
|
||||||
-Dvulkan-registry=${TARGET_DIR}/share/vulkan/registry/vk.xml \
|
|
||||||
-Dshaderc=enabled \
|
|
||||||
-Dglslang=disabled \
|
|
||||||
-D{demos,tests,bench,fuzz}=false
|
|
||||||
meson configure placebo_build
|
|
||||||
ninja -j$(nproc) -C placebo_build install
|
|
||||||
cp -a ${TARGET_DIR}/lib/libplacebo.so* ${SOURCE_DIR}/libplacebo
|
|
||||||
echo "libplacebo/libplacebo* usr/lib/jellyfin-ffmpeg/lib" >> ${DPKG_INSTALL_LIST}
|
|
||||||
popd
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Prepare extra headers, libs and drivers for {arm,aarch64}-linux-gnu*
|
# Prepare extra headers, libs and drivers for {arm,aarch64}-linux-gnu*
|
||||||
@@ -733,6 +792,8 @@ EOF
|
|||||||
for tool in {gcc,g++,gcc-ar,gcc-ranlib,gcc-nm}; do
|
for tool in {gcc,g++,gcc-ar,gcc-ranlib,gcc-nm}; do
|
||||||
ln -sf "/usr/bin/aarch64-linux-gnu-$tool-${GCC_VER}" "/usr/bin/aarch64-linux-gnu-$tool"
|
ln -sf "/usr/bin/aarch64-linux-gnu-$tool-${GCC_VER}" "/usr/bin/aarch64-linux-gnu-$tool"
|
||||||
done
|
done
|
||||||
|
# Update pkgconfig search path
|
||||||
|
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/usr/lib/aarch64-linux-gnu/pkgconfig
|
||||||
}
|
}
|
||||||
|
|
||||||
# Set the architecture-specific options
|
# Set the architecture-specific options
|
||||||
|
|||||||
Reference in New Issue
Block a user