diff --git a/.ci/build-mac.sh b/.ci/build-mac.sh index 300f69cb06..662cdabdfc 100755 --- a/.ci/build-mac.sh +++ b/.ci/build-mac.sh @@ -13,6 +13,16 @@ export HOMEBREW_NO_AUTO_UPDATE=1 export HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1 export HOMEBREW_NO_ENV_HINTS=1 export HOMEBREW_NO_INSTALL_CLEANUP=1 + +if [ "$BUILD_MAC_KK" -eq 1 ]; then + git clone https://gitlab.freedesktop.org/mesa/mesa.git kosmickrisp; cd kosmickrisp + brew install meson libclc spirv-llvm-translator spirv-tools + pip3 install mako packaging pyyaml --break-system-packages + export PATH="/opt/homebrew/opt/llvm/bin:$PATH" + meson setup build --prefix=/opt/homebrew --buildtype=release -Dplatforms=macos -Dvulkan-drivers=kosmickrisp -Dgallium-drivers= -Dopengl=false -Dzstd=disabled + ninja -C build; cd ../ +fi + brew install -f --overwrite --quiet ccache "llvm@$LLVM_COMPILER_VER" brew link -f --overwrite --quiet "llvm@$LLVM_COMPILER_VER" if [ "$AARCH64" -eq 1 ]; then diff --git a/.ci/deploy-mac.sh b/.ci/deploy-mac.sh index 70db614b59..00ff3d0405 100755 --- a/.ci/deploy-mac.sh +++ b/.ci/deploy-mac.sh @@ -5,11 +5,19 @@ cd build || exit 1 cd bin mkdir -p "rpcs3.app/Contents/Resources/vulkan/icd.d" || true -wget https://github.com/KhronosGroup/MoltenVK/releases/download/v1.4.1/MoltenVK-macos-privateapi.tar -tar -xvf MoltenVK-macos-privateapi.tar -cp "MoltenVK/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib" "rpcs3.app/Contents/Frameworks/libMoltenVK.dylib" -cp "MoltenVK/MoltenVK/dynamic/dylib/macOS/MoltenVK_icd.json" "rpcs3.app/Contents/Resources/vulkan/icd.d/MoltenVK_icd.json" -sed -i '' "s/.\//..\/..\/..\/Frameworks\//g" "rpcs3.app/Contents/Resources/vulkan/icd.d/MoltenVK_icd.json" +if [ "$BUILD_MAC_KK" -eq 1 ]; then + cp "$WORKDIR/kosmickrisp/build/src/kosmickrisp/vulkan/libvulkan_kosmickrisp.dylib" "rpcs3.app/Contents/Frameworks/libvulkan_kosmickrisp.dylib" + cp "$WORKDIR/kosmickrisp/build/src/kosmickrisp/vulkan/kosmickrisp_mesa_icd.aarch64.json" "rpcs3.app/Contents/Resources/vulkan/icd.d/kosmickrisp_mesa_icd.aarch64.json" + cp "$(realpath /opt/homebrew/lib/libSPIRV-Tools.dylib)" "rpcs3.app/Contents/Frameworks/libSPIRV-Tools.dylib" + install_name_tool -change "/opt/homebrew/opt/spirv-tools/lib/libSPIRV-Tools.dylib" "@rpath/libSPIRV-Tools.dylib" "rpcs3.app/Contents/Frameworks/libvulkan_kosmickrisp.dylib" + sed -i '' "s/\/opt\/homebrew\/lib\//..\/..\/..\/Frameworks\//g" "rpcs3.app/Contents/Resources/vulkan/icd.d/kosmickrisp_mesa_icd.aarch64.json" +else + wget https://github.com/KhronosGroup/MoltenVK/releases/download/v1.4.1/MoltenVK-macos-privateapi.tar + tar -xvf MoltenVK-macos-privateapi.tar + cp "MoltenVK/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib" "rpcs3.app/Contents/Frameworks/libMoltenVK.dylib" + cp "MoltenVK/MoltenVK/dynamic/dylib/macOS/MoltenVK_icd.json" "rpcs3.app/Contents/Resources/vulkan/icd.d/MoltenVK_icd.json" + sed -i '' "s/.\//..\/..\/..\/Frameworks\//g" "rpcs3.app/Contents/Resources/vulkan/icd.d/MoltenVK_icd.json" +fi cp "$(realpath $BREW_PATH/opt/llvm@$LLVM_COMPILER_VER/lib/c++/libc++abi.1.0.dylib)" "rpcs3.app/Contents/Frameworks/libc++abi.1.dylib" cp "$(realpath $BREW_PATH/opt/gcc/lib/gcc/current/libgcc_s.1.1.dylib)" "rpcs3.app/Contents/Frameworks/libgcc_s.1.1.dylib" diff --git a/.github/workflows/rpcs3.yml b/.github/workflows/rpcs3.yml index 740e844d04..27fb003cb0 100644 --- a/.github/workflows/rpcs3.yml +++ b/.github/workflows/rpcs3.yml @@ -123,15 +123,25 @@ jobs: matrix: include: - name: Intel + runs-on: macos-14 AARCH64: 0 + BUILD_MAC_KK: 0 UPLOAD_COMMIT_HASH: 51ae32f468089a8169aaf1567de355ff4a3e0842 UPLOAD_REPO_FULL_NAME: rpcs3/rpcs3-binaries-mac - name: Apple Silicon + runs-on: macos-14 AARCH64: 1 + BUILD_MAC_KK: 0 UPLOAD_COMMIT_HASH: 8e21bdbc40711a3fccd18fbf17b742348b0f4281 UPLOAD_REPO_FULL_NAME: rpcs3/rpcs3-binaries-mac-arm64 + - name: Apple Silicon (KosmicKrisp) + runs-on: macos-15 + AARCH64: 1 + BUILD_MAC_KK: 1 + UPLOAD_COMMIT_HASH: "" + UPLOAD_REPO_FULL_NAME: "" name: RPCS3 Mac ${{ matrix.name }} - runs-on: macos-14 + runs-on: ${{ matrix.runs-on }} env: CCACHE_DIR: /tmp/ccache_dir QT_VER: '6.10.2' @@ -141,6 +151,7 @@ jobs: UPLOAD_COMMIT_HASH: ${{ matrix.UPLOAD_COMMIT_HASH }} UPLOAD_REPO_FULL_NAME: ${{ matrix.UPLOAD_REPO_FULL_NAME }} AARCH64: ${{ matrix.AARCH64 }} + BUILD_MAC_KK: ${{ matrix.BUILD_MAC_KK }} RUN_UNIT_TESTS: github.event_name == 'pull_request' && 'ON' || 'OFF' steps: - name: Checkout repository @@ -184,6 +195,7 @@ jobs: - name: Deploy master build to GitHub Releases if: | + env.BUILD_MAC_KK == 0 && github.event_name != 'pull_request' && github.repository == 'RPCS3/rpcs3' && github.ref == 'refs/heads/master' @@ -192,14 +204,14 @@ jobs: run: .ci/github-upload.sh - name: Save Build Ccache - if: github.ref == 'refs/heads/master' + if: env.BUILD_MAC_KK == 0 && github.ref == 'refs/heads/master' uses: actions/cache/save@main with: path: ${{ env.CCACHE_DIR }} key: ${{ steps.restore-build-ccache.outputs.cache-primary-key }} - name: Save Qt Cache - if: github.ref == 'refs/heads/master' + if: env.BUILD_MAC_KK == 0 && github.ref == 'refs/heads/master' uses: actions/cache/save@main with: path: /tmp/Qt