mpvプレーヤーをVulkan対応にする

[主題]
自前ビルドしているmpvを、Vulkan対応させる手順を述べる。(最終更新日:2025.05.28)

[背景]
筆者が過去に投稿(月一で更新中)したmpvプレーヤーのコンパイル手順は、Vulkan対応していない。
ひょんなことから、mpvがVulkan対応で、macOSの場合、MoltenVKというものを使うことを知った。本稿は、mpvプレーヤーをコンパイルするを、Vulkan対応させるための差分記事である。

[環境]
参考までに、筆者の環境を記載しておく
MacBook Air 2023 15.3inch(Apple Silicon Mac, M2)
macOS Sequoia 15.5
Xcode 16.3
CommandLine Tools for Xcode 16.3.0.0.1

MacBook Pro 2018 15.4inch(Intel based Mac)
macOS Sequoia 15.5
Xcode 16.3
CommandLine Tools for Xcode 16.3.0.0.1

[前提]
この記事に従って、mpvを自前ビルドしていることを前提とする。(Homebrew等のパッケージマネージャーを使っている場合は、対象外である)

[追加されるライブラリ]
以下のライブラリが追加される。

  1. Shaderc
  2. vulkan(Vulkan Loader及びVulkan Header)
  3. MoltenVK

[変更の対象となるライブラリ]
以下のライブラリが変更の対象となる。これ以外はmpvプレーヤーをコンパイルすると共通である。(なので、共通部分は、この記事には書かない)

  1. libplacebo
  2. mpv

[手順]

  1. 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
  2. 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"
    
    cd Vulkan-Headers
    mkdir -p build
    cd build
    cmake \
    -DCMAKE_BUILD_TYPE=Release \
    ..
    cd ../
    sudo cmake --install build
    
    cd Vulkan-Loader
    mkdir -p build
    cd build
    cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON \
    -DSYSCONFDIR=/usr/local/etc \
    ..
    cd ../
    cmake --build build
    sudo cmake --install build
  3. MoltenVK

    git clone "https://github.com/KhronosGroup/MoltenVK.git"
    cd MoltenVK
    ./fetchDependencies --macos
    
    make macos MVK_CONFIG_LOG_LEVEL=1
    
    sed -i '' "s|./libMoltenVK|/usr/local/lib/libMoltenVK|g" Package/Latest/MoltenVK/dylib/macOS/MoltenVK_icd.json
    cat Package/Latest/MoltenVK/dylib/macOS/MoltenVK_icd.json
    
    sudo install -d /usr/local/{lib,etc/vulkan/icd.d}
    sudo install -vm755 Package/Latest/MoltenVK/dylib/macOS/libMoltenVK.dylib /usr/local/lib
    sudo install -vm644 Package/Latest/MoltenVK/dylib/macOS/MoltenVK_icd.json /usr/local/etc/vulkan/icd.d

以下はmpvプレーヤーをコンパイルすると共通の部分である。くれぐれも、ディスクイメージのマウントと、環境変数の設定を忘れないこと。

  1. 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/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
  2. 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
    meson compile -C build macos-bundle
    
    unset CFLAGS
    unset CPPFLAGS

参考サイト

以上

この投稿へのコメント

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL