From 847ad6e425b14ff55e9f88fb759d93367bd6c2a6 Mon Sep 17 00:00:00 2001 From: osy <50960678+osy@users.noreply.github.com> Date: Wed, 7 Jan 2026 09:48:18 -0800 Subject: [PATCH] build: add MoltenVK to dependencies --- .github/workflows/build.yml | 3 ++- patches/sources | 2 ++ scripts/build_dependencies.sh | 39 +++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0f0dd344..53b2cc1f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -87,7 +87,8 @@ jobs: run: | brew uninstall cmake brew install bison pkg-config gettext glib-utils libgpg-error nasm make meson cmake - pip3 install --user six pyparsing pyyaml setuptools distlib mako + pip3 install --break-system-packages --user six pyparsing pyyaml setuptools distlib mako + gem install --user-install xcpretty rm -f /usr/local/lib/pkgconfig/*.pc - name: Build Sysroot if: steps.cache-sysroot.outputs.cache-matched-key == '' || github.event.inputs.rebuild_sysroot == 'true' diff --git a/patches/sources b/patches/sources index 375c6244..f75d4cc3 100644 --- a/patches/sources +++ b/patches/sources @@ -49,6 +49,8 @@ VIRGLRENDERER_REPO="https://github.com/utmapp/virglrenderer.git" VIRGLRENDERER_COMMIT="31d91c3860749534aed7bd26af8f47f7de412681" MESA_REPO="https://gitlab.freedesktop.org/osy/mesa.git" MESA_COMMIT="79bc850d884a1307356ff61c017e58901b90c7e2" +MOLTENVK_REPO="https://github.com/KhronosGroup/MoltenVK.git" +MOLTENVK_COMMIT="bf60f60d0805e9b3ab989cfc1b69f780f96fd123" # Decompiled Hypervisor for iOS HYPERVISOR_REPO="https://github.com/utmapp/Hypervisor.git" diff --git a/scripts/build_dependencies.sh b/scripts/build_dependencies.sh index 72537fa8..9c28b365 100755 --- a/scripts/build_dependencies.sh +++ b/scripts/build_dependencies.sh @@ -176,6 +176,7 @@ download_all () { clone $HYPERVISOR_REPO $HYPERVISOR_COMMIT clone $LIBUCONTEXT_REPO $LIBUCONTEXT_COMMIT clone $MESA_REPO $MESA_COMMIT + clone $MOLTENVK_REPO $MOLTENVK_COMMIT } copy_private_headers() { @@ -708,10 +709,48 @@ patch_vulkan_icd() { fi } +build_moltenvk() { + pushd "$BUILD_DIR/MoltenVK.git" + # for xcpretty if installed + if which ruby >/dev/null && which gem >/dev/null; then + PATH="$(ruby -r rubygems -e 'puts Gem.user_dir')/bin:$PATH" + fi + case $PLATFORM in + ios_simulator* ) + MVK_PLATFORM="iossim" + ;; + ios* ) + MVK_PLATFORM="ios" + ;; + visionos_simulator* ) + MVK_PLATFORM="visionossim" + ;; + visionos* ) + MVK_PLATFORM="visionos" + ;; + macos ) + MVK_PLATFORM="macos" + ;; + esac + env -i PATH=$PATH HOME=$HOME LANG=en_US.UTF-8 ./fetchDependencies --$MVK_PLATFORM -v + env -i PATH=$PATH HOME=$HOME LANG=en_US.UTF-8 make $MVK_PLATFORM + if [ "$PLATFORM" == "macos" ]; then + $(xcrun --sdk $SDK --find lipo) "Package/Release/MoltenVK/dylib/macOS/libMoltenVK.dylib" -extract $ARCH -output "$PREFIX/lib/libMoltenVK.dylib" + else + find "Package/Release/MoltenVK/dynamic/MoltenVK.xcframework" -name "MoltenVK.framework" -exec cp -a \{\} "$PREFIX/Frameworks/" \; + fi + cp -a "MoltenVK/icd/MoltenVK_icd.json" "$PREFIX/share/vulkan/icd.d/" + popd +} + build_vulkan_drivers () { export PATH="$(brew --prefix mesa)/bin:$PATH" + mkdir -p "$PREFIX/share/vulkan/icd.d" meson_darwin_build $MESA_REPO -Dmesa-clc=system -Dgallium-drivers= -Dvulkan-drivers=kosmickrisp -Dplatforms=macos patch_vulkan_icd "$PREFIX/share/vulkan/icd.d/kosmickrisp_mesa_icd.$ARCH.json" + mv "$PREFIX/share/vulkan/icd.d/kosmickrisp_mesa_icd.$ARCH.json" "$PREFIX/share/vulkan/icd.d/kosmickrisp_mesa_icd.json" + build_moltenvk + patch_vulkan_icd "$PREFIX/share/vulkan/icd.d/MoltenVK_icd.json" } fixup () {