mpvプレーヤーをMoltenVK対応にする
[主題]
自前ビルドしているmpvを、MoltenVK(vulkan)対応させる手順を述べる。
[背景]
筆者が過去に投稿(月一で更新中)したmpvプレーヤーのコンパイル手順は、MoltenVK(vulkan)対応していない。
ひょんなことから、mpvがvulkan対応で、macOSの場合、MoltenVKというものを使うことを知った。本稿は、mpvプレーヤーをコンパイルする
を、MoltenVK(vulkan)対応させるための差分記事である。
[環境]
参考までに、筆者の環境を記載しておく
MacBook Air 2023 15.3inch(Apple Silicon Mac, M2)
macOS Sonoma 14.5
Xcode 15.4
CommandLine Tools for Xcode 15.3.0.0.1
[前提]
この記事に従って、mpvを自前ビルドしていることを前提とする。(Homebrew等のパッケージマネージャーを使っている場合は、対象外である)
[追加されるライブラリ]
以下のライブラリが追加される。
- Shaderc
- vulkan(Vulkan Loader及びVulkan Header)
- MoltenVK
[変更の対象となるライブラリ]
以下のライブラリが変更の対象となる。これ以外はmpvプレーヤーをコンパイルする
と共通である。(なので、共通部分は、この記事には書かない)
- libplacebo
- mpv
[手順]
-
Shaderc
バイナリも配布されているが、x86_64用である。よってソースからビルドする。なお、cmakeとPython3がインストールされている必要がある。git clone "https://github.com/google/shaderc.git" cd shaderc ./utils/git-sync-deps mkdir -p ../shaderc_build cd ../shaderc_build #GoogleTestをビルドしない。(DSHADERC_SKIP_TESTS) #https://www.reddit.com/r/vulkan/comments/ecnjn7/converting_shader_source_to_spirv_on_the_fly/ cmake -GNinja \ -DCMAKE_BUILD_TYPE=Release \ -DSHADERC_SKIP_COPYRIGHT_CHECK=True \ -DSHADERC_SKIP_TESTS=True \ ../shaderc #macOS Ctalina以降向け export SDKROOT="$(xcrun --sdk macosx --show-sdk-path)" ninja ctest(オプション) sudo ninja install
-
vulkan(Vulkan Loader及びVulkan Header)
cmakeとPython3、及びninjaがインストールされている必要がある。git clone "https://github.com/KhronosGroup/Vulkan-Loader.git" git clone "https://github.com/KhronosGroup/Vulkan-Headers.git" export PKG_CONFIG="pkgconf" export CMAKE_GENERATOR="Ninja" export MACOSX_DEPLOYMENT_TARGET="14.0" icddatadirs=( "/usr/local/moltenvk/share" "/usr/local/share" ) cmake \ -B Vulkan_Build \ -S Vulkan-Headers \ -DCMAKE_INSTALL_PREFIX=/usr/local/vulkan \ -DCMAKE_BUILD_TYPE=Release sudo cmake --install Vulkan_Build rm -rf Vulkan_Build cmake \ -B Vulkan_Build \ -S Vulkan-Loader \ -DCMAKE_INSTALL_PREFIX=/usr/local/vulkan \ -DCMAKE_INSTALL_LIBDIR=lib \ -DCMAKE_INSTALL_NAME_DIR=/usr/local/vulkan/lib \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \ -DVULKAN_HEADERS_INSTALL_DIR=/usr/local/vulkan \ -DFALLBACK_DATA_DIRS="$( IFS=:; echo "${icddatadirs[*]}" )" cmake --build Vulkan_Build sudo cmake --install Vulkan_Build rm -rf Vulkan_Build sudo ln -s /usr/local/vulkan/lib/pkgconfig/vulkan.pc /usr/local/lib/pkgconfig/
-
MoltenVK
git clone "https://github.com/KhronosGroup/MoltenVK.git" cd MoltenVK ./fetchDependencies --macos make macos MVK_CONFIG_LOG_LEVEL=2 sed -i '' "s|./libMoltenVK|/usr/local/moltenvk/lib/libMoltenVK|g" Package/Latest/MoltenVK/dylib/macOS/MoltenVK_icd.json cat Package/Latest/MoltenVK/dylib/macOS/MoltenVK_icd.json sudo rm -rf /usr/local/moltenvk sudo mkdir -p /usr/local/moltenvk/lib /usr/local/moltenvk/share/vulkan/icd.d sudo install -vm755 Package/Latest/MoltenVK/dylib/macOS/libMoltenVK.dylib /usr/local/moltenvk/lib sudo install -vm644 Package/Latest/MoltenVK/dylib/macOS/MoltenVK_icd.json /usr/local/moltenvk/share/vulkan/icd.d
以下はmpvプレーヤーをコンパイルする
と共通の部分である。くれぐれも、ディスクイメージのマウントと、環境変数の設定を忘れないこと。
-
libplacebo
export CFLAGS="-arch arm64" export CPPFLAGS="-arch arm64" cd ${CMPL}/libplacebo meson \ setup \ --wipe \ --prefix ${TARGET} \ -Dbuildtype=release \ -Db_lto=true \ -Db_lto_mode=thin \ -Dvulkan-registry="/usr/local/vulkan/share/vulkan/registry/vk.xml" \ -Dvulkan=enabled \ -Dshaderc=enabled \ -Dxxhash=enabled \ -Dopengl=disabled \ -Dd3d11=disabled \ -Dglslang=disabled \ -Ddemos=false \ --default-library=static \ build meson compile -C build meson install -C build unset CFLAGS unset CPPFLAGS
-
mpv
export CFLAGS="-arch arm64" export CPPFLAGS="-arch arm64" cd ${CMPL}/mpv meson \ setup \ --wipe \ --prefix ${TARGET} \ --default-library=static \ -Dswift-flags="-target arm64-apple-macosx14.0" \ -Dbuildtype=release \ -Db_lto=true \ -Db_lto_mode=thin \ -Dgl=disabled \ build meson compile -C build meson install -C build mkdir -p ~/.local/share/vulkan ln -sfn /usr/local/moltenvk/share/vulkan/icd.d ~/.local/share/vulkan/icd.d meson compile -C build macos-bundle unset CFLAGS unset CPPFLAGS
参考サイト
- google/shaderc: A collection of tools, libraries, and tests for Vulkan shader compilation.
- m154k1/mpv-build-macOS: A set of scripts that help build mpv with MoltenVK support.
- mpvプレーヤーをコンパイルする
以上
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント