mirror of
https://github.com/BtbN/FFmpeg-Builds.git
synced 2025-06-12 05:17:39 +02:00
Add libplacebo
This commit is contained in:
@ -1,56 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
LOADER_REPO="https://github.com/KhronosGroup/Vulkan-Loader.git"
|
||||
LOADER_COMMIT="830a0724aa281d7cad98eda59b850871f024bb41"
|
||||
|
||||
ffbuild_enabled() {
|
||||
# The various graphics systems(xcb, xlib, wayland, ...) need figured out first
|
||||
[[ $TARGET == linux* ]] && return -1
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
ffbuild_dockerstage() {
|
||||
to_df "RUN --mount=src=${SELF},dst=/stage.sh --mount=src=patches/vulkan,dst=/patches run_stage /stage.sh"
|
||||
}
|
||||
|
||||
ffbuild_dockerbuild() {
|
||||
git clone "$LOADER_REPO" loader
|
||||
git -C loader checkout "$LOADER_COMMIT"
|
||||
|
||||
for patch in /patches/*.patch; do
|
||||
echo "Applying $patch"
|
||||
git -C loader am -3 < "$patch"
|
||||
done
|
||||
|
||||
HEADERS_REPO="$(grep -A10 'name.*:.*Vulkan-Headers' loader/scripts/known_good.json | grep url | head -n1 | cut -d'"' -f4)"
|
||||
HEADERS_COMMIT="$(grep -A10 'name.*:.*Vulkan-Headers' loader/scripts/known_good.json | grep commit | head -n1 | cut -d'"' -f4)"
|
||||
|
||||
git-mini-clone "$HEADERS_REPO" "$HEADERS_COMMIT" headers
|
||||
|
||||
cd headers
|
||||
|
||||
mkdir build && cd build
|
||||
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" ..
|
||||
make -j$(nproc)
|
||||
make install
|
||||
|
||||
cd ../../loader
|
||||
|
||||
mkdir build && cd build
|
||||
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DBUILD_TESTS=OFF -DBUILD_STATIC_LOADER=ON ..
|
||||
make -j$(nproc)
|
||||
make install
|
||||
|
||||
ln -s libvulkan-1.a /opt/ffbuild/lib/libvulkan.a
|
||||
}
|
||||
|
||||
ffbuild_configure() {
|
||||
echo --enable-vulkan
|
||||
}
|
||||
|
||||
ffbuild_unconfigure() {
|
||||
echo --disable-vulkan
|
||||
}
|
38
scripts.d/45-vulkan/45-vulkan.sh
Executable file
38
scripts.d/45-vulkan/45-vulkan.sh
Executable file
@ -0,0 +1,38 @@
|
||||
#!/bin/bash
|
||||
|
||||
HEADERS_REPO="https://github.com/KhronosGroup/Vulkan-Headers.git"
|
||||
HEADERS_VERSION="1.2.198"
|
||||
|
||||
ffbuild_enabled() {
|
||||
[[ $ADDINS_STR == *4.4* ]] && return -1
|
||||
return 0
|
||||
}
|
||||
|
||||
ffbuild_dockerbuild() {
|
||||
git-mini-clone "$HEADERS_REPO" "v$HEADERS_VERSION" vkheaders
|
||||
cd vkheaders
|
||||
|
||||
mkdir build && cd build
|
||||
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" ..
|
||||
make -j$(nproc)
|
||||
make install
|
||||
|
||||
cat >"$FFBUILD_PREFIX"/lib/pkgconfig/vulkan.pc <<EOF
|
||||
prefix=$FFBUILD_PREFIX
|
||||
includedir=\${prefix}/include
|
||||
|
||||
Name: vulkan
|
||||
Version: $HEADERS_VERSION
|
||||
Description: Vulkan (Headers Only)
|
||||
Cflags: -I\${includedir}
|
||||
EOF
|
||||
}
|
||||
|
||||
ffbuild_configure() {
|
||||
echo --enable-vulkan
|
||||
}
|
||||
|
||||
ffbuild_unconfigure() {
|
||||
echo --disable-vulkan
|
||||
}
|
@ -4,9 +4,6 @@ GLSLANG_REPO="https://github.com/KhronosGroup/glslang.git"
|
||||
GLSLANG_COMMIT="d1608ab1ef17f1488bdcbfe11f2c3c96ac482fce"
|
||||
|
||||
ffbuild_enabled() {
|
||||
# Pointless without Vulkan
|
||||
[[ $TARGET == linux* ]] && return -1
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
@ -18,7 +15,9 @@ ffbuild_dockerbuild() {
|
||||
|
||||
mkdir build && cd build
|
||||
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" -DBUILD_SHARED_LIBS=OFF -DBUILD_EXTERNAL=ON -DBUILD_TESTING=OFF -DENABLE_CTEST=OFF -DENABLE_HLSL=ON -DENABLE_GLSLANG_BINARIES=OFF ..
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" \
|
||||
-DBUILD_SHARED_LIBS=OFF -DBUILD_EXTERNAL=ON -DBUILD_TESTING=OFF -DENABLE_CTEST=OFF \
|
||||
-DENABLE_OPT=ON -DENABLE_HLSL=ON -DENABLE_GLSLANG_BINARIES=OFF ..
|
||||
make -j$(nproc)
|
||||
make install
|
||||
}
|
42
scripts.d/45-vulkan/55-spirv-cross.sh
Executable file
42
scripts.d/45-vulkan/55-spirv-cross.sh
Executable file
@ -0,0 +1,42 @@
|
||||
#!/bin/bash
|
||||
|
||||
SPIRV_CROSS_REPO="https://github.com/KhronosGroup/SPIRV-Cross.git"
|
||||
SPIRV_CROSS_COMMIT="401296d3b8fc60193e99ccabb81eb3e4fe2dd802"
|
||||
|
||||
ffbuild_enabled() {
|
||||
[[ $ADDINS_STR == *4.4* ]] && return -1
|
||||
return 0
|
||||
}
|
||||
|
||||
ffbuild_dockerbuild() {
|
||||
git-mini-clone "$SPIRV_CROSS_REPO" "$SPIRV_CROSS_COMMIT" spirv-cross
|
||||
cd spirv-cross
|
||||
|
||||
VER_MAJ="$(grep 'set(spirv-cross-abi-major' CMakeLists.txt | sed -re 's/.* ([0-9]+)\)/\1/')"
|
||||
VER_MIN="$(grep 'set(spirv-cross-abi-minor' CMakeLists.txt | sed -re 's/.* ([0-9]+)\)/\1/')"
|
||||
VER_PCH="$(grep 'set(spirv-cross-abi-patch' CMakeLists.txt | sed -re 's/.* ([0-9]+)\)/\1/')"
|
||||
VER_FULL="$VER_MAJ.$VER_MIN.$VER_PCH"
|
||||
|
||||
mkdir build && cd build
|
||||
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE="$FFBUILD_CMAKE_TOOLCHAIN" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$FFBUILD_PREFIX" \
|
||||
-DSPIRV_CROSS_SHARED=OFF -DSPIRV_CROSS_STATIC=ON -DSPIRV_CROSS_CLI=OFF -DSPIRV_CROSS_ENABLE_TESTS=OFF -DSPIRV_CROSS_FORCE_PIC=ON -DSPIRV_CROSS_ENABLE_CPP=OFF ..
|
||||
make -j$(nproc)
|
||||
make install
|
||||
|
||||
cat >"$FFBUILD_PREFIX"/lib/pkgconfig/spirv-cross-c-shared.pc <<EOF
|
||||
prefix=$FFBUILD_PREFIX
|
||||
exec_prefix=\${prefix}
|
||||
libdir=\${prefix}/lib
|
||||
sharedlibdir=\${prefix}/lib
|
||||
includedir=\${prefix}/include/spirv_cross
|
||||
|
||||
Name: spirv-cross-c-shared
|
||||
Description: C API for SPIRV-Cross
|
||||
Version: $VER_FULL
|
||||
|
||||
Requires:
|
||||
Libs: -L\${libdir} -L\${sharedlibdir} -lspirv-cross-c -lspirv-cross-glsl -lspirv-cross-hlsl -lspirv-cross-reflect -lspirv-cross-msl -lspirv-cross-util -lspirv-cross-core -lstdc++
|
||||
Cflags: -I\${includedir}
|
||||
EOF
|
||||
}
|
60
scripts.d/50-libplacebo.sh
Executable file
60
scripts.d/50-libplacebo.sh
Executable file
@ -0,0 +1,60 @@
|
||||
#!/bin/bash
|
||||
|
||||
PLACEBO_REPO="https://code.videolan.org/videolan/libplacebo.git"
|
||||
PLACEBO_COMMIT="e91a59f055a2d4025b587fa9e9cf91a6ba934377"
|
||||
|
||||
ffbuild_enabled() {
|
||||
[[ $ADDINS_STR == *4.4* ]] && return -1
|
||||
return 0
|
||||
}
|
||||
|
||||
ffbuild_dockerbuild() {
|
||||
git-mini-clone "$PLACEBO_REPO" "$PLACEBO_COMMIT" placebo
|
||||
cd placebo
|
||||
|
||||
mkdir build && cd build
|
||||
|
||||
local myconf=(
|
||||
--prefix="$FFBUILD_PREFIX"
|
||||
--buildtype=release
|
||||
--default-library=static
|
||||
-Dvulkan=enabled
|
||||
-Dvulkan-link=false
|
||||
-Dvulkan-registry="$FFBUILD_PREFIX"/share/vulkan/registry/vk.xml
|
||||
-Dglslang=enabled
|
||||
-Ddemos=false
|
||||
-Dtests=false
|
||||
-Dbench=false
|
||||
-Dfuzz=false
|
||||
)
|
||||
|
||||
if [[ $TARGET == win* ]]; then
|
||||
myconf+=(
|
||||
-Dd3d11=enabled
|
||||
)
|
||||
fi
|
||||
|
||||
if [[ $TARGET == win* || $TARGET == linux* ]]; then
|
||||
myconf+=(
|
||||
--cross-file=/cross.meson
|
||||
)
|
||||
else
|
||||
echo "Unknown target"
|
||||
return -1
|
||||
fi
|
||||
|
||||
meson "${myconf[@]}" ..
|
||||
ninja -j$(nproc)
|
||||
ninja install
|
||||
|
||||
echo "Libs.private: -lstdc++" >> "$FFBUILD_PREFIX"/lib/pkgconfig/libplacebo.pc
|
||||
}
|
||||
|
||||
ffbuild_configure() {
|
||||
echo --enable-libplacebo
|
||||
}
|
||||
|
||||
ffbuild_unconfigure() {
|
||||
[[ $ADDINS_STR == *4.4* ]] && return 0
|
||||
echo --disable-libplacebo
|
||||
}
|
Reference in New Issue
Block a user