diff --git a/.ci/build-mac.sh b/.ci/build-mac.sh index 222607e94e..6b1ad01217 100755 --- a/.ci/build-mac.sh +++ b/.ci/build-mac.sh @@ -1,7 +1,7 @@ #!/bin/sh -ex brew update -brew install llvm@13 molten-vk vulkan-headers sdl2 nasm qt@5 ninja cmake glew git p7zip create-dmg ccache +brew install llvm@13 sdl2 nasm qt@5 ninja cmake glew git p7zip create-dmg ccache export MACOSX_DEPLOYMENT_TARGET=11.6 export CXX=clang++ @@ -10,14 +10,10 @@ export Qt5_DIR="/usr/local/opt/qt@5/lib/cmake/Qt5" export PATH="/usr/local/opt/llvm/bin:/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/Library/Apple/usr/bin" export LDFLAGS="-L/usr/local/opt/llvm/lib -Wl,-rpath,/usr/local/opt/llvm/lib" export CPPFLAGS="-I/usr/local/opt/llvm/include -msse -msse2 -mcx16 -no-pie" -export CPLUS_INCLUDE_PATH="/usr/local/opt/molten-vk/include" -export VULKAN_SDK="/usr/local/opt/molten-vk" -export VK_ICD_FILENAMES="$VULKAN_SDK/share/vulkan/icd.d/MoltenVK_icd.json" git submodule update --init --recursive --depth 1 # 3rdparty fixes -ln -s "$VULKAN_SDK/lib/libMoltenVK.dylib" "$VULKAN_SDK/lib/libvulkan.dylib" sed -i '' "s/extern const double NSAppKitVersionNumber;/const double NSAppKitVersionNumber = 1343;/g" 3rdparty/hidapi/hidapi/mac/hid.c mkdir build && cd build || exit 1 diff --git a/.cirrus.yml b/.cirrus.yml index eda3851c9a..713d5d108d 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -126,7 +126,7 @@ macos_task: matrix: - name: Cirrus macOS osx_instance: - image: monterey-base + image: monterey-xcode-13.3 mac_script: - mkdir artifacts - ".ci/build-mac.sh" diff --git a/3rdparty/CMakeLists.txt b/3rdparty/CMakeLists.txt index 8497c2c0e2..0ce414a0cc 100644 --- a/3rdparty/CMakeLists.txt +++ b/3rdparty/CMakeLists.txt @@ -153,6 +153,33 @@ endif() # Vulkan set(VULKAN_TARGET 3rdparty_dummy_lib) if(USE_VULKAN) + if(APPLE) + if(USE_SYSTEM_MVK) + message("-- RPCS3: Using system MoltenVK") + else() + message("-- RPCS3: MoltenVK submodule") + + execute_process(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" . + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK" + ) + execute_process(COMMAND "${CMAKE_COMMAND}" --build . + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK" + ) + + add_library(moltenvk_lib SHARED IMPORTED) + add_dependencies(moltenvk_lib moltenvk) + set_target_properties(moltenvk_lib + PROPERTIES IMPORTED_LOCATION "{Vulkan_LIBRARY}" + ) + + set(VULKAN_SDK "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVK/MoltenVK") + set(VK_ICD_FILENAMES "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVK/MoltenVK/icd/MoltenVK_icd.json") + set(Vulkan_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVK/MoltenVK/include") + set(Vulkan_LIBRARY "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVK/Build/Products/Release/dynamic/libMoltenVK.dylib") + set(Vulkan_TOOLS "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVK/Build/Products/Release") + endif() + endif() + find_package(Vulkan) if(VULKAN_FOUND) add_library(3rdparty_vulkan INTERFACE) @@ -173,6 +200,9 @@ if(USE_VULKAN) set(VULKAN_TARGET 3rdparty_vulkan) else() message("WARNING! USE_VULKAN was enabled, but libvulkan was not found. RPCS3 will be compiled without Vulkan support.") + if(APPLE) + message( FATAL_ERROR "ERROR! To build without Vulkan support on macOS, please disable USE_VULKAN.") + endif() endif() endif() diff --git a/3rdparty/MoltenVK/.gitignore b/3rdparty/MoltenVK/.gitignore new file mode 100644 index 0000000000..b67fced9fd --- /dev/null +++ b/3rdparty/MoltenVK/.gitignore @@ -0,0 +1,7 @@ +.ninja_log +build.ninja +cmake_install.cmake +CMakeCache.txt +CMakeFiles +MoltenVK +moltenvk-prefix diff --git a/3rdparty/MoltenVK/CMakeLists.txt b/3rdparty/MoltenVK/CMakeLists.txt new file mode 100644 index 0000000000..b97e1983db --- /dev/null +++ b/3rdparty/MoltenVK/CMakeLists.txt @@ -0,0 +1,15 @@ +cmake_minimum_required(VERSION 2.8.2) +project(moltenvk NONE) +include(ExternalProject) + +ExternalProject_Add(moltenvk + GIT_REPOSITORY https://github.com/KhronosGroup/MoltenVK.git + GIT_TAG 9cfc946 + BUILD_IN_SOURCE 1 + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK + CONFIGURE_COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/fetchDependencies" --macos + BUILD_COMMAND xcodebuild build -quiet -project "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVKPackaging.xcodeproj" -scheme "MoltenVK Package \(macOS only\)" -configuration "Release" -arch "x86_64" MVK_CONFIG_RESUME_LOST_DEVICE=1 + COMMAND ln -f "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVK/dylib/macOS/libMoltenVK.dylib" "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/Build/Products/Release/dynamic/libMoltenVK.dylib" + INSTALL_COMMAND "" + BUILD_BYPRODUCTS "${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/Build/Products/Release/dynamic/libMoltenVK.dylib" +)