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

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

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

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


MacBook Pro 2018 15.4inch(インテルMac)
macOS Monterey 12.7.6
CommandLine Tools for Xcode 14.2.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="26.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