mpvプレーヤーをMoltenVK対応にする
※2025年4月時点での補足:
Git Head の MoltenVK を使用すると、Intel Macのみ、mpv で再生される映像が緑一色になる現象が確認されている。詳細は以下の通り。
[主題]
自前ビルドしているmpvを、MoltenVK(vulkan)対応させる手順を述べる。
[背景]
筆者が過去に投稿(月一で更新中)したmpvプレーヤーのコンパイル手順は、MoltenVK(vulkan)対応していない。
ひょんなことから、mpvがvulkan対応で、macOSの場合、MoltenVKというものを使うことを知った。本稿は、mpvプレーヤーをコンパイルする
を、MoltenVK(vulkan)対応させるための差分記事である。
[環境]
参考までに、筆者の環境を記載しておく
MacBook Air 2023 15.3inch(Apple Silicon Mac, M2)
macOS Sequoia 15.4
Xcode 16.3
CommandLine Tools for Xcode 16.3.0.0.1
MacBook Pro 2018 15.4inch(Intel based Mac)
macOS Sequoia 15.4
Xcode 16.3
CommandLine Tools for Xcode 16.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/ #macOS Ctalina以降向け export SDKROOT="$(xcrun --sdk macosx --show-sdk-path)" cmake -GNinja \ -DCMAKE_BUILD_TYPE=Release \ -DSHADERC_SKIP_COPYRIGHT_CHECK=True \ -DSHADERC_SKIP_TESTS=True \ ../shaderc ninja 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="15.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
<注記>
2025年4月7日時点の MoltenVK Git HEAD において、Intel Macでのみ、動画が緑色になる現象が発生した。
ChatGPT の協力のもと原因を追及したが、明確な特定には至らなかった。
現時点で確認されている回避策は以下のいずれかである:- 安定版(v1.2.11)を使用する
- Git HEAD を pull しない(更新しない)
なお、万が一 Git Head を更新してしまった場合でも、Time Machine を用いて、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-macosx15.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
この投稿へのコメント