From d82bee942ffe8aef0ad6b20571a9776583475dc7 Mon Sep 17 00:00:00 2001 From: MarkosTh09 Date: Fri, 5 Jun 2026 21:45:39 +0400 Subject: [PATCH 01/13] initial work for ios port --- CMakePresets.json | 60 + UnleashedRecomp/CMakeLists.txt | 219 ++- UnleashedRecomp/apple_utils.h | 27 + UnleashedRecomp/apple_utils.mm | 127 ++ UnleashedRecomp/gpu/video.cpp | 7 + UnleashedRecomp/gpu/video.h | 1 + UnleashedRecomp/install/update_checker.cpp | 7 +- UnleashedRecomp/ios/launcher_main.mm | 51 + UnleashedRecomp/kernel/imports.cpp | 34 +- UnleashedRecomp/locale/locale.cpp | 14 +- UnleashedRecomp/main.cpp | 18 + UnleashedRecomp/os/macos/logger_macos.cpp | 31 +- UnleashedRecomp/os/macos/process_macos.cpp | 16 + .../res/ios/iOSBundleInfo.plist.in | 49 + UnleashedRecomp/ui/game_window.cpp | 16 +- UnleashedRecomp/user/paths.cpp | 5 + UnleashedRecompLib/CMakeLists.txt | 159 ++- thirdparty/MoltenVK/CMakeLists.txt | 71 +- thirdparty/plume | 2 +- toolchains/ios.toolchain.cmake | 1177 +++++++++++++++++ tools/CMakeLists.txt | 9 +- tools/file_to_c/CMakeLists.txt | 16 +- tools/x_decompress/CMakeLists.txt | 1 + vcpkg.json | 3 +- 24 files changed, 2016 insertions(+), 104 deletions(-) create mode 100644 UnleashedRecomp/apple_utils.h create mode 100644 UnleashedRecomp/apple_utils.mm create mode 100644 UnleashedRecomp/ios/launcher_main.mm create mode 100644 UnleashedRecomp/res/ios/iOSBundleInfo.plist.in create mode 100644 toolchains/ios.toolchain.cmake diff --git a/CMakePresets.json b/CMakePresets.json index b64ca36a..560a19c6 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -165,6 +165,66 @@ "CMAKE_BUILD_TYPE": "Release", "CMAKE_INTERPROCEDURAL_OPTIMIZATION": true } + }, + { + "name": "ios-base", + "hidden": true, + "generator": "Ninja", + "binaryDir": "${sourceDir}/out/build/${presetName}", + "installDir": "${sourceDir}/out/install/${presetName}", + "cacheVariables": { + "CMAKE_SYSTEM_NAME": "iOS", + "CMAKE_OSX_SYSROOT": "iphoneos", + "CMAKE_OSX_ARCHITECTURES": "arm64", + "CMAKE_OSX_DEPLOYMENT_TARGET": "16.4", + "DEPLOYMENT_TARGET": "16.4", + "PLATFORM": "OS64", + "CMAKE_TOOLCHAIN_FILE": { + "value": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake", + "type": "FILEPATH" + }, + "VCPKG_CHAINLOAD_TOOLCHAIN_FILE": { + "value": "${sourceDir}/toolchains/ios.toolchain.cmake", + "type": "FILEPATH" + }, + "VCPKG_TARGET_TRIPLET": { + "value": "arm64-ios", + "type": "STRING" + } + }, + "environment": { + "VCPKG_ROOT": "${sourceDir}/thirdparty/vcpkg" + }, + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Darwin" + } + }, + { + "name": "ios-device-debug", + "displayName": "iOS Device Debug", + "inherits": "ios-base", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + } + }, + { + "name": "ios-device-relwithdebinfo", + "displayName": "iOS Device RelWithDebInfo", + "inherits": "ios-base", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "RelWithDebInfo" + } + }, + { + "name": "ios-device-release", + "displayName": "iOS Device Release", + "inherits": "ios-base", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release", + "CMAKE_INTERPROCEDURAL_OPTIMIZATION": true + } } ] } diff --git a/UnleashedRecomp/CMakeLists.txt b/UnleashedRecomp/CMakeLists.txt index 01e040ab..5d13de6b 100644 --- a/UnleashedRecomp/CMakeLists.txt +++ b/UnleashedRecomp/CMakeLists.txt @@ -1,10 +1,10 @@ project("UnleashedRecomp") -if (WIN32) +if(WIN32) option(UNLEASHED_RECOMP_D3D12 "Add D3D12 support for rendering" ON) endif() -if (CMAKE_SYSTEM_NAME MATCHES "Linux") +if(CMAKE_SYSTEM_NAME MATCHES "Linux") option(UNLEASHED_RECOMP_FLATPAK "Configure the build for Flatpak compatibility." OFF) endif() @@ -27,15 +27,40 @@ function(BIN2C) set(BIN2C_ARGS_COMPRESSION_TYPE "none") endif() - add_custom_command(OUTPUT "${BIN2C_ARGS_DEST_FILE}.c" - COMMAND $ "${BIN2C_ARGS_SOURCE_FILE}" "${BIN2C_ARGS_ARRAY_NAME}" "${BIN2C_ARGS_COMPRESSION_TYPE}" "${BIN2C_ARGS_DEST_FILE}.c" "${BIN2C_ARGS_DEST_FILE}.h" - DEPENDS "${BIN2C_ARGS_SOURCE_FILE}" - BYPRODUCTS "${BIN2C_ARGS_DEST_FILE}.h" - COMMENT "Generating binary header for ${BIN2C_ARGS_SOURCE_FILE}..." - ) + if(NOT CMAKE_CROSSCOMPILING) + add_custom_command(OUTPUT "${BIN2C_ARGS_DEST_FILE}.c" + COMMAND $ "${BIN2C_ARGS_SOURCE_FILE}" "${BIN2C_ARGS_ARRAY_NAME}" "${BIN2C_ARGS_COMPRESSION_TYPE}" "${BIN2C_ARGS_DEST_FILE}.c" "${BIN2C_ARGS_DEST_FILE}.h" + DEPENDS "${BIN2C_ARGS_SOURCE_FILE}" + BYPRODUCTS "${BIN2C_ARGS_DEST_FILE}.h" + COMMENT "Generating binary header for ${BIN2C_ARGS_SOURCE_FILE}..." + ) + else() + # When cross-compiling, build a host-native file_to_c out-of-tree and invoke it + set(HOST_FILE_TO_C_BUILD_DIR "${CMAKE_BINARY_DIR}/host-tools/file_to_c") + set(HOST_FILE_TO_C_BIN "${HOST_FILE_TO_C_BUILD_DIR}/file_to_c") + + add_custom_command(OUTPUT "${BIN2C_ARGS_DEST_FILE}.c" + COMMAND ${CMAKE_COMMAND} -S "${CMAKE_SOURCE_DIR}/tools/file_to_c" -B "${HOST_FILE_TO_C_BUILD_DIR}" + -G "${CMAKE_GENERATOR}" + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/host-tools/install + COMMAND ${CMAKE_COMMAND} --build "${HOST_FILE_TO_C_BUILD_DIR}" --config ${CMAKE_BUILD_TYPE} + COMMAND "${HOST_FILE_TO_C_BIN}" "${BIN2C_ARGS_SOURCE_FILE}" "${BIN2C_ARGS_ARRAY_NAME}" "${BIN2C_ARGS_COMPRESSION_TYPE}" "${BIN2C_ARGS_DEST_FILE}.c" "${BIN2C_ARGS_DEST_FILE}.h" + DEPENDS "${BIN2C_ARGS_SOURCE_FILE}" + BYPRODUCTS "${BIN2C_ARGS_DEST_FILE}.h" + COMMENT "Cross: building host file_to_c and generating binary header for ${BIN2C_ARGS_SOURCE_FILE}..." + USES_TERMINAL + ) + endif() + + set(_bin2c_target ${BIN2C_ARGS_TARGET_OBJ}) + + if(CMAKE_SYSTEM_NAME STREQUAL "iOS" AND TARGET UnleashedRecompIOSLauncher) + set(_bin2c_target UnleashedRecompIOSLauncher) + endif() set_source_files_properties(${BIN2C_ARGS_DEST_FILE}.c PROPERTIES SKIP_PRECOMPILE_HEADERS ON) - target_sources(${BIN2C_ARGS_TARGET_OBJ} PRIVATE ${BIN2C_ARGS_DEST_FILE}.c) + target_sources(${_bin2c_target} PRIVATE ${BIN2C_ARGS_DEST_FILE}.c) endfunction() add_compile_options( @@ -52,7 +77,7 @@ add_compile_options( -Wno-tautological-undefined-compare ) -if (WIN32) +if(WIN32) add_compile_options(/fp:strict) else() add_compile_options(-ffp-model=strict) @@ -81,7 +106,7 @@ set(UNLEASHED_RECOMP_LOCALE_CXX_SOURCES "locale/locale.cpp" ) -if (WIN32) +if(WIN32) set(UNLEASHED_RECOMP_OS_CXX_SOURCES "os/win32/logger_win32.cpp" "os/win32/media_win32.cpp" @@ -89,7 +114,7 @@ if (WIN32) "os/win32/user_win32.cpp" "os/win32/version_win32.cpp" ) -elseif (CMAKE_SYSTEM_NAME MATCHES "Linux") +elseif(CMAKE_SYSTEM_NAME MATCHES "Linux") set(UNLEASHED_RECOMP_OS_CXX_SOURCES "os/linux/logger_linux.cpp" "os/linux/media_linux.cpp" @@ -97,7 +122,7 @@ elseif (CMAKE_SYSTEM_NAME MATCHES "Linux") "os/linux/user_linux.cpp" "os/linux/version_linux.cpp" ) -elseif (APPLE) +elseif(APPLE) set(UNLEASHED_RECOMP_OS_CXX_SOURCES "os/macos/logger_macos.cpp" "os/macos/media_macos.cpp" @@ -229,7 +254,8 @@ set(UNLEASHED_RECOMP_CXX_SOURCES "sdl_listener.cpp" "stdafx.cpp" "version.cpp" - + "apple_utils.mm" + ${UNLEASHED_RECOMP_KERNEL_CXX_SOURCES} ${UNLEASHED_RECOMP_LOCALE_CXX_SOURCES} ${UNLEASHED_RECOMP_OS_CXX_SOURCES} @@ -251,7 +277,8 @@ set(VERSION_TXT "${PROJECT_SOURCE_DIR}/res/version.txt") # Only show Git info and build type if not Release. set(SHOW_GIT_INFO_AND_BUILD_TYPE 0) -if (NOT ${CMAKE_BUILD_TYPE} MATCHES "Release") + +if(NOT ${CMAKE_BUILD_TYPE} MATCHES "Release") set(SHOW_GIT_INFO_AND_BUILD_TYPE 1) endif() @@ -265,7 +292,7 @@ GenerateVersionSources( SHOW_BUILD_TYPE ${SHOW_GIT_INFO_AND_BUILD_TYPE} ) -if (WIN32) +if(WIN32) # Create binary version number for Win32 integer attributes. CreateVersionString( VERSION_TXT ${VERSION_TXT} @@ -289,16 +316,18 @@ if (WIN32) add_executable(UnleashedRecomp ${UNLEASHED_RECOMP_CXX_SOURCES} "${CMAKE_BINARY_DIR}/res.rc") # Hide console for release configurations. - if (${CMAKE_BUILD_TYPE} MATCHES "Release") + if(${CMAKE_BUILD_TYPE} MATCHES "Release") target_link_options(UnleashedRecomp PRIVATE "/SUBSYSTEM:WINDOWS" "/ENTRY:mainCRTStartup") endif() -elseif (APPLE) +elseif(APPLE) # Create version number for app bundle. CreateVersionString( VERSION_TXT ${VERSION_TXT} OUTPUT_VAR MACOS_BUNDLE_VERSION ) + set(IOS_BUNDLE_VERSION ${MACOS_BUNDLE_VERSION}) + add_executable(UnleashedRecomp MACOSX_BUNDLE ${UNLEASHED_RECOMP_CXX_SOURCES} res/macos/game_icon.icns @@ -313,8 +342,85 @@ elseif (APPLE) MACOSX_BUNDLE_BUNDLE_VERSION ${MACOS_BUNDLE_VERSION} MACOSX_BUNDLE_SHORT_VERSION_STRING ${MACOS_BUNDLE_VERSION} MACOSX_BUNDLE_ICON_FILE "game_icon.icns" + MACOSX_DEPLOYMENT_TARGET "${CMAKE_OSX_DEPLOYMENT_TARGET}" ) + if(CMAKE_SYSTEM_NAME STREQUAL "iOS") + set_target_properties(UnleashedRecomp PROPERTIES + EXCLUDE_FROM_ALL TRUE + EXCLUDE_FROM_DEFAULT_BUILD TRUE + ) + endif() + + if(CMAKE_SYSTEM_NAME STREQUAL "iOS") + add_executable(UnleashedRecompIOSLauncher MACOSX_BUNDLE + ${UNLEASHED_RECOMP_CXX_SOURCES} + "ios/launcher_main.mm" + ) + set_target_properties(UnleashedRecompIOSLauncher PROPERTIES + OUTPUT_NAME "Unleashed Recompiled iOS" + MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/res/ios/iOSBundleInfo.plist.in + MACOSX_BUNDLE_GUI_IDENTIFIER hedge-dev.UnleashedRecomp.iOSLauncher + MACOSX_BUNDLE_BUNDLE_NAME "Unleashed Recompiled" + MACOSX_BUNDLE_BUNDLE_VERSION ${IOS_BUNDLE_VERSION} + MACOSX_BUNDLE_SHORT_VERSION_STRING ${IOS_BUNDLE_VERSION} + MACOSX_DEPLOYMENT_TARGET "${CMAKE_OSX_DEPLOYMENT_TARGET}" + ) + + set_target_properties(UnleashedRecompIOSLauncher PROPERTIES + OUTPUT_NAME "Unleashed Recompiled iOS" + MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/res/ios/iOSBundleInfo.plist.in + MACOSX_BUNDLE_GUI_IDENTIFIER hedge-dev.UnleashedRecomp.iOSLauncher + MACOSX_BUNDLE_BUNDLE_NAME "Unleashed Recompiled" + MACOSX_BUNDLE_BUNDLE_VERSION ${IOS_BUNDLE_VERSION} + MACOSX_BUNDLE_SHORT_VERSION_STRING ${IOS_BUNDLE_VERSION} + XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2" + XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${CMAKE_OSX_DEPLOYMENT_TARGET}" + ) + + target_compile_definitions(UnleashedRecompIOSLauncher PRIVATE + UNLEASHED_RECOMP_IOS_LAUNCHER + ) + + set(MVK_FRAMEWORK_PATH "Frameworks/MoltenVK.framework") + set(MVK_ICD_PATH "vulkan/icd.d") + + set(MVK_APP_DIR "$") + set(MVK_FRAMEWORK_DST "${MVK_APP_DIR}/${MVK_FRAMEWORK_PATH}") + set(MVK_ICD_DST "${MVK_APP_DIR}/${MVK_ICD_PATH}") + + set_target_properties(UnleashedRecompIOSLauncher PROPERTIES + BUILD_RPATH "@executable_path/Frameworks" + INSTALL_RPATH "@executable_path/Frameworks" + ) + + set(MVK_ICD_SRC "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/MoltenVK/MoltenVK/MoltenVK/icd/MoltenVK_icd.json") + + set(MVK_FRAMEWORK_SRC + "${CMAKE_BINARY_DIR}/thirdparty/MoltenVK/MoltenVK.framework" + ) + + add_custom_command( + TARGET UnleashedRecompIOSLauncher POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory "${MVK_FRAMEWORK_DST}" + COMMAND ${CMAKE_COMMAND} -E copy_directory + "${MVK_FRAMEWORK_SRC}" + "${MVK_FRAMEWORK_DST}" + COMMENT "Copying MoltenVK.framework into iOS app bundle" + ) + + add_custom_command( + TARGET UnleashedRecompIOSLauncher POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory "${MVK_APP_DIR}/vulkan/icd.d" + COMMAND ${CMAKE_COMMAND} -E copy + "${MVK_ICD_SRC}" + "${MVK_APP_DIR}/vulkan/icd.d/MoltenVK_icd.json" + COMMENT "Copying MoltenVK ICD" + ) + + add_dependencies(UnleashedRecompIOSLauncher MoltenVK) + endif() + # Linking with MoltenVK directly would prevent using the system Vulkan loader to load with debug layers. # Instead, copy the MoltenVK dylib to the app bundle along with an ICD file for the loader to find it. # In the event the loader is not installed, the MoltenVK dylib can still be picked up directly in the app bundle. @@ -324,7 +430,7 @@ elseif (APPLE) set(MVK_ICD_SRC "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/MoltenVK/MoltenVK/MoltenVK/icd/MoltenVK_icd.json") set(MVK_ICD_DST "${MVK_DST}/MoltenVK_icd.json") - set(MVK_DYLIB_SRC "${CMAKE_BINARY_DIR}/thirdparty/MoltenVK/libMoltenVK.dylib") + set(MVK_DYLIB_SRC "${CMAKE_BINARY_DIR}/thirdparty/MoltenVK/MoltenVK.framework/MoltenVK") set(MVK_DYLIB_DST "${MVK_DST}/libMoltenVK.dylib") add_custom_command( @@ -345,16 +451,17 @@ else() add_executable(UnleashedRecomp ${UNLEASHED_RECOMP_CXX_SOURCES}) endif() -if (UNLEASHED_RECOMP_FLATPAK) - target_compile_definitions(UnleashedRecomp PRIVATE +if(UNLEASHED_RECOMP_FLATPAK) + target_compile_definitions(UnleashedRecomp PRIVATE "UNLEASHED_RECOMP_FLATPAK" "GAME_INSTALL_DIRECTORY=\"/var/data\"" ) endif() find_package(CURL REQUIRED) +find_package(zstd CONFIG REQUIRED) -if (UNLEASHED_RECOMP_D3D12) +if(UNLEASHED_RECOMP_D3D12) find_package(directx-headers CONFIG REQUIRED) find_package(directx12-agility CONFIG REQUIRED) target_compile_definitions(UnleashedRecomp PRIVATE UNLEASHED_RECOMP_D3D12) @@ -375,7 +482,7 @@ if (UNLEASHED_RECOMP_D3D12) ) endif() -if (WIN32) +if(WIN32) target_link_libraries(UnleashedRecomp PRIVATE comctl32 dwmapi @@ -387,9 +494,9 @@ if (WIN32) ) endif() -target_link_libraries(UnleashedRecomp PRIVATE +set(UNLEASHED_RECOMP_LINK_LIBS fmt::fmt - libzstd_static + zstd::libzstd msdf-atlas-gen::msdf-atlas-gen nfd::nfd o1heap @@ -403,13 +510,19 @@ target_link_libraries(UnleashedRecomp PRIVATE plume ) +if(CMAKE_SYSTEM_NAME STREQUAL "iOS") + list(APPEND UNLEASHED_RECOMP_LINK_LIBS "-framework UniformTypeIdentifiers") +endif() + +target_link_libraries(UnleashedRecomp PRIVATE ${UNLEASHED_RECOMP_LINK_LIBS}) + target_include_directories(UnleashedRecomp PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/api" ${UNLEASHED_RECOMP_THIRDPARTY_INCLUDES} ) -if (CMAKE_SYSTEM_NAME MATCHES "Linux") +if(CMAKE_SYSTEM_NAME MATCHES "Linux") find_package(X11 REQUIRED) target_include_directories(UnleashedRecomp PRIVATE ${X11_INCLUDE_DIR}) target_link_libraries(UnleashedRecomp PRIVATE ${X11_LIBRARIES}) @@ -417,23 +530,65 @@ endif() target_precompile_headers(UnleashedRecomp PUBLIC ${UNLEASHED_RECOMP_PRECOMPILED_HEADERS}) +if(TARGET UnleashedRecompIOSLauncher) + target_link_libraries(UnleashedRecompIOSLauncher PRIVATE ${UNLEASHED_RECOMP_LINK_LIBS}) + target_include_directories(UnleashedRecompIOSLauncher PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} + "${CMAKE_CURRENT_SOURCE_DIR}/api" + ${UNLEASHED_RECOMP_THIRDPARTY_INCLUDES} + ) + target_precompile_headers(UnleashedRecompIOSLauncher PUBLIC ${UNLEASHED_RECOMP_PRECOMPILED_HEADERS}) +endif() + +# If DXC tool not provided, try to pick up vendored host DXC (used for shader compilation) +if(NOT DEFINED DIRECTX_DXC_TOOL) + set(_dxc_vendor_dir "${CMAKE_SOURCE_DIR}/tools/XenosRecomp/thirdparty/dxc-bin") + + if(EXISTS "${_dxc_vendor_dir}") + if(DEFINED CMAKE_HOST_SYSTEM_PROCESSOR) + set(_dxc_arch ${CMAKE_HOST_SYSTEM_PROCESSOR}) + elseif(DEFINED CMAKE_SYSTEM_PROCESSOR) + set(_dxc_arch ${CMAKE_SYSTEM_PROCESSOR}) + else() + set(_dxc_arch "x64") + endif() + + string(TOLOWER "${_dxc_arch}" _dxc_arch) + set(_dxc_bin "${_dxc_vendor_dir}/bin/${_dxc_arch}/dxc-macos") + set(_dxc_libdir "${_dxc_vendor_dir}/lib/${_dxc_arch}") + + if(EXISTS "${_dxc_bin}") + set(DIRECTX_DXC_TOOL "DYLD_LIBRARY_PATH=${_dxc_libdir}" "${_dxc_bin}" CACHE INTERNAL "Location of the dxc tool for shader compilation") + message(STATUS "Using vendored DXC: ${_dxc_bin}") + endif() + endif() +endif() + function(compile_shader FILE_PATH TARGET_NAME) set(FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/${FILE_PATH}.hlsl) cmake_path(GET FILE_PATH STEM VARIABLE_NAME) - if (UNLEASHED_RECOMP_D3D12) + + set(_shader_target UnleashedRecomp) + + if(CMAKE_SYSTEM_NAME STREQUAL "iOS" AND TARGET UnleashedRecompIOSLauncher) + set(_shader_target UnleashedRecompIOSLauncher) + endif() + + if(UNLEASHED_RECOMP_D3D12) add_custom_command( OUTPUT ${FILE_PATH}.dxil.h COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -Wno-ignored-attributes -Fh ${FILE_PATH}.dxil.h ${FILE_PATH} -Vn g_${VARIABLE_NAME}_dxil DEPENDS ${FILE_PATH} ) - target_sources(UnleashedRecomp PRIVATE ${FILE_PATH}.dxil.h) + target_sources(${_shader_target} PRIVATE ${FILE_PATH}.dxil.h) endif() + add_custom_command( OUTPUT ${FILE_PATH}.spirv.h COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -spirv -fvk-use-dx-layout ${ARGN} -Fh ${FILE_PATH}.spirv.h ${FILE_PATH} -Vn g_${VARIABLE_NAME}_spirv DEPENDS ${FILE_PATH} ) - target_sources(UnleashedRecomp PRIVATE ${FILE_PATH}.spirv.h) + target_sources(${_shader_target} PRIVATE ${FILE_PATH}.spirv.h) endfunction() function(compile_vertex_shader FILE_PATH) @@ -471,7 +626,7 @@ compile_pixel_shader(resolve_msaa_depth_8x) set(RESOURCES_SOURCE_PATH "${PROJECT_SOURCE_DIR}/../UnleashedRecompResources") set(RESOURCES_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/res") -## Miscellaneous ## +# # Miscellaneous ## BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/bc_diff/button_bc_diff.bin" DEST_FILE "${RESOURCES_OUTPUT_PATH}/bc_diff/button_bc_diff.bin" ARRAY_NAME "g_button_bc_diff" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/font/im_font_atlas.bin" DEST_FILE "${RESOURCES_OUTPUT_PATH}/font/im_font_atlas.bin" ARRAY_NAME "g_im_font_atlas" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/font/im_font_atlas.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/font/im_font_atlas.dds" ARRAY_NAME "g_im_font_atlas_texture" COMPRESSION_TYPE "zstd") @@ -483,7 +638,7 @@ BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/co BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/select.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/select.dds" ARRAY_NAME "g_select" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/light.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/light.dds" ARRAY_NAME "g_light" COMPRESSION_TYPE "zstd") -## Installer ## +# # Installer ## BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/arrow_circle.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/arrow_circle.dds" ARRAY_NAME "g_arrow_circle" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_001.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_001.dds" ARRAY_NAME "g_install_001" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_002.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_002.dds" ARRAY_NAME "g_install_002" COMPRESSION_TYPE "zstd") @@ -496,7 +651,7 @@ BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/in BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/miles_electric_icon.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/miles_electric_icon.dds" ARRAY_NAME "g_miles_electric_icon" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/pulse_install.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/pulse_install.dds" ARRAY_NAME "g_pulse_install" COMPRESSION_TYPE "zstd") -## Options Menu ## +# # Options Menu ## BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/achievement_notifications.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/achievement_notifications.dds" ARRAY_NAME "g_achievement_notifications" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/allow_background_input_ps.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/allow_background_input_ps.dds" ARRAY_NAME "g_allow_background_input_ps" COMPRESSION_TYPE "zstd") BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/allow_background_input_xb.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/allow_background_input_xb.dds" ARRAY_NAME "g_allow_background_input_xb" COMPRESSION_TYPE "zstd") diff --git a/UnleashedRecomp/apple_utils.h b/UnleashedRecomp/apple_utils.h new file mode 100644 index 00000000..643786e2 --- /dev/null +++ b/UnleashedRecomp/apple_utils.h @@ -0,0 +1,27 @@ +#pragma once + +#include + +namespace apple { + +/// Get the user data directory (Documents folder on iOS, ~/Documents on macOS) +/// Returns absolute path suitable for user-editable files like saves and mods +std::filesystem::path GetUserDataDirectory(); + +/// Get the application support directory (Library/Application Support) +/// Returns absolute path suitable for app configuration and preferences +std::filesystem::path GetApplicationSupportDirectory(); + +/// Get the caches directory (Library/Caches) +/// Returns absolute path suitable for temporary/cached data +std::filesystem::path GetCachesDirectory(); + +/// Open a URL in the system browser +/// Returns true if the URL was opened successfully, false otherwise +bool OpenBrowser(const char* url); + +/// Check if the current Apple device supports BC texture formats +/// (Apple 9 family and later, select Apple 7/8 family on iPadOS 16.4+) +bool SupportsBCTextures(); + +} // namespace cocoa diff --git a/UnleashedRecomp/apple_utils.mm b/UnleashedRecomp/apple_utils.mm new file mode 100644 index 00000000..e2ec2286 --- /dev/null +++ b/UnleashedRecomp/apple_utils.mm @@ -0,0 +1,127 @@ +#import +#import +#import + +#if TARGET_OS_OSX +#import +#else +#import +#endif + +#include "apple_utils.h" + +namespace apple { + +std::filesystem::path GetUserDataDirectory() { + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, + NSUserDomainMask, YES); + + if ([paths count] > 0) { + NSString *documentsPath = [paths objectAtIndex:0]; + return std::filesystem::path([documentsPath UTF8String]); + } + + const char *homeDir = getenv("HOME"); + if (homeDir != nullptr) { + return std::filesystem::path(homeDir) / "Documents"; + } + return std::filesystem::path(); +} + +std::filesystem::path GetApplicationSupportDirectory() { + NSArray *paths = NSSearchPathForDirectoriesInDomains( + NSApplicationSupportDirectory, NSUserDomainMask, YES); + + if ([paths count] > 0) { + NSString *appSupportPath = [paths objectAtIndex:0]; + // Ensure application support directory exists as it is not guaranteed to be + // created by the system + NSFileManager *fileManager = [NSFileManager defaultManager]; + if (![fileManager fileExistsAtPath:appSupportPath]) { + NSError *error = nil; + [fileManager createDirectoryAtPath:appSupportPath + withIntermediateDirectories:YES + attributes:nil + error:&error]; + if (error) { + NSLog(@"Failed to create Application Support directory: %@", error); + return std::filesystem::path(); + } + } + return std::filesystem::path([appSupportPath UTF8String]); + } + + const char *homeDir = getenv("HOME"); + if (homeDir != nullptr) { + return std::filesystem::path(homeDir) / "Library" / "Application Support"; + } + + return std::filesystem::path(); +} + +std::filesystem::path GetCachesDirectory() { + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, + NSUserDomainMask, YES); + + if ([paths count] > 0) { + NSString *cachesPath = [paths objectAtIndex:0]; + return std::filesystem::path([cachesPath UTF8String]); + } + + const char *homeDir = getenv("HOME"); + if (homeDir != nullptr) { + return std::filesystem::path(homeDir) / "Library" / "Caches"; + } + + return std::filesystem::path(); +} + +bool OpenBrowser(const char *url) { + @try { + NSString *nsUrl = [NSString stringWithUTF8String:url]; + NSURL *nsUrlObj = [NSURL URLWithString:nsUrl]; + + if (nsUrlObj == nil) { + return false; + } + +#if TARGET_OS_OSX + return [[NSWorkspace sharedWorkspace] openURL:nsUrlObj]; +#else + if (@available(iOS 13.0, *)) { + __block bool success = false; + [[UIApplication sharedApplication] openURL:nsUrlObj + options:@{} + completionHandler:^(BOOL succeeded) { + success = succeeded; + }]; + return success; + } else { + // Fallback for older iOS versions + return [[UIApplication sharedApplication] openURL:nsUrlObj]; + } +#endif + } @catch (NSException *exception) { + return false; + } +} + +bool SupportsBCTextures() { + static bool cachedResult = false; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + @try { + id device = MTLCreateSystemDefaultDevice(); + if (device == nil) { + return; + } + if (@available(iOS 16.4, macOS 13.3, *)) { + cachedResult = [device supportsBCTextureCompression]; + } + } @catch (NSException *exception) { + } + }); + return cachedResult; +} + +} // namespace apple diff --git a/UnleashedRecomp/gpu/video.cpp b/UnleashedRecomp/gpu/video.cpp index a9edd0b3..07de3390 100644 --- a/UnleashedRecomp/gpu/video.cpp +++ b/UnleashedRecomp/gpu/video.cpp @@ -2769,6 +2769,13 @@ static void ProcDrawImGui(const RenderCommand& cmd) // 4. Loading thread presents and quits. // 5. After the loading thread quits, application also presents. static bool g_pendingWaitOnSwapChain = true; +void Video::HandleApplicationBackgroundState(bool isBackgrounded) +{ + if (isBackgrounded) + { + g_pendingWaitOnSwapChain = false; + } +} void Video::WaitOnSwapChain() { diff --git a/UnleashedRecomp/gpu/video.h b/UnleashedRecomp/gpu/video.h index 6c24d301..322fd859 100644 --- a/UnleashedRecomp/gpu/video.h +++ b/UnleashedRecomp/gpu/video.h @@ -20,6 +20,7 @@ struct Video static bool CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry); static void WaitOnSwapChain(); + static void HandleApplicationBackgroundState(bool isBackgrounded); static void Present(); static void StartPipelinePrecompilation(); static void WaitForGPU(); diff --git a/UnleashedRecomp/install/update_checker.cpp b/UnleashedRecomp/install/update_checker.cpp index 2a6f5b1f..6d9a6177 100644 --- a/UnleashedRecomp/install/update_checker.cpp +++ b/UnleashedRecomp/install/update_checker.cpp @@ -9,6 +9,10 @@ #include #endif +#if defined(__APPLE__) +#include "../apple_utils.h" +#endif + #include // UpdateChecker @@ -167,8 +171,7 @@ void UpdateChecker::visitWebsite() std::string command = "xdg-open " + std::string(VISIT_URL) + " &"; std::system(command.c_str()); #elif defined(__APPLE__) - std::string command = "open " + std::string(VISIT_URL) + " &"; - std::system(command.c_str()); + apple::OpenBrowser(VISIT_URL); #else static_assert(false, "Visit website not implemented for this platform."); #endif diff --git a/UnleashedRecomp/ios/launcher_main.mm b/UnleashedRecomp/ios/launcher_main.mm new file mode 100644 index 00000000..489c700e --- /dev/null +++ b/UnleashedRecomp/ios/launcher_main.mm @@ -0,0 +1,51 @@ +#include +#include + +int UnleashedMain(int argc, char *argv[]); + +int HandleAppEvents(void *userdata, SDL_Event *event) +{ + switch (event->type) + { + case SDL_APP_TERMINATING: + /* Terminate the app. + Shut everything down before returning from this function. + */ + return 0; + case SDL_APP_LOWMEMORY: + /* You will get this when your app is paused and iOS wants more memory. + Release as much memory as possible. + */ + return 0; + case SDL_APP_WILLENTERBACKGROUND: + /* Prepare your app to go into the background. Stop loops, etc. + This gets called when the user hits the home button, or gets a call. + */ + return 0; + case SDL_APP_DIDENTERBACKGROUND: + /* This will get called if the user accepted whatever sent your app to the background. + If the user got a phone call and canceled it, you'll instead get an SDL_APP_DIDENTERFOREGROUND event and restart your loops. + When you get this, you have 5 seconds to save all your state or the app will be terminated. + Your app is NOT active at this point. + */ + return 0; + case SDL_APP_WILLENTERFOREGROUND: + /* This call happens when your app is coming back to the foreground. + Restore all your state here. + */ + return 0; + case SDL_APP_DIDENTERFOREGROUND: + /* Restart your loops here. + Your app is interactive and getting CPU again. + */ + return 0; + default: + /* No special processing, add it to the event queue */ + return 1; + } +} + +int main(int argc, char *argv[]) { + SDL_SetEventFilter(HandleAppEvents, NULL); + return SDL_UIKitRunApp(argc, argv, UnleashedMain); +} diff --git a/UnleashedRecomp/kernel/imports.cpp b/UnleashedRecomp/kernel/imports.cpp index 58b33fab..697b110a 100644 --- a/UnleashedRecomp/kernel/imports.cpp +++ b/UnleashedRecomp/kernel/imports.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -10,6 +11,7 @@ #include #include "xam.h" #include "xdm.h" +#include #include #include @@ -678,13 +680,16 @@ uint32_t KeSetAffinityThread(uint32_t Thread, uint32_t Affinity, be* l void RtlLeaveCriticalSection(XRTL_CRITICAL_SECTION* cs) { + uint32_t thisThread = g_ppcContext->r13.u32; + assert(thisThread != NULL); + std::atomic_ref owningThread(cs->OwningThread); + cs->RecursionCount--; if (cs->RecursionCount != 0) return; - std::atomic_ref owningThread(cs->OwningThread); - owningThread.store(0); + owningThread.store(0, std::memory_order_release); owningThread.notify_one(); } @@ -694,18 +699,27 @@ void RtlEnterCriticalSection(XRTL_CRITICAL_SECTION* cs) assert(thisThread != NULL); std::atomic_ref owningThread(cs->OwningThread); - - while (true) + uint32_t currentOwner = owningThread.load(std::memory_order_acquire); + while (true) { - uint32_t previousOwner = 0; - - if (owningThread.compare_exchange_weak(previousOwner, thisThread) || previousOwner == thisThread) + if (currentOwner == thisThread) { cs->RecursionCount++; return; } - owningThread.wait(previousOwner); + if (currentOwner == 0) + { + if (owningThread.compare_exchange_weak(currentOwner, thisThread, std::memory_order_acquire, std::memory_order_relaxed)) + { + cs->RecursionCount = 1; + return; + } + continue; + } + + owningThread.wait(currentOwner, std::memory_order_relaxed); + currentOwner = owningThread.load(std::memory_order_acquire); } } @@ -1594,7 +1608,7 @@ void XMACreateContext() // uint32_t XAudioRegisterRenderDriverClient(be* callback, be* driver) // { // //printf("XAudioRegisterRenderDriverClient(): %x %x\n"); -// +// // *driver = apu::RegisterClient(callback[0], callback[1]); // return 0; // } @@ -1608,7 +1622,7 @@ void XMACreateContext() // { // // printf("!!! STUB !!! XAudioSubmitRenderDriverFrame\n"); // apu::SubmitFrames(samples); -// +// // return 0; // } diff --git a/UnleashedRecomp/locale/locale.cpp b/UnleashedRecomp/locale/locale.cpp index 7544f31c..347e1743 100644 --- a/UnleashedRecomp/locale/locale.cpp +++ b/UnleashedRecomp/locale/locale.cpp @@ -714,6 +714,18 @@ std::unordered_map> { ELanguage::Italian, "Impossibile allocare la memoria per il gioco.\n\nAssicurati che:\n\n- Soddisfi i requisiti minimi di sistema (8 GB).\n- Il tuo file di paging sia configurato con almeno 4 o 8 GB di memoria virtuale." } } }, + { + "System_iOS_UnsupportedGPU_BCTextures", + { + // TODO: Localize the GPU requirements for iOS devices. + { ELanguage::English, "Your device's GPU is not supported.\n\nUnleashed Recompiled requires an iOS device with hardware support for BC texture compression.\n\nMinimum requirement:\n- Apple A17 Pro chip or newer\n- Apple A18 / A18 Pro chip or newer\n- Apple M-series chips (M1, M2, M3, M4 or newer)\n\nSupported devices include:\n- iPhone 15 Pro / 15 Pro Max and newer\n- iPhone 16 / 16 Plus / 16 Pro / 16 Pro Max and newer\n- iPhone 16e and newer\n- iPad mini (A17 Pro) and newer\n- iPad Pro models with M-series chips (M1 / 11-inch 3rd gen / 12.9-inch 5th gen or newer)\n- iPad Air models with M-series chips (M1 / 5th gen or newer)\n\nUnsupported devices include:\n- All iPhones with A16 Bionic chip or earlier (iPhone 15, iPhone 14 Pro, and older)\n- iPads with A-series chips (iPad 10th gen, iPad Air 4th gen, older iPad Pros)\n\nWe aim to support more devices in the future." }, + // { ELanguage::Japanese, ""}, + { ELanguage::German, "Deine Geräte-GPU wird nicht unterstützt.\n\nUnleashed Recompiled benötigt ein iOS-Gerät mit Hardware-Unterstützung für BC-Texturen.\n\nMindestanforderungen:\n- Apple A17 Pro-Chip oder neuer\n- Apple A18 / A18 Pro-Chip oder neuer\n- Apple M-Series-Chips (M1, M2, M3, M4 oder neuer)\n\nUnterstützte Geräte:\n- iPhone 15 Pro / 15 Pro Max und neuer\n- iPhone 16 / 16 Plus / 16 Pro / 16 Pro Max und neuer\n- iPhone 16e und neuer\n- iPad mini (A17 Pro) und neuer\n- iPad Pro-Modelle mit M-Series-Chips (M1 / 11\" 3. Gen / 12,9\" 5. Gen oder neuer)\n- iPad Air-Modelle mit M-Series-Chips (M1 / 5. Gen oder neuer)\n\nNicht unterstützte Geräte:\n- Alle iPhones mit A16 Bionic-Chip oder früher (iPhone 15, iPhone 14 Pro und älter)\n- iPads mit A-Series-Chips (iPad 10. Gen, iPad Air 4. Gen, ältere iPad Pros)\n\nWir bemühen uns, in Zukunft mehr Geräte zu unterstützen." }, + // { ELanguage::French, "" }, + { ELanguage::Spanish, "La GPU en tu dispositivo no es compatible.\n\nUnleashed Recompiled requiere un dispositivo iOS con soporte hardware para texturas BC.\n\nRequisitos mínimos:\n- Chip Apple A17 Pro o superior\n- Chip Apple A18 / A18 Pro o superior\n- Chips Apple M-series (M1, M2, M3, M4 o más recientes)\n\nDispositivos compatibles incluyen:\n- iPhone 15 Pro / 15 Pro Max y más recientes\n- iPhone 16 / 16 Plus / 16 Pro / 16 Pro Max y más recientes\n- iPhone 16e y más recientes\n- iPad mini (A17 Pro) y más recientes\n- Modelos de iPad Pro con chips M-series (M1 / 11 pulgadas 3.ª gen / 12.9 pulgadas 5.ª gen o más recientes)\n- Modelos de iPad Air con chips M-series (M1 / 5.ª gen o más recientes)\n\nDispositivos no compatibles incluyen:\n- Todos los iPhones con chip A16 Bionic o anterior (iPhone 15, iPhone 14 Pro y anteriores)\n- iPads con chips de la serie A (iPad 10.ª gen, iPad Air 4.ª gen, iPad Pro más antiguos)\n\nEsperamos admitir más dispositivos en el futuro." }, + // { ELanguage::Italian, "" } + } + }, { "IntegrityCheck_Success", { @@ -856,7 +868,7 @@ std::unordered_map> { ELanguage::Spanish, "Cambiar" }, { ELanguage::Italian, "Cambia" } } - } + }, }; std::string& Localise(const std::string_view& key) diff --git a/UnleashedRecomp/main.cpp b/UnleashedRecomp/main.cpp index bb241760..0e1acaa8 100644 --- a/UnleashedRecomp/main.cpp +++ b/UnleashedRecomp/main.cpp @@ -32,6 +32,10 @@ #include #endif +#ifdef __APPLE__ +#include "apple_utils.h" +#endif + #if defined(_WIN32) && defined(UNLEASHED_RECOMP_D3D12) static std::array g_D3D12RequiredModules = { @@ -192,7 +196,11 @@ void init() } #endif +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +int UnleashedMain(int argc, char *argv[]) +#else int main(int argc, char *argv[]) +#endif { #ifdef _WIN32 timeBeginPeriod(1); @@ -205,6 +213,13 @@ int main(int argc, char *argv[]) os::logger::Init(); +#if TARGET_OS_IOS + if (!apple::SupportsBCTextures()) { + SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, GameWindow::GetTitle(), Localise("System_iOS_UnsupportedGPU_BCTextures").c_str(), GameWindow::s_pWindow); + std::_Exit(1); + } +#endif + PreloadContext preloadContext; preloadContext.PreloadExecutable(); @@ -234,9 +249,12 @@ int main(int argc, char *argv[]) if (!useDefaultWorkingDirectory) { +#if !defined(TARGET_OS_IPHONE) // Set the current working directory to the executable's path. + // iOS: CWD is not meaningful in app sandbox; paths must be absolute. std::error_code ec; std::filesystem::current_path(os::process::GetExecutableRoot(), ec); +#endif } Config::Load(); diff --git a/UnleashedRecomp/os/macos/logger_macos.cpp b/UnleashedRecomp/os/macos/logger_macos.cpp index df5708dd..8a284b98 100644 --- a/UnleashedRecomp/os/macos/logger_macos.cpp +++ b/UnleashedRecomp/os/macos/logger_macos.cpp @@ -1,17 +1,30 @@ #include - +#if TARGET_OS_IPHONE +#include +#endif void os::logger::Init() { } void os::logger::Log(const std::string_view str, ELogType type, const char* func) { - if (func) - { - fmt::println("[{}] {}", func, str); - } - else - { - fmt::println("{}", str); - } + #if TARGET_OS_IPHONE + if (func) + { + os_log(OS_LOG_DEFAULT, "%{public}s: %{public}s", func, str.data()); + } + else + { + os_log(OS_LOG_DEFAULT, "%{public}s", str.data()); + } + #else + if (func) + { + fmt::println("[{}] {}", func, str); + } + else + { + fmt::println("{}", str); + } + #endif } diff --git a/UnleashedRecomp/os/macos/process_macos.cpp b/UnleashedRecomp/os/macos/process_macos.cpp index e60ab0b0..35a97eb3 100644 --- a/UnleashedRecomp/os/macos/process_macos.cpp +++ b/UnleashedRecomp/os/macos/process_macos.cpp @@ -41,6 +41,7 @@ std::filesystem::path os::process::GetExecutableRoot() std::filesystem::path os::process::GetWorkingDirectory() { +#if !TARGET_OS_IPHONE char cwd[PATH_MAX] = {}; char *res = getcwd(cwd, sizeof(cwd)); if (res != nullptr) @@ -51,15 +52,26 @@ std::filesystem::path os::process::GetWorkingDirectory() { return std::filesystem::path(); } +#else + // iOS: Working directory is not meaningful in app sandbox + // Return app bundle path as fallback + return GetExecutableRoot(); +#endif } bool os::process::SetWorkingDirectory(const std::filesystem::path& path) { +#if !TARGET_OS_IPHONE return chdir(path.c_str()) == 0; +#else + // iOS: Cannot change working directory in sandbox; return false + return false; +#endif } bool os::process::StartProcess(const std::filesystem::path& path, const std::vector& args, std::filesystem::path work) { +#if !TARGET_OS_IPHONE pid_t pid = fork(); if (pid < 0) return false; @@ -83,6 +95,10 @@ bool os::process::StartProcess(const std::filesystem::path& path, const std::vec } return true; +#else + // iOS: Cannot start other processes in app sandbox + return false; +#endif } void os::process::CheckConsole() diff --git a/UnleashedRecomp/res/ios/iOSBundleInfo.plist.in b/UnleashedRecomp/res/ios/iOSBundleInfo.plist.in new file mode 100644 index 00000000..817db381 --- /dev/null +++ b/UnleashedRecomp/res/ios/iOSBundleInfo.plist.in @@ -0,0 +1,49 @@ + + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + Unleashed Recompiled iOS + CFBundleIdentifier + hedge-dev.UnleashedRecomp + CFBundleName + Unleashed Recompiled + CFBundlePackageType + APPL + CFBundleShortVersionString + @IOS_BUNDLE_VERSION@ + CFBundleVersion + @IOS_BUNDLE_VERSION@ + MinimumOSVersion + @IOS_DEPLOYMENT_TARGET@ + UIDeviceFamily + + 1 + 2 + + CFBundleDisplayName + Unleashed Recompiled + CFBundleIconName + AppIcon + UIFileSharingEnabled + + LSSupportsOpeningDocumentsInPlace + + NSDocumentsFolderUsageDescription + Allows access to game files and user-provided content. + UIApplicationSupportsIndirectInputEvents + + LSSupportsGameMode + + LSApplicationCategoryType + public.app-category.action-games + UISupportedInterfaceOrientations + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/UnleashedRecomp/ui/game_window.cpp b/UnleashedRecomp/ui/game_window.cpp index d15aac63..0640e164 100644 --- a/UnleashedRecomp/ui/game_window.cpp +++ b/UnleashedRecomp/ui/game_window.cpp @@ -33,6 +33,16 @@ int Window_OnSDLEvent(void*, SDL_Event* event) switch (event->type) { + case SDL_APP_WILLENTERBACKGROUND: + case SDL_APP_DIDENTERBACKGROUND: + Video::HandleApplicationBackgroundState(true); + break; + + case SDL_APP_WILLENTERFOREGROUND: + case SDL_APP_DIDENTERFOREGROUND: + Video::HandleApplicationBackgroundState(false); + break; + case SDL_QUIT: { if (App::s_isSaving) @@ -218,7 +228,11 @@ void GameWindow::Init(const char* sdlVideoDriver) #elif defined(__linux__) s_renderWindow = { info.info.x11.display, info.info.x11.window }; #elif defined(__APPLE__) +#if defined(SDL_VIDEO_DRIVER_UIKIT) + s_renderWindow.window = info.info.uikit.window; +#else s_renderWindow.window = info.info.cocoa.window; +#endif s_renderWindow.view = SDL_Metal_GetLayer(SDL_Metal_CreateView(s_pWindow)); #else static_assert(false, "Unknown platform."); @@ -346,7 +360,7 @@ bool GameWindow::SetFullscreen(bool isEnabled) return isEnabled; } - + void GameWindow::SetFullscreenCursorVisibility(bool isVisible) { s_isFullscreenCursorVisible = isVisible; diff --git a/UnleashedRecomp/user/paths.cpp b/UnleashedRecomp/user/paths.cpp index e3dbf101..e72b4738 100644 --- a/UnleashedRecomp/user/paths.cpp +++ b/UnleashedRecomp/user/paths.cpp @@ -1,5 +1,8 @@ #include "paths.h" #include +#ifdef TARGET_OS_IPHONE +#include "../apple_utils.h" +#endif std::filesystem::path g_executableRoot = os::process::GetExecutableRoot(); std::filesystem::path g_userPath = BuildUserPath(); @@ -22,6 +25,8 @@ std::filesystem::path BuildUserPath() userPath = std::filesystem::path{ knownPath } / USER_DIRECTORY; CoTaskMemFree(knownPath); +#elif TARGET_OS_IPHONE + userPath = apple::GetUserDataDirectory(); #elif defined(__linux__) || defined(__APPLE__) const char* homeDir = getenv("HOME"); #if defined(__linux__) diff --git a/UnleashedRecompLib/CMakeLists.txt b/UnleashedRecompLib/CMakeLists.txt index 8514bde8..268a0520 100644 --- a/UnleashedRecompLib/CMakeLists.txt +++ b/UnleashedRecompLib/CMakeLists.txt @@ -4,17 +4,17 @@ add_compile_options( -fno-strict-aliasing ) -if (WIN32) +if(WIN32) add_compile_options(/fp:strict) else() add_compile_options(-ffp-model=strict) endif() -target_compile_definitions(XenonRecomp PRIVATE +target_compile_definitions(XenonRecomp PRIVATE XENON_RECOMP_CONFIG_FILE_PATH=\"${CMAKE_CURRENT_SOURCE_DIR}/config/SWA.toml\" XENON_RECOMP_HEADER_FILE_PATH=\"${UNLEASHED_RECOMP_TOOLS_ROOT}/XenonRecomp/XenonUtils/ppc_context.h\") -set(UNLEASHED_RECOMP_PPC_RECOMPILED_SOURCES +set(UNLEASHED_RECOMP_PPC_RECOMPILED_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/ppc/ppc_config.h" "${CMAKE_CURRENT_SOURCE_DIR}/ppc/ppc_context.h" "${CMAKE_CURRENT_SOURCE_DIR}/ppc/ppc_func_mapping.cpp" @@ -25,57 +25,146 @@ foreach(i RANGE 0 260) list(APPEND UNLEASHED_RECOMP_PPC_RECOMPILED_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/ppc/ppc_recomp.${i}.cpp") endforeach() -add_custom_command( - OUTPUT +if(NOT CMAKE_CROSSCOMPILING) + add_custom_command( + OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/private/default_patched.xex" ${UNLEASHED_RECOMP_PPC_RECOMPILED_SOURCES} - COMMAND + COMMAND $ - DEPENDS + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/private/default.xex" "${CMAKE_CURRENT_SOURCE_DIR}/private/default.xexp" "${CMAKE_CURRENT_SOURCE_DIR}/config/SWA.toml" - USES_TERMINAL -) + USES_TERMINAL + ) -add_custom_command( - OUTPUT + add_custom_command( + OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/private/shader_decompressed.ar" - COMMAND + COMMAND $ "${CMAKE_CURRENT_SOURCE_DIR}/private/shader.ar" "${CMAKE_CURRENT_SOURCE_DIR}/private/shader_decompressed.ar" - DEPENDS + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/private/shader.ar" -) + ) -set(XENOS_RECOMP_ROOT "${UNLEASHED_RECOMP_TOOLS_ROOT}/XenosRecomp/XenosRecomp") -set(XENOS_RECOMP_INCLUDE "${XENOS_RECOMP_ROOT}/shader_common.h") + set(XENOS_RECOMP_ROOT "${UNLEASHED_RECOMP_TOOLS_ROOT}/XenosRecomp/XenosRecomp") + set(XENOS_RECOMP_INCLUDE "${XENOS_RECOMP_ROOT}/shader_common.h") -target_compile_definitions(XenosRecomp PRIVATE - XENOS_RECOMP_INPUT=\"${CMAKE_CURRENT_SOURCE_DIR}/private\" - XENOS_RECOMP_OUTPUT=\"${CMAKE_CURRENT_SOURCE_DIR}/shader/shader_cache.cpp\" - XENOS_RECOMP_INCLUDE_INPUT=\"${XENOS_RECOMP_INCLUDE}\" - UNLEASHED_RECOMP -) + target_compile_definitions(XenosRecomp PRIVATE + XENOS_RECOMP_INPUT=\"${CMAKE_CURRENT_SOURCE_DIR}/private\" + XENOS_RECOMP_OUTPUT=\"${CMAKE_CURRENT_SOURCE_DIR}/shader/shader_cache.cpp\" + XENOS_RECOMP_INCLUDE_INPUT=\"${XENOS_RECOMP_INCLUDE}\" + UNLEASHED_RECOMP + ) -file(GLOB XENOS_RECOMP_SOURCES - "${XENOS_RECOMP_ROOT}/*.h" - "${XENOS_RECOMP_ROOT}/*.cpp" -) + file(GLOB XENOS_RECOMP_SOURCES + "${XENOS_RECOMP_ROOT}/*.h" + "${XENOS_RECOMP_ROOT}/*.cpp" + ) -add_custom_command( - OUTPUT + add_custom_command( + OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/shader/shader_cache.cpp" - COMMAND + COMMAND $ - DEPENDS + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/private/default_patched.xex" - "${CMAKE_CURRENT_SOURCE_DIR}/private/shader_decompressed.ar" - ${XENOS_RECOMP_SOURCES} + "${CMAKE_CURRENT_SOURCE_DIR}/private/shader_decompressed.ar" + ${XENOS_RECOMP_SOURCES} ${XENOS_RECOMP_INCLUDE} - USES_TERMINAL -) + USES_TERMINAL + ) +else() + message(STATUS "Cross-compiling: building host tools for code generation") + + # Build host-native tools out-of-tree + set(HOST_XENONRECOMP_BUILD_DIR "${CMAKE_BINARY_DIR}/host-tools/XenonRecomp") + set(HOST_X_DECOMPRESS_BUILD_DIR "${CMAKE_BINARY_DIR}/host-tools/x_decompress") + set(HOST_XENOSRECOMP_BUILD_DIR "${CMAKE_BINARY_DIR}/host-tools/XenosRecomp") + set(HOST_VCPKG_TRIPLET "${CMAKE_HOST_SYSTEM_PROCESSOR}-osx") + set(HOST_XENONRECOMP_BIN "${HOST_XENONRECOMP_BUILD_DIR}/XenonRecomp/XenonRecomp") + set(HOST_X_DECOMPRESS_BIN "${HOST_X_DECOMPRESS_BUILD_DIR}/x_decompress") + set(HOST_XENOSRECOMP_BIN "${HOST_XENOSRECOMP_BUILD_DIR}/XenosRecomp/XenosRecomp") + + add_custom_command( + OUTPUT + "${CMAKE_CURRENT_SOURCE_DIR}/private/default_patched.xex" + ${UNLEASHED_RECOMP_PPC_RECOMPILED_SOURCES} + + COMMAND + ${CMAKE_COMMAND} -S "${CMAKE_SOURCE_DIR}/tools/XenonRecomp" -B "${HOST_XENONRECOMP_BUILD_DIR}" + -G "${CMAKE_GENERATOR}" + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/host-tools/install + COMMAND + ${CMAKE_COMMAND} --build "${HOST_XENONRECOMP_BUILD_DIR}" --config ${CMAKE_BUILD_TYPE} + + COMMAND + "${HOST_XENONRECOMP_BIN}" "${CMAKE_CURRENT_SOURCE_DIR}/config/SWA.toml" "${UNLEASHED_RECOMP_TOOLS_ROOT}/XenonRecomp/XenonUtils/ppc_context.h" + + WORKING_DIRECTORY + "${CMAKE_CURRENT_SOURCE_DIR}" + + DEPENDS + "${CMAKE_CURRENT_SOURCE_DIR}/private/default.xex" + "${CMAKE_CURRENT_SOURCE_DIR}/private/default.xexp" + "${CMAKE_CURRENT_SOURCE_DIR}/config/SWA.toml" + + COMMENT "Building host XenonRecomp and generating patched XEX + sources" + USES_TERMINAL + ) + + add_custom_command( + OUTPUT + "${CMAKE_CURRENT_SOURCE_DIR}/private/shader_decompressed.ar" + COMMAND + ${CMAKE_COMMAND} -S "${CMAKE_SOURCE_DIR}/tools/x_decompress" -B "${HOST_X_DECOMPRESS_BUILD_DIR}" + -G "${CMAKE_GENERATOR}" + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DUNLEASHED_RECOMP_TOOLS_ROOT=${UNLEASHED_RECOMP_TOOLS_ROOT} + COMMAND + ${CMAKE_COMMAND} --build "${HOST_X_DECOMPRESS_BUILD_DIR}" --config ${CMAKE_BUILD_TYPE} + COMMAND + "${HOST_X_DECOMPRESS_BIN}" "${CMAKE_CURRENT_SOURCE_DIR}/private/shader.ar" "${CMAKE_CURRENT_SOURCE_DIR}/private/shader_decompressed.ar" + DEPENDS + "${CMAKE_CURRENT_SOURCE_DIR}/private/shader.ar" + COMMENT "Building host x_decompress and decompressing shader archive" + USES_TERMINAL + ) + + set(XENOS_RECOMP_ROOT "${UNLEASHED_RECOMP_TOOLS_ROOT}/XenosRecomp/XenosRecomp") + set(XENOS_RECOMP_INCLUDE "${XENOS_RECOMP_ROOT}/shader_common.h") + + file(GLOB XENOS_RECOMP_SOURCES + "${XENOS_RECOMP_ROOT}/*.h" + "${XENOS_RECOMP_ROOT}/*.cpp" + ) + + add_custom_command( + OUTPUT + "${CMAKE_CURRENT_SOURCE_DIR}/shader/shader_cache.cpp" + COMMAND + ${CMAKE_COMMAND} -S "${CMAKE_SOURCE_DIR}/tools/XenosRecomp" -B "${HOST_XENOSRECOMP_BUILD_DIR}" + -G "${CMAKE_GENERATOR}" + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/host-tools/install + + COMMAND + ${CMAKE_COMMAND} --build "${HOST_XENOSRECOMP_BUILD_DIR}" --config ${CMAKE_BUILD_TYPE} + COMMAND + "${HOST_XENOSRECOMP_BIN}" "${CMAKE_CURRENT_SOURCE_DIR}/private" "${CMAKE_CURRENT_SOURCE_DIR}/shader/shader_cache.cpp" "${XENOS_RECOMP_INCLUDE}" + DEPENDS + "${CMAKE_CURRENT_SOURCE_DIR}/private/default_patched.xex" + "${CMAKE_CURRENT_SOURCE_DIR}/private/shader_decompressed.ar" + ${XENOS_RECOMP_SOURCES} + ${XENOS_RECOMP_INCLUDE} + COMMENT "Building host XenosRecomp and generating shader cache" + USES_TERMINAL + ) +endif() -add_library(UnleashedRecompLib +add_library(UnleashedRecompLib ${UNLEASHED_RECOMP_PPC_RECOMPILED_SOURCES} "shader/shader_cache.h" "shader/shader_cache.cpp" diff --git a/thirdparty/MoltenVK/CMakeLists.txt b/thirdparty/MoltenVK/CMakeLists.txt index c7ef4f9b..12559325 100644 --- a/thirdparty/MoltenVK/CMakeLists.txt +++ b/thirdparty/MoltenVK/CMakeLists.txt @@ -2,13 +2,15 @@ # Prepare MoltenVK Git revision find_package(Git) + if(GIT_FOUND) execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD - OUTPUT_VARIABLE MVK_GIT_REV - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) + OUTPUT_VARIABLE MVK_GIT_REV + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) endif() + set(MVK_GENERATED_INCLUDES ${CMAKE_CURRENT_BINARY_DIR}/Generated) file(WRITE ${MVK_GENERATED_INCLUDES}/mvkGitRevDerived.h "static const char* mvkRevString = \"${MVK_GIT_REV}\";") message(STATUS "MoltenVK revision: ${MVK_GIT_REV}") @@ -25,9 +27,15 @@ set(MVK_VERSION "${MVK_VERSION_MAJOR}.${MVK_VERSION_MINOR}.${MVK_VERSION_PATCH}" message(STATUS "MoltenVK version: ${MVK_VERSION}") # Find required system libraries -find_library(APPKIT_LIBRARY AppKit REQUIRED) +if(IOS) + find_library(UIKIT_LIBRARY UIKit REQUIRED) + find_library(COREGRAPHICS_LIBRARY CoreGraphics REQUIRED) +else() + find_library(APPKIT_LIBRARY AppKit REQUIRED) + find_library(IOKIT_LIBRARY IOKit REQUIRED) +endif() + find_library(FOUNDATION_LIBRARY Foundation REQUIRED) -find_library(IOKIT_LIBRARY IOKit REQUIRED) find_library(IOSURFACE_LIBRARY IOSurface REQUIRED) find_library(METAL_LIBRARY Metal REQUIRED) find_library(QUARTZCORE_LIBRARY QuartzCore REQUIRED) @@ -81,6 +89,53 @@ add_library(MoltenVK SHARED ${MVK_SOURCES}) target_include_directories(MoltenVK PRIVATE ${MVK_INCLUDES}) target_compile_options(MoltenVK PRIVATE -w) target_link_libraries(MoltenVK PRIVATE - ${APPKIT_LIBRARY} ${FOUNDATION_LIBRARY} ${IOKIT_LIBRARY} ${IOSURFACE_LIBRARY} ${METAL_LIBRARY} ${QUARTZCORE_LIBRARY} + ${FOUNDATION_LIBRARY} ${IOSURFACE_LIBRARY} ${METAL_LIBRARY} ${QUARTZCORE_LIBRARY} spirv-cross-msl MoltenVKCommon MoltenVKShaderConverter) -target_compile_definitions(MoltenVK PRIVATE MVK_FRAMEWORK_VERSION=${MVK_VERSION} MVK_USE_CEREAL=0) + +if(IOS) + target_link_libraries(MoltenVK PRIVATE ${UIKIT_LIBRARY} ${COREGRAPHICS_LIBRARY}) +else() + target_link_libraries(MoltenVK PRIVATE ${APPKIT_LIBRARY} ${IOKIT_LIBRARY}) +endif() + +target_compile_definitions(MoltenVK PRIVATE + MVK_FRAMEWORK_VERSION=${MVK_VERSION} + MVK_USE_CEREAL=0 + VK_USE_PLATFORM_METAL_EXT=1) + +set_source_files_properties( + ${MVK_SOURCES} + PROPERTIES + COMPILE_FLAGS "-fno-objc-arc" +) + +set_target_properties(MoltenVK PROPERTIES + FRAMEWORK TRUE + + FRAMEWORK_VERSION A + + MACOSX_FRAMEWORK_IDENTIFIER org.moltenvk.MoltenVK + MACOSX_FRAMEWORK_BUNDLE_VERSION ${MVK_VERSION} + MACOSX_FRAMEWORK_SHORT_VERSION_STRING ${MVK_VERSION} + + PUBLIC_HEADER "${MVK_PUBLIC_HEADERS}" + + POSITION_INDEPENDENT_CODE ON + + XCODE_ATTRIBUTE_DEFINES_MODULE YES + XCODE_ATTRIBUTE_DYLIB_INSTALL_NAME_BASE "@rpath" + + BUILD_WITH_INSTALL_RPATH YES + INSTALL_RPATH "@executable_path/Frameworks;@loader_path/Frameworks" +) + +if(IOS) + set_target_properties(MoltenVK PROPERTIES + XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH YES + XCODE_ATTRIBUTE_ENABLE_BITCODE NO + XCODE_ATTRIBUTE_SKIP_INSTALL NO + + XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET + "${CMAKE_OSX_DEPLOYMENT_TARGET}" + ) +endif() diff --git a/thirdparty/plume b/thirdparty/plume index 11926860..e213c40f 160000 --- a/thirdparty/plume +++ b/thirdparty/plume @@ -1 +1 @@ -Subproject commit 11926860e878e68626ea99ec88562ce2b8badc4f +Subproject commit e213c40fa4a9c01ed4fdb1aa683ce1e78d15d970 diff --git a/toolchains/ios.toolchain.cmake b/toolchains/ios.toolchain.cmake new file mode 100644 index 00000000..3ee3940a --- /dev/null +++ b/toolchains/ios.toolchain.cmake @@ -0,0 +1,1177 @@ +# This file is part of the ios-cmake project. It was retrieved from +# https://github.com/leetal/ios-cmake.git, which is a fork of +# https://github.com/gerstrong/ios-cmake.git, which is a fork of +# https://github.com/cristeab/ios-cmake.git, which is a fork of +# https://code.google.com/p/ios-cmake/. Which in turn is based off of +# the Platform/Darwin.cmake and Platform/UnixPaths.cmake files which +# are included with CMake 2.8.4 +# +# The ios-cmake project is licensed under the new BSD license. +# +# Copyright (c) 2014, Bogdan Cristea and LTE Engineering Software, +# Kitware, Inc., Insight Software Consortium. All rights reserved. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# 3. Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +# This file is based on the Platform/Darwin.cmake and +# Platform/UnixPaths.cmake files which are included with CMake 2.8.4 +# It has been altered for iOS development. +# +# Updated by Alex Stewart (alexs.mac@gmail.com) +# +# ***************************************************************************** +# Now maintained by Alexander Widerberg (widerbergaren [at] gmail.com) +# under the BSD-3-Clause license +# https://github.com/leetal/ios-cmake +# ***************************************************************************** +# +# INFORMATION / HELP +# +############################################################################### +# OPTIONS # +############################################################################### +# +# PLATFORM: (default "OS64") +# OS = Build for iPhoneOS. +# OS64 = Build for arm64 iphoneOS. +# OS64COMBINED = Build for arm64 x86_64 iphoneOS + iphoneOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step) +# SIMULATOR = Build for x86 i386 iphoneOS Simulator. +# SIMULATOR64 = Build for x86_64 iphoneOS Simulator. +# SIMULATORARM64 = Build for arm64 iphoneOS Simulator. +# SIMULATOR64COMBINED = Build for arm64 x86_64 iphoneOS Simulator. Combined into FAT STATIC lib (supported on 3.14+ of CMakewith "-G Xcode" argument ONLY) +# TVOS = Build for arm64 tvOS. +# TVOSCOMBINED = Build for arm64 x86_64 tvOS + tvOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step) +# SIMULATOR_TVOS = Build for x86_64 tvOS Simulator. +# SIMULATORARM64_TVOS = Build for arm64 tvOS Simulator. +# VISIONOSCOMBINED = Build for arm64 visionOS + visionOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step) +# VISIONOS = Build for arm64 visionOS. +# SIMULATOR_VISIONOS = Build for arm64 visionOS Simulator. +# WATCHOS = Build for armv7k arm64_32 for watchOS. +# WATCHOSCOMBINED = Build for armv7k arm64_32 x86_64 watchOS + watchOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step) +# SIMULATOR_WATCHOS = Build for x86_64 for watchOS Simulator. +# SIMULATORARM64_WATCHOS = Build for arm64 for watchOS Simulator. +# SIMULATOR_WATCHOSCOMBINED = Build for arm64 x86_64 for watchOS Simulator. Combined into FAT STATIC lib (supported on 3.14+ of CMakewith "-G Xcode" argument ONLY) +# MAC = Build for x86_64 macOS. +# MAC_ARM64 = Build for Apple Silicon macOS. +# MAC_UNIVERSAL = Combined build for x86_64 and Apple Silicon on macOS. +# MAC_CATALYST = Build for x86_64 macOS with Catalyst support (iOS toolchain on macOS). +# Note: The build argument "MACOSX_DEPLOYMENT_TARGET" can be used to control min-version of macOS +# MAC_CATALYST_ARM64 = Build for Apple Silicon macOS with Catalyst support (iOS toolchain on macOS). +# Note: The build argument "MACOSX_DEPLOYMENT_TARGET" can be used to control min-version of macOS +# MAC_CATALYST_UNIVERSAL = Combined build for x86_64 and Apple Silicon on Catalyst. +# +# CMAKE_OSX_SYSROOT: Path to the SDK to use. By default this is +# automatically determined from PLATFORM and xcodebuild, but +# can also be manually specified (although this should not be required). +# +# CMAKE_DEVELOPER_ROOT: Path to the Developer directory for the platform +# being compiled for. By default, this is automatically determined from +# CMAKE_OSX_SYSROOT, but can also be manually specified (although this should +# not be required). +# +# DEPLOYMENT_TARGET: Minimum SDK version to target. Default 6.0 on watchOS, 13.0 on tvOS+iOS/iPadOS, 11.0 on macOS, 1.0 on visionOS +# +# NAMED_LANGUAGE_SUPPORT: +# ON (default) = Will require "enable_language(OBJC) and/or enable_language(OBJCXX)" for full OBJC|OBJCXX support +# OFF = Will embed the OBJC and OBJCXX flags into the CMAKE_C_FLAGS and CMAKE_CXX_FLAGS (legacy behavior, CMake version < 3.16) +# +# ENABLE_BITCODE: (ON|OFF) Enables or disables bitcode support. Default OFF +# +# ENABLE_ARC: (ON|OFF) Enables or disables ARC support. Default ON (ARC enabled by default) +# +# ENABLE_VISIBILITY: (ON|OFF) Enables or disables symbol visibility support. Default OFF (visibility hidden by default) +# +# ENABLE_STRICT_TRY_COMPILE: (ON|OFF) Enables or disables strict try_compile() on all Check* directives (will run linker +# to actually check if linking is possible). Default OFF (will set CMAKE_TRY_COMPILE_TARGET_TYPE to STATIC_LIBRARY) +# +# ARCHS: (armv7 armv7s armv7k arm64 arm64_32 i386 x86_64) If specified, will override the default architectures for the given PLATFORM +# OS = armv7 armv7s arm64 (if applicable) +# OS64 = arm64 (if applicable) +# SIMULATOR = i386 +# SIMULATOR64 = x86_64 +# SIMULATORARM64 = arm64 +# TVOS = arm64 +# SIMULATOR_TVOS = x86_64 (i386 has since long been deprecated) +# SIMULATORARM64_TVOS = arm64 +# WATCHOS = armv7k arm64_32 (if applicable) +# SIMULATOR_WATCHOS = x86_64 (i386 has since long been deprecated) +# SIMULATORARM64_WATCHOS = arm64 +# MAC = x86_64 +# MAC_ARM64 = arm64 +# MAC_UNIVERSAL = x86_64 arm64 +# MAC_CATALYST = x86_64 +# MAC_CATALYST_ARM64 = arm64 +# MAC_CATALYST_UNIVERSAL = x86_64 arm64 +# +# NOTE: When manually specifying ARCHS, put a semi-colon between the entries. E.g., -DARCHS="armv7;arm64" +# +############################################################################### +# END OPTIONS # +############################################################################### +# +# This toolchain defines the following properties (available via get_property()) for use externally: +# +# PLATFORM: The currently targeted platform. +# XCODE_VERSION: Version number (not including Build version) of Xcode detected. +# SDK_VERSION: Version of SDK being used. +# OSX_ARCHITECTURES: Architectures being compiled for (generated from PLATFORM). +# APPLE_TARGET_TRIPLE: Used by autoconf build systems. NOTE: If "ARCHS" is overridden, this will *NOT* be set! +# +# This toolchain defines the following macros for use externally: +# +# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE XCODE_VARIANT) +# A convenience macro for setting xcode specific properties on targets. +# Available variants are: All, Release, RelWithDebInfo, Debug, MinSizeRel +# example: set_xcode_property (myioslib IPHONEOS_DEPLOYMENT_TARGET "3.1" "all"). +# +# find_host_package (PROGRAM ARGS) +# A macro used to find executable programs on the host system, not within the +# environment. Thanks to the android-cmake project for providing the +# command. +# + +cmake_minimum_required(VERSION 3.8.0) + +# CMake invokes the toolchain file twice during the first build, but only once during subsequent rebuilds. +# NOTE: To improve single-library build-times, provide the flag "OS_SINGLE_BUILD" as a build argument. +if(DEFINED OS_SINGLE_BUILD AND DEFINED ENV{_IOS_TOOLCHAIN_HAS_RUN}) + return() +endif() +set(ENV{_IOS_TOOLCHAIN_HAS_RUN} true) + +# List of supported platform values +list(APPEND _supported_platforms + "OS" "OS64" "OS64COMBINED" "SIMULATOR" "SIMULATOR64" "SIMULATORARM64" "SIMULATOR64COMBINED" + "TVOS" "TVOSCOMBINED" "SIMULATOR_TVOS" "SIMULATORARM64_TVOS" + "WATCHOS" "WATCHOSCOMBINED" "SIMULATOR_WATCHOS" "SIMULATORARM64_WATCHOS" "SIMULATOR_WATCHOSCOMBINED" + "MAC" "MAC_ARM64" "MAC_UNIVERSAL" + "VISIONOS" "SIMULATOR_VISIONOS" "VISIONOSCOMBINED" + "MAC_CATALYST" "MAC_CATALYST_ARM64" "MAC_CATALYST_UNIVERSAL") + +# Cache what generator is used +set(USED_CMAKE_GENERATOR "${CMAKE_GENERATOR}") + +# Check if using a CMake version capable of building combined FAT builds (simulator and target slices combined in one static lib) +if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.14") + set(MODERN_CMAKE YES) +endif() + +# Get the Xcode version being used. +# Problem: CMake runs toolchain files multiple times, but can't read cache variables on some runs. +# Workaround: On the first run (in which cache variables are always accessible), set an intermediary environment variable. +# +# NOTE: This pattern is used in many places in this toolchain to speed up checks of all sorts +if(DEFINED XCODE_VERSION_INT) + # Environment variables are always preserved. + set(ENV{_XCODE_VERSION_INT} "${XCODE_VERSION_INT}") +elseif(DEFINED ENV{_XCODE_VERSION_INT}) + set(XCODE_VERSION_INT "$ENV{_XCODE_VERSION_INT}") +elseif(NOT DEFINED XCODE_VERSION_INT) + find_program(XCODEBUILD_EXECUTABLE xcodebuild) + if(NOT XCODEBUILD_EXECUTABLE) + message(FATAL_ERROR "xcodebuild not found. Please install either the standalone commandline tools or Xcode.") + endif() + execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -version + OUTPUT_VARIABLE XCODE_VERSION_INT + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + string(REGEX MATCH "Xcode [0-9\\.]+" XCODE_VERSION_INT "${XCODE_VERSION_INT}") + string(REGEX REPLACE "Xcode ([0-9\\.]+)" "\\1" XCODE_VERSION_INT "${XCODE_VERSION_INT}") + set(XCODE_VERSION_INT "${XCODE_VERSION_INT}" CACHE INTERNAL "") +endif() + +# Assuming that xcode 12.0 is installed you most probably have ios sdk 14.0 or later installed (tested on Big Sur) +# if you don't set a deployment target it will be set the way you only get 64-bit builds +#if(NOT DEFINED DEPLOYMENT_TARGET AND XCODE_VERSION_INT VERSION_GREATER 12.0) +# Temporarily fix the arm64 issues in CMake install-combined by excluding arm64 for simulator builds (needed for Apple Silicon...) +# set(CMAKE_XCODE_ATTRIBUTE_EXCLUDED_ARCHS[sdk=iphonesimulator*] "arm64") +#endif() + +# Check if the platform variable is set +if(DEFINED PLATFORM) + # Environment variables are always preserved. + set(ENV{_PLATFORM} "${PLATFORM}") +elseif(DEFINED ENV{_PLATFORM}) + set(PLATFORM "$ENV{_PLATFORM}") +elseif(NOT DEFINED PLATFORM) + message(FATAL_ERROR "PLATFORM argument not set. Bailing configure since I don't know what target you want to build for!") +endif () + +if(PLATFORM MATCHES ".*COMBINED" AND NOT CMAKE_GENERATOR MATCHES "Xcode") + message(FATAL_ERROR "The combined builds support requires Xcode to be used as a generator via '-G Xcode' command-line argument in CMake") +endif() + +# Safeguard that the platform value is set and is one of the supported values +list(FIND _supported_platforms ${PLATFORM} contains_PLATFORM) +if("${contains_PLATFORM}" EQUAL "-1") + string(REPLACE ";" "\n * " _supported_platforms_formatted "${_supported_platforms}") + message(FATAL_ERROR " Invalid PLATFORM specified! Current value: ${PLATFORM}.\n" + " Supported PLATFORM values: \n * ${_supported_platforms_formatted}") +endif() + +# Check if Apple Silicon is supported +if(PLATFORM MATCHES "^(MAC_ARM64)$|^(MAC_CATALYST_ARM64)$|^(MAC_UNIVERSAL)$|^(MAC_CATALYST_UNIVERSAL)$" AND ${CMAKE_VERSION} VERSION_LESS "3.19.5") + message(FATAL_ERROR "Apple Silicon builds requires a minimum of CMake 3.19.5") +endif() + +# Touch the toolchain variable to suppress the "unused variable" warning. +# This happens if CMake is invoked with the same command line the second time. +if(CMAKE_TOOLCHAIN_FILE) +endif() + +# Fix for PThread library not in path +set(CMAKE_THREAD_LIBS_INIT "-lpthread") +set(CMAKE_HAVE_THREADS_LIBRARY 1) +set(CMAKE_USE_WIN32_THREADS_INIT 0) +set(CMAKE_USE_PTHREADS_INIT 1) + +# Specify named language support defaults. +if(NOT DEFINED NAMED_LANGUAGE_SUPPORT AND ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16") + set(NAMED_LANGUAGE_SUPPORT ON) + message(STATUS "[DEFAULTS] Using explicit named language support! E.g., enable_language(CXX) is needed in the project files.") +elseif(NOT DEFINED NAMED_LANGUAGE_SUPPORT AND ${CMAKE_VERSION} VERSION_LESS "3.16") + set(NAMED_LANGUAGE_SUPPORT OFF) + message(STATUS "[DEFAULTS] Disabling explicit named language support. Falling back to legacy behavior.") +elseif(DEFINED NAMED_LANGUAGE_SUPPORT AND ${CMAKE_VERSION} VERSION_LESS "3.16") + message(FATAL_ERROR "CMake named language support for OBJC and OBJCXX was added in CMake 3.16.") +endif() +set(NAMED_LANGUAGE_SUPPORT_INT ${NAMED_LANGUAGE_SUPPORT} CACHE BOOL + "Whether or not to enable explicit named language support" FORCE) + +# Specify the minimum version of the deployment target. +if(NOT DEFINED DEPLOYMENT_TARGET) + if (PLATFORM MATCHES "WATCHOS") + # Unless specified, SDK version 6.0 is used by default as minimum target version (watchOS). + set(DEPLOYMENT_TARGET "6.0") + elseif(PLATFORM STREQUAL "MAC") + # Unless specified, SDK version 11.0 (Big Sur) is used by default as the minimum target version (macOS on x86). + set(DEPLOYMENT_TARGET "11.0") + elseif(PLATFORM STREQUAL "VISIONOS" OR PLATFORM STREQUAL "SIMULATOR_VISIONOS" OR PLATFORM STREQUAL "VISIONOSCOMBINED") + # Unless specified, SDK version 1.0 is used by default as minimum target version (visionOS). + set(DEPLOYMENT_TARGET "1.0") + elseif(PLATFORM STREQUAL "MAC_ARM64") + # Unless specified, SDK version 11.0 (Big Sur) is used by default as the minimum target version (macOS on arm). + set(DEPLOYMENT_TARGET "11.0") + elseif(PLATFORM STREQUAL "MAC_UNIVERSAL") + # Unless specified, SDK version 11.0 (Big Sur) is used by default as minimum target version for universal builds. + set(DEPLOYMENT_TARGET "11.0") + elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64" OR PLATFORM STREQUAL "MAC_CATALYST_UNIVERSAL") + # Unless specified, SDK version 13.1 is used by default as the minimum target version (mac catalyst minimum requirement). + set(DEPLOYMENT_TARGET "13.1") + else() + # Unless specified, SDK version 13.0 is used by default as the minimum target version (iOS, tvOS). + set(DEPLOYMENT_TARGET "13.0") + endif() + message(STATUS "[DEFAULTS] Using the default min-version since DEPLOYMENT_TARGET not provided!") +elseif(DEFINED DEPLOYMENT_TARGET AND PLATFORM MATCHES "^MAC_CATALYST" AND ${DEPLOYMENT_TARGET} VERSION_LESS "13.1") + message(FATAL_ERROR "Mac Catalyst builds requires a minimum deployment target of 13.1!") +endif() + +# Store the DEPLOYMENT_TARGET in the cache +set(DEPLOYMENT_TARGET "${DEPLOYMENT_TARGET}" CACHE INTERNAL "") + +# Handle the case where we are targeting iOS and a version above 10.3.4 (32-bit support dropped officially) +if(PLATFORM STREQUAL "OS" AND DEPLOYMENT_TARGET VERSION_GREATER_EQUAL 10.3.4) + set(PLATFORM "OS64") + message(STATUS "Targeting minimum SDK version ${DEPLOYMENT_TARGET}. Dropping 32-bit support.") +elseif(PLATFORM STREQUAL "SIMULATOR" AND DEPLOYMENT_TARGET VERSION_GREATER_EQUAL 10.3.4) + set(PLATFORM "SIMULATOR64") + message(STATUS "Targeting minimum SDK version ${DEPLOYMENT_TARGET}. Dropping 32-bit support.") +endif() + +set(PLATFORM_INT "${PLATFORM}") + +if(DEFINED ARCHS) + string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") +endif() + +# Determine the platform name and architectures for use in xcodebuild commands +# from the specified PLATFORM_INT name. +if(PLATFORM_INT STREQUAL "OS") + set(SDK_NAME iphoneos) + if(NOT ARCHS) + set(ARCHS armv7 armv7s arm64) + set(APPLE_TARGET_TRIPLE_INT arm-apple-ios${DEPLOYMENT_TARGET}) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}) + endif() +elseif(PLATFORM_INT STREQUAL "OS64") + set(SDK_NAME iphoneos) + if(NOT ARCHS) + if (XCODE_VERSION_INT VERSION_GREATER 10.0) + set(ARCHS arm64) # FIXME: Add arm64e when Apple has fixed the integration issues with it, libarclite_iphoneos.a is currently missing bitcode markers for example + else() + set(ARCHS arm64) + endif() + set(APPLE_TARGET_TRIPLE_INT arm64-apple-ios${DEPLOYMENT_TARGET}) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}) + endif() +elseif(PLATFORM_INT STREQUAL "OS64COMBINED") + set(SDK_NAME iphoneos) + if(MODERN_CMAKE) + if(NOT ARCHS) + if (XCODE_VERSION_INT VERSION_GREATER 12.0) + set(ARCHS arm64 x86_64) + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64 arm64") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64 arm64") + else() + set(ARCHS arm64 x86_64) + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64") + endif() + set(APPLE_TARGET_TRIPLE_INT arm64-x86_64-apple-ios${DEPLOYMENT_TARGET}) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}) + endif() + else() + message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the OS64COMBINED setting work") + endif() +elseif(PLATFORM_INT STREQUAL "SIMULATOR64COMBINED") + set(SDK_NAME iphonesimulator) + if(MODERN_CMAKE) + if(NOT ARCHS) + if (XCODE_VERSION_INT VERSION_GREATER 12.0) + set(ARCHS arm64 x86_64) # FIXME: Add arm64e when Apple have fixed the integration issues with it, libarclite_iphoneos.a is currently missing bitcode markers for example + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64 arm64") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64 arm64") + else() + set(ARCHS arm64 x86_64) + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64") + endif() + set(APPLE_TARGET_TRIPLE_INT aarch64-x86_64-apple-ios${DEPLOYMENT_TARGET}-simulator) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator) + endif() + else() + message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the SIMULATOR64COMBINED setting work") + endif() +elseif(PLATFORM_INT STREQUAL "SIMULATOR") + set(SDK_NAME iphonesimulator) + if(NOT ARCHS) + set(ARCHS i386) + set(APPLE_TARGET_TRIPLE_INT i386-apple-ios${DEPLOYMENT_TARGET}-simulator) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator) + endif() + message(DEPRECATION "SIMULATOR IS DEPRECATED. Consider using SIMULATOR64 instead.") +elseif(PLATFORM_INT STREQUAL "SIMULATOR64") + set(SDK_NAME iphonesimulator) + if(NOT ARCHS) + set(ARCHS x86_64) + set(APPLE_TARGET_TRIPLE_INT x86_64-apple-ios${DEPLOYMENT_TARGET}-simulator) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator) + endif() +elseif(PLATFORM_INT STREQUAL "SIMULATORARM64") + set(SDK_NAME iphonesimulator) + if(NOT ARCHS) + set(ARCHS arm64) + set(APPLE_TARGET_TRIPLE_INT arm64-apple-ios${DEPLOYMENT_TARGET}-simulator) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator) + endif() +elseif(PLATFORM_INT STREQUAL "TVOS") + set(SDK_NAME appletvos) + if(NOT ARCHS) + set(ARCHS arm64) + set(APPLE_TARGET_TRIPLE_INT arm64-apple-tvos${DEPLOYMENT_TARGET}) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}) + endif() +elseif (PLATFORM_INT STREQUAL "TVOSCOMBINED") + set(SDK_NAME appletvos) + if(MODERN_CMAKE) + if(NOT ARCHS) + set(ARCHS arm64 x86_64) + set(APPLE_TARGET_TRIPLE_INT arm64-x86_64-apple-tvos${DEPLOYMENT_TARGET}) + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=appletvos*] "arm64") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=appletvsimulator*] "x86_64 arm64") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=appletvos*] "arm64") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=appletvsimulator*] "x86_64 arm64") + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}) + endif() + else() + message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the TVOSCOMBINED setting work") + endif() +elseif(PLATFORM_INT STREQUAL "SIMULATOR_TVOS") + set(SDK_NAME appletvsimulator) + if(NOT ARCHS) + set(ARCHS x86_64) + set(APPLE_TARGET_TRIPLE_INT x86_64-apple-tvos${DEPLOYMENT_TARGET}-simulator) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}-simulator) + endif() +elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_TVOS") + set(SDK_NAME appletvsimulator) + if(NOT ARCHS) + set(ARCHS arm64) + set(APPLE_TARGET_TRIPLE_INT arm64-apple-tvos${DEPLOYMENT_TARGET}-simulator) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}-simulator) + endif() +elseif(PLATFORM_INT STREQUAL "WATCHOS") + set(SDK_NAME watchos) + if(NOT ARCHS) + if (XCODE_VERSION_INT VERSION_GREATER 10.0) + set(ARCHS armv7k arm64_32) + set(APPLE_TARGET_TRIPLE_INT arm64_32-apple-watchos${DEPLOYMENT_TARGET}) + else() + set(ARCHS armv7k) + set(APPLE_TARGET_TRIPLE_INT arm-apple-watchos${DEPLOYMENT_TARGET}) + endif() + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}) + endif() +elseif(PLATFORM_INT STREQUAL "WATCHOSCOMBINED") + set(SDK_NAME watchos) + if(MODERN_CMAKE) + if(NOT ARCHS) + if (XCODE_VERSION_INT VERSION_GREATER 10.0) + set(ARCHS armv7k arm64_32 x86_64) + set(APPLE_TARGET_TRIPLE_INT arm64_32-x86_64-apple-watchos${DEPLOYMENT_TARGET}) + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "armv7k arm64_32") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "x86_64") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "armv7k arm64_32") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "x86_64") + else() + set(ARCHS armv7k i386) + set(APPLE_TARGET_TRIPLE_INT arm-i386-apple-watchos${DEPLOYMENT_TARGET}) + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "armv7k") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "armv7k") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386") + endif() + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}) + endif() + else() + message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the WATCHOSCOMBINED setting work") + endif() +elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS") + set(SDK_NAME watchsimulator) + if(NOT ARCHS) + if (XCODE_VERSION_INT VERSION_GREATER 10.0) + set(ARCHS x86_64) + set(APPLE_TARGET_TRIPLE_INT x86_64-apple-watchos${DEPLOYMENT_TARGET}-simulator) + else() + set(ARCHS i386) + set(APPLE_TARGET_TRIPLE_INT i386-apple-watchos${DEPLOYMENT_TARGET}-simulator) + endif() + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator) + endif() +elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_WATCHOS") + set(SDK_NAME watchsimulator) + if(NOT ARCHS) + set(ARCHS arm64) + set(APPLE_TARGET_TRIPLE_INT arm64-apple-watchos${DEPLOYMENT_TARGET}-simulator) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator) + endif() +elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOSCOMBINED") + set(SDK_NAME watchsimulator) + if(MODERN_CMAKE) + if(NOT ARCHS) + if (XCODE_VERSION_INT VERSION_GREATER 12.0) + set(ARCHS arm64 x86_64) + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "arm64 x86_64") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "arm64 x86_64") + set(APPLE_TARGET_TRIPLE_INT arm64_x86_64-apple-watchos${DEPLOYMENT_TARGET}-simulator) + else() + set(ARCHS arm64 i386) + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386") + set(APPLE_TARGET_TRIPLE_INT arm64_i386-apple-watchos${DEPLOYMENT_TARGET}-simulator) + endif() + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator) + endif() + else() + message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the SIMULATOR_WATCHOSCOMBINED setting work") + endif() +elseif(PLATFORM_INT STREQUAL "SIMULATOR_VISIONOS") + set(SDK_NAME xrsimulator) + if(NOT ARCHS) + set(ARCHS arm64) + set(APPLE_TARGET_TRIPLE_INT arm64-apple-xros${DEPLOYMENT_TARGET}-simulator) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-xros${DEPLOYMENT_TARGET}-simulator) + endif() +elseif(PLATFORM_INT STREQUAL "VISIONOS") + set(SDK_NAME xros) + if(NOT ARCHS) + set(ARCHS arm64) + set(APPLE_TARGET_TRIPLE_INT arm64-apple-xros${DEPLOYMENT_TARGET}) + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-xros${DEPLOYMENT_TARGET}) + endif() +elseif(PLATFORM_INT STREQUAL "VISIONOSCOMBINED") + set(SDK_NAME xros) + if(MODERN_CMAKE) + if(NOT ARCHS) + set(ARCHS arm64) + set(APPLE_TARGET_TRIPLE_INT arm64-apple-xros${DEPLOYMENT_TARGET}) + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=xros*] "arm64") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=xrsimulator*] "arm64") + else() + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-xros${DEPLOYMENT_TARGET}) + endif() + else() + message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the VISIONOSCOMBINED setting work") + endif() +elseif(PLATFORM_INT STREQUAL "MAC" OR PLATFORM_INT STREQUAL "MAC_CATALYST") + set(SDK_NAME macosx) + if(NOT ARCHS) + set(ARCHS x86_64) + endif() + string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") + if(PLATFORM_INT STREQUAL "MAC") + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET}) + elseif(PLATFORM_INT STREQUAL "MAC_CATALYST") + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-macabi) + endif() +elseif(PLATFORM_INT MATCHES "^(MAC_ARM64)$|^(MAC_CATALYST_ARM64)$") + set(SDK_NAME macosx) + if(NOT ARCHS) + set(ARCHS arm64) + endif() + string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") + if(PLATFORM_INT STREQUAL "MAC_ARM64") + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET}) + elseif(PLATFORM_INT STREQUAL "MAC_CATALYST_ARM64") + set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-macabi) + endif() +elseif(PLATFORM_INT STREQUAL "MAC_UNIVERSAL") + set(SDK_NAME macosx) + if(NOT ARCHS) + set(ARCHS "x86_64;arm64") + endif() + # For universal builds, don't set target triple - let CMake handle it + # string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") + # set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET}) +elseif(PLATFORM_INT STREQUAL "MAC_CATALYST_UNIVERSAL") + set(SDK_NAME macosx) + if(NOT ARCHS) + set(ARCHS "x86_64;arm64") + endif() + string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") + set(APPLE_TARGET_TRIPLE_INT apple-ios${DEPLOYMENT_TARGET}-macabi) +else() + message(FATAL_ERROR "Invalid PLATFORM: ${PLATFORM_INT}") +endif() + +string(REPLACE ";" " " ARCHS_SPACED "${ARCHS}") + +if(MODERN_CMAKE AND PLATFORM_INT MATCHES ".*COMBINED" AND NOT CMAKE_GENERATOR MATCHES "Xcode") + message(FATAL_ERROR "The COMBINED options only work with Xcode generator, -G Xcode") +endif() + +if(CMAKE_GENERATOR MATCHES "Xcode" AND PLATFORM_INT MATCHES "^MAC_CATALYST") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(CMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS "macosx") + set(CMAKE_XCODE_ATTRIBUTE_SUPPORTS_MACCATALYST "YES") + if(NOT DEFINED MACOSX_DEPLOYMENT_TARGET) + set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "10.15") + else() + set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "${MACOSX_DEPLOYMENT_TARGET}") + endif() +elseif(CMAKE_GENERATOR MATCHES "Xcode") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") + set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${DEPLOYMENT_TARGET}") + if(NOT PLATFORM_INT MATCHES ".*COMBINED") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=${SDK_NAME}*] "${ARCHS_SPACED}") + set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=${SDK_NAME}*] "${ARCHS_SPACED}") + endif() +endif() + +# If the user did not specify the SDK root to use, then query xcodebuild for it. +if(DEFINED CMAKE_OSX_SYSROOT_INT) + # Environment variables are always preserved. + set(ENV{_CMAKE_OSX_SYSROOT_INT} "${CMAKE_OSX_SYSROOT_INT}") +elseif(DEFINED ENV{_CMAKE_OSX_SYSROOT_INT}) + set(CMAKE_OSX_SYSROOT_INT "$ENV{_CMAKE_OSX_SYSROOT_INT}") +elseif(NOT DEFINED CMAKE_OSX_SYSROOT_INT) + execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -version -sdk ${SDK_NAME} Path + OUTPUT_VARIABLE CMAKE_OSX_SYSROOT_INT + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) +endif() + +if (NOT DEFINED CMAKE_OSX_SYSROOT_INT AND NOT DEFINED CMAKE_OSX_SYSROOT) + message(SEND_ERROR "Please make sure that Xcode is installed and that the toolchain" + "is pointing to the correct path. Please run:" + "sudo xcode-select -s /Applications/Xcode.app/Contents/Developer" + "and see if that fixes the problem for you.") + message(FATAL_ERROR "Invalid CMAKE_OSX_SYSROOT: ${CMAKE_OSX_SYSROOT} " + "does not exist.") +elseif(DEFINED CMAKE_OSX_SYSROOT_INT) + set(CMAKE_OSX_SYSROOT_INT "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "") + # Specify the location or name of the platform SDK to be used in CMAKE_OSX_SYSROOT. + set(CMAKE_OSX_SYSROOT "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "") +endif() + +# Use bitcode or not +if(NOT DEFINED ENABLE_BITCODE) + message(STATUS "[DEFAULTS] Disabling bitcode support by default. ENABLE_BITCODE not provided for override!") + set(ENABLE_BITCODE OFF) +endif() +set(ENABLE_BITCODE_INT ${ENABLE_BITCODE} CACHE BOOL + "Whether or not to enable bitcode" FORCE) +# Use ARC or not +if(NOT DEFINED ENABLE_ARC) + # Unless specified, enable ARC support by default + set(ENABLE_ARC ON) + message(STATUS "[DEFAULTS] Enabling ARC support by default. ENABLE_ARC not provided!") +endif() +set(ENABLE_ARC_INT ${ENABLE_ARC} CACHE BOOL "Whether or not to enable ARC" FORCE) +# Use hidden visibility or not +if(NOT DEFINED ENABLE_VISIBILITY) + # Unless specified, disable symbols visibility by default + set(ENABLE_VISIBILITY OFF) + message(STATUS "[DEFAULTS] Hiding symbols visibility by default. ENABLE_VISIBILITY not provided!") +endif() +set(ENABLE_VISIBILITY_INT ${ENABLE_VISIBILITY} CACHE BOOL "Whether or not to hide symbols from the dynamic linker (-fvisibility=hidden)" FORCE) +# Set strict compiler checks or not +if(NOT DEFINED ENABLE_STRICT_TRY_COMPILE) + # Unless specified, disable strict try_compile() + set(ENABLE_STRICT_TRY_COMPILE OFF) + message(STATUS "[DEFAULTS] Using NON-strict compiler checks by default. ENABLE_STRICT_TRY_COMPILE not provided!") +endif() +set(ENABLE_STRICT_TRY_COMPILE_INT ${ENABLE_STRICT_TRY_COMPILE} CACHE BOOL + "Whether or not to use strict compiler checks" FORCE) + +# Get the SDK version information. +if(DEFINED SDK_VERSION) + # Environment variables are always preserved. + set(ENV{_SDK_VERSION} "${SDK_VERSION}") +elseif(DEFINED ENV{_SDK_VERSION}) + set(SDK_VERSION "$ENV{_SDK_VERSION}") +elseif(NOT DEFINED SDK_VERSION) + execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -sdk ${CMAKE_OSX_SYSROOT_INT} -version SDKVersion + OUTPUT_VARIABLE SDK_VERSION + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) +endif() + +# Find the Developer root for the specific iOS platform being compiled for +# from CMAKE_OSX_SYSROOT. Should be ../../ from SDK specified in +# CMAKE_OSX_SYSROOT. There does not appear to be a direct way to obtain +# this information from xcrun or xcodebuild. +if (NOT DEFINED CMAKE_DEVELOPER_ROOT AND NOT CMAKE_GENERATOR MATCHES "Xcode") + get_filename_component(PLATFORM_SDK_DIR ${CMAKE_OSX_SYSROOT_INT} PATH) + get_filename_component(CMAKE_DEVELOPER_ROOT ${PLATFORM_SDK_DIR} PATH) + if (NOT EXISTS "${CMAKE_DEVELOPER_ROOT}") + message(FATAL_ERROR "Invalid CMAKE_DEVELOPER_ROOT: ${CMAKE_DEVELOPER_ROOT} does not exist.") + endif() +endif() + +# Find the C & C++ compilers for the specified SDK. +if(DEFINED CMAKE_C_COMPILER) + # Environment variables are always preserved. + set(ENV{_CMAKE_C_COMPILER} "${CMAKE_C_COMPILER}") +elseif(DEFINED ENV{_CMAKE_C_COMPILER}) + set(CMAKE_C_COMPILER "$ENV{_CMAKE_C_COMPILER}") + set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) +elseif(NOT DEFINED CMAKE_C_COMPILER) + execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find clang + OUTPUT_VARIABLE CMAKE_C_COMPILER + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) +endif() +if(DEFINED CMAKE_CXX_COMPILER) + # Environment variables are always preserved. + set(ENV{_CMAKE_CXX_COMPILER} "${CMAKE_CXX_COMPILER}") +elseif(DEFINED ENV{_CMAKE_CXX_COMPILER}) + set(CMAKE_CXX_COMPILER "$ENV{_CMAKE_CXX_COMPILER}") +elseif(NOT DEFINED CMAKE_CXX_COMPILER) + execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find clang++ + OUTPUT_VARIABLE CMAKE_CXX_COMPILER + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) +endif() +# Find (Apple's) libtool. +if(DEFINED BUILD_LIBTOOL) + # Environment variables are always preserved. + set(ENV{_BUILD_LIBTOOL} "${BUILD_LIBTOOL}") +elseif(DEFINED ENV{_BUILD_LIBTOOL}) + set(BUILD_LIBTOOL "$ENV{_BUILD_LIBTOOL}") +elseif(NOT DEFINED BUILD_LIBTOOL) + execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find libtool + OUTPUT_VARIABLE BUILD_LIBTOOL + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) +endif() +# Find the toolchain's provided install_name_tool if none is found on the host +if(DEFINED CMAKE_INSTALL_NAME_TOOL) + # Environment variables are always preserved. + set(ENV{_CMAKE_INSTALL_NAME_TOOL} "${CMAKE_INSTALL_NAME_TOOL}") +elseif(DEFINED ENV{_CMAKE_INSTALL_NAME_TOOL}) + set(CMAKE_INSTALL_NAME_TOOL "$ENV{_CMAKE_INSTALL_NAME_TOOL}") +elseif(NOT DEFINED CMAKE_INSTALL_NAME_TOOL) + execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find install_name_tool + OUTPUT_VARIABLE CMAKE_INSTALL_NAME_TOOL_INT + ERROR_QUIET + OUTPUT_STRIP_TRAILING_WHITESPACE) + set(CMAKE_INSTALL_NAME_TOOL ${CMAKE_INSTALL_NAME_TOOL_INT} CACHE INTERNAL "") +endif() + +# Configure libtool to be used instead of ar + ranlib to build static libraries. +# This is required on Xcode 7+, but should also work on previous versions of +# Xcode. +get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES) +foreach(lang ${languages}) + set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "${BUILD_LIBTOOL} -static -o " CACHE INTERNAL "") +endforeach() + +# CMake 3.14+ support building for iOS, watchOS, and tvOS out of the box. +if(MODERN_CMAKE) + if(SDK_NAME MATCHES "iphone") + set(CMAKE_SYSTEM_NAME iOS) + elseif(SDK_NAME MATCHES "xros") + set(CMAKE_SYSTEM_NAME visionOS) + elseif(SDK_NAME MATCHES "xrsimulator") + set(CMAKE_SYSTEM_NAME visionOS) + elseif(SDK_NAME MATCHES "macosx") + set(CMAKE_SYSTEM_NAME Darwin) + elseif(SDK_NAME MATCHES "appletv") + set(CMAKE_SYSTEM_NAME tvOS) + elseif(SDK_NAME MATCHES "watch") + set(CMAKE_SYSTEM_NAME watchOS) + endif() + # Provide flags for a combined FAT library build on newer CMake versions + if(PLATFORM_INT MATCHES ".*COMBINED") + set(CMAKE_IOS_INSTALL_COMBINED YES) + if(CMAKE_GENERATOR MATCHES "Xcode") + # Set the SDKROOT Xcode properties to a Xcode-friendly value (the SDK_NAME, E.g, iphoneos) + # This way, Xcode will automatically switch between the simulator and device SDK when building. + set(CMAKE_XCODE_ATTRIBUTE_SDKROOT "${SDK_NAME}") + # Force to not build just one ARCH, but all! + set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH "NO") + endif() + endif() +elseif(NOT DEFINED CMAKE_SYSTEM_NAME AND ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.10") + # Legacy code path prior to CMake 3.14 or fallback if no CMAKE_SYSTEM_NAME specified + set(CMAKE_SYSTEM_NAME iOS) +elseif(NOT DEFINED CMAKE_SYSTEM_NAME) + # Legacy code path before CMake 3.14 or fallback if no CMAKE_SYSTEM_NAME specified + set(CMAKE_SYSTEM_NAME Darwin) +endif() +# Standard settings. +set(CMAKE_SYSTEM_VERSION ${SDK_VERSION} CACHE INTERNAL "") +set(UNIX ON CACHE BOOL "") +set(APPLE ON CACHE BOOL "") +if(PLATFORM STREQUAL "MAC" OR PLATFORM STREQUAL "MAC_ARM64" OR PLATFORM STREQUAL "MAC_UNIVERSAL") + set(IOS OFF CACHE BOOL "") + set(MACOS ON CACHE BOOL "") +elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64" OR PLATFORM STREQUAL "MAC_CATALYST_UNIVERSAL") + set(IOS ON CACHE BOOL "") + set(MACOS ON CACHE BOOL "") +elseif(PLATFORM STREQUAL "VISIONOS" OR PLATFORM STREQUAL "SIMULATOR_VISIONOS" OR PLATFORM STREQUAL "VISIONOSCOMBINED") + set(IOS OFF CACHE BOOL "") + set(VISIONOS ON CACHE BOOL "") +else() + set(IOS ON CACHE BOOL "") +endif() +# Set the architectures for which to build. +set(CMAKE_OSX_ARCHITECTURES ${ARCHS} CACHE INTERNAL "") +# Change the type of target generated for try_compile() so it'll work when cross-compiling, weak compiler checks +if(NOT ENABLE_STRICT_TRY_COMPILE_INT) + set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) +endif() +# All iOS/Darwin specific settings - some may be redundant. +if (NOT DEFINED CMAKE_MACOSX_BUNDLE) + set(CMAKE_MACOSX_BUNDLE YES) +endif() +set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") +set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO") +set(CMAKE_SHARED_LIBRARY_PREFIX "lib") +set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib") +set(CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES ".tbd" ".so") +set(CMAKE_SHARED_MODULE_PREFIX "lib") +set(CMAKE_SHARED_MODULE_SUFFIX ".so") +set(CMAKE_C_COMPILER_ABI ELF) +set(CMAKE_CXX_COMPILER_ABI ELF) +set(CMAKE_C_HAS_ISYSROOT 1) +set(CMAKE_CXX_HAS_ISYSROOT 1) +set(CMAKE_MODULE_EXISTS 1) +set(CMAKE_DL_LIBS "") +set(CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ") +set(CMAKE_C_OSX_CURRENT_VERSION_FLAG "-current_version ") +set(CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}") +set(CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}") + +if(ARCHS MATCHES "((^|;|, )(arm64|arm64e|x86_64))+") + set(CMAKE_C_SIZEOF_DATA_PTR 8) + set(CMAKE_CXX_SIZEOF_DATA_PTR 8) + if(ARCHS MATCHES "((^|;|, )(arm64|arm64e))+") + set(CMAKE_SYSTEM_PROCESSOR "aarch64") + else() + set(CMAKE_SYSTEM_PROCESSOR "x86_64") + endif() +else() + set(CMAKE_C_SIZEOF_DATA_PTR 4) + set(CMAKE_CXX_SIZEOF_DATA_PTR 4) + set(CMAKE_SYSTEM_PROCESSOR "arm") +endif() + +# Note that only Xcode 7+ supports the newer more specific: +# -m${SDK_NAME}-version-min flags, older versions of Xcode use: +# -m(ios/ios-simulator)-version-min instead. +if(${CMAKE_VERSION} VERSION_LESS "3.11") + if(PLATFORM_INT STREQUAL "OS" OR PLATFORM_INT STREQUAL "OS64") + if(XCODE_VERSION_INT VERSION_LESS 7.0) + set(SDK_NAME_VERSION_FLAGS + "-mios-version-min=${DEPLOYMENT_TARGET}") + else() + # Xcode 7.0+ uses flags we can build directly from SDK_NAME. + set(SDK_NAME_VERSION_FLAGS + "-m${SDK_NAME}-version-min=${DEPLOYMENT_TARGET}") + endif() + elseif(PLATFORM_INT STREQUAL "TVOS") + set(SDK_NAME_VERSION_FLAGS + "-mtvos-version-min=${DEPLOYMENT_TARGET}") + elseif(PLATFORM_INT STREQUAL "SIMULATOR_TVOS") + set(SDK_NAME_VERSION_FLAGS + "-mtvos-simulator-version-min=${DEPLOYMENT_TARGET}") +elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_TVOS") + set(SDK_NAME_VERSION_FLAGS + "-mtvos-simulator-version-min=${DEPLOYMENT_TARGET}") + elseif(PLATFORM_INT STREQUAL "WATCHOS") + set(SDK_NAME_VERSION_FLAGS + "-mwatchos-version-min=${DEPLOYMENT_TARGET}") + elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS") + set(SDK_NAME_VERSION_FLAGS + "-mwatchos-simulator-version-min=${DEPLOYMENT_TARGET}") + elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_WATCHOS") + set(SDK_NAME_VERSION_FLAGS + "-mwatchos-simulator-version-min=${DEPLOYMENT_TARGET}") + elseif(PLATFORM_INT STREQUAL "MAC") + set(SDK_NAME_VERSION_FLAGS + "-mmacosx-version-min=${DEPLOYMENT_TARGET}") + else() + # SIMULATOR or SIMULATOR64 both use -mios-simulator-version-min. + set(SDK_NAME_VERSION_FLAGS + "-mios-simulator-version-min=${DEPLOYMENT_TARGET}") + endif() +elseif(NOT PLATFORM_INT MATCHES "^MAC_CATALYST") + # Newer versions of CMake sets the version min flags correctly, skip this for Mac Catalyst targets + set(CMAKE_OSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET} CACHE INTERNAL "Minimum OS X deployment version") +endif() + +if(DEFINED APPLE_TARGET_TRIPLE_INT) + set(APPLE_TARGET_TRIPLE ${APPLE_TARGET_TRIPLE_INT} CACHE INTERNAL "") + set(CMAKE_C_COMPILER_TARGET ${APPLE_TARGET_TRIPLE}) + set(CMAKE_CXX_COMPILER_TARGET ${APPLE_TARGET_TRIPLE}) + set(CMAKE_ASM_COMPILER_TARGET ${APPLE_TARGET_TRIPLE}) +endif() + +if(PLATFORM_INT MATCHES "^MAC_CATALYST") + set(C_TARGET_FLAGS "-isystem ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/usr/include -iframework ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/System/Library/Frameworks") +endif() + +if(ENABLE_BITCODE_INT) + set(BITCODE "-fembed-bitcode") + set(CMAKE_XCODE_ATTRIBUTE_BITCODE_GENERATION_MODE "bitcode") + set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "YES") +else() + set(BITCODE "") + set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "NO") +endif() + +if(ENABLE_ARC_INT) + set(FOBJC_ARC "-fobjc-arc") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "YES") +else() + set(FOBJC_ARC "-fno-objc-arc") + set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "NO") +endif() + +if(NAMED_LANGUAGE_SUPPORT_INT) + set(OBJC_VARS "-fobjc-abi-version=2 -DOBJC_OLD_DISPATCH_PROTOTYPES=0") + set(OBJC_LEGACY_VARS "") +else() + set(OBJC_VARS "") + set(OBJC_LEGACY_VARS "-fobjc-abi-version=2 -DOBJC_OLD_DISPATCH_PROTOTYPES=0") +endif() + +if(NOT ENABLE_VISIBILITY_INT) + foreach(lang ${languages}) + set(CMAKE_${lang}_VISIBILITY_PRESET "hidden" CACHE INTERNAL "") + endforeach() + set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "YES") + set(VISIBILITY "-fvisibility=hidden -fvisibility-inlines-hidden") +else() + foreach(lang ${languages}) + set(CMAKE_${lang}_VISIBILITY_PRESET "default" CACHE INTERNAL "") + endforeach() + set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "NO") + set(VISIBILITY "-fvisibility=default") +endif() + +if(DEFINED APPLE_TARGET_TRIPLE) + set(APPLE_TARGET_TRIPLE_FLAG "-target ${APPLE_TARGET_TRIPLE}") +endif() + +#Check if Xcode generator is used since that will handle these flags automagically +if(CMAKE_GENERATOR MATCHES "Xcode") + message(STATUS "Not setting any manual command-line buildflags, since Xcode is selected as the generator. Modifying the Xcode build-settings directly instead.") +else() + set(CMAKE_C_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${OBJC_LEGACY_VARS} ${BITCODE} ${VISIBILITY} ${CMAKE_C_FLAGS}" CACHE INTERNAL + "Flags used by the compiler during all C build types.") + set(CMAKE_C_FLAGS_DEBUG "-O0 -g ${CMAKE_C_FLAGS_DEBUG}") + set(CMAKE_C_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_C_FLAGS_MINSIZEREL}") + set(CMAKE_C_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_C_FLAGS_RELWITHDEBINFO}") + set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_C_FLAGS_RELEASE}") + set(CMAKE_CXX_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${OBJC_LEGACY_VARS} ${BITCODE} ${VISIBILITY} ${CMAKE_CXX_FLAGS}" CACHE INTERNAL + "Flags used by the compiler during all CXX build types.") + set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g ${CMAKE_CXX_FLAGS_DEBUG}") + set(CMAKE_CXX_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_CXX_FLAGS_MINSIZEREL}") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") + set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_CXX_FLAGS_RELEASE}") + if(NAMED_LANGUAGE_SUPPORT_INT) + set(CMAKE_OBJC_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${BITCODE} ${VISIBILITY} ${FOBJC_ARC} ${OBJC_VARS} ${CMAKE_OBJC_FLAGS}" CACHE INTERNAL + "Flags used by the compiler during all OBJC build types.") + set(CMAKE_OBJC_FLAGS_DEBUG "-O0 -g ${CMAKE_OBJC_FLAGS_DEBUG}") + set(CMAKE_OBJC_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_OBJC_FLAGS_MINSIZEREL}") + set(CMAKE_OBJC_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_OBJC_FLAGS_RELWITHDEBINFO}") + set(CMAKE_OBJC_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_OBJC_FLAGS_RELEASE}") + set(CMAKE_OBJCXX_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${BITCODE} ${VISIBILITY} ${FOBJC_ARC} ${OBJC_VARS} ${CMAKE_OBJCXX_FLAGS}" CACHE INTERNAL + "Flags used by the compiler during all OBJCXX build types.") + set(CMAKE_OBJCXX_FLAGS_DEBUG "-O0 -g ${CMAKE_OBJCXX_FLAGS_DEBUG}") + set(CMAKE_OBJCXX_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_OBJCXX_FLAGS_MINSIZEREL}") + set(CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO}") + set(CMAKE_OBJCXX_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_OBJCXX_FLAGS_RELEASE}") + endif() + set(CMAKE_C_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}" CACHE INTERNAL + "Flags used by the compiler for all C link types.") + set(CMAKE_CXX_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}" CACHE INTERNAL + "Flags used by the compiler for all CXX link types.") + if(NAMED_LANGUAGE_SUPPORT_INT) + set(CMAKE_OBJC_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_OBJC_LINK_FLAGS}" CACHE INTERNAL + "Flags used by the compiler for all OBJC link types.") + set(CMAKE_OBJCXX_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_OBJCXX_LINK_FLAGS}" CACHE INTERNAL + "Flags used by the compiler for all OBJCXX link types.") + endif() + set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -x assembler-with-cpp" CACHE INTERNAL + "Flags used by the compiler for all ASM build types.") +endif() + +## Print status messages to inform of the current state +message(STATUS "Configuring ${SDK_NAME} build for platform: ${PLATFORM_INT}, architecture(s): ${ARCHS}") +message(STATUS "Using SDK: ${CMAKE_OSX_SYSROOT_INT}") +message(STATUS "Using C compiler: ${CMAKE_C_COMPILER}") +message(STATUS "Using CXX compiler: ${CMAKE_CXX_COMPILER}") +message(STATUS "Using libtool: ${BUILD_LIBTOOL}") +message(STATUS "Using install name tool: ${CMAKE_INSTALL_NAME_TOOL}") +if(DEFINED APPLE_TARGET_TRIPLE) + message(STATUS "Autoconf target triple: ${APPLE_TARGET_TRIPLE}") +endif() +message(STATUS "Using minimum deployment version: ${DEPLOYMENT_TARGET}" + " (SDK version: ${SDK_VERSION})") +if(MODERN_CMAKE) + message(STATUS "Merging integrated CMake 3.14+ iOS,tvOS,watchOS,macOS toolchain(s) with this toolchain!") + if(PLATFORM_INT MATCHES ".*COMBINED") + message(STATUS "Will combine built (static) artifacts into FAT lib...") + endif() +endif() +if(CMAKE_GENERATOR MATCHES "Xcode") + message(STATUS "Using Xcode version: ${XCODE_VERSION_INT}") +endif() +message(STATUS "CMake version: ${CMAKE_VERSION}") +if(DEFINED SDK_NAME_VERSION_FLAGS) + message(STATUS "Using version flags: ${SDK_NAME_VERSION_FLAGS}") +endif() +message(STATUS "Using a data_ptr size of: ${CMAKE_CXX_SIZEOF_DATA_PTR}") +if(ENABLE_BITCODE_INT) + message(STATUS "Bitcode: Enabled") +else() + message(STATUS "Bitcode: Disabled") +endif() + +if(ENABLE_ARC_INT) + message(STATUS "ARC: Enabled") +else() + message(STATUS "ARC: Disabled") +endif() + +if(ENABLE_VISIBILITY_INT) + message(STATUS "Hiding symbols: Disabled") +else() + message(STATUS "Hiding symbols: Enabled") +endif() + +# Set global properties +set_property(GLOBAL PROPERTY PLATFORM "${PLATFORM}") +set_property(GLOBAL PROPERTY APPLE_TARGET_TRIPLE "${APPLE_TARGET_TRIPLE_INT}") +set_property(GLOBAL PROPERTY SDK_VERSION "${SDK_VERSION}") +set_property(GLOBAL PROPERTY XCODE_VERSION "${XCODE_VERSION_INT}") +set_property(GLOBAL PROPERTY OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}") + +# Export configurable variables for the try_compile() command. +set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES + PLATFORM + XCODE_VERSION_INT + SDK_VERSION + NAMED_LANGUAGE_SUPPORT + DEPLOYMENT_TARGET + CMAKE_DEVELOPER_ROOT + CMAKE_OSX_SYSROOT_INT + ENABLE_BITCODE + ENABLE_ARC + CMAKE_ASM_COMPILER + CMAKE_C_COMPILER + CMAKE_C_COMPILER_TARGET + CMAKE_CXX_COMPILER + CMAKE_CXX_COMPILER_TARGET + BUILD_LIBTOOL + CMAKE_INSTALL_NAME_TOOL + CMAKE_C_FLAGS + CMAKE_C_DEBUG + CMAKE_C_MINSIZEREL + CMAKE_C_RELWITHDEBINFO + CMAKE_C_RELEASE + CMAKE_CXX_FLAGS + CMAKE_CXX_FLAGS_DEBUG + CMAKE_CXX_FLAGS_MINSIZEREL + CMAKE_CXX_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS_RELEASE + CMAKE_C_LINK_FLAGS + CMAKE_CXX_LINK_FLAGS + CMAKE_ASM_FLAGS +) + +if(NAMED_LANGUAGE_SUPPORT_INT) + list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES + CMAKE_OBJC_FLAGS + CMAKE_OBJC_DEBUG + CMAKE_OBJC_MINSIZEREL + CMAKE_OBJC_RELWITHDEBINFO + CMAKE_OBJC_RELEASE + CMAKE_OBJCXX_FLAGS + CMAKE_OBJCXX_DEBUG + CMAKE_OBJCXX_MINSIZEREL + CMAKE_OBJCXX_RELWITHDEBINFO + CMAKE_OBJCXX_RELEASE + CMAKE_OBJC_LINK_FLAGS + CMAKE_OBJCXX_LINK_FLAGS + ) +endif() + +set(CMAKE_PLATFORM_HAS_INSTALLNAME 1) +set(CMAKE_SHARED_LINKER_FLAGS "-rpath @executable_path/Frameworks -rpath @loader_path/Frameworks") +set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-dynamiclib -Wl,-headerpad_max_install_names") +set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle -Wl,-headerpad_max_install_names") +set(CMAKE_SHARED_MODULE_LOADER_C_FLAG "-Wl,-bundle_loader,") +set(CMAKE_SHARED_MODULE_LOADER_CXX_FLAG "-Wl,-bundle_loader,") +set(CMAKE_FIND_LIBRARY_SUFFIXES ".tbd" ".dylib" ".so" ".a") +set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-install_name") + +# Set the find root to the SDK developer roots. +# Note: CMAKE_FIND_ROOT_PATH is only useful when cross-compiling. Thus, do not set on macOS builds. +if(NOT PLATFORM_INT MATCHES "^MAC.*$") + list(APPEND CMAKE_FIND_ROOT_PATH "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "") + set(CMAKE_IGNORE_PATH "/System/Library/Frameworks;/usr/local/lib;/opt/homebrew" CACHE INTERNAL "") +endif() + +# Default to searching for frameworks first. +IF(NOT DEFINED CMAKE_FIND_FRAMEWORK) + set(CMAKE_FIND_FRAMEWORK FIRST) +ENDIF(NOT DEFINED CMAKE_FIND_FRAMEWORK) + +# Set up the default search directories for frameworks. +if(PLATFORM_INT MATCHES "^MAC_CATALYST") + set(CMAKE_FRAMEWORK_PATH + ${CMAKE_DEVELOPER_ROOT}/Library/PrivateFrameworks + ${CMAKE_OSX_SYSROOT_INT}/System/Library/Frameworks + ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/System/Library/Frameworks + ${CMAKE_FRAMEWORK_PATH} CACHE INTERNAL "") +else() + set(CMAKE_FRAMEWORK_PATH + ${CMAKE_DEVELOPER_ROOT}/Library/PrivateFrameworks + ${CMAKE_OSX_SYSROOT_INT}/System/Library/Frameworks + ${CMAKE_FRAMEWORK_PATH} CACHE INTERNAL "") +endif() + +# By default, search both the specified iOS SDK and the remainder of the host filesystem. +if(NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH CACHE INTERNAL "") +endif() +if(NOT CMAKE_FIND_ROOT_PATH_MODE_LIBRARY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH CACHE INTERNAL "") +endif() +if(NOT CMAKE_FIND_ROOT_PATH_MODE_INCLUDE) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH CACHE INTERNAL "") +endif() +if(NOT CMAKE_FIND_ROOT_PATH_MODE_PACKAGE) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH CACHE INTERNAL "") +endif() + +# +# Some helper-macros below to simplify and beautify the CMakeFile +# + +# This little macro lets you set any Xcode specific property. +macro(set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE XCODE_RELVERSION) + set(XCODE_RELVERSION_I "${XCODE_RELVERSION}") + if(XCODE_RELVERSION_I STREQUAL "All") + set_property(TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} "${XCODE_VALUE}") + else() + set_property(TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY}[variant=${XCODE_RELVERSION_I}] "${XCODE_VALUE}") + endif() +endmacro(set_xcode_property) + +# This macro lets you find executable programs on the host system. +macro(find_host_package) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE NEVER) + set(_TOOLCHAIN_IOS ${IOS}) + set(IOS OFF) + find_package(${ARGN}) + set(IOS ${_TOOLCHAIN_IOS}) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH) +endmacro(find_host_package) diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt index bdcf384a..fe45cfd6 100644 --- a/tools/CMakeLists.txt +++ b/tools/CMakeLists.txt @@ -1,6 +1,9 @@ add_subdirectory(${UNLEASHED_RECOMP_TOOLS_ROOT}/bc_diff) -add_subdirectory(${UNLEASHED_RECOMP_TOOLS_ROOT}/file_to_c) add_subdirectory(${UNLEASHED_RECOMP_TOOLS_ROOT}/fshasher) -add_subdirectory(${UNLEASHED_RECOMP_TOOLS_ROOT}/x_decompress) add_subdirectory(${UNLEASHED_RECOMP_TOOLS_ROOT}/XenonRecomp) -add_subdirectory(${UNLEASHED_RECOMP_TOOLS_ROOT}/XenosRecomp) + +if(NOT CMAKE_CROSSCOMPILING) + add_subdirectory(${UNLEASHED_RECOMP_TOOLS_ROOT}/file_to_c) + add_subdirectory(${UNLEASHED_RECOMP_TOOLS_ROOT}/x_decompress) + add_subdirectory(${UNLEASHED_RECOMP_TOOLS_ROOT}/XenosRecomp) +endif() diff --git a/tools/file_to_c/CMakeLists.txt b/tools/file_to_c/CMakeLists.txt index 6fbafba6..8f0a9503 100644 --- a/tools/file_to_c/CMakeLists.txt +++ b/tools/file_to_c/CMakeLists.txt @@ -7,4 +7,18 @@ set(CMAKE_CXX_STANDARD 17) add_executable(file_to_c "file_to_c.cpp") -target_link_libraries(file_to_c PRIVATE $,libzstd_static,libzstd_shared>) +find_package(ZSTD) + +if(TARGET ZSTD::ZSTD) + target_link_libraries(file_to_c PRIVATE ZSTD::ZSTD) +else() + find_path(ZSTD_INCLUDE_DIR zstd.h) + find_library(ZSTD_LIBRARY NAMES zstd libzstd libzstd_static) + + if(ZSTD_INCLUDE_DIR AND ZSTD_LIBRARY) + target_include_directories(file_to_c PRIVATE ${ZSTD_INCLUDE_DIR}) + target_link_libraries(file_to_c PRIVATE ${ZSTD_LIBRARY}) + else() + message(FATAL_ERROR "zstd library not found. Install zstd (e.g. via vcpkg) or ensure zstd.h and libzstd are on the include/library path.") + endif() +endif() diff --git a/tools/x_decompress/CMakeLists.txt b/tools/x_decompress/CMakeLists.txt index aecf1f79..88fa6df2 100644 --- a/tools/x_decompress/CMakeLists.txt +++ b/tools/x_decompress/CMakeLists.txt @@ -1,3 +1,4 @@ +cmake_minimum_required(VERSION 3.20) project("x_decompress") set(CMAKE_CXX_STANDARD 17) diff --git a/vcpkg.json b/vcpkg.json index 6b97ca18..07dd123c 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -10,7 +10,8 @@ "platform": "windows" }, "freetype", - "curl" + "curl", + "zstd" ], "vcpkg-configuration": { "overlay-triplets": [ From 73b6130625e2d50f900090e232a198ec4cb2aa58 Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Sat, 2 Aug 2025 20:16:26 -0700 Subject: [PATCH 02/13] Add support for Metal on macOS. Co-authored-by: Isaac Marovitz --- .github/workflows/validate.yml | 5 - .gitmodules | 2 +- CMakeLists.txt | 5 + UnleashedRecomp/CMakeLists.txt | 58 ++-- UnleashedRecomp/gpu/imgui/imgui_common.h | 2 +- .../gpu/shader/{ => hlsl}/.gitignore | 0 .../{ => hlsl}/blend_color_alpha_ps.hlsl | 4 +- .../gpu/shader/{ => hlsl}/copy_color_ps.hlsl | 2 +- .../gpu/shader/{ => hlsl}/copy_common.hlsli | 0 .../gpu/shader/{ => hlsl}/copy_depth_ps.hlsl | 2 +- .../gpu/shader/{ => hlsl}/copy_vs.hlsl | 2 +- .../gpu/shader/{ => hlsl}/csd_filter_ps.hlsl | 4 +- .../gpu/shader/{ => hlsl}/csd_no_tex_vs.hlsl | 4 +- .../gpu/shader/{ => hlsl}/csd_vs.hlsl | 4 +- .../{ => hlsl}/enhanced_motion_blur_ps.hlsl | 4 +- .../{ => hlsl}/gamma_correction_ps.hlsl | 4 +- .../gpu/shader/{ => hlsl}/gaussian_blur.hlsli | 4 +- .../shader/{ => hlsl}/gaussian_blur_3x3.hlsl | 0 .../shader/{ => hlsl}/gaussian_blur_5x5.hlsl | 0 .../shader/{ => hlsl}/gaussian_blur_7x7.hlsl | 0 .../shader/{ => hlsl}/gaussian_blur_9x9.hlsl | 0 .../gpu/shader/{ => hlsl}/imgui_common.hlsli | 2 +- .../gpu/shader/{ => hlsl}/imgui_ps.hlsl | 2 +- .../gpu/shader/{ => hlsl}/imgui_vs.hlsl | 2 +- .../gpu/shader/{ => hlsl}/movie_common.hlsli | 2 +- .../gpu/shader/{ => hlsl}/movie_ps.hlsl | 2 +- .../gpu/shader/{ => hlsl}/movie_vs.hlsl | 2 +- .../{ => hlsl}/resolve_msaa_color.hlsli | 2 +- .../{ => hlsl}/resolve_msaa_color_2x.hlsl | 0 .../{ => hlsl}/resolve_msaa_color_4x.hlsl | 0 .../{ => hlsl}/resolve_msaa_color_8x.hlsl | 0 .../{ => hlsl}/resolve_msaa_depth.hlsli | 2 +- .../{ => hlsl}/resolve_msaa_depth_2x.hlsl | 0 .../{ => hlsl}/resolve_msaa_depth_4x.hlsl | 0 .../{ => hlsl}/resolve_msaa_depth_8x.hlsl | 0 UnleashedRecomp/gpu/shader/msl/.gitignore | 4 + .../gpu/shader/msl/blend_color_alpha_ps.metal | 31 ++ .../gpu/shader/msl/copy_color_ps.metal | 14 + .../gpu/shader/msl/copy_common.metali | 9 + .../gpu/shader/msl/copy_depth_ps.metal | 23 ++ UnleashedRecomp/gpu/shader/msl/copy_vs.metal | 16 + .../gpu/shader/msl/csd_filter_ps.metal | 38 +++ .../gpu/shader/msl/csd_no_tex_vs.metal | 64 ++++ UnleashedRecomp/gpu/shader/msl/csd_vs.metal | 66 ++++ .../shader/msl/enhanced_motion_blur_ps.metal | 59 ++++ .../gpu/shader/msl/gamma_correction_ps.metal | 23 ++ .../gpu/shader/msl/gaussian_blur.metali | 63 ++++ .../gpu/shader/msl/gaussian_blur_3x3.metal | 2 + .../gpu/shader/msl/gaussian_blur_5x5.metal | 2 + .../gpu/shader/msl/gaussian_blur_7x7.metal | 2 + .../gpu/shader/msl/gaussian_blur_9x9.metal | 2 + .../gpu/shader/msl/imgui_common.metali | 41 +++ UnleashedRecomp/gpu/shader/msl/imgui_ps.metal | 235 +++++++++++++ UnleashedRecomp/gpu/shader/msl/imgui_vs.metal | 32 ++ .../gpu/shader/msl/movie_common.metali | 39 +++ UnleashedRecomp/gpu/shader/msl/movie_ps.metal | 104 ++++++ UnleashedRecomp/gpu/shader/msl/movie_vs.metal | 12 + .../gpu/shader/msl/resolve_msaa_color.metali | 21 ++ .../shader/msl/resolve_msaa_color_2x.metal | 2 + .../shader/msl/resolve_msaa_color_4x.metal | 2 + .../shader/msl/resolve_msaa_color_8x.metal | 2 + .../gpu/shader/msl/resolve_msaa_depth.metali | 30 ++ .../shader/msl/resolve_msaa_depth_2x.metal | 2 + .../shader/msl/resolve_msaa_depth_4x.metal | 2 + .../shader/msl/resolve_msaa_depth_8x.metal | 2 + UnleashedRecomp/gpu/video.cpp | 312 +++++++++++------- UnleashedRecomp/gpu/video.h | 6 + UnleashedRecomp/user/config.cpp | 3 + UnleashedRecomp/user/config.h | 3 + UnleashedRecompLib/shader/shader_cache.h | 7 + thirdparty/MoltenVK/MoltenVK | 2 +- thirdparty/MoltenVK/SPIRV-Cross | 2 +- tools/XenosRecomp | 2 +- 73 files changed, 1235 insertions(+), 168 deletions(-) rename UnleashedRecomp/gpu/shader/{ => hlsl}/.gitignore (100%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/blend_color_alpha_ps.hlsl (93%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/copy_color_ps.hlsl (76%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/copy_common.hlsli (100%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/copy_depth_ps.hlsl (77%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/copy_vs.hlsl (55%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/csd_filter_ps.hlsl (94%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/csd_no_tex_vs.hlsl (95%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/csd_vs.hlsl (95%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/enhanced_motion_blur_ps.hlsl (94%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/gamma_correction_ps.hlsl (87%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/gaussian_blur.hlsli (93%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/gaussian_blur_3x3.hlsl (100%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/gaussian_blur_5x5.hlsl (100%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/gaussian_blur_7x7.hlsl (100%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/gaussian_blur_9x9.hlsl (100%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/imgui_common.hlsli (95%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/imgui_ps.hlsl (99%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/imgui_vs.hlsl (85%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/movie_common.hlsli (97%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/movie_ps.hlsl (98%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/movie_vs.hlsl (78%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/resolve_msaa_color.hlsli (87%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/resolve_msaa_color_2x.hlsl (100%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/resolve_msaa_color_4x.hlsl (100%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/resolve_msaa_color_8x.hlsl (100%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/resolve_msaa_depth.hlsli (88%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/resolve_msaa_depth_2x.hlsl (100%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/resolve_msaa_depth_4x.hlsl (100%) rename UnleashedRecomp/gpu/shader/{ => hlsl}/resolve_msaa_depth_8x.hlsl (100%) create mode 100644 UnleashedRecomp/gpu/shader/msl/.gitignore create mode 100644 UnleashedRecomp/gpu/shader/msl/blend_color_alpha_ps.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/copy_color_ps.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/copy_common.metali create mode 100644 UnleashedRecomp/gpu/shader/msl/copy_depth_ps.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/copy_vs.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/csd_filter_ps.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/csd_no_tex_vs.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/csd_vs.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/enhanced_motion_blur_ps.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/gamma_correction_ps.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/gaussian_blur.metali create mode 100644 UnleashedRecomp/gpu/shader/msl/gaussian_blur_3x3.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/gaussian_blur_5x5.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/gaussian_blur_7x7.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/gaussian_blur_9x9.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/imgui_common.metali create mode 100644 UnleashedRecomp/gpu/shader/msl/imgui_ps.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/imgui_vs.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/movie_common.metali create mode 100644 UnleashedRecomp/gpu/shader/msl/movie_ps.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/movie_vs.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/resolve_msaa_color.metali create mode 100644 UnleashedRecomp/gpu/shader/msl/resolve_msaa_color_2x.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/resolve_msaa_color_4x.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/resolve_msaa_color_8x.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/resolve_msaa_depth.metali create mode 100644 UnleashedRecomp/gpu/shader/msl/resolve_msaa_depth_2x.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/resolve_msaa_depth_4x.metal create mode 100644 UnleashedRecomp/gpu/shader/msl/resolve_msaa_depth_8x.metal diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 5ee4a366..36878560 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -229,11 +229,6 @@ jobs: token: ${{ secrets.ASSET_REPO_TOKEN }} path: ./private - - name: Setup latest Xcode - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: latest-stable - - name: Setup ccache uses: hendrikmuhs/ccache-action@v1.2 with: diff --git a/.gitmodules b/.gitmodules index b4b2dba8..2adc3752 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,7 +6,7 @@ url = https://github.com/redorav/ddspp.git [submodule "tools/XenosRecomp"] path = tools/XenosRecomp - url = https://github.com/hedge-dev/XenosRecomp.git + url = https://github.com/squidbus/XenosRecomp.git [submodule "UnleashedRecompResources"] path = UnleashedRecompResources url = https://github.com/hedge-dev/UnleashedRecompResources.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 6a06ffb1..c95ca063 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,6 +40,11 @@ if (UNLEASHED_RECOMP_ARCHITECTURE STREQUAL "x86_64" OR UNLEASHED_RECOMP_ARCHITEC ) endif() +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + # Normally only defined by Visual Studio, added for consistency + add_compile_definitions(_DEBUG) +endif() + add_subdirectory(${UNLEASHED_RECOMP_THIRDPARTY_ROOT}) add_subdirectory(${UNLEASHED_RECOMP_TOOLS_ROOT}) diff --git a/UnleashedRecomp/CMakeLists.txt b/UnleashedRecomp/CMakeLists.txt index 5d13de6b..dc82137d 100644 --- a/UnleashedRecomp/CMakeLists.txt +++ b/UnleashedRecomp/CMakeLists.txt @@ -4,7 +4,11 @@ if(WIN32) option(UNLEASHED_RECOMP_D3D12 "Add D3D12 support for rendering" ON) endif() -if(CMAKE_SYSTEM_NAME MATCHES "Linux") +if (APPLE) + option(UNLEASHED_RECOMP_METAL "Add Metal support for rendering" ON) +endif() + +if (CMAKE_SYSTEM_NAME MATCHES "Linux") option(UNLEASHED_RECOMP_FLATPAK "Configure the build for Flatpak compatibility." OFF) endif() @@ -282,6 +286,10 @@ if(NOT ${CMAKE_BUILD_TYPE} MATCHES "Release") set(SHOW_GIT_INFO_AND_BUILD_TYPE 1) endif() +if (UNLEASHED_RECOMP_METAL) + set(XCRUN_TOOL "/usr/bin/xcrun") +endif() + GenerateVersionSources( OUTPUT_DIR ${PROJECT_SOURCE_DIR} VERSION_TXT ${VERSION_TXT} @@ -482,7 +490,11 @@ if(UNLEASHED_RECOMP_D3D12) ) endif() -if(WIN32) +if (UNLEASHED_RECOMP_METAL) + target_compile_definitions(UnleashedRecomp PRIVATE UNLEASHED_RECOMP_METAL) +endif() + +if (WIN32) target_link_libraries(UnleashedRecomp PRIVATE comctl32 dwmapi @@ -565,30 +577,38 @@ if(NOT DEFINED DIRECTX_DXC_TOOL) endif() function(compile_shader FILE_PATH TARGET_NAME) - set(FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/${FILE_PATH}.hlsl) - cmake_path(GET FILE_PATH STEM VARIABLE_NAME) - - set(_shader_target UnleashedRecomp) - - if(CMAKE_SYSTEM_NAME STREQUAL "iOS" AND TARGET UnleashedRecompIOSLauncher) - set(_shader_target UnleashedRecompIOSLauncher) + set(HLSL_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/hlsl/${FILE_PATH}.hlsl) + set(MSL_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/msl/${FILE_PATH}.metal) + cmake_path(GET HLSL_FILE_PATH STEM HLSL_NAME) + cmake_path(GET MSL_FILE_PATH STEM MSL_NAME) + if (UNLEASHED_RECOMP_METAL) + add_custom_command( + OUTPUT ${MSL_FILE_PATH}.ir + COMMAND ${XCRUN_TOOL} -sdk macosx metal -o ${MSL_FILE_PATH}.ir -c ${MSL_FILE_PATH} -D__air__ -frecord-sources -gline-tables-only + DEPENDS ${MSL_FILE_PATH} + ) + add_custom_command( + OUTPUT ${MSL_FILE_PATH}.metallib + COMMAND ${XCRUN_TOOL} -sdk macosx metallib -o ${MSL_FILE_PATH}.metallib ${MSL_FILE_PATH}.ir + DEPENDS ${MSL_FILE_PATH}.ir + ) + BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${MSL_FILE_PATH}.metallib" DEST_FILE "${MSL_FILE_PATH}.metallib" ARRAY_NAME "g_${MSL_NAME}_air") endif() - - if(UNLEASHED_RECOMP_D3D12) + if (UNLEASHED_RECOMP_D3D12) add_custom_command( - OUTPUT ${FILE_PATH}.dxil.h - COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -Wno-ignored-attributes -Fh ${FILE_PATH}.dxil.h ${FILE_PATH} -Vn g_${VARIABLE_NAME}_dxil - DEPENDS ${FILE_PATH} + OUTPUT ${HLSL_FILE_PATH}.dxil.h + COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -Wno-ignored-attributes -E shaderMain -Fh ${HLSL_FILE_PATH}.dxil.h ${HLSL_FILE_PATH} -Vn g_${HLSL_NAME}_dxil + DEPENDS ${HLSL_FILE_PATH} ) - target_sources(${_shader_target} PRIVATE ${FILE_PATH}.dxil.h) + target_sources(UnleashedRecomp PRIVATE ${HLSL_FILE_PATH}.dxil.h) endif() add_custom_command( - OUTPUT ${FILE_PATH}.spirv.h - COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -spirv -fvk-use-dx-layout ${ARGN} -Fh ${FILE_PATH}.spirv.h ${FILE_PATH} -Vn g_${VARIABLE_NAME}_spirv - DEPENDS ${FILE_PATH} + OUTPUT ${HLSL_FILE_PATH}.spirv.h + COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -spirv -fvk-use-dx-layout ${ARGN} -E shaderMain -Fh ${HLSL_FILE_PATH}.spirv.h ${HLSL_FILE_PATH} -Vn g_${HLSL_NAME}_spirv + DEPENDS ${HLSL_FILE_PATH} ) - target_sources(${_shader_target} PRIVATE ${FILE_PATH}.spirv.h) + target_sources(UnleashedRecomp PRIVATE ${HLSL_FILE_PATH}.spirv.h) endfunction() function(compile_vertex_shader FILE_PATH) diff --git a/UnleashedRecomp/gpu/imgui/imgui_common.h b/UnleashedRecomp/gpu/imgui/imgui_common.h index 10c5ebbb..c9d0f06e 100644 --- a/UnleashedRecomp/gpu/imgui/imgui_common.h +++ b/UnleashedRecomp/gpu/imgui/imgui_common.h @@ -13,7 +13,7 @@ #define IMGUI_SHADER_MODIFIER_RECTANGLE_BEVEL 10 #define IMGUI_SHADER_MODIFIER_LOW_QUALITY_TEXT 11 -#ifdef __cplusplus +#if defined(__cplusplus) && !defined(__air__) enum class ImGuiCallback : int32_t { diff --git a/UnleashedRecomp/gpu/shader/.gitignore b/UnleashedRecomp/gpu/shader/hlsl/.gitignore similarity index 100% rename from UnleashedRecomp/gpu/shader/.gitignore rename to UnleashedRecomp/gpu/shader/hlsl/.gitignore diff --git a/UnleashedRecomp/gpu/shader/blend_color_alpha_ps.hlsl b/UnleashedRecomp/gpu/shader/hlsl/blend_color_alpha_ps.hlsl similarity index 93% rename from UnleashedRecomp/gpu/shader/blend_color_alpha_ps.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/blend_color_alpha_ps.hlsl index 6c242903..ee16fb4e 100644 --- a/UnleashedRecomp/gpu/shader/blend_color_alpha_ps.hlsl +++ b/UnleashedRecomp/gpu/shader/hlsl/blend_color_alpha_ps.hlsl @@ -1,4 +1,4 @@ -#include "../../../tools/XenosRecomp/XenosRecomp/shader_common.h" +#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h" #ifdef __spirv__ @@ -22,7 +22,7 @@ cbuffer SharedConstants : register(b2, space4) #endif -float4 main( +float4 shaderMain( in float4 iPos : SV_Position, in float4 iTexCoord0 : TEXCOORD0) : SV_Target0 { diff --git a/UnleashedRecomp/gpu/shader/copy_color_ps.hlsl b/UnleashedRecomp/gpu/shader/hlsl/copy_color_ps.hlsl similarity index 76% rename from UnleashedRecomp/gpu/shader/copy_color_ps.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/copy_color_ps.hlsl index 0559557a..95bd5c55 100644 --- a/UnleashedRecomp/gpu/shader/copy_color_ps.hlsl +++ b/UnleashedRecomp/gpu/shader/hlsl/copy_color_ps.hlsl @@ -2,7 +2,7 @@ Texture2D g_Texture2DDescriptorHeap[] : register(t0, space0); -float4 main(in float4 position : SV_Position) : SV_Target +float4 shaderMain(in float4 position : SV_Position) : SV_Target { return g_Texture2DDescriptorHeap[g_PushConstants.ResourceDescriptorIndex].Load(int3(position.xy, 0)); } diff --git a/UnleashedRecomp/gpu/shader/copy_common.hlsli b/UnleashedRecomp/gpu/shader/hlsl/copy_common.hlsli similarity index 100% rename from UnleashedRecomp/gpu/shader/copy_common.hlsli rename to UnleashedRecomp/gpu/shader/hlsl/copy_common.hlsli diff --git a/UnleashedRecomp/gpu/shader/copy_depth_ps.hlsl b/UnleashedRecomp/gpu/shader/hlsl/copy_depth_ps.hlsl similarity index 77% rename from UnleashedRecomp/gpu/shader/copy_depth_ps.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/copy_depth_ps.hlsl index 251f893a..61d8328f 100644 --- a/UnleashedRecomp/gpu/shader/copy_depth_ps.hlsl +++ b/UnleashedRecomp/gpu/shader/hlsl/copy_depth_ps.hlsl @@ -2,7 +2,7 @@ Texture2D g_Texture2DDescriptorHeap[] : register(t0, space0); -float main(in float4 position : SV_Position) : SV_Depth +float shaderMain(in float4 position : SV_Position) : SV_Depth { return g_Texture2DDescriptorHeap[g_PushConstants.ResourceDescriptorIndex].Load(int3(position.xy, 0)); } diff --git a/UnleashedRecomp/gpu/shader/copy_vs.hlsl b/UnleashedRecomp/gpu/shader/hlsl/copy_vs.hlsl similarity index 55% rename from UnleashedRecomp/gpu/shader/copy_vs.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/copy_vs.hlsl index 5a2576d7..94943765 100644 --- a/UnleashedRecomp/gpu/shader/copy_vs.hlsl +++ b/UnleashedRecomp/gpu/shader/hlsl/copy_vs.hlsl @@ -1,4 +1,4 @@ -void main(in uint vertexId : SV_VertexID, out float4 position : SV_Position, out float2 texCoord : TEXCOORD) +void shaderMain(in uint vertexId : SV_VertexID, out float4 position : SV_Position, out float2 texCoord : TEXCOORD) { texCoord = float2((vertexId << 1) & 2, vertexId & 2); position = float4(texCoord * float2(2.0, -2.0) + float2(-1.0, 1.0), 0.0, 1.0); diff --git a/UnleashedRecomp/gpu/shader/csd_filter_ps.hlsl b/UnleashedRecomp/gpu/shader/hlsl/csd_filter_ps.hlsl similarity index 94% rename from UnleashedRecomp/gpu/shader/csd_filter_ps.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/csd_filter_ps.hlsl index e1ecde39..0e544a3c 100644 --- a/UnleashedRecomp/gpu/shader/csd_filter_ps.hlsl +++ b/UnleashedRecomp/gpu/shader/hlsl/csd_filter_ps.hlsl @@ -1,4 +1,4 @@ -#include "../../../tools/XenosRecomp/XenosRecomp/shader_common.h" +#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h" #ifdef __spirv__ @@ -16,7 +16,7 @@ cbuffer SharedConstants : register(b2, space4) #endif -float4 main( +float4 shaderMain( in float4 iPosition : SV_Position, in float4 iTexCoord0 : TEXCOORD0, in float4 iTexCoord1 : TEXCOORD1) : SV_Target diff --git a/UnleashedRecomp/gpu/shader/csd_no_tex_vs.hlsl b/UnleashedRecomp/gpu/shader/hlsl/csd_no_tex_vs.hlsl similarity index 95% rename from UnleashedRecomp/gpu/shader/csd_no_tex_vs.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/csd_no_tex_vs.hlsl index 1654e734..b8163b2e 100644 --- a/UnleashedRecomp/gpu/shader/csd_no_tex_vs.hlsl +++ b/UnleashedRecomp/gpu/shader/hlsl/csd_no_tex_vs.hlsl @@ -1,4 +1,4 @@ -#include "../../../tools/XenosRecomp/XenosRecomp/shader_common.h" +#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h" #ifdef __spirv__ @@ -20,7 +20,7 @@ cbuffer SharedConstants : register(b2, space4) #endif -void main( +void shaderMain( [[vk::location(0)]] in float4 iPosition0 : POSITION0, [[vk::location(8)]] in float4 iColor0 : COLOR0, out float4 oPos : SV_Position, diff --git a/UnleashedRecomp/gpu/shader/csd_vs.hlsl b/UnleashedRecomp/gpu/shader/hlsl/csd_vs.hlsl similarity index 95% rename from UnleashedRecomp/gpu/shader/csd_vs.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/csd_vs.hlsl index 90b561f5..0cb28364 100644 --- a/UnleashedRecomp/gpu/shader/csd_vs.hlsl +++ b/UnleashedRecomp/gpu/shader/hlsl/csd_vs.hlsl @@ -1,4 +1,4 @@ -#include "../../../tools/XenosRecomp/XenosRecomp/shader_common.h" +#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h" #ifdef __spirv__ @@ -20,7 +20,7 @@ cbuffer SharedConstants : register(b2, space4) #endif -void main( +void shaderMain( [[vk::location(0)]] in float4 iPosition0 : POSITION0, [[vk::location(8)]] in float4 iColor0 : COLOR0, [[vk::location(4)]] in float4 iTexCoord0 : TEXCOORD0, diff --git a/UnleashedRecomp/gpu/shader/enhanced_motion_blur_ps.hlsl b/UnleashedRecomp/gpu/shader/hlsl/enhanced_motion_blur_ps.hlsl similarity index 94% rename from UnleashedRecomp/gpu/shader/enhanced_motion_blur_ps.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/enhanced_motion_blur_ps.hlsl index fd522da7..3535b696 100644 --- a/UnleashedRecomp/gpu/shader/enhanced_motion_blur_ps.hlsl +++ b/UnleashedRecomp/gpu/shader/hlsl/enhanced_motion_blur_ps.hlsl @@ -1,4 +1,4 @@ -#include "../../../tools/XenosRecomp/XenosRecomp/shader_common.h" +#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h" #ifdef __spirv__ @@ -38,7 +38,7 @@ cbuffer SharedConstants : register(b2, space4) #endif -float4 main(in float4 position : SV_Position, in float4 texCoord : TEXCOORD0) : SV_Target +float4 shaderMain(in float4 position : SV_Position, in float4 texCoord : TEXCOORD0) : SV_Target { Texture2D sampColor = g_Texture2DDescriptorHeap[sampColor_Texture2DDescriptorIndex]; Texture2D sampVelocityMap = g_Texture2DDescriptorHeap[sampVelocityMap_Texture2DDescriptorIndex]; diff --git a/UnleashedRecomp/gpu/shader/gamma_correction_ps.hlsl b/UnleashedRecomp/gpu/shader/hlsl/gamma_correction_ps.hlsl similarity index 87% rename from UnleashedRecomp/gpu/shader/gamma_correction_ps.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/gamma_correction_ps.hlsl index 2f98b6e6..0c1d9361 100644 --- a/UnleashedRecomp/gpu/shader/gamma_correction_ps.hlsl +++ b/UnleashedRecomp/gpu/shader/hlsl/gamma_correction_ps.hlsl @@ -1,4 +1,4 @@ -#include "../../../tools/XenosRecomp/XenosRecomp/shader_common.h" +#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h" #ifdef __spirv__ @@ -20,7 +20,7 @@ cbuffer SharedConstants : register(b2, space4) #endif -float4 main(in float4 position : SV_Position) : SV_Target +float4 shaderMain(in float4 position : SV_Position) : SV_Target { Texture2D texture = g_Texture2DDescriptorHeap[g_TextureDescriptorIndex]; diff --git a/UnleashedRecomp/gpu/shader/gaussian_blur.hlsli b/UnleashedRecomp/gpu/shader/hlsl/gaussian_blur.hlsli similarity index 93% rename from UnleashedRecomp/gpu/shader/gaussian_blur.hlsli rename to UnleashedRecomp/gpu/shader/hlsl/gaussian_blur.hlsli index 10d76cf3..a31c07c2 100644 --- a/UnleashedRecomp/gpu/shader/gaussian_blur.hlsli +++ b/UnleashedRecomp/gpu/shader/hlsl/gaussian_blur.hlsli @@ -1,4 +1,4 @@ -#include "../../../tools/XenosRecomp/XenosRecomp/shader_common.h" +#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h" #ifdef __spirv__ @@ -40,7 +40,7 @@ float ComputeWeight(float x) return exp(-(x * x) / (2.0 * std * std)) / (std * sqrt(2.0 * PI)); } -float4 main(in float4 iPosition : SV_Position, in float4 iTexCoord0 : TEXCOORD0) : SV_Target +float4 shaderMain(in float4 iPosition : SV_Position, in float4 iTexCoord0 : TEXCOORD0) : SV_Target { Texture2D texture = g_Texture2DDescriptorHeap[s0_Texture2DDescriptorIndex]; SamplerState samplerState = g_SamplerDescriptorHeap[s0_SamplerDescriptorIndex]; diff --git a/UnleashedRecomp/gpu/shader/gaussian_blur_3x3.hlsl b/UnleashedRecomp/gpu/shader/hlsl/gaussian_blur_3x3.hlsl similarity index 100% rename from UnleashedRecomp/gpu/shader/gaussian_blur_3x3.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/gaussian_blur_3x3.hlsl diff --git a/UnleashedRecomp/gpu/shader/gaussian_blur_5x5.hlsl b/UnleashedRecomp/gpu/shader/hlsl/gaussian_blur_5x5.hlsl similarity index 100% rename from UnleashedRecomp/gpu/shader/gaussian_blur_5x5.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/gaussian_blur_5x5.hlsl diff --git a/UnleashedRecomp/gpu/shader/gaussian_blur_7x7.hlsl b/UnleashedRecomp/gpu/shader/hlsl/gaussian_blur_7x7.hlsl similarity index 100% rename from UnleashedRecomp/gpu/shader/gaussian_blur_7x7.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/gaussian_blur_7x7.hlsl diff --git a/UnleashedRecomp/gpu/shader/gaussian_blur_9x9.hlsl b/UnleashedRecomp/gpu/shader/hlsl/gaussian_blur_9x9.hlsl similarity index 100% rename from UnleashedRecomp/gpu/shader/gaussian_blur_9x9.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/gaussian_blur_9x9.hlsl diff --git a/UnleashedRecomp/gpu/shader/imgui_common.hlsli b/UnleashedRecomp/gpu/shader/hlsl/imgui_common.hlsli similarity index 95% rename from UnleashedRecomp/gpu/shader/imgui_common.hlsli rename to UnleashedRecomp/gpu/shader/hlsl/imgui_common.hlsli index f4cbe3cf..42bd94ee 100644 --- a/UnleashedRecomp/gpu/shader/imgui_common.hlsli +++ b/UnleashedRecomp/gpu/shader/hlsl/imgui_common.hlsli @@ -1,6 +1,6 @@ #pragma once -#include "../imgui/imgui_common.h" +#include "../../imgui/imgui_common.h" struct PushConstants { diff --git a/UnleashedRecomp/gpu/shader/imgui_ps.hlsl b/UnleashedRecomp/gpu/shader/hlsl/imgui_ps.hlsl similarity index 99% rename from UnleashedRecomp/gpu/shader/imgui_ps.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/imgui_ps.hlsl index ac0a5983..3ee92099 100644 --- a/UnleashedRecomp/gpu/shader/imgui_ps.hlsl +++ b/UnleashedRecomp/gpu/shader/hlsl/imgui_ps.hlsl @@ -123,7 +123,7 @@ float4 SampleSdfFont(float4 color, Texture2D texture, float2 uv, float2 return color; } -float4 main(in Interpolators interpolators) : SV_Target +float4 shaderMain(in Interpolators interpolators) : SV_Target { float4 color = interpolators.Color; color *= PixelAntialiasing(interpolators.Position.xy - g_PushConstants.ProceduralOrigin); diff --git a/UnleashedRecomp/gpu/shader/imgui_vs.hlsl b/UnleashedRecomp/gpu/shader/hlsl/imgui_vs.hlsl similarity index 85% rename from UnleashedRecomp/gpu/shader/imgui_vs.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/imgui_vs.hlsl index 50a53f4d..747b41ea 100644 --- a/UnleashedRecomp/gpu/shader/imgui_vs.hlsl +++ b/UnleashedRecomp/gpu/shader/hlsl/imgui_vs.hlsl @@ -1,6 +1,6 @@ #include "imgui_common.hlsli" -void main(in float2 position : POSITION, in float2 uv : TEXCOORD, in float4 color : COLOR, out Interpolators interpolators) +void shaderMain(in float2 position : POSITION, in float2 uv : TEXCOORD, in float4 color : COLOR, out Interpolators interpolators) { if (g_PushConstants.ShaderModifier == IMGUI_SHADER_MODIFIER_TEXT_SKEW) { diff --git a/UnleashedRecomp/gpu/shader/movie_common.hlsli b/UnleashedRecomp/gpu/shader/hlsl/movie_common.hlsli similarity index 97% rename from UnleashedRecomp/gpu/shader/movie_common.hlsli rename to UnleashedRecomp/gpu/shader/hlsl/movie_common.hlsli index 12942353..61cc3b38 100644 --- a/UnleashedRecomp/gpu/shader/movie_common.hlsli +++ b/UnleashedRecomp/gpu/shader/hlsl/movie_common.hlsli @@ -1,6 +1,6 @@ #pragma once -#include "../../../tools/XenosRecomp/XenosRecomp/shader_common.h" +#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h" #ifdef __spirv__ diff --git a/UnleashedRecomp/gpu/shader/movie_ps.hlsl b/UnleashedRecomp/gpu/shader/hlsl/movie_ps.hlsl similarity index 98% rename from UnleashedRecomp/gpu/shader/movie_ps.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/movie_ps.hlsl index ec441a1d..fc3c8877 100644 --- a/UnleashedRecomp/gpu/shader/movie_ps.hlsl +++ b/UnleashedRecomp/gpu/shader/hlsl/movie_ps.hlsl @@ -1,6 +1,6 @@ #include "movie_common.hlsli" -PixelShaderOutput main(in Interpolators In) +PixelShaderOutput shaderMain(in Interpolators In) { Texture2D Tex0 = g_Texture2DDescriptorHeap[Tex0_ResourceDescriptorIndex]; Texture2D Tex1 = g_Texture2DDescriptorHeap[Tex1_ResourceDescriptorIndex]; diff --git a/UnleashedRecomp/gpu/shader/movie_vs.hlsl b/UnleashedRecomp/gpu/shader/hlsl/movie_vs.hlsl similarity index 78% rename from UnleashedRecomp/gpu/shader/movie_vs.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/movie_vs.hlsl index 6d00919e..1ab5a364 100644 --- a/UnleashedRecomp/gpu/shader/movie_vs.hlsl +++ b/UnleashedRecomp/gpu/shader/hlsl/movie_vs.hlsl @@ -1,6 +1,6 @@ #include "movie_common.hlsli" -Interpolators main(in VertexShaderInput In) +Interpolators shaderMain(in VertexShaderInput In) { Interpolators Out; Out.ProjPos = In.ObjPos; diff --git a/UnleashedRecomp/gpu/shader/resolve_msaa_color.hlsli b/UnleashedRecomp/gpu/shader/hlsl/resolve_msaa_color.hlsli similarity index 87% rename from UnleashedRecomp/gpu/shader/resolve_msaa_color.hlsli rename to UnleashedRecomp/gpu/shader/hlsl/resolve_msaa_color.hlsli index f9b029d9..3b09d0cf 100644 --- a/UnleashedRecomp/gpu/shader/resolve_msaa_color.hlsli +++ b/UnleashedRecomp/gpu/shader/hlsl/resolve_msaa_color.hlsli @@ -4,7 +4,7 @@ Texture2DMS g_Texture2DMSDescriptorHeap[] : register(t0, space0); -float4 main(in float4 position : SV_Position) : SV_Target +float4 shaderMain(in float4 position : SV_Position) : SV_Target { float4 result = g_Texture2DMSDescriptorHeap[g_PushConstants.ResourceDescriptorIndex].Load(int2(position.xy), 0); diff --git a/UnleashedRecomp/gpu/shader/resolve_msaa_color_2x.hlsl b/UnleashedRecomp/gpu/shader/hlsl/resolve_msaa_color_2x.hlsl similarity index 100% rename from UnleashedRecomp/gpu/shader/resolve_msaa_color_2x.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/resolve_msaa_color_2x.hlsl diff --git a/UnleashedRecomp/gpu/shader/resolve_msaa_color_4x.hlsl b/UnleashedRecomp/gpu/shader/hlsl/resolve_msaa_color_4x.hlsl similarity index 100% rename from UnleashedRecomp/gpu/shader/resolve_msaa_color_4x.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/resolve_msaa_color_4x.hlsl diff --git a/UnleashedRecomp/gpu/shader/resolve_msaa_color_8x.hlsl b/UnleashedRecomp/gpu/shader/hlsl/resolve_msaa_color_8x.hlsl similarity index 100% rename from UnleashedRecomp/gpu/shader/resolve_msaa_color_8x.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/resolve_msaa_color_8x.hlsl diff --git a/UnleashedRecomp/gpu/shader/resolve_msaa_depth.hlsli b/UnleashedRecomp/gpu/shader/hlsl/resolve_msaa_depth.hlsli similarity index 88% rename from UnleashedRecomp/gpu/shader/resolve_msaa_depth.hlsli rename to UnleashedRecomp/gpu/shader/hlsl/resolve_msaa_depth.hlsli index a06c7bac..0d8f070e 100644 --- a/UnleashedRecomp/gpu/shader/resolve_msaa_depth.hlsli +++ b/UnleashedRecomp/gpu/shader/hlsl/resolve_msaa_depth.hlsli @@ -4,7 +4,7 @@ Texture2DMS g_Texture2DMSDescriptorHeap[] : register(t0, space0); -float main(in float4 position : SV_Position) : SV_Depth +float shaderMain(in float4 position : SV_Position) : SV_Depth { float result = g_Texture2DMSDescriptorHeap[g_PushConstants.ResourceDescriptorIndex].Load(int2(position.xy), 0); diff --git a/UnleashedRecomp/gpu/shader/resolve_msaa_depth_2x.hlsl b/UnleashedRecomp/gpu/shader/hlsl/resolve_msaa_depth_2x.hlsl similarity index 100% rename from UnleashedRecomp/gpu/shader/resolve_msaa_depth_2x.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/resolve_msaa_depth_2x.hlsl diff --git a/UnleashedRecomp/gpu/shader/resolve_msaa_depth_4x.hlsl b/UnleashedRecomp/gpu/shader/hlsl/resolve_msaa_depth_4x.hlsl similarity index 100% rename from UnleashedRecomp/gpu/shader/resolve_msaa_depth_4x.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/resolve_msaa_depth_4x.hlsl diff --git a/UnleashedRecomp/gpu/shader/resolve_msaa_depth_8x.hlsl b/UnleashedRecomp/gpu/shader/hlsl/resolve_msaa_depth_8x.hlsl similarity index 100% rename from UnleashedRecomp/gpu/shader/resolve_msaa_depth_8x.hlsl rename to UnleashedRecomp/gpu/shader/hlsl/resolve_msaa_depth_8x.hlsl diff --git a/UnleashedRecomp/gpu/shader/msl/.gitignore b/UnleashedRecomp/gpu/shader/msl/.gitignore new file mode 100644 index 00000000..40d087f0 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/.gitignore @@ -0,0 +1,4 @@ +*.ir +*.metallib +*.metal.*.c +*.metal.*.h \ No newline at end of file diff --git a/UnleashedRecomp/gpu/shader/msl/blend_color_alpha_ps.metal b/UnleashedRecomp/gpu/shader/msl/blend_color_alpha_ps.metal new file mode 100644 index 00000000..461130e7 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/blend_color_alpha_ps.metal @@ -0,0 +1,31 @@ +#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h" + +#define g_SrcAlpha_DestAlpha (*(reinterpret_cast(g_PushConstants.PixelShaderConstants + 2400))) +#define s0_Texture2DDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 0))) +#define s0_SamplerDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 192))) + +struct Interpolators +{ + float4 iTexCoord0 [[user(TEXCOORD0)]]; +}; + +[[fragment]] +float4 shaderMain(float4 iPos [[position]], + Interpolators input [[stage_in]], + constant Texture2DDescriptorHeap* g_Texture2DDescriptorHeap [[buffer(0)]], + constant SamplerDescriptorHeap* g_SamplerDescriptorHeap [[buffer(3)]], + constant PushConstants& g_PushConstants [[buffer(8)]]) +{ + texture2d texture = g_Texture2DDescriptorHeap[s0_Texture2DDescriptorIndex].tex; + sampler samplerState = g_SamplerDescriptorHeap[s0_SamplerDescriptorIndex].samp; + + float4 color = texture.sample(samplerState, input.iTexCoord0.xy); + + if (any(input.iTexCoord0.xy < 0.0 || input.iTexCoord0.xy > 1.0)) + color = float4(0.0, 0.0, 0.0, 1.0); + + color.rgb *= color.a * g_SrcAlpha_DestAlpha.x; + color.a = g_SrcAlpha_DestAlpha.y + (1.0 - color.a) * g_SrcAlpha_DestAlpha.x; + + return color; +} diff --git a/UnleashedRecomp/gpu/shader/msl/copy_color_ps.metal b/UnleashedRecomp/gpu/shader/msl/copy_color_ps.metal new file mode 100644 index 00000000..1ca6f6bd --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/copy_color_ps.metal @@ -0,0 +1,14 @@ +#include "copy_common.metali" + +struct Texture2DDescriptorHeap +{ + texture2d tex; +}; + +[[fragment]] +float4 shaderMain(float4 position [[position]], + constant Texture2DDescriptorHeap* g_Texture2DDescriptorHeap [[buffer(0)]], + constant PushConstants& g_PushConstants [[buffer(8)]]) +{ + return g_Texture2DDescriptorHeap[g_PushConstants.ResourceDescriptorIndex].tex.read(uint2(position.xy), 0); +} diff --git a/UnleashedRecomp/gpu/shader/msl/copy_common.metali b/UnleashedRecomp/gpu/shader/msl/copy_common.metali new file mode 100644 index 00000000..2040a3a8 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/copy_common.metali @@ -0,0 +1,9 @@ +#pragma once +#include + +using namespace metal; + +struct PushConstants +{ + uint ResourceDescriptorIndex; +}; diff --git a/UnleashedRecomp/gpu/shader/msl/copy_depth_ps.metal b/UnleashedRecomp/gpu/shader/msl/copy_depth_ps.metal new file mode 100644 index 00000000..7f9bd37f --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/copy_depth_ps.metal @@ -0,0 +1,23 @@ +#include "copy_common.metali" + +struct Texture2DDescriptorHeap +{ + texture2d tex; +}; + +struct PixelShaderOutput +{ + float oDepth [[depth(any)]]; +}; + +[[fragment]] +PixelShaderOutput shaderMain(float4 position [[position]], + constant Texture2DDescriptorHeap* g_Texture2DDescriptorHeap [[buffer(0)]], + constant PushConstants& g_PushConstants [[buffer(8)]]) +{ + PixelShaderOutput output = PixelShaderOutput{}; + + output.oDepth = g_Texture2DDescriptorHeap[g_PushConstants.ResourceDescriptorIndex].tex.read(uint2(position.xy), 0).x; + + return output; +} diff --git a/UnleashedRecomp/gpu/shader/msl/copy_vs.metal b/UnleashedRecomp/gpu/shader/msl/copy_vs.metal new file mode 100644 index 00000000..5703be50 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/copy_vs.metal @@ -0,0 +1,16 @@ +struct Interpolators +{ + float4 position [[position]]; + float2 texCoord [[user(TEXCOORD)]]; +}; + +[[vertex]] +Interpolators shaderMain(uint vertexId [[vertex_id]]) +{ + Interpolators interpolators; + + interpolators.texCoord = float2((vertexId << 1) & 2, vertexId & 2); + interpolators.position = float4(interpolators.texCoord * float2(2.0, -2.0) + float2(-1.0, 1.0), 0.0, 1.0); + + return interpolators; +} diff --git a/UnleashedRecomp/gpu/shader/msl/csd_filter_ps.metal b/UnleashedRecomp/gpu/shader/msl/csd_filter_ps.metal new file mode 100644 index 00000000..6dacbb6a --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/csd_filter_ps.metal @@ -0,0 +1,38 @@ +#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h" + +#define s0_Texture2DDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 0))) +#define s0_SamplerDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 192))) + +struct Interpolators +{ + float4 iPosition [[position]]; + float4 iTexCoord0 [[user(TEXCOORD0)]]; + float4 iTexCoord1 [[user(TEXCOORD1)]]; +}; + +[[fragment]] +float4 shaderMain(Interpolators input [[stage_in]], + constant Texture2DDescriptorHeap* g_Texture2DDescriptorHeap [[buffer(0)]], + constant SamplerDescriptorHeap* g_SamplerDescriptorHeap [[buffer(3)]], + constant PushConstants& g_PushConstants [[buffer(8)]]) +{ + texture2d texture = g_Texture2DDescriptorHeap[s0_Texture2DDescriptorIndex].tex; + sampler samplerState = g_SamplerDescriptorHeap[s0_SamplerDescriptorIndex].samp; + + uint2 dimensions = getTexture2DDimensions(texture); + + // https://www.shadertoy.com/view/csX3RH + float2 uvTexspace = input.iTexCoord1.xy * float2(dimensions); + float2 seam = floor(uvTexspace + 0.5); + uvTexspace = (uvTexspace - seam) / fwidth(uvTexspace) + seam; + uvTexspace = clamp(uvTexspace, seam - 0.5, seam + 0.5); + float2 texCoord = uvTexspace / float2(dimensions); + + float4 color = texture.sample(samplerState, texCoord); + color *= input.iTexCoord0; + + // The game enables alpha test for CSD, but the alpha threshold doesn't seem to be assigned anywhere? Weird. + clip(color.a - g_AlphaThreshold); + + return color; +} diff --git a/UnleashedRecomp/gpu/shader/msl/csd_no_tex_vs.metal b/UnleashedRecomp/gpu/shader/msl/csd_no_tex_vs.metal new file mode 100644 index 00000000..4e25d942 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/csd_no_tex_vs.metal @@ -0,0 +1,64 @@ +#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h" + +#define g_ViewportSize (*(reinterpret_cast(g_PushConstants.VertexShaderConstants + 2880))) +#define g_Z (*(reinterpret_cast(g_PushConstants.VertexShaderConstants + 3936))) + +struct VertexShaderInput +{ + float4 iPosition0 [[attribute(0)]]; + float4 iColor0 [[attribute(8)]]; +}; + +struct Interpolators +{ + float4 oPos [[position]]; + float4 oTexCoord0 [[user(TEXCOORD0)]]; + float4 oTexCoord1 [[user(TEXCOORD1)]]; + float4 oTexCoord2 [[user(TEXCOORD2)]]; + float4 oTexCoord3 [[user(TEXCOORD3)]]; + float4 oTexCoord4 [[user(TEXCOORD4)]]; + float4 oTexCoord5 [[user(TEXCOORD5)]]; + float4 oTexCoord6 [[user(TEXCOORD6)]]; + float4 oTexCoord7 [[user(TEXCOORD7)]]; + float4 oTexCoord8 [[user(TEXCOORD8)]]; + float4 oTexCoord9 [[user(TEXCOORD9)]]; + float4 oTexCoord10 [[user(TEXCOORD10)]]; + float4 oTexCoord11 [[user(TEXCOORD11)]]; + float4 oTexCoord12 [[user(TEXCOORD12)]]; + float4 oTexCoord13 [[user(TEXCOORD13)]]; + float4 oTexCoord14 [[user(TEXCOORD14)]]; + float4 oTexCoord15 [[user(TEXCOORD15)]]; + float4 oColor0 [[user(COLOR0)]]; + float4 oColor1 [[user(COLOR1)]]; +}; + +[[vertex]] +Interpolators shaderMain(VertexShaderInput input [[stage_in]], + constant PushConstants& g_PushConstants [[buffer(8)]]) +{ + Interpolators output; + + output.oPos.xy = input.iPosition0.xy * g_ViewportSize.zw * float2(2.0, -2.0) + float2(-1.0, 1.0); + output.oPos.z = g_Z.x; + output.oPos.w = 1.0; + output.oTexCoord0 = input.iColor0.wxyz; + output.oTexCoord1 = 0.0; + output.oTexCoord2 = 0.0; + output.oTexCoord3 = 0.0; + output.oTexCoord4 = 0.0; + output.oTexCoord5 = 0.0; + output.oTexCoord6 = 0.0; + output.oTexCoord7 = 0.0; + output.oTexCoord8 = 0.0; + output.oTexCoord9 = 0.0; + output.oTexCoord10 = 0.0; + output.oTexCoord11 = 0.0; + output.oTexCoord12 = 0.0; + output.oTexCoord13 = 0.0; + output.oTexCoord14 = 0.0; + output.oTexCoord15 = 0.0; + output.oColor0 = 0.0; + output.oColor1 = 0.0; + + return output; +} diff --git a/UnleashedRecomp/gpu/shader/msl/csd_vs.metal b/UnleashedRecomp/gpu/shader/msl/csd_vs.metal new file mode 100644 index 00000000..1493f77f --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/csd_vs.metal @@ -0,0 +1,66 @@ +#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h" + +#define g_ViewportSize (*(reinterpret_cast(g_PushConstants.VertexShaderConstants + 2880))) +#define g_Z (*(reinterpret_cast(g_PushConstants.VertexShaderConstants + 3936))) + +struct VertexShaderInput +{ + float4 iPosition0 [[attribute(0)]]; + float4 iColor0 [[attribute(8)]]; + float4 iTexCoord0 [[attribute(4)]]; +}; + +struct Interpolators +{ + float4 oPos [[position]]; + float4 oTexCoord0 [[user(TEXCOORD0)]]; + float4 oTexCoord1 [[user(TEXCOORD1)]]; + float4 oTexCoord2 [[user(TEXCOORD2)]]; + float4 oTexCoord3 [[user(TEXCOORD3)]]; + float4 oTexCoord4 [[user(TEXCOORD4)]]; + float4 oTexCoord5 [[user(TEXCOORD5)]]; + float4 oTexCoord6 [[user(TEXCOORD6)]]; + float4 oTexCoord7 [[user(TEXCOORD7)]]; + float4 oTexCoord8 [[user(TEXCOORD8)]]; + float4 oTexCoord9 [[user(TEXCOORD9)]]; + float4 oTexCoord10 [[user(TEXCOORD10)]]; + float4 oTexCoord11 [[user(TEXCOORD11)]]; + float4 oTexCoord12 [[user(TEXCOORD12)]]; + float4 oTexCoord13 [[user(TEXCOORD13)]]; + float4 oTexCoord14 [[user(TEXCOORD14)]]; + float4 oTexCoord15 [[user(TEXCOORD15)]]; + float4 oColor0 [[user(COLOR0)]]; + float4 oColor1 [[user(COLOR1)]]; +}; + +[[vertex]] +Interpolators shaderMain(VertexShaderInput input [[stage_in]], + constant PushConstants& g_PushConstants [[buffer(8)]]) +{ + Interpolators output; + + output.oPos.xy = input.iPosition0.xy * g_ViewportSize.zw * float2(2.0, -2.0) + float2(-1.0, 1.0); + output.oPos.z = g_Z.x; + output.oPos.w = 1.0; + output.oTexCoord0 = input.iColor0.wxyz; + output.oTexCoord1.xy = input.iTexCoord0.xy; + output.oTexCoord1.zw = 0.0; + output.oTexCoord2 = 0.0; + output.oTexCoord3 = 0.0; + output.oTexCoord4 = 0.0; + output.oTexCoord5 = 0.0; + output.oTexCoord6 = 0.0; + output.oTexCoord7 = 0.0; + output.oTexCoord8 = 0.0; + output.oTexCoord9 = 0.0; + output.oTexCoord10 = 0.0; + output.oTexCoord11 = 0.0; + output.oTexCoord12 = 0.0; + output.oTexCoord13 = 0.0; + output.oTexCoord14 = 0.0; + output.oTexCoord15 = 0.0; + output.oColor0 = 0.0; + output.oColor1 = 0.0; + + return output; +} diff --git a/UnleashedRecomp/gpu/shader/msl/enhanced_motion_blur_ps.metal b/UnleashedRecomp/gpu/shader/msl/enhanced_motion_blur_ps.metal new file mode 100644 index 00000000..a5205321 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/enhanced_motion_blur_ps.metal @@ -0,0 +1,59 @@ +#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h" + +#define g_BlurRate (*(reinterpret_cast(g_PushConstants.PixelShaderConstants + 2400))) +#define g_ViewportSize (*(reinterpret_cast(g_PushConstants.PixelShaderConstants + 384))) + +#define sampColor_Texture2DDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 0))) +#define sampColor_SamplerDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 192))) + +#define sampVelocityMap_Texture2DDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 4))) +#define sampVelocityMap_SamplerDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 196))) + +#define sampZBuffer_Texture2DDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 8))) +#define sampZBuffer_SamplerDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 200))) + +struct Interpolators +{ + float4 texCoord [[user(TEXCOORD0)]]; +}; + +[[fragment]] +float4 shaderMain(float4 position [[position]], + Interpolators input [[stage_in]], + constant Texture2DDescriptorHeap* g_Texture2DDescriptorHeap [[buffer(0)]], + constant SamplerDescriptorHeap* g_SamplerDescriptorHeap [[buffer(3)]], + constant PushConstants& g_PushConstants [[buffer(8)]]) +{ + texture2d sampColor = g_Texture2DDescriptorHeap[sampColor_Texture2DDescriptorIndex].tex; + texture2d sampVelocityMap = g_Texture2DDescriptorHeap[sampVelocityMap_Texture2DDescriptorIndex].tex; + texture2d sampZBuffer = g_Texture2DDescriptorHeap[sampZBuffer_Texture2DDescriptorIndex].tex; + + sampler sampColor_s = g_SamplerDescriptorHeap[sampColor_SamplerDescriptorIndex].samp; + sampler sampVelocityMap_s = g_SamplerDescriptorHeap[sampVelocityMap_SamplerDescriptorIndex].samp; + sampler sampZBuffer_s = g_SamplerDescriptorHeap[sampZBuffer_SamplerDescriptorIndex].samp; + + float depth = sampZBuffer.sample(sampZBuffer_s, input.texCoord.xy, level(0)).x; + float4 velocityMap = sampVelocityMap.sample(sampVelocityMap_s, input.texCoord.xy, level(0)); + float2 velocity = (velocityMap.xz + velocityMap.yw / 255.0) * 2.0 - 1.0; + + int sampleCount = min(64, int(round(length(velocity * g_ViewportSize.xy)))); + float2 sampleOffset = velocity / (float) sampleCount; + + float3 color = sampColor.sample(sampColor_s, input.texCoord.xy, level(0)).rgb; + int count = 1; + + for (int i = 1; i <= sampleCount; i++) + { + float2 sampleCoord = input.texCoord.xy + sampleOffset * i; + float3 sampleColor = sampColor.sample(sampColor_s, sampleCoord, level(0)).rgb; + float sampleDepth = sampZBuffer.sample(sampZBuffer_s, sampleCoord, 0).x; + + if (sampleDepth - depth < 0.01) + { + color += sampleColor; + count += 1; + } + } + + return float4(color / count, g_BlurRate.x * saturate(dot(abs(velocity), g_ViewportSize.xy) / 8.0) * saturate(float(count - 1))); +} diff --git a/UnleashedRecomp/gpu/shader/msl/gamma_correction_ps.metal b/UnleashedRecomp/gpu/shader/msl/gamma_correction_ps.metal new file mode 100644 index 00000000..6db3b887 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/gamma_correction_ps.metal @@ -0,0 +1,23 @@ +#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h" + +#define g_Gamma (*(reinterpret_cast(g_PushConstants.SharedConstants + 0))) +#define g_TextureDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 12))) + +#define g_ViewportOffset (*(reinterpret_cast(g_PushConstants.SharedConstants + 16))) +#define g_ViewportSize (*(reinterpret_cast(g_PushConstants.SharedConstants + 24))) + +[[fragment]] +float4 shaderMain(float4 position [[position]], + constant Texture2DDescriptorHeap* g_Texture2DDescriptorHeap [[buffer(0)]], + constant PushConstants& g_PushConstants [[buffer(8)]]) +{ + texture2d texture = g_Texture2DDescriptorHeap[g_TextureDescriptorIndex].tex; + + int2 movedPosition = int2(position.xy) - g_ViewportOffset; + bool boxed = any(movedPosition < 0) || any(movedPosition >= g_ViewportSize); + if (boxed) movedPosition = 0; + + float4 color = boxed ? 0.0 : texture.read(uint2(movedPosition), 0); + color.rgb = pow(color.rgb, g_Gamma); + return color; +} diff --git a/UnleashedRecomp/gpu/shader/msl/gaussian_blur.metali b/UnleashedRecomp/gpu/shader/msl/gaussian_blur.metali new file mode 100644 index 00000000..dba59689 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/gaussian_blur.metali @@ -0,0 +1,63 @@ +#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h" + +#define g_ViewportSize (*(reinterpret_cast(g_PushConstants.PixelShaderConstants + 384))) +#define g_offsets(INDEX) selectWrapper((INDEX) < 74,(*(reinterpret_cast(g_PushConstants.PixelShaderConstants + (150 + min(INDEX, 73)) * 16))), 0.0) +#define g_weights (*(reinterpret_cast(g_PushConstants.PixelShaderConstants + 2656))) + +#define s0_Texture2DDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 0))) +#define s0_SamplerDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 192))) + +#ifdef __INTELLISENSE__ +#define KERNEL_SIZE 5 +#endif + +#define PI 3.14159265358979323846 + +float ComputeWeight(float x) +{ + float std = 0.952; + return exp(-(x * x) / (2.0 * std * std)) / (std * sqrt(2.0 * PI)); +} + +struct Interpolators +{ + float4 iTexCoord0 [[user(TEXCOORD0)]]; +}; + +[[fragment]] +float4 shaderMain(float4 iPosition [[position]], + Interpolators input [[stage_in]], + constant Texture2DDescriptorHeap* g_Texture2DDescriptorHeap [[buffer(0)]], + constant SamplerDescriptorHeap* g_SamplerDescriptorHeap [[buffer(3)]], + constant PushConstants& g_PushConstants [[buffer(8)]]) +{ + texture2d texture = g_Texture2DDescriptorHeap[s0_Texture2DDescriptorIndex].tex; + sampler samplerState = g_SamplerDescriptorHeap[s0_SamplerDescriptorIndex].samp; + + float scale; + if ((g_ViewportSize.x * g_ViewportSize.w) >= (16.0 / 9.0)) + scale = g_ViewportSize.y / 360.0; + else + scale = g_ViewportSize.x / 640.0; + + float2 offsets[3]; + offsets[0] = g_offsets(0).xy * scale; + offsets[1] = g_offsets(0).zw * scale; + offsets[2] = g_offsets(1).xy * scale; + + float4 color = 0.0; + float weightSum = 0.0; + + for (int i = 0; i < KERNEL_SIZE; i++) + { + float step = i / float(KERNEL_SIZE - 1); + float scaled = step * 2; + float2 offset = mix(offsets[int(scaled)], offsets[min(int(scaled) + 1, 2)], frac(scaled)); + float offsetScale = 1.0 / 0.75; + float weight = ComputeWeight(mix(-offsetScale, offsetScale, step)); + color += texture.sample(samplerState, input.iTexCoord0.xy + offset, level(0)) * weight; + weightSum += weight; + } + + return color / weightSum; +} diff --git a/UnleashedRecomp/gpu/shader/msl/gaussian_blur_3x3.metal b/UnleashedRecomp/gpu/shader/msl/gaussian_blur_3x3.metal new file mode 100644 index 00000000..1f8dbf31 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/gaussian_blur_3x3.metal @@ -0,0 +1,2 @@ +#define KERNEL_SIZE 3 +#include "gaussian_blur.metali" diff --git a/UnleashedRecomp/gpu/shader/msl/gaussian_blur_5x5.metal b/UnleashedRecomp/gpu/shader/msl/gaussian_blur_5x5.metal new file mode 100644 index 00000000..5b1a2c2d --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/gaussian_blur_5x5.metal @@ -0,0 +1,2 @@ +#define KERNEL_SIZE 5 +#include "gaussian_blur.metali" diff --git a/UnleashedRecomp/gpu/shader/msl/gaussian_blur_7x7.metal b/UnleashedRecomp/gpu/shader/msl/gaussian_blur_7x7.metal new file mode 100644 index 00000000..ba1bd736 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/gaussian_blur_7x7.metal @@ -0,0 +1,2 @@ +#define KERNEL_SIZE 7 +#include "gaussian_blur.metali" diff --git a/UnleashedRecomp/gpu/shader/msl/gaussian_blur_9x9.metal b/UnleashedRecomp/gpu/shader/msl/gaussian_blur_9x9.metal new file mode 100644 index 00000000..50198a76 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/gaussian_blur_9x9.metal @@ -0,0 +1,2 @@ +#define KERNEL_SIZE 9 +#include "gaussian_blur.metali" diff --git a/UnleashedRecomp/gpu/shader/msl/imgui_common.metali b/UnleashedRecomp/gpu/shader/msl/imgui_common.metali new file mode 100644 index 00000000..35cc10ef --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/imgui_common.metali @@ -0,0 +1,41 @@ +#pragma once +#include + +using namespace metal; + +#include "../../imgui/imgui_common.h" + +struct PushConstants +{ + float2 BoundsMin; + float2 BoundsMax; + uint GradientTopLeft; + uint GradientTopRight; + uint GradientBottomRight; + uint GradientBottomLeft; + uint ShaderModifier; + uint Texture2DDescriptorIndex; + float2 DisplaySize; + float2 InverseDisplaySize; + float2 Origin; + float2 Scale; + float2 ProceduralOrigin; + float Outline; +}; + +struct Interpolators +{ + float4 Position [[position]]; + float2 UV; + float4 Color; +}; + +struct Texture2DDescriptorHeap +{ + texture2d tex; +}; + +struct SamplerDescriptorHeap +{ + sampler samp; +}; \ No newline at end of file diff --git a/UnleashedRecomp/gpu/shader/msl/imgui_ps.metal b/UnleashedRecomp/gpu/shader/msl/imgui_ps.metal new file mode 100644 index 00000000..e00dc36a --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/imgui_ps.metal @@ -0,0 +1,235 @@ +#include "imgui_common.metali" + +float4 DecodeColor(uint color) +{ + return float4(color & 0xFF, (color >> 8) & 0xFF, (color >> 16) & 0xFF, (color >> 24) & 0xFF) / 255.0; +} + +float4 SamplePoint(int2 position, constant PushConstants& g_PushConstants) +{ + switch (g_PushConstants.ShaderModifier) + { + case IMGUI_SHADER_MODIFIER_SCANLINE: + { + if (int(position.y) % 2 == 0) + return float4(1.0, 1.0, 1.0, 0.0); + + break; + } + case IMGUI_SHADER_MODIFIER_CHECKERBOARD: + { + int remnantX = int(position.x) % 9; + int remnantY = int(position.y) % 9; + + float4 color = 1.0; + + if (remnantX == 0 || remnantY == 0) + color.a = 0.0; + + if ((remnantY % 2) == 0) + color.rgb = 0.5; + + return color; + } + case IMGUI_SHADER_MODIFIER_SCANLINE_BUTTON: + { + if (int(position.y) % 2 == 0) + return float4(1.0, 1.0, 1.0, 0.5); + + break; + } + } + + return 1.0; +} + +float4 SampleLinear(float2 uvTexspace, constant PushConstants& g_PushConstants) +{ + int2 integerPart = int2(floor(uvTexspace)); + float2 fracPart = fract(uvTexspace); + + float4 topLeft = SamplePoint(integerPart + int2(0, 0), g_PushConstants); + float4 topRight = SamplePoint(integerPart + int2(1, 0), g_PushConstants); + float4 bottomLeft = SamplePoint(integerPart + int2(0, 1), g_PushConstants); + float4 bottomRight = SamplePoint(integerPart + int2(1, 1), g_PushConstants); + + float4 top = mix(topLeft, topRight, fracPart.x); + float4 bottom = mix(bottomLeft, bottomRight, fracPart.x); + + return mix(top, bottom, fracPart.y); +} + +float4 PixelAntialiasing(float2 uvTexspace, constant PushConstants& g_PushConstants) +{ + if ((g_PushConstants.DisplaySize.x * g_PushConstants.InverseDisplaySize.y) >= (4.0 / 3.0)) + uvTexspace *= g_PushConstants.InverseDisplaySize.y * 720.0; + else + uvTexspace *= g_PushConstants.InverseDisplaySize.x * 960.0; + + float2 seam = floor(uvTexspace + 0.5); + uvTexspace = (uvTexspace - seam) / fwidth(uvTexspace) + seam; + uvTexspace = clamp(uvTexspace, seam - 0.5, seam + 0.5); + + return SampleLinear(uvTexspace - 0.5, g_PushConstants); +} + +float median(float r, float g, float b) +{ + return max(min(r, g), min(max(r, g), b)); +} + +float4 SampleSdfFont(float4 color, texture2d texture, float2 uv, float2 screenTexSize, + constant SamplerDescriptorHeap* g_SamplerDescriptorHeap, + constant PushConstants& g_PushConstants) +{ + float4 textureColor = texture.sample(g_SamplerDescriptorHeap[0].samp, uv); + + uint width = texture.get_width(); + uint height = texture.get_height(); + + float pxRange = 8.0; + float2 unitRange = pxRange / float2(width, height); + float screenPxRange = max(0.5 * dot(unitRange, screenTexSize), 1.0); + + float sd = median(textureColor.r, textureColor.g, textureColor.b) - 0.5; + float screenPxDistance = screenPxRange * (sd + g_PushConstants.Outline / (pxRange * 1.5)); + + if (g_PushConstants.ShaderModifier == IMGUI_SHADER_MODIFIER_TITLE_BEVEL) + { + float2 normal = normalize(float3(dfdx(sd), dfdy(sd), 0.01)).xy; + float3 rimColor = float3(1, 0.8, 0.29); + float3 shadowColor = float3(0.84, 0.57, 0); + + float cosTheta = dot(normal, normalize(float2(1, 1))); + float3 gradient = mix(color.rgb, cosTheta >= 0.0 ? rimColor : shadowColor, abs(cosTheta)); + color.rgb = mix(gradient, color.rgb, pow(saturate(sd + 0.77), 32.0)); + } + else if (g_PushConstants.ShaderModifier == IMGUI_SHADER_MODIFIER_CATEGORY_BEVEL) + { + float2 normal = normalize(float3(dfdx(sd), dfdy(sd), 0.25)).xy; + float cosTheta = dot(normal, normalize(float2(1, 1))); + float gradient = 1.0 + cosTheta * 0.5; + color.rgb = saturate(color.rgb * gradient); + } + else if (g_PushConstants.ShaderModifier == IMGUI_SHADER_MODIFIER_TEXT_SKEW) + { + float2 normal = normalize(float3(dfdx(sd), dfdy(sd), 0.5)).xy; + float cosTheta = dot(normal, normalize(float2(1, 1))); + float gradient = saturate(1.0 + cosTheta); + color.rgb = mix(color.rgb * gradient, color.rgb, pow(saturate(sd + 0.77), 32.0)); + } + + color.a *= saturate(screenPxDistance + 0.5); + color.a *= textureColor.a; + + return color; +} + +[[fragment]] +float4 shaderMain(Interpolators interpolators [[stage_in]], + constant Texture2DDescriptorHeap* g_Texture2DDescriptorHeap [[buffer(0)]], + constant SamplerDescriptorHeap* g_SamplerDescriptorHeap [[buffer(1)]], + constant PushConstants& g_PushConstants [[buffer(8)]]) +{ + float4 color = interpolators.Color; + color *= PixelAntialiasing(interpolators.Position.xy - g_PushConstants.ProceduralOrigin, g_PushConstants); + + if (g_PushConstants.Texture2DDescriptorIndex != 0) + { + texture2d texture = g_Texture2DDescriptorHeap[g_PushConstants.Texture2DDescriptorIndex & 0x7FFFFFFF].tex; + + if ((g_PushConstants.Texture2DDescriptorIndex & 0x80000000) != 0) + { + if (g_PushConstants.ShaderModifier == IMGUI_SHADER_MODIFIER_LOW_QUALITY_TEXT) + { + float scale; + float invScale; + + if ((g_PushConstants.DisplaySize.x * g_PushConstants.InverseDisplaySize.y) >= (4.0 / 3.0)) + { + scale = g_PushConstants.InverseDisplaySize.y * 720.0; + invScale = g_PushConstants.DisplaySize.y / 720.0; + } + else + { + scale = g_PushConstants.InverseDisplaySize.x * 960.0; + invScale = g_PushConstants.DisplaySize.x / 960.0; + } + + float2 lowQualityPosition = (interpolators.Position.xy - 0.5) * scale; + float2 fracPart = fract(lowQualityPosition); + + float2 uvStep = fwidth(interpolators.UV) * invScale; + float2 lowQualityUV = interpolators.UV - fracPart * uvStep; + float2 screenTexSize = 1.0 / uvStep; + + float4 topLeft = SampleSdfFont(color, texture, lowQualityUV + float2(0, 0), screenTexSize, g_SamplerDescriptorHeap, g_PushConstants); + float4 topRight = SampleSdfFont(color, texture, lowQualityUV + float2(uvStep.x, 0), screenTexSize, g_SamplerDescriptorHeap, g_PushConstants); + float4 bottomLeft = SampleSdfFont(color, texture, lowQualityUV + float2(0, uvStep.y), screenTexSize, g_SamplerDescriptorHeap, g_PushConstants); + float4 bottomRight = SampleSdfFont(color, texture, lowQualityUV + uvStep.xy, screenTexSize, g_SamplerDescriptorHeap, g_PushConstants); + + float4 top = mix(topLeft, topRight, fracPart.x); + float4 bottom = mix(bottomLeft, bottomRight, fracPart.x); + + color = mix(top, bottom, fracPart.y); + } + else + { + color = SampleSdfFont(color, texture, interpolators.UV, 1.0 / fwidth(interpolators.UV), g_SamplerDescriptorHeap, g_PushConstants); + } + } + else + { + color *= texture.sample(g_SamplerDescriptorHeap[0].samp, interpolators.UV); + } + } + + if (g_PushConstants.ShaderModifier == IMGUI_SHADER_MODIFIER_HORIZONTAL_MARQUEE_FADE) + { + float minAlpha = saturate((interpolators.Position.x - g_PushConstants.BoundsMin.x) / g_PushConstants.Scale.x); + float maxAlpha = saturate((g_PushConstants.BoundsMax.x - interpolators.Position.x) / g_PushConstants.Scale.y); + + color.a *= minAlpha; + color.a *= maxAlpha; + } + else if (g_PushConstants.ShaderModifier == IMGUI_SHADER_MODIFIER_VERTICAL_MARQUEE_FADE) + { + float minAlpha = saturate((interpolators.Position.y - g_PushConstants.BoundsMin.y) / g_PushConstants.Scale.x); + float maxAlpha = saturate((g_PushConstants.BoundsMax.y - interpolators.Position.y) / g_PushConstants.Scale.y); + + color.a *= minAlpha; + color.a *= maxAlpha; + } + else if (any(g_PushConstants.BoundsMin != g_PushConstants.BoundsMax)) + { + float2 factor = saturate((interpolators.Position.xy - g_PushConstants.BoundsMin) / (g_PushConstants.BoundsMax - g_PushConstants.BoundsMin)); + + if (g_PushConstants.ShaderModifier == IMGUI_SHADER_MODIFIER_RECTANGLE_BEVEL) + { + float bevelSize = 0.9; + + float shadow = saturate((factor.x - bevelSize) / (1.0 - bevelSize)); + shadow = max(shadow, saturate((factor.y - bevelSize) / (1.0 - bevelSize))); + + float rim = saturate((1.0 - factor.x - bevelSize) / (1.0 - bevelSize)); + rim = max(rim, saturate((1.0 - factor.y - bevelSize) / (1.0 - bevelSize))); + + float3 rimColor = float3(1, 0.8, 0.29); + float3 shadowColor = float3(0.84, 0.57, 0); + + color.rgb = mix(color.rgb, rimColor, smoothstep(0.0, 1.0, rim)); + color.rgb = mix(color.rgb, shadowColor, smoothstep(0.0, 1.0, shadow)); + } + else + { + float4 top = mix(DecodeColor(g_PushConstants.GradientTopLeft), DecodeColor(g_PushConstants.GradientTopRight), smoothstep(0.0, 1.0, factor.x)); + float4 bottom = mix(DecodeColor(g_PushConstants.GradientBottomLeft), DecodeColor(g_PushConstants.GradientBottomRight), smoothstep(0.0, 1.0, factor.x)); + color *= mix(top, bottom, smoothstep(0.0, 1.0, factor.y)); + } + } + + if (g_PushConstants.ShaderModifier == IMGUI_SHADER_MODIFIER_GRAYSCALE) + color.rgb = dot(color.rgb, float3(0.2126, 0.7152, 0.0722)); + + return color; +} diff --git a/UnleashedRecomp/gpu/shader/msl/imgui_vs.metal b/UnleashedRecomp/gpu/shader/msl/imgui_vs.metal new file mode 100644 index 00000000..8da61c47 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/imgui_vs.metal @@ -0,0 +1,32 @@ +#include "imgui_common.metali" + +struct VertexStageIn +{ + float2 position [[attribute(0)]]; + float2 uv [[attribute(1)]]; + float4 color [[attribute(2)]]; +}; + +[[vertex]] +Interpolators shaderMain(VertexStageIn input [[stage_in]], + constant PushConstants& g_PushConstants [[buffer(8)]]) +{ + Interpolators interpolators = Interpolators{}; + + if (g_PushConstants.ShaderModifier == IMGUI_SHADER_MODIFIER_TEXT_SKEW) + { + if (input.position.y < g_PushConstants.Origin.y) + input.position.x += g_PushConstants.Scale.x; + } + else if (g_PushConstants.ShaderModifier != IMGUI_SHADER_MODIFIER_HORIZONTAL_MARQUEE_FADE && + g_PushConstants.ShaderModifier != IMGUI_SHADER_MODIFIER_VERTICAL_MARQUEE_FADE) + { + input.position.xy = g_PushConstants.Origin + (input.position.xy - g_PushConstants.Origin) * g_PushConstants.Scale; + } + + interpolators.Position = float4(input.position.xy * g_PushConstants.InverseDisplaySize * float2(2.0, -2.0) + float2(-1.0, 1.0), 0.0, 1.0); + interpolators.UV = input.uv; + interpolators.Color = input.color; + + return interpolators; +} diff --git a/UnleashedRecomp/gpu/shader/msl/movie_common.metali b/UnleashedRecomp/gpu/shader/msl/movie_common.metali new file mode 100644 index 00000000..9193155a --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/movie_common.metali @@ -0,0 +1,39 @@ +#pragma once + +#include "../../../../tools/XenosRecomp/XenosRecomp/shader_common.h" + +#define fZmin (*(reinterpret_cast(g_PushConstants.PixelShaderConstants + 0))) +#define fZmax (*(reinterpret_cast(g_PushConstants.PixelShaderConstants + 16))) + +#define Tex0_ResourceDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 0))) +#define Tex1_ResourceDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 4))) +#define Tex2_ResourceDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 8))) +#define Tex3_ResourceDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 12))) +#define Tex4_ResourceDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 16))) + +#define Tex0_SamplerDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 64))) +#define Tex1_SamplerDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 68))) +#define Tex2_SamplerDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 72))) +#define Tex3_SamplerDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 76))) +#define Tex4_SamplerDescriptorIndex (*(reinterpret_cast(g_PushConstants.SharedConstants + 80))) + +#define bCsc (g_Booleans & (1 << (16 + 0))) +#define bAmv (g_Booleans & (1 << (16 + 1))) +#define bZmv (g_Booleans & (1 << (16 + 2))) + +struct VertexShaderInput +{ + float4 ObjPos [[attribute(0)]]; + float2 UV [[attribute(4)]]; +}; + +struct Interpolators +{ + float4 ProjPos [[position]]; + float2 UV; +}; + +struct PixelShaderOutput +{ + float4 Color [[color(0)]]; +}; diff --git a/UnleashedRecomp/gpu/shader/msl/movie_ps.metal b/UnleashedRecomp/gpu/shader/msl/movie_ps.metal new file mode 100644 index 00000000..2b9fb5dc --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/movie_ps.metal @@ -0,0 +1,104 @@ +#include "movie_common.metali" + +[[fragment]] +PixelShaderOutput shaderMain(Interpolators In [[stage_in]], + constant Texture2DDescriptorHeap* g_Texture2DDescriptorHeap [[buffer(0)]], + constant SamplerDescriptorHeap* g_SamplerDescriptorHeap [[buffer(3)]], + constant PushConstants& g_PushConstants [[buffer(8)]]) +{ + texture2d Tex0 = g_Texture2DDescriptorHeap[Tex0_ResourceDescriptorIndex].tex; + texture2d Tex1 = g_Texture2DDescriptorHeap[Tex1_ResourceDescriptorIndex].tex; + texture2d Tex2 = g_Texture2DDescriptorHeap[Tex2_ResourceDescriptorIndex].tex; + texture2d Tex3 = g_Texture2DDescriptorHeap[Tex3_ResourceDescriptorIndex].tex; + texture2d Tex4 = g_Texture2DDescriptorHeap[Tex4_ResourceDescriptorIndex].tex; + + sampler Tex0_s = g_SamplerDescriptorHeap[Tex0_SamplerDescriptorIndex].samp; + sampler Tex1_s = g_SamplerDescriptorHeap[Tex1_SamplerDescriptorIndex].samp; + sampler Tex2_s = g_SamplerDescriptorHeap[Tex2_SamplerDescriptorIndex].samp; + sampler Tex3_s = g_SamplerDescriptorHeap[Tex3_SamplerDescriptorIndex].samp; + sampler Tex4_s = g_SamplerDescriptorHeap[Tex4_SamplerDescriptorIndex].samp; + + PixelShaderOutput Out; + float ValY = Tex0.sample(Tex0_s, In.UV).r; + float ValU = Tex1.sample(Tex1_s, In.UV).r - 0.5; + float ValV = Tex2.sample(Tex2_s, In.UV).r - 0.5; + float ValA = 1.0; + float ValD = 0.0; + if (bAmv) + ValA = (Tex3.sample(Tex3_s, In.UV).r - 0.0625) * 1.164; + if (bZmv) + { + ValD = (Tex4.sample(Tex4_s, In.UV).r - 0.0625) * 1.164; + if (ValD < 9.0 / 255.0) + { + ValD = 0.0; + } + else if (ValD < 17.0 / 255.0) + { + ValD = fZmin; + } + else if (ValD < 224.0 / 255.0) + { + ValD = (ValD - 17.0 / 255.0) / (223.0 / 255.0 - 17.0 / 255.0) * (fZmax - fZmin) + fZmin; + } + else if (ValD < 240.0 / 255.0) + { + ValD = fZmax; + } + else + { + ValD = 1.0; + } + } + if (bCsc) + { + if (ValY < 16.0 / 255.0) + { + ValY = ValY * 3.0 / 2.0; + } + else if (ValY < 176.0 / 255.0) + { + ValY = 24.0 / 255.0 + (ValY - 16.0 / 255.0) / 2.0; + } + else if (ValY < 192.0 / 255.0) + { + ValY = 104.0 / 255.0 + (ValY - 176.0 / 255.0) / 1.0; + } + else + { + ValY = 120.0 / 255.0 + (ValY - 192.0 / 255.0) * 2.0; + } + if (abs(ValU) < 24.0 / 255.0) + { + ValU /= 3.0; + } + else + { + ValU = (8.0 / 255.0 + (abs(ValU) - 24.0 / 255.0) * (120.0 / 104.0)) * sign(ValU); + } + if (abs(ValV) < 24.0 / 255.0) + { + ValV /= 3.0; + } + else + { + ValV = (8.0 / 255.0 + (abs(ValV) - 24.0 / 255.0) * (120.0 / 104.0)) * sign(ValV); + } + Out.Color.r = ValY + ValV * 1.402; + Out.Color.g = ValY - ValU * 0.344 - ValV * 0.714; + Out.Color.b = ValY + ValU * 1.772; + } + else + { + ValY = (ValY - 0.0625) * 1.164; + Out.Color.r = ValY + ValV * 1.596; + Out.Color.g = ValY - ValU * 0.392 - ValV * 0.813; + Out.Color.b = ValY + ValU * 2.017; + } + Out.Color.a = ValA; + + if (any(In.UV < 0.0) || any(In.UV > 1.0)) + Out.Color.rgb = 0.0; + + return Out; +} diff --git a/UnleashedRecomp/gpu/shader/msl/movie_vs.metal b/UnleashedRecomp/gpu/shader/msl/movie_vs.metal new file mode 100644 index 00000000..30ad6044 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/movie_vs.metal @@ -0,0 +1,12 @@ +#include "movie_common.metali" + +[[vertex]] +Interpolators shaderMain(VertexShaderInput In [[stage_in]], + constant PushConstants& g_PushConstants [[buffer(8)]]) +{ + Interpolators Out; + Out.ProjPos = In.ObjPos; + Out.ProjPos.xy += g_HalfPixelOffset * Out.ProjPos.w; + Out.UV = In.UV; + return Out; +} diff --git a/UnleashedRecomp/gpu/shader/msl/resolve_msaa_color.metali b/UnleashedRecomp/gpu/shader/msl/resolve_msaa_color.metali new file mode 100644 index 00000000..2a3bba5b --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/resolve_msaa_color.metali @@ -0,0 +1,21 @@ +#pragma once + +#include "copy_common.metali" + +struct Texture2DMSDescriptorHeap +{ + texture2d_ms tex; +}; + +[[fragment]] +float4 shaderMain(float4 position [[position]], + constant Texture2DMSDescriptorHeap* g_Texture2DMSDescriptorHeap [[buffer(0)]], + constant PushConstants& g_PushConstants [[buffer(8)]]) +{ + float4 result = g_Texture2DMSDescriptorHeap[g_PushConstants.ResourceDescriptorIndex].tex.read(uint2(position.xy), 0); + + for (int i = 1; i < SAMPLE_COUNT; i++) + result += g_Texture2DMSDescriptorHeap[g_PushConstants.ResourceDescriptorIndex].tex.read(uint2(position.xy), i); + + return result / SAMPLE_COUNT; +} diff --git a/UnleashedRecomp/gpu/shader/msl/resolve_msaa_color_2x.metal b/UnleashedRecomp/gpu/shader/msl/resolve_msaa_color_2x.metal new file mode 100644 index 00000000..6aa43bb0 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/resolve_msaa_color_2x.metal @@ -0,0 +1,2 @@ +#define SAMPLE_COUNT 2 +#include "resolve_msaa_color.metali" diff --git a/UnleashedRecomp/gpu/shader/msl/resolve_msaa_color_4x.metal b/UnleashedRecomp/gpu/shader/msl/resolve_msaa_color_4x.metal new file mode 100644 index 00000000..17878881 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/resolve_msaa_color_4x.metal @@ -0,0 +1,2 @@ +#define SAMPLE_COUNT 4 +#include "resolve_msaa_color.metali" diff --git a/UnleashedRecomp/gpu/shader/msl/resolve_msaa_color_8x.metal b/UnleashedRecomp/gpu/shader/msl/resolve_msaa_color_8x.metal new file mode 100644 index 00000000..497f2ed2 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/resolve_msaa_color_8x.metal @@ -0,0 +1,2 @@ +#define SAMPLE_COUNT 8 +#include "resolve_msaa_color.metali" diff --git a/UnleashedRecomp/gpu/shader/msl/resolve_msaa_depth.metali b/UnleashedRecomp/gpu/shader/msl/resolve_msaa_depth.metali new file mode 100644 index 00000000..bdd4aa92 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/resolve_msaa_depth.metali @@ -0,0 +1,30 @@ +#pragma once + +#include "copy_common.metali" + +struct Texture2DMSDescriptorHeap +{ + texture2d_ms tex; +}; + +struct PixelShaderOutput +{ + float oDepth [[depth(any)]]; +}; + +[[fragment]] +PixelShaderOutput shaderMain(float4 position [[position]], + constant Texture2DMSDescriptorHeap* g_Texture2DMSDescriptorHeap [[buffer(0)]], + constant PushConstants& g_PushConstants [[buffer(8)]]) +{ + PixelShaderOutput output = PixelShaderOutput{}; + + float result = g_Texture2DMSDescriptorHeap[g_PushConstants.ResourceDescriptorIndex].tex.read(uint2(position.xy), 0).x; + + for (int i = 1; i < SAMPLE_COUNT; i++) + result = min(result, g_Texture2DMSDescriptorHeap[g_PushConstants.ResourceDescriptorIndex].tex.read(uint2(position.xy), i).x); + + output.oDepth = result; + + return output; +} diff --git a/UnleashedRecomp/gpu/shader/msl/resolve_msaa_depth_2x.metal b/UnleashedRecomp/gpu/shader/msl/resolve_msaa_depth_2x.metal new file mode 100644 index 00000000..cd3be171 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/resolve_msaa_depth_2x.metal @@ -0,0 +1,2 @@ +#define SAMPLE_COUNT 2 +#include "resolve_msaa_depth.metali" diff --git a/UnleashedRecomp/gpu/shader/msl/resolve_msaa_depth_4x.metal b/UnleashedRecomp/gpu/shader/msl/resolve_msaa_depth_4x.metal new file mode 100644 index 00000000..e69b2c00 --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/resolve_msaa_depth_4x.metal @@ -0,0 +1,2 @@ +#define SAMPLE_COUNT 4 +#include "resolve_msaa_depth.metali" diff --git a/UnleashedRecomp/gpu/shader/msl/resolve_msaa_depth_8x.metal b/UnleashedRecomp/gpu/shader/msl/resolve_msaa_depth_8x.metal new file mode 100644 index 00000000..eaa42e5c --- /dev/null +++ b/UnleashedRecomp/gpu/shader/msl/resolve_msaa_depth_8x.metal @@ -0,0 +1,2 @@ +#define SAMPLE_COUNT 8 +#include "resolve_msaa_depth.metali" diff --git a/UnleashedRecomp/gpu/video.cpp b/UnleashedRecomp/gpu/video.cpp index 07de3390..025471c1 100644 --- a/UnleashedRecomp/gpu/video.cpp +++ b/UnleashedRecomp/gpu/video.cpp @@ -41,54 +41,80 @@ #include "../../tools/XenosRecomp/XenosRecomp/shader_common.h" #ifdef UNLEASHED_RECOMP_D3D12 -#include "shader/blend_color_alpha_ps.hlsl.dxil.h" -#include "shader/copy_vs.hlsl.dxil.h" -#include "shader/copy_color_ps.hlsl.dxil.h" -#include "shader/copy_depth_ps.hlsl.dxil.h" -#include "shader/csd_filter_ps.hlsl.dxil.h" -#include "shader/csd_no_tex_vs.hlsl.dxil.h" -#include "shader/csd_vs.hlsl.dxil.h" -#include "shader/enhanced_motion_blur_ps.hlsl.dxil.h" -#include "shader/gamma_correction_ps.hlsl.dxil.h" -#include "shader/gaussian_blur_3x3.hlsl.dxil.h" -#include "shader/gaussian_blur_5x5.hlsl.dxil.h" -#include "shader/gaussian_blur_7x7.hlsl.dxil.h" -#include "shader/gaussian_blur_9x9.hlsl.dxil.h" -#include "shader/imgui_ps.hlsl.dxil.h" -#include "shader/imgui_vs.hlsl.dxil.h" -#include "shader/movie_ps.hlsl.dxil.h" -#include "shader/movie_vs.hlsl.dxil.h" -#include "shader/resolve_msaa_color_2x.hlsl.dxil.h" -#include "shader/resolve_msaa_color_4x.hlsl.dxil.h" -#include "shader/resolve_msaa_color_8x.hlsl.dxil.h" -#include "shader/resolve_msaa_depth_2x.hlsl.dxil.h" -#include "shader/resolve_msaa_depth_4x.hlsl.dxil.h" -#include "shader/resolve_msaa_depth_8x.hlsl.dxil.h" +#include "shader/hlsl/blend_color_alpha_ps.hlsl.dxil.h" +#include "shader/hlsl/copy_vs.hlsl.dxil.h" +#include "shader/hlsl/copy_color_ps.hlsl.dxil.h" +#include "shader/hlsl/copy_depth_ps.hlsl.dxil.h" +#include "shader/hlsl/csd_filter_ps.hlsl.dxil.h" +#include "shader/hlsl/csd_no_tex_vs.hlsl.dxil.h" +#include "shader/hlsl/csd_vs.hlsl.dxil.h" +#include "shader/hlsl/enhanced_motion_blur_ps.hlsl.dxil.h" +#include "shader/hlsl/gamma_correction_ps.hlsl.dxil.h" +#include "shader/hlsl/gaussian_blur_3x3.hlsl.dxil.h" +#include "shader/hlsl/gaussian_blur_5x5.hlsl.dxil.h" +#include "shader/hlsl/gaussian_blur_7x7.hlsl.dxil.h" +#include "shader/hlsl/gaussian_blur_9x9.hlsl.dxil.h" +#include "shader/hlsl/imgui_ps.hlsl.dxil.h" +#include "shader/hlsl/imgui_vs.hlsl.dxil.h" +#include "shader/hlsl/movie_ps.hlsl.dxil.h" +#include "shader/hlsl/movie_vs.hlsl.dxil.h" +#include "shader/hlsl/resolve_msaa_color_2x.hlsl.dxil.h" +#include "shader/hlsl/resolve_msaa_color_4x.hlsl.dxil.h" +#include "shader/hlsl/resolve_msaa_color_8x.hlsl.dxil.h" +#include "shader/hlsl/resolve_msaa_depth_2x.hlsl.dxil.h" +#include "shader/hlsl/resolve_msaa_depth_4x.hlsl.dxil.h" +#include "shader/hlsl/resolve_msaa_depth_8x.hlsl.dxil.h" #endif -#include "shader/blend_color_alpha_ps.hlsl.spirv.h" -#include "shader/copy_vs.hlsl.spirv.h" -#include "shader/copy_color_ps.hlsl.spirv.h" -#include "shader/copy_depth_ps.hlsl.spirv.h" -#include "shader/csd_filter_ps.hlsl.spirv.h" -#include "shader/csd_no_tex_vs.hlsl.spirv.h" -#include "shader/csd_vs.hlsl.spirv.h" -#include "shader/enhanced_motion_blur_ps.hlsl.spirv.h" -#include "shader/gamma_correction_ps.hlsl.spirv.h" -#include "shader/gaussian_blur_3x3.hlsl.spirv.h" -#include "shader/gaussian_blur_5x5.hlsl.spirv.h" -#include "shader/gaussian_blur_7x7.hlsl.spirv.h" -#include "shader/gaussian_blur_9x9.hlsl.spirv.h" -#include "shader/imgui_ps.hlsl.spirv.h" -#include "shader/imgui_vs.hlsl.spirv.h" -#include "shader/movie_ps.hlsl.spirv.h" -#include "shader/movie_vs.hlsl.spirv.h" -#include "shader/resolve_msaa_color_2x.hlsl.spirv.h" -#include "shader/resolve_msaa_color_4x.hlsl.spirv.h" -#include "shader/resolve_msaa_color_8x.hlsl.spirv.h" -#include "shader/resolve_msaa_depth_2x.hlsl.spirv.h" -#include "shader/resolve_msaa_depth_4x.hlsl.spirv.h" -#include "shader/resolve_msaa_depth_8x.hlsl.spirv.h" +#ifdef UNLEASHED_RECOMP_METAL +#include "shader/msl/blend_color_alpha_ps.metal.metallib.h" +#include "shader/msl/copy_vs.metal.metallib.h" +#include "shader/msl/copy_color_ps.metal.metallib.h" +#include "shader/msl/copy_depth_ps.metal.metallib.h" +#include "shader/msl/csd_filter_ps.metal.metallib.h" +#include "shader/msl/csd_no_tex_vs.metal.metallib.h" +#include "shader/msl/csd_vs.metal.metallib.h" +#include "shader/msl/enhanced_motion_blur_ps.metal.metallib.h" +#include "shader/msl/gamma_correction_ps.metal.metallib.h" +#include "shader/msl/gaussian_blur_3x3.metal.metallib.h" +#include "shader/msl/gaussian_blur_5x5.metal.metallib.h" +#include "shader/msl/gaussian_blur_7x7.metal.metallib.h" +#include "shader/msl/gaussian_blur_9x9.metal.metallib.h" +#include "shader/msl/imgui_ps.metal.metallib.h" +#include "shader/msl/imgui_vs.metal.metallib.h" +#include "shader/msl/movie_ps.metal.metallib.h" +#include "shader/msl/movie_vs.metal.metallib.h" +#include "shader/msl/resolve_msaa_color_2x.metal.metallib.h" +#include "shader/msl/resolve_msaa_color_4x.metal.metallib.h" +#include "shader/msl/resolve_msaa_color_8x.metal.metallib.h" +#include "shader/msl/resolve_msaa_depth_2x.metal.metallib.h" +#include "shader/msl/resolve_msaa_depth_4x.metal.metallib.h" +#include "shader/msl/resolve_msaa_depth_8x.metal.metallib.h" +#endif + +#include "shader/hlsl/blend_color_alpha_ps.hlsl.spirv.h" +#include "shader/hlsl/copy_vs.hlsl.spirv.h" +#include "shader/hlsl/copy_color_ps.hlsl.spirv.h" +#include "shader/hlsl/copy_depth_ps.hlsl.spirv.h" +#include "shader/hlsl/csd_filter_ps.hlsl.spirv.h" +#include "shader/hlsl/csd_no_tex_vs.hlsl.spirv.h" +#include "shader/hlsl/csd_vs.hlsl.spirv.h" +#include "shader/hlsl/enhanced_motion_blur_ps.hlsl.spirv.h" +#include "shader/hlsl/gamma_correction_ps.hlsl.spirv.h" +#include "shader/hlsl/gaussian_blur_3x3.hlsl.spirv.h" +#include "shader/hlsl/gaussian_blur_5x5.hlsl.spirv.h" +#include "shader/hlsl/gaussian_blur_7x7.hlsl.spirv.h" +#include "shader/hlsl/gaussian_blur_9x9.hlsl.spirv.h" +#include "shader/hlsl/imgui_ps.hlsl.spirv.h" +#include "shader/hlsl/imgui_vs.hlsl.spirv.h" +#include "shader/hlsl/movie_ps.hlsl.spirv.h" +#include "shader/hlsl/movie_vs.hlsl.spirv.h" +#include "shader/hlsl/resolve_msaa_color_2x.hlsl.spirv.h" +#include "shader/hlsl/resolve_msaa_color_4x.hlsl.spirv.h" +#include "shader/hlsl/resolve_msaa_color_8x.hlsl.spirv.h" +#include "shader/hlsl/resolve_msaa_depth_2x.hlsl.spirv.h" +#include "shader/hlsl/resolve_msaa_depth_4x.hlsl.spirv.h" +#include "shader/hlsl/resolve_msaa_depth_8x.hlsl.spirv.h" #ifdef _WIN32 extern "C" @@ -103,6 +129,9 @@ namespace plume #ifdef UNLEASHED_RECOMP_D3D12 extern std::unique_ptr CreateD3D12Interface(); #endif +#ifdef UNLEASHED_RECOMP_METAL + extern std::unique_ptr CreateMetalInterface(); +#endif #ifdef SDL_VULKAN_ENABLED extern std::unique_ptr CreateVulkanInterface(RenderWindow sdlWindow); #else @@ -283,17 +312,14 @@ static Profiler g_swapChainAcquireProfiler; static bool g_profilerVisible; static bool g_profilerWasToggled; -#ifdef UNLEASHED_RECOMP_D3D12 -static bool g_vulkan = false; +#if !defined(UNLEASHED_RECOMP_D3D12) && !defined(UNLEASHED_RECOMP_METAL) +static constexpr Backend g_backend = Backend::VULKAN; #else -static constexpr bool g_vulkan = true; +static Backend g_backend; #endif static bool g_triangleStripWorkaround = false; -static bool g_hardwareResolve = true; -static bool g_hardwareDepthResolve = true; - static std::unique_ptr g_interface; static std::unique_ptr g_device; @@ -486,7 +512,7 @@ struct UploadAllocator auto& buffer = buffers[index]; if (buffer.buffer == nullptr) { - buffer.buffer = g_device->createBuffer(RenderBufferDesc::UploadBuffer(UploadBuffer::SIZE, RenderBufferFlag::CONSTANT | RenderBufferFlag::VERTEX | RenderBufferFlag::INDEX)); + buffer.buffer = g_device->createBuffer(RenderBufferDesc::UploadBuffer(UploadBuffer::SIZE, RenderBufferFlag::CONSTANT | RenderBufferFlag::VERTEX | RenderBufferFlag::INDEX | RenderBufferFlag::DEVICE_ADDRESSABLE)); buffer.memory = reinterpret_cast(buffer.buffer->map()); buffer.deviceAddress = buffer.buffer->getDeviceAddress(); } @@ -780,18 +806,26 @@ static std::unique_ptr g_buttonBcDiff; static void LoadEmbeddedResources() { - if (g_vulkan) + switch (g_backend) { + case Backend::VULKAN: g_shaderCache = std::make_unique(g_spirvCacheDecompressedSize); ZSTD_decompress(g_shaderCache.get(), g_spirvCacheDecompressedSize, g_compressedSpirvCache, g_spirvCacheCompressedSize); - } -#ifdef UNLEASHED_RECOMP_D3D12 - else - { + break; +#if defined(UNLEASHED_RECOMP_D3D12) + case Backend::D3D12: g_shaderCache = std::make_unique(g_dxilCacheDecompressedSize); ZSTD_decompress(g_shaderCache.get(), g_dxilCacheDecompressedSize, g_compressedDxilCache, g_dxilCacheCompressedSize); - } + break; +#elif defined(UNLEASHED_RECOMP_METAL) + case Backend::METAL: + g_shaderCache = std::make_unique(g_airCacheDecompressedSize); + ZSTD_decompress(g_shaderCache.get(), g_airCacheDecompressedSize, g_compressedAirCache, g_airCacheCompressedSize); + break; #endif + default: + assert(false); + } g_buttonBcDiff = decompressZstd(g_button_bc_diff, g_button_bc_diff_uncompressed_size); } @@ -1187,7 +1221,7 @@ static void ProcSetRenderState(const RenderCommand& cmd) } case D3DRS_ALPHAREF: { - SetDirtyValue(g_dirtyStates.pipelineState, g_sharedConstants.alphaThreshold, float(value) / 256.0f); + SetDirtyValue(g_dirtyStates.sharedConstants, g_sharedConstants.alphaThreshold, float(value) / 256.0f); break; } case D3DRS_ALPHABLENDENABLE: @@ -1294,19 +1328,28 @@ static GuestShader* g_csdShader; static std::unique_ptr g_enhancedMotionBlurShader; -#ifdef UNLEASHED_RECOMP_D3D12 +#if defined(UNLEASHED_RECOMP_D3D12) #define CREATE_SHADER(NAME) \ g_device->createShader( \ - g_vulkan ? g_##NAME##_spirv : g_##NAME##_dxil, \ - g_vulkan ? sizeof(g_##NAME##_spirv) : sizeof(g_##NAME##_dxil), \ - "main", \ - g_vulkan ? RenderShaderFormat::SPIRV : RenderShaderFormat::DXIL) + (g_backend == Backend::VULKAN) ? g_##NAME##_spirv : g_##NAME##_dxil, \ + (g_backend == Backend::VULKAN) ? sizeof(g_##NAME##_spirv) : sizeof(g_##NAME##_dxil), \ + "shaderMain", \ + (g_backend == Backend::VULKAN) ? RenderShaderFormat::SPIRV : RenderShaderFormat::DXIL) + +#elif defined(UNLEASHED_RECOMP_METAL) + +#define CREATE_SHADER(NAME) \ + g_device->createShader( \ + (g_backend == Backend::VULKAN) ? g_##NAME##_spirv : g_##NAME##_air, \ + (g_backend == Backend::VULKAN) ? sizeof(g_##NAME##_spirv) : sizeof(g_##NAME##_air), \ + "shaderMain", \ + (g_backend == Backend::VULKAN) ? RenderShaderFormat::SPIRV : RenderShaderFormat::METAL) #else #define CREATE_SHADER(NAME) \ - g_device->createShader(g_##NAME##_spirv, sizeof(g_##NAME##_spirv), "main", RenderShaderFormat::SPIRV) + g_device->createShader(g_##NAME##_spirv, sizeof(g_##NAME##_spirv), "shaderMain", RenderShaderFormat::SPIRV) #endif @@ -1671,8 +1714,10 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry) GameWindow::Init(sdlVideoDriver); -#ifdef UNLEASHED_RECOMP_D3D12 - g_vulkan = DetectWine() || Config::GraphicsAPI == EGraphicsAPI::Vulkan; +#if defined(UNLEASHED_RECOMP_D3D12) + g_backend = (DetectWine() || Config::GraphicsAPI == EGraphicsAPI::Vulkan) ? Backend::VULKAN : Backend::D3D12; +#elif defined(UNLEASHED_RECOMP_METAL) + g_backend = Config::GraphicsAPI == EGraphicsAPI::Vulkan ? Backend::VULKAN : Backend::METAL; #endif // Attempt to create the possible backends using a vector of function pointers. Whichever succeeds first will be the chosen API. @@ -1685,15 +1730,18 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry) if (graphicsApiRetry) { // If we are attempting to create again after a reboot due to a crash, swap the order. - g_vulkan = !g_vulkan; + g_backend = (g_backend == Backend::VULKAN) ? Backend::D3D12 : Backend::VULKAN; // Don't allow redirection to Vulkan if we are retrying after a crash, // so the user can at least boot the game with D3D12 if Vulkan fails to work. allowVulkanRedirection = false; } - interfaceFunctions.push_back(g_vulkan ? CreateVulkanInterfaceWrapper : CreateD3D12Interface); - interfaceFunctions.push_back(g_vulkan ? CreateD3D12Interface : CreateVulkanInterfaceWrapper); + interfaceFunctions.push_back((g_backend == Backend::VULKAN) ? CreateVulkanInterfaceWrapper : CreateD3D12Interface); + interfaceFunctions.push_back((g_backend == Backend::VULKAN) ? CreateD3D12Interface : CreateVulkanInterfaceWrapper); +#elif defined(UNLEASHED_RECOMP_METAL) + interfaceFunctions.push_back((g_backend == Backend::VULKAN) ? CreateVulkanInterfaceWrapper : CreateMetalInterface); + interfaceFunctions.push_back((g_backend == Backend::VULKAN) ? CreateMetalInterface : CreateVulkanInterfaceWrapper); #else interfaceFunctions.push_back(CreateVulkanInterfaceWrapper); #endif @@ -1718,7 +1766,7 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry) { const RenderDeviceDescription &deviceDescription = g_device->getDescription(); -#ifdef UNLEASHED_RECOMP_D3D12 +#if defined(UNLEASHED_RECOMP_D3D12) if (interfaceFunction == CreateD3D12Interface) { if (allowVulkanRedirection) @@ -1749,7 +1797,7 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry) // In case Vulkan fails to initialize, we will try D3D12 again afterwards, // just to get the game to boot. This only really happens in very old Intel GPU drivers. - if (!g_vulkan) + if (g_backend != Backend::VULKAN) { interfaceFunctions.push_back(CreateD3D12Interface); allowVulkanRedirection = false; @@ -1758,13 +1806,11 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry) continue; } } - - // Hardware resolve seems to be completely bugged on Intel D3D12 drivers. - g_hardwareResolve = (deviceDescription.vendor != RenderDeviceVendor::INTEL); - g_hardwareDepthResolve = (deviceDescription.vendor != RenderDeviceVendor::INTEL); } - g_vulkan = (interfaceFunction == CreateVulkanInterfaceWrapper); + g_backend = (interfaceFunction == CreateVulkanInterfaceWrapper) ? Backend::VULKAN : Backend::D3D12; +#elif defined(UNLEASHED_RECOMP_METAL) + g_backend = (interfaceFunction == CreateVulkanInterfaceWrapper) ? Backend::VULKAN : Backend::METAL; #endif // Enable triangle strip workaround if we are on AMD, as there is a bug where // restart indices cause triangles to be culled incorrectly. Converting them to degenerate triangles fixes it. @@ -1800,7 +1846,7 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry) if (graphicsApiRetry) { // If we managed to create a device after retrying it in a reboot, remember the one we picked. - Config::GraphicsAPI = g_vulkan ? EGraphicsAPI::Vulkan : EGraphicsAPI::D3D12; + Config::GraphicsAPI = g_backend == Backend::VULKAN ? EGraphicsAPI::Vulkan : EGraphicsAPI::D3D12; } #endif @@ -1855,15 +1901,18 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry) switch (Config::TripleBuffering) { case ETripleBuffering::Auto: - if (g_vulkan) - { + switch (g_backend) { + case Backend::VULKAN: // Defaulting to 3 is fine if presentWait as supported, as the maximum frame latency allowed is only 1. bufferCount = g_device->getCapabilities().presentWait ? 3 : 2; - } - else - { + break; + case Backend::D3D12: // Defaulting to 3 is fine on D3D12 thanks to flip discard model. bufferCount = 3; + break; + case Backend::METAL: + bufferCount = 2; + break; } break; @@ -1875,7 +1924,14 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry) break; } - g_swapChain = g_queue->createSwapChain(GameWindow::s_renderWindow, bufferCount, BACKBUFFER_FORMAT, Config::MaxFrameLatency); + RenderSwapChainDesc swapChainDesc; + swapChainDesc.renderWindow = GameWindow::s_renderWindow; + swapChainDesc.textureCount = bufferCount; + swapChainDesc.format = BACKBUFFER_FORMAT; + swapChainDesc.maxFrameLatency = Config::MaxFrameLatency; + swapChainDesc.enablePresentWait = g_capabilities.presentWait; + + g_swapChain = g_queue->createSwapChain(swapChainDesc); g_swapChain->setVsyncEnabled(Config::VSync); g_swapChainValid = !g_swapChain->needsResize(); @@ -1960,7 +2016,7 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry) pipelineLayoutBuilder.addDescriptorSet(descriptorSetBuilder); - if (g_vulkan) + if (g_backend != Backend::D3D12) { pipelineLayoutBuilder.addPushConstant(0, 4, 24, RenderShaderStageFlag::VERTEX | RenderShaderStageFlag::PIXEL); } @@ -2459,12 +2515,27 @@ static void DrawProfiler() ImGui::Text("Present Wait: %s", g_capabilities.presentWait ? "Supported" : "Unsupported"); ImGui::Text("Triangle Fan: %s", g_capabilities.triangleFan ? "Supported" : "Unsupported"); ImGui::Text("Dynamic Depth Bias: %s", g_capabilities.dynamicDepthBias ? "Supported" : "Unsupported"); + ImGui::Text("Hardware Resolve Modes: %s", g_capabilities.resolveModes ? "Supported" : "Unsupported"); ImGui::Text("Triangle Strip Workaround: %s", g_triangleStripWorkaround ? "Enabled" : "Disabled"); - ImGui::Text("Hardware Resolve: %s", g_hardwareResolve ? "Enabled" : "Disabled"); - ImGui::Text("Hardware Depth Resolve: %s", g_hardwareDepthResolve ? "Enabled" : "Disabled"); ImGui::NewLine(); - ImGui::Text("API: %s", g_vulkan ? "Vulkan" : "D3D12"); + std::string backend; + + switch (g_backend) { + case Backend::VULKAN: + backend = "Vulkan"; + break; + case Backend::D3D12: + backend = "D3D12"; + break; + case Backend::METAL: + backend = "Metal"; + break; + default: + assert(false && "Unknown graphics backend"); + } + + ImGui::Text("API: %s", backend.c_str()); ImGui::Text("Device: %s", g_device->getDescription().name.c_str()); ImGui::Text("Device Type: %s", DeviceTypeName(g_device->getDescription().type)); ImGui::Text("VRAM: %.2f MiB", (double)(g_device->getDescription().dedicatedVideoMemory) / (1024.0 * 1024.0)); @@ -2895,7 +2966,7 @@ static void SetRootDescriptor(const UploadAllocation& allocation, size_t index) { auto& commandList = g_commandLists[g_frame]; - if (g_vulkan) + if (g_backend != Backend::D3D12) commandList->setGraphicsPushConstants(0, &allocation.deviceAddress, 8 * index, 8); else commandList->setGraphicsRootDescriptor(allocation.buffer->at(allocation.offset), index); @@ -3382,12 +3453,9 @@ static bool PopulateBarriersForStretchRect(GuestSurface* renderTarget, GuestSurf RenderTextureLayout dstLayout; bool shaderResolve = true; - if (multiSampling && g_hardwareResolve) + if (multiSampling) { - // Hardware depth resolve is only supported on D3D12 when programmable sample positions are available. - bool hardwareDepthResolveAvailable = g_hardwareDepthResolve && !g_vulkan && g_capabilities.sampleLocations; - - if (surface->format != RenderFormat::D32_FLOAT || hardwareDepthResolveAvailable) + if (surface->format != RenderFormat::D32_FLOAT || g_capabilities.resolveModes) { srcLayout = RenderTextureLayout::RESOLVE_SOURCE; dstLayout = RenderTextureLayout::RESOLVE_DEST; @@ -3427,11 +3495,9 @@ static void ExecutePendingStretchRectCommands(GuestSurface* renderTarget, GuestS { bool shaderResolve = true; - if (multiSampling && g_hardwareResolve) + if (multiSampling) { - bool hardwareDepthResolveAvailable = g_hardwareDepthResolve && !g_vulkan && g_capabilities.sampleLocations; - - if (surface->format != RenderFormat::D32_FLOAT || hardwareDepthResolveAvailable) + if (surface->format != RenderFormat::D32_FLOAT || g_capabilities.resolveModes) { if (surface->format == RenderFormat::D32_FLOAT) commandList->resolveTextureRegion(texture->texture, 0, 0, surface->texture, nullptr, RenderResolveMode::MIN); @@ -3547,7 +3613,7 @@ static void ExecutePendingStretchRectCommands(GuestSurface* renderTarget, GuestS g_dirtyStates.pipelineState = true; g_dirtyStates.scissorRect = true; - if (g_vulkan) + if (g_backend != Backend::D3D12) { g_dirtyStates.vertexShaderConstants = true; // The push constant call invalidates vertex shader constants. g_dirtyStates.depthBias = true; // Static depth bias in copy pipeline invalidates dynamic depth bias. @@ -3860,7 +3926,7 @@ static void ProcSetScissorRect(const RenderCommand& cmd) static RenderShader* GetOrLinkShader(GuestShader* guestShader, uint32_t specConstants) { - if (g_vulkan || + if (g_backend != Backend::D3D12 || guestShader->shaderCacheEntry == nullptr || guestShader->shaderCacheEntry->specConstantsMask == 0) { @@ -3870,7 +3936,8 @@ static RenderShader* GetOrLinkShader(GuestShader* guestShader, uint32_t specCons { assert(guestShader->shaderCacheEntry != nullptr); - if (g_vulkan) + switch (g_backend) { + case Backend::VULKAN: { auto compressedSpirvData = g_shaderCache.get() + guestShader->shaderCacheEntry->spirvOffset; @@ -3878,13 +3945,26 @@ static RenderShader* GetOrLinkShader(GuestShader* guestShader, uint32_t specCons bool result = smolv::Decode(compressedSpirvData, guestShader->shaderCacheEntry->spirvSize, decoded.data(), decoded.size()); assert(result); - guestShader->shader = g_device->createShader(decoded.data(), decoded.size(), "main", RenderShaderFormat::SPIRV); + guestShader->shader = g_device->createShader(decoded.data(), decoded.size(), "shaderMain", RenderShaderFormat::SPIRV); + break; } - else + case Backend::D3D12: { - guestShader->shader = g_device->createShader(g_shaderCache.get() + guestShader->shaderCacheEntry->dxilOffset, - guestShader->shaderCacheEntry->dxilSize, "main", RenderShaderFormat::DXIL); + guestShader->shader = g_device->createShader(g_shaderCache.get() + guestShader->shaderCacheEntry->dxilOffset, + guestShader->shaderCacheEntry->dxilSize, "shaderMain", RenderShaderFormat::DXIL); + break; + } + case Backend::METAL: + { + guestShader->shader = g_device->createShader(g_shaderCache.get() + guestShader->shaderCacheEntry->airOffset, + guestShader->shaderCacheEntry->airSize, "shaderMain", RenderShaderFormat::METAL); + break; + } } + +#ifdef _DEBUG + guestShader->shader->setName(fmt::format("{}:{:x}", guestShader->shaderCacheEntry->filename, guestShader->shaderCacheEntry->hash)); +#endif } return guestShader->shader.get(); @@ -3988,7 +4068,7 @@ static RenderShader* GetOrLinkShader(GuestShader* guestShader, uint32_t specCons const wchar_t* libraryNames[] = { specConstantsLibName, shaderLibName }; ComPtr result; - HRESULT hr = s_dxcLinker->Link(L"main", guestShader->type == ResourceType::VertexShader ? L"vs_6_0" : L"ps_6_0", + HRESULT hr = s_dxcLinker->Link(L"shaderMain", guestShader->type == ResourceType::VertexShader ? L"vs_6_0" : L"ps_6_0", libraryNames, std::size(libraryNames), nullptr, 0, result.GetAddressOf()); assert(SUCCEEDED(hr) && result != nullptr); @@ -4003,11 +4083,15 @@ static RenderShader* GetOrLinkShader(GuestShader* guestShader, uint32_t specCons auto& linkedShader = guestShader->linkedShaders[specConstants]; if (linkedShader == nullptr) { - linkedShader = g_device->createShader(blob->GetBufferPointer(), blob->GetBufferSize(), "main", RenderShaderFormat::DXIL); + linkedShader = g_device->createShader(blob->GetBufferPointer(), blob->GetBufferSize(), "shaderMain", RenderShaderFormat::DXIL); guestShader->shaderBlobs.push_back(std::move(blob)); } shader = linkedShader.get(); + +#ifdef _DEBUG + shader->setName(fmt::format("{}:{:x}", guestShader->shaderCacheEntry->filename, guestShader->shaderCacheEntry->hash)); +#endif } } #endif @@ -4501,7 +4585,7 @@ static void FlushRenderStateForRenderThread() // D3D12 resets depth bias values to the pipeline values, even if they are dynamic. // We can reduce unnecessary calls by making common depth bias values part of the pipeline. - if (g_capabilities.dynamicDepthBias && !g_vulkan) + if (g_capabilities.dynamicDepthBias && g_backend == Backend::D3D12) { bool useDepthBias = (g_depthBias != 0) || (g_slopeScaledDepthBias != 0.0f); @@ -4517,7 +4601,7 @@ static void FlushRenderStateForRenderThread() commandList->setPipeline(CreateGraphicsPipelineInRenderThread(g_pipelineState)); // D3D12 resets the depth bias values. Check if they need to be set again. - if (g_capabilities.dynamicDepthBias && !g_vulkan) + if (g_capabilities.dynamicDepthBias && g_backend == Backend::D3D12) g_dirtyStates.depthBias = (g_depthBias != g_pipelineState.depthBias) || (g_slopeScaledDepthBias != g_pipelineState.slopeScaledDepthBias); } @@ -4551,7 +4635,7 @@ static void FlushRenderStateForRenderThread() g_inputSlots + g_dirtyStates.vertexStreamFirst); } - if (g_dirtyStates.indices && (!g_vulkan || g_indexBufferView.buffer.ref != nullptr)) + if (g_dirtyStates.indices && (g_backend == Backend::D3D12 || g_indexBufferView.buffer.ref != nullptr)) commandList->setIndexBuffer(&g_indexBufferView); g_dirtyStates = DirtyStates(false); @@ -6486,7 +6570,7 @@ static void CompileMeshPipeline(const Mesh& mesh, CompilationArgs& args) if (g_capabilities.dynamicDepthBias) { // Put common depth bias values for reducing unnecessary calls. - if (!g_vulkan) + if (g_backend == Backend::D3D12) { pipelineState.depthBias = COMMON_DEPTH_BIAS_VALUE; pipelineState.slopeScaledDepthBias = COMMON_SLOPE_SCALED_DEPTH_BIAS_VALUE; @@ -7247,8 +7331,8 @@ static void PipelineTaskConsumerThread() if (!g_capabilities.triangleFan && pipelineState.primitiveTopology == RenderPrimitiveTopology::TRIANGLE_FAN) pipelineState.primitiveTopology = RenderPrimitiveTopology::TRIANGLE_LIST; - // Zero out depth bias for Vulkan, we only store common values for D3D12. - if (g_capabilities.dynamicDepthBias && g_vulkan) + // Zero out depth bias for Vulkan/Metal, we only store common values for D3D12. + if (g_capabilities.dynamicDepthBias && g_backend != Backend::D3D12) { pipelineState.depthBias = 0; pipelineState.slopeScaledDepthBias = 0.0f; diff --git a/UnleashedRecomp/gpu/video.h b/UnleashedRecomp/gpu/video.h index 322fd859..80a0b213 100644 --- a/UnleashedRecomp/gpu/video.h +++ b/UnleashedRecomp/gpu/video.h @@ -27,6 +27,12 @@ struct Video static void ComputeViewportDimensions(); }; +enum class Backend { + VULKAN, + D3D12, + METAL +}; + struct GuestSamplerState { be data[6]; diff --git a/UnleashedRecomp/user/config.cpp b/UnleashedRecomp/user/config.cpp index bd622b7f..a5824b6b 100644 --- a/UnleashedRecomp/user/config.cpp +++ b/UnleashedRecomp/user/config.cpp @@ -305,6 +305,9 @@ CONFIG_DEFINE_ENUM_TEMPLATE(EGraphicsAPI) { "Auto", EGraphicsAPI::Auto }, #ifdef UNLEASHED_RECOMP_D3D12 { "D3D12", EGraphicsAPI::D3D12 }, +#endif +#ifdef UNLEASHED_RECOMP_METAL + { "Metal", EGraphicsAPI::Metal }, #endif { "Vulkan", EGraphicsAPI::Vulkan } }; diff --git a/UnleashedRecomp/user/config.h b/UnleashedRecomp/user/config.h index 9e87d12e..36978f95 100644 --- a/UnleashedRecomp/user/config.h +++ b/UnleashedRecomp/user/config.h @@ -70,6 +70,9 @@ enum class EGraphicsAPI : uint32_t Auto, #ifdef UNLEASHED_RECOMP_D3D12 D3D12, +#endif +#ifdef UNLEASHED_RECOMP_METAL + Metal, #endif Vulkan }; diff --git a/UnleashedRecompLib/shader/shader_cache.h b/UnleashedRecompLib/shader/shader_cache.h index 43439403..8fdbefcf 100644 --- a/UnleashedRecompLib/shader/shader_cache.h +++ b/UnleashedRecompLib/shader/shader_cache.h @@ -7,7 +7,10 @@ struct ShaderCacheEntry const uint32_t dxilSize; const uint32_t spirvOffset; const uint32_t spirvSize; + const uint32_t airOffset; + const uint32_t airSize; const uint32_t specConstantsMask; + char filename[256]; struct GuestShader* guestShader; }; @@ -18,6 +21,10 @@ extern const uint8_t g_compressedDxilCache[]; extern const size_t g_dxilCacheCompressedSize; extern const size_t g_dxilCacheDecompressedSize; +extern const uint8_t g_compressedAirCache[]; +extern const size_t g_airCacheCompressedSize; +extern const size_t g_airCacheDecompressedSize; + extern const uint8_t g_compressedSpirvCache[]; extern const size_t g_spirvCacheCompressedSize; extern const size_t g_spirvCacheDecompressedSize; diff --git a/thirdparty/MoltenVK/MoltenVK b/thirdparty/MoltenVK/MoltenVK index 3a0b07a2..a14cbf43 160000 --- a/thirdparty/MoltenVK/MoltenVK +++ b/thirdparty/MoltenVK/MoltenVK @@ -1 +1 @@ -Subproject commit 3a0b07a24a4a681ffe70b461b1f4333b2729e2ef +Subproject commit a14cbf433414aa95da7046694b069f0f3f9263a5 diff --git a/thirdparty/MoltenVK/SPIRV-Cross b/thirdparty/MoltenVK/SPIRV-Cross index 22b22f56..38681a30 160000 --- a/thirdparty/MoltenVK/SPIRV-Cross +++ b/thirdparty/MoltenVK/SPIRV-Cross @@ -1 +1 @@ -Subproject commit 22b22f5685d868828be01c9ac00c31902e60afd9 +Subproject commit 38681a30e09679191cc3957719eeee76024f6daf diff --git a/tools/XenosRecomp b/tools/XenosRecomp index 990d03b2..49069920 160000 --- a/tools/XenosRecomp +++ b/tools/XenosRecomp @@ -1 +1 @@ -Subproject commit 990d03b28a27b50277ee5d8d942e1c5f873869d1 +Subproject commit 490699203914fe240b86ccf2401fe1f7d37b1bef From 05321611de050885c05964a04873cf7f99be88b0 Mon Sep 17 00:00:00 2001 From: MarkosTh09 Date: Wed, 22 Jul 2026 14:57:08 +0300 Subject: [PATCH 03/13] Use prototype mutex and condvar implementation of synchronization primitives Fixes synchronization issues observed only in iOS --- UnleashedRecomp/CMakeLists.txt | 1506 +++++++++-------- UnleashedRecomp/cpu/guest_thread.cpp | 66 +- UnleashedRecomp/cpu/guest_thread.h | 8 + UnleashedRecomp/cpu/ppc_context.h | 5 + UnleashedRecomp/gpu/video.cpp | 309 ++-- UnleashedRecomp/ios/launcher_main.mm | 114 +- UnleashedRecomp/kernel/imports.cpp | 407 ++++- UnleashedRecomp/main.cpp | 15 +- .../patches/CTitleStateMenu_patches.cpp | 17 + UnleashedRecomp/ui/game_window.cpp | 7 +- UnleashedRecompLib/CMakeLists.txt | 3 + thirdparty/MoltenVK/MoltenVK | 2 +- thirdparty/MoltenVK/SPIRV-Cross | 2 +- 13 files changed, 1518 insertions(+), 943 deletions(-) diff --git a/UnleashedRecomp/CMakeLists.txt b/UnleashedRecomp/CMakeLists.txt index dc82137d..b0f01dad 100644 --- a/UnleashedRecomp/CMakeLists.txt +++ b/UnleashedRecomp/CMakeLists.txt @@ -1,743 +1,763 @@ -project("UnleashedRecomp") - -if(WIN32) - option(UNLEASHED_RECOMP_D3D12 "Add D3D12 support for rendering" ON) -endif() - -if (APPLE) - option(UNLEASHED_RECOMP_METAL "Add Metal support for rendering" ON) -endif() - -if (CMAKE_SYSTEM_NAME MATCHES "Linux") - option(UNLEASHED_RECOMP_FLATPAK "Configure the build for Flatpak compatibility." OFF) -endif() - -function(BIN2C) - cmake_parse_arguments(BIN2C_ARGS "" "TARGET_OBJ;SOURCE_FILE;DEST_FILE;ARRAY_NAME;COMPRESSION_TYPE" "" ${ARGN}) - - if(NOT BIN2C_ARGS_TARGET_OBJ) - message(FATAL_ERROR "TARGET_OBJ not specified.") - endif() - - if(NOT BIN2C_ARGS_SOURCE_FILE) - message(FATAL_ERROR "SOURCE_FILE not specified.") - endif() - - if(NOT BIN2C_ARGS_DEST_FILE) - set(BIN2C_ARGS_DEST_FILE "${BIN2C_ARGS_SOURCE_FILE}") - endif() - - if(NOT BIN2C_ARGS_COMPRESSION_TYPE) - set(BIN2C_ARGS_COMPRESSION_TYPE "none") - endif() - - if(NOT CMAKE_CROSSCOMPILING) - add_custom_command(OUTPUT "${BIN2C_ARGS_DEST_FILE}.c" - COMMAND $ "${BIN2C_ARGS_SOURCE_FILE}" "${BIN2C_ARGS_ARRAY_NAME}" "${BIN2C_ARGS_COMPRESSION_TYPE}" "${BIN2C_ARGS_DEST_FILE}.c" "${BIN2C_ARGS_DEST_FILE}.h" - DEPENDS "${BIN2C_ARGS_SOURCE_FILE}" - BYPRODUCTS "${BIN2C_ARGS_DEST_FILE}.h" - COMMENT "Generating binary header for ${BIN2C_ARGS_SOURCE_FILE}..." - ) - else() - # When cross-compiling, build a host-native file_to_c out-of-tree and invoke it - set(HOST_FILE_TO_C_BUILD_DIR "${CMAKE_BINARY_DIR}/host-tools/file_to_c") - set(HOST_FILE_TO_C_BIN "${HOST_FILE_TO_C_BUILD_DIR}/file_to_c") - - add_custom_command(OUTPUT "${BIN2C_ARGS_DEST_FILE}.c" - COMMAND ${CMAKE_COMMAND} -S "${CMAKE_SOURCE_DIR}/tools/file_to_c" -B "${HOST_FILE_TO_C_BUILD_DIR}" - -G "${CMAKE_GENERATOR}" - -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/host-tools/install - COMMAND ${CMAKE_COMMAND} --build "${HOST_FILE_TO_C_BUILD_DIR}" --config ${CMAKE_BUILD_TYPE} - COMMAND "${HOST_FILE_TO_C_BIN}" "${BIN2C_ARGS_SOURCE_FILE}" "${BIN2C_ARGS_ARRAY_NAME}" "${BIN2C_ARGS_COMPRESSION_TYPE}" "${BIN2C_ARGS_DEST_FILE}.c" "${BIN2C_ARGS_DEST_FILE}.h" - DEPENDS "${BIN2C_ARGS_SOURCE_FILE}" - BYPRODUCTS "${BIN2C_ARGS_DEST_FILE}.h" - COMMENT "Cross: building host file_to_c and generating binary header for ${BIN2C_ARGS_SOURCE_FILE}..." - USES_TERMINAL - ) - endif() - - set(_bin2c_target ${BIN2C_ARGS_TARGET_OBJ}) - - if(CMAKE_SYSTEM_NAME STREQUAL "iOS" AND TARGET UnleashedRecompIOSLauncher) - set(_bin2c_target UnleashedRecompIOSLauncher) - endif() - - set_source_files_properties(${BIN2C_ARGS_DEST_FILE}.c PROPERTIES SKIP_PRECOMPILE_HEADERS ON) - target_sources(${_bin2c_target} PRIVATE ${BIN2C_ARGS_DEST_FILE}.c) -endfunction() - -add_compile_options( - -fno-strict-aliasing - -Wno-switch - -Wno-unused-function - -Wno-unused-variable - -Wno-unused-but-set-variable - -Wno-void-pointer-to-int-cast - -Wno-int-to-void-pointer-cast - -Wno-invalid-offsetof - -Wno-null-arithmetic - -Wno-null-conversion - -Wno-tautological-undefined-compare -) - -if(WIN32) - add_compile_options(/fp:strict) -else() - add_compile_options(-ffp-model=strict) -endif() - -add_compile_definitions( - SDL_MAIN_HANDLED - _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR # Microsoft wtf? - _CRT_SECURE_NO_WARNINGS) - -set(UNLEASHED_RECOMP_PRECOMPILED_HEADERS - "stdafx.h" -) - -set(UNLEASHED_RECOMP_KERNEL_CXX_SOURCES - "kernel/imports.cpp" - "kernel/xdm.cpp" - "kernel/heap.cpp" - "kernel/memory.cpp" - "kernel/xam.cpp" - "kernel/io/file_system.cpp" -) - -set(UNLEASHED_RECOMP_LOCALE_CXX_SOURCES - "locale/config_locale.cpp" - "locale/locale.cpp" -) - -if(WIN32) - set(UNLEASHED_RECOMP_OS_CXX_SOURCES - "os/win32/logger_win32.cpp" - "os/win32/media_win32.cpp" - "os/win32/process_win32.cpp" - "os/win32/user_win32.cpp" - "os/win32/version_win32.cpp" - ) -elseif(CMAKE_SYSTEM_NAME MATCHES "Linux") - set(UNLEASHED_RECOMP_OS_CXX_SOURCES - "os/linux/logger_linux.cpp" - "os/linux/media_linux.cpp" - "os/linux/process_linux.cpp" - "os/linux/user_linux.cpp" - "os/linux/version_linux.cpp" - ) -elseif(APPLE) - set(UNLEASHED_RECOMP_OS_CXX_SOURCES - "os/macos/logger_macos.cpp" - "os/macos/media_macos.cpp" - "os/macos/process_macos.cpp" - "os/macos/user_macos.cpp" - "os/macos/version_macos.cpp" - ) -endif() - -set(UNLEASHED_RECOMP_CPU_CXX_SOURCES - "cpu/guest_thread.cpp" -) - -set(UNLEASHED_RECOMP_GPU_CXX_SOURCES - "gpu/video.cpp" - "gpu/imgui/imgui_common.cpp" - "gpu/imgui/imgui_font_builder.cpp" - "gpu/imgui/imgui_snapshot.cpp" -) - -set(UNLEASHED_RECOMP_APU_CXX_SOURCES - "apu/audio.cpp" - "apu/embedded_player.cpp" - "apu/driver/sdl2_driver.cpp" -) - -set(UNLEASHED_RECOMP_HID_CXX_SOURCES - "hid/hid.cpp" - "hid/driver/sdl_hid.cpp" -) - -set(UNLEASHED_RECOMP_PATCHES_CXX_SOURCES - "patches/aspect_ratio_patches.cpp" - "patches/audio_patches.cpp" - "patches/camera_patches.cpp" - "patches/CGameModeStageTitle_patches.cpp" - "patches/CHudPause_patches.cpp" - "patches/CTitleStateIntro_patches.cpp" - "patches/CTitleStateMenu_patches.cpp" - "patches/fps_patches.cpp" - "patches/frontend_listener.cpp" - "patches/input_patches.cpp" - "patches/inspire_patches.cpp" - "patches/misc_patches.cpp" - "patches/object_patches.cpp" - "patches/player_patches.cpp" - "patches/resident_patches.cpp" - "patches/video_patches.cpp" -) - -set(UNLEASHED_RECOMP_UI_CXX_SOURCES - "ui/achievement_menu.cpp" - "ui/achievement_overlay.cpp" - "ui/black_bar.cpp" - "ui/button_guide.cpp" - "ui/fader.cpp" - "ui/game_window.cpp" - "ui/imgui_utils.cpp" - "ui/installer_wizard.cpp" - "ui/message_window.cpp" - "ui/options_menu.cpp" - "ui/options_menu_thumbnails.cpp" - "ui/tv_static.cpp" -) - -set(UNLEASHED_RECOMP_INSTALL_CXX_SOURCES - "install/installer.cpp" - "install/iso_file_system.cpp" - "install/update_checker.cpp" - "install/xcontent_file_system.cpp" - "install/hashes/apotos_shamar.cpp" - "install/hashes/chunnan.cpp" - "install/hashes/empire_city_adabat.cpp" - "install/hashes/game.cpp" - "install/hashes/holoska.cpp" - "install/hashes/mazuri.cpp" - "install/hashes/spagonia.cpp" - "install/hashes/update.cpp" -) - -set(UNLEASHED_RECOMP_USER_CXX_SOURCES - "user/achievement_data.cpp" - "user/achievement_manager.cpp" - "user/config.cpp" - "user/registry.cpp" - "user/paths.cpp" - "user/persistent_data.cpp" - "user/persistent_storage_manager.cpp" -) - -set(UNLEASHED_RECOMP_MOD_CXX_SOURCES - "mod/mod_loader.cpp" -) - -set(UNLEASHED_RECOMP_THIRDPARTY_SOURCES - "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/imgui/backends/imgui_impl_sdl2.cpp" - "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/imgui/imgui.cpp" - "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/imgui/imgui_demo.cpp" - "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/imgui/imgui_draw.cpp" - "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/imgui/imgui_tables.cpp" - "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/imgui/imgui_widgets.cpp" - "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/implot/implot.cpp" - "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/implot/implot_demo.cpp" - "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/implot/implot_items.cpp" - "${UNLEASHED_RECOMP_TOOLS_ROOT}/XenosRecomp/thirdparty/smol-v/source/smolv.cpp" -) - -set(UNLEASHED_RECOMP_THIRDPARTY_INCLUDES - "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/concurrentqueue" - "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/ddspp" - "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/imgui" - "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/implot" - "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/json/include" - "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/magic_enum/include" - "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/stb" - "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/unordered_dense/include" - "${UNLEASHED_RECOMP_TOOLS_ROOT}/bc_diff" - "${UNLEASHED_RECOMP_TOOLS_ROOT}/XenosRecomp/thirdparty/smol-v/source" -) - -set_source_files_properties(${UNLEASHED_RECOMP_THIRDPARTY_SOURCES} PROPERTIES SKIP_PRECOMPILE_HEADERS ON) - -set(UNLEASHED_RECOMP_CXX_SOURCES - "app.cpp" - "exports.cpp" - "main.cpp" - "misc_impl.cpp" - "preload_executable.cpp" - "sdl_listener.cpp" - "stdafx.cpp" - "version.cpp" - "apple_utils.mm" - - ${UNLEASHED_RECOMP_KERNEL_CXX_SOURCES} - ${UNLEASHED_RECOMP_LOCALE_CXX_SOURCES} - ${UNLEASHED_RECOMP_OS_CXX_SOURCES} - ${UNLEASHED_RECOMP_CPU_CXX_SOURCES} - ${UNLEASHED_RECOMP_GPU_CXX_SOURCES} - ${UNLEASHED_RECOMP_APU_CXX_SOURCES} - ${UNLEASHED_RECOMP_HID_CXX_SOURCES} - ${UNLEASHED_RECOMP_PATCHES_CXX_SOURCES} - ${UNLEASHED_RECOMP_UI_CXX_SOURCES} - ${UNLEASHED_RECOMP_INSTALL_CXX_SOURCES} - ${UNLEASHED_RECOMP_USER_CXX_SOURCES} - ${UNLEASHED_RECOMP_MOD_CXX_SOURCES} - ${UNLEASHED_RECOMP_THIRDPARTY_SOURCES} -) - -include("version.cmake") - -set(VERSION_TXT "${PROJECT_SOURCE_DIR}/res/version.txt") - -# Only show Git info and build type if not Release. -set(SHOW_GIT_INFO_AND_BUILD_TYPE 0) - -if(NOT ${CMAKE_BUILD_TYPE} MATCHES "Release") - set(SHOW_GIT_INFO_AND_BUILD_TYPE 1) -endif() - -if (UNLEASHED_RECOMP_METAL) - set(XCRUN_TOOL "/usr/bin/xcrun") -endif() - -GenerateVersionSources( - OUTPUT_DIR ${PROJECT_SOURCE_DIR} - VERSION_TXT ${VERSION_TXT} - H_TEMPLATE "${PROJECT_SOURCE_DIR}/res/version.h.template" - CXX_TEMPLATE "${PROJECT_SOURCE_DIR}/res/version.cpp.template" - BUILD_TYPE ${CMAKE_BUILD_TYPE} - SHOW_GIT_INFO ${SHOW_GIT_INFO_AND_BUILD_TYPE} - SHOW_BUILD_TYPE ${SHOW_GIT_INFO_AND_BUILD_TYPE} -) - -if(WIN32) - # Create binary version number for Win32 integer attributes. - CreateVersionString( - VERSION_TXT ${VERSION_TXT} - OUTPUT_CSV 1 - OUTPUT_VAR WIN32_VERSION_BINARY - ) - - # Create string version number for Win32 detailed attributes. - CreateVersionString( - VERSION_TXT ${VERSION_TXT} - BUILD_TYPE ${CMAKE_BUILD_TYPE} - SHOW_GIT_INFO ${SHOW_GIT_INFO_AND_BUILD_TYPE} - SHOW_BUILD_TYPE ${SHOW_GIT_INFO_AND_BUILD_TYPE} - OUTPUT_VAR WIN32_VERSION_STRING - ) - - # Set Win32 icon path. - set(WIN32_ICON_PATH "${PROJECT_SOURCE_DIR}/../UnleashedRecompResources/images/game_icon.ico") - - configure_file("res/win32/res.rc.template" "${CMAKE_BINARY_DIR}/res.rc" @ONLY) - add_executable(UnleashedRecomp ${UNLEASHED_RECOMP_CXX_SOURCES} "${CMAKE_BINARY_DIR}/res.rc") - - # Hide console for release configurations. - if(${CMAKE_BUILD_TYPE} MATCHES "Release") - target_link_options(UnleashedRecomp PRIVATE "/SUBSYSTEM:WINDOWS" "/ENTRY:mainCRTStartup") - endif() -elseif(APPLE) - # Create version number for app bundle. - CreateVersionString( - VERSION_TXT ${VERSION_TXT} - OUTPUT_VAR MACOS_BUNDLE_VERSION - ) - - set(IOS_BUNDLE_VERSION ${MACOS_BUNDLE_VERSION}) - - add_executable(UnleashedRecomp MACOSX_BUNDLE - ${UNLEASHED_RECOMP_CXX_SOURCES} - res/macos/game_icon.icns - ) - set_source_files_properties(res/macos/game_icon.icns PROPERTIES - MACOSX_PACKAGE_LOCATION Resources) - set_target_properties(UnleashedRecomp PROPERTIES - OUTPUT_NAME "Unleashed Recompiled" - MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/res/macos/MacOSXBundleInfo.plist.in - MACOSX_BUNDLE_GUI_IDENTIFIER hedge-dev.UnleashedRecomp - MACOSX_BUNDLE_BUNDLE_NAME "Unleashed Recompiled" - MACOSX_BUNDLE_BUNDLE_VERSION ${MACOS_BUNDLE_VERSION} - MACOSX_BUNDLE_SHORT_VERSION_STRING ${MACOS_BUNDLE_VERSION} - MACOSX_BUNDLE_ICON_FILE "game_icon.icns" - MACOSX_DEPLOYMENT_TARGET "${CMAKE_OSX_DEPLOYMENT_TARGET}" - ) - - if(CMAKE_SYSTEM_NAME STREQUAL "iOS") - set_target_properties(UnleashedRecomp PROPERTIES - EXCLUDE_FROM_ALL TRUE - EXCLUDE_FROM_DEFAULT_BUILD TRUE - ) - endif() - - if(CMAKE_SYSTEM_NAME STREQUAL "iOS") - add_executable(UnleashedRecompIOSLauncher MACOSX_BUNDLE - ${UNLEASHED_RECOMP_CXX_SOURCES} - "ios/launcher_main.mm" - ) - set_target_properties(UnleashedRecompIOSLauncher PROPERTIES - OUTPUT_NAME "Unleashed Recompiled iOS" - MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/res/ios/iOSBundleInfo.plist.in - MACOSX_BUNDLE_GUI_IDENTIFIER hedge-dev.UnleashedRecomp.iOSLauncher - MACOSX_BUNDLE_BUNDLE_NAME "Unleashed Recompiled" - MACOSX_BUNDLE_BUNDLE_VERSION ${IOS_BUNDLE_VERSION} - MACOSX_BUNDLE_SHORT_VERSION_STRING ${IOS_BUNDLE_VERSION} - MACOSX_DEPLOYMENT_TARGET "${CMAKE_OSX_DEPLOYMENT_TARGET}" - ) - - set_target_properties(UnleashedRecompIOSLauncher PROPERTIES - OUTPUT_NAME "Unleashed Recompiled iOS" - MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/res/ios/iOSBundleInfo.plist.in - MACOSX_BUNDLE_GUI_IDENTIFIER hedge-dev.UnleashedRecomp.iOSLauncher - MACOSX_BUNDLE_BUNDLE_NAME "Unleashed Recompiled" - MACOSX_BUNDLE_BUNDLE_VERSION ${IOS_BUNDLE_VERSION} - MACOSX_BUNDLE_SHORT_VERSION_STRING ${IOS_BUNDLE_VERSION} - XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2" - XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${CMAKE_OSX_DEPLOYMENT_TARGET}" - ) - - target_compile_definitions(UnleashedRecompIOSLauncher PRIVATE - UNLEASHED_RECOMP_IOS_LAUNCHER - ) - - set(MVK_FRAMEWORK_PATH "Frameworks/MoltenVK.framework") - set(MVK_ICD_PATH "vulkan/icd.d") - - set(MVK_APP_DIR "$") - set(MVK_FRAMEWORK_DST "${MVK_APP_DIR}/${MVK_FRAMEWORK_PATH}") - set(MVK_ICD_DST "${MVK_APP_DIR}/${MVK_ICD_PATH}") - - set_target_properties(UnleashedRecompIOSLauncher PROPERTIES - BUILD_RPATH "@executable_path/Frameworks" - INSTALL_RPATH "@executable_path/Frameworks" - ) - - set(MVK_ICD_SRC "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/MoltenVK/MoltenVK/MoltenVK/icd/MoltenVK_icd.json") - - set(MVK_FRAMEWORK_SRC - "${CMAKE_BINARY_DIR}/thirdparty/MoltenVK/MoltenVK.framework" - ) - - add_custom_command( - TARGET UnleashedRecompIOSLauncher POST_BUILD - COMMAND ${CMAKE_COMMAND} -E make_directory "${MVK_FRAMEWORK_DST}" - COMMAND ${CMAKE_COMMAND} -E copy_directory - "${MVK_FRAMEWORK_SRC}" - "${MVK_FRAMEWORK_DST}" - COMMENT "Copying MoltenVK.framework into iOS app bundle" - ) - - add_custom_command( - TARGET UnleashedRecompIOSLauncher POST_BUILD - COMMAND ${CMAKE_COMMAND} -E make_directory "${MVK_APP_DIR}/vulkan/icd.d" - COMMAND ${CMAKE_COMMAND} -E copy - "${MVK_ICD_SRC}" - "${MVK_APP_DIR}/vulkan/icd.d/MoltenVK_icd.json" - COMMENT "Copying MoltenVK ICD" - ) - - add_dependencies(UnleashedRecompIOSLauncher MoltenVK) - endif() - - # Linking with MoltenVK directly would prevent using the system Vulkan loader to load with debug layers. - # Instead, copy the MoltenVK dylib to the app bundle along with an ICD file for the loader to find it. - # In the event the loader is not installed, the MoltenVK dylib can still be picked up directly in the app bundle. - set(MVK_BUNDLED_PATH "Resources/vulkan/icd.d") - set(MVK_DST "${CMAKE_CURRENT_BINARY_DIR}/Unleashed Recompiled.app/Contents/${MVK_BUNDLED_PATH}") - set_property(TARGET UnleashedRecomp APPEND PROPERTY BUILD_RPATH "@executable_path/../${MVK_BUNDLED_PATH}") - - set(MVK_ICD_SRC "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/MoltenVK/MoltenVK/MoltenVK/icd/MoltenVK_icd.json") - set(MVK_ICD_DST "${MVK_DST}/MoltenVK_icd.json") - set(MVK_DYLIB_SRC "${CMAKE_BINARY_DIR}/thirdparty/MoltenVK/MoltenVK.framework/MoltenVK") - set(MVK_DYLIB_DST "${MVK_DST}/libMoltenVK.dylib") - - add_custom_command( - OUTPUT ${MVK_DST} - COMMAND ${CMAKE_COMMAND} -E make_directory ${MVK_DST}) - add_custom_command( - OUTPUT ${MVK_ICD_DST} - DEPENDS ${MVK_ICD_SRC} ${MVK_DST} - COMMAND ${CMAKE_COMMAND} -E copy ${MVK_ICD_SRC} ${MVK_ICD_DST}) - add_custom_command( - OUTPUT ${MVK_DYLIB_DST} - DEPENDS ${MVK_DYLIB_SRC} ${MVK_DST} - COMMAND ${CMAKE_COMMAND} -E copy ${MVK_DYLIB_SRC} ${MVK_DYLIB_DST}) - add_custom_target(CopyMoltenVK DEPENDS ${MVK_ICD_DST} ${MVK_DYLIB_DST}) - add_dependencies(CopyMoltenVK MoltenVK) - add_dependencies(UnleashedRecomp CopyMoltenVK) -else() - add_executable(UnleashedRecomp ${UNLEASHED_RECOMP_CXX_SOURCES}) -endif() - -if(UNLEASHED_RECOMP_FLATPAK) - target_compile_definitions(UnleashedRecomp PRIVATE - "UNLEASHED_RECOMP_FLATPAK" - "GAME_INSTALL_DIRECTORY=\"/var/data\"" - ) -endif() - -find_package(CURL REQUIRED) -find_package(zstd CONFIG REQUIRED) - -if(UNLEASHED_RECOMP_D3D12) - find_package(directx-headers CONFIG REQUIRED) - find_package(directx12-agility CONFIG REQUIRED) - target_compile_definitions(UnleashedRecomp PRIVATE UNLEASHED_RECOMP_D3D12) - - file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/D3D12) - add_custom_command(TARGET UnleashedRecomp POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy $ $/D3D12 - COMMAND ${CMAKE_COMMAND} -E copy $ $/D3D12 - COMMAND ${CMAKE_COMMAND} -E copy $ $ - COMMAND ${CMAKE_COMMAND} -E copy $ $ - COMMAND_EXPAND_LISTS - ) - - target_link_libraries(UnleashedRecomp PRIVATE - Microsoft::DirectXShaderCompiler - Microsoft::DXIL - dxgi - ) -endif() - -if (UNLEASHED_RECOMP_METAL) - target_compile_definitions(UnleashedRecomp PRIVATE UNLEASHED_RECOMP_METAL) -endif() - -if (WIN32) - target_link_libraries(UnleashedRecomp PRIVATE - comctl32 - dwmapi - ntdll - Shcore - Synchronization - winmm - windowsapp - ) -endif() - -set(UNLEASHED_RECOMP_LINK_LIBS - fmt::fmt - zstd::libzstd - msdf-atlas-gen::msdf-atlas-gen - nfd::nfd - o1heap - XenonUtils - SDL2::SDL2-static - SDL2_mixer - tomlplusplus::tomlplusplus - UnleashedRecompLib - xxHash::xxhash - CURL::libcurl - plume -) - -if(CMAKE_SYSTEM_NAME STREQUAL "iOS") - list(APPEND UNLEASHED_RECOMP_LINK_LIBS "-framework UniformTypeIdentifiers") -endif() - -target_link_libraries(UnleashedRecomp PRIVATE ${UNLEASHED_RECOMP_LINK_LIBS}) - -target_include_directories(UnleashedRecomp PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR} - "${CMAKE_CURRENT_SOURCE_DIR}/api" - ${UNLEASHED_RECOMP_THIRDPARTY_INCLUDES} -) - -if(CMAKE_SYSTEM_NAME MATCHES "Linux") - find_package(X11 REQUIRED) - target_include_directories(UnleashedRecomp PRIVATE ${X11_INCLUDE_DIR}) - target_link_libraries(UnleashedRecomp PRIVATE ${X11_LIBRARIES}) -endif() - -target_precompile_headers(UnleashedRecomp PUBLIC ${UNLEASHED_RECOMP_PRECOMPILED_HEADERS}) - -if(TARGET UnleashedRecompIOSLauncher) - target_link_libraries(UnleashedRecompIOSLauncher PRIVATE ${UNLEASHED_RECOMP_LINK_LIBS}) - target_include_directories(UnleashedRecompIOSLauncher PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR} - "${CMAKE_CURRENT_SOURCE_DIR}/api" - ${UNLEASHED_RECOMP_THIRDPARTY_INCLUDES} - ) - target_precompile_headers(UnleashedRecompIOSLauncher PUBLIC ${UNLEASHED_RECOMP_PRECOMPILED_HEADERS}) -endif() - -# If DXC tool not provided, try to pick up vendored host DXC (used for shader compilation) -if(NOT DEFINED DIRECTX_DXC_TOOL) - set(_dxc_vendor_dir "${CMAKE_SOURCE_DIR}/tools/XenosRecomp/thirdparty/dxc-bin") - - if(EXISTS "${_dxc_vendor_dir}") - if(DEFINED CMAKE_HOST_SYSTEM_PROCESSOR) - set(_dxc_arch ${CMAKE_HOST_SYSTEM_PROCESSOR}) - elseif(DEFINED CMAKE_SYSTEM_PROCESSOR) - set(_dxc_arch ${CMAKE_SYSTEM_PROCESSOR}) - else() - set(_dxc_arch "x64") - endif() - - string(TOLOWER "${_dxc_arch}" _dxc_arch) - set(_dxc_bin "${_dxc_vendor_dir}/bin/${_dxc_arch}/dxc-macos") - set(_dxc_libdir "${_dxc_vendor_dir}/lib/${_dxc_arch}") - - if(EXISTS "${_dxc_bin}") - set(DIRECTX_DXC_TOOL "DYLD_LIBRARY_PATH=${_dxc_libdir}" "${_dxc_bin}" CACHE INTERNAL "Location of the dxc tool for shader compilation") - message(STATUS "Using vendored DXC: ${_dxc_bin}") - endif() - endif() -endif() - -function(compile_shader FILE_PATH TARGET_NAME) - set(HLSL_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/hlsl/${FILE_PATH}.hlsl) - set(MSL_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/msl/${FILE_PATH}.metal) - cmake_path(GET HLSL_FILE_PATH STEM HLSL_NAME) - cmake_path(GET MSL_FILE_PATH STEM MSL_NAME) - if (UNLEASHED_RECOMP_METAL) - add_custom_command( - OUTPUT ${MSL_FILE_PATH}.ir - COMMAND ${XCRUN_TOOL} -sdk macosx metal -o ${MSL_FILE_PATH}.ir -c ${MSL_FILE_PATH} -D__air__ -frecord-sources -gline-tables-only - DEPENDS ${MSL_FILE_PATH} - ) - add_custom_command( - OUTPUT ${MSL_FILE_PATH}.metallib - COMMAND ${XCRUN_TOOL} -sdk macosx metallib -o ${MSL_FILE_PATH}.metallib ${MSL_FILE_PATH}.ir - DEPENDS ${MSL_FILE_PATH}.ir - ) - BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${MSL_FILE_PATH}.metallib" DEST_FILE "${MSL_FILE_PATH}.metallib" ARRAY_NAME "g_${MSL_NAME}_air") - endif() - if (UNLEASHED_RECOMP_D3D12) - add_custom_command( - OUTPUT ${HLSL_FILE_PATH}.dxil.h - COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -Wno-ignored-attributes -E shaderMain -Fh ${HLSL_FILE_PATH}.dxil.h ${HLSL_FILE_PATH} -Vn g_${HLSL_NAME}_dxil - DEPENDS ${HLSL_FILE_PATH} - ) - target_sources(UnleashedRecomp PRIVATE ${HLSL_FILE_PATH}.dxil.h) - endif() - - add_custom_command( - OUTPUT ${HLSL_FILE_PATH}.spirv.h - COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -spirv -fvk-use-dx-layout ${ARGN} -E shaderMain -Fh ${HLSL_FILE_PATH}.spirv.h ${HLSL_FILE_PATH} -Vn g_${HLSL_NAME}_spirv - DEPENDS ${HLSL_FILE_PATH} - ) - target_sources(UnleashedRecomp PRIVATE ${HLSL_FILE_PATH}.spirv.h) -endfunction() - -function(compile_vertex_shader FILE_PATH) - compile_shader(${FILE_PATH} vs_6_0 -fvk-invert-y -DUNLEASHED_RECOMP) -endfunction() - -function(compile_pixel_shader FILE_PATH) - compile_shader(${FILE_PATH} ps_6_0 -DUNLEASHED_RECOMP) -endfunction() - -compile_pixel_shader(blend_color_alpha_ps) -compile_vertex_shader(copy_vs) -compile_pixel_shader(copy_color_ps) -compile_pixel_shader(copy_depth_ps) -compile_pixel_shader(csd_filter_ps) -compile_vertex_shader(csd_no_tex_vs) -compile_vertex_shader(csd_vs) -compile_pixel_shader(enhanced_motion_blur_ps) -compile_pixel_shader(gaussian_blur_3x3) -compile_pixel_shader(gaussian_blur_5x5) -compile_pixel_shader(gaussian_blur_7x7) -compile_pixel_shader(gaussian_blur_9x9) -compile_pixel_shader(gamma_correction_ps) -compile_pixel_shader(imgui_ps) -compile_vertex_shader(imgui_vs) -compile_pixel_shader(movie_ps) -compile_vertex_shader(movie_vs) -compile_pixel_shader(resolve_msaa_color_2x) -compile_pixel_shader(resolve_msaa_color_4x) -compile_pixel_shader(resolve_msaa_color_8x) -compile_pixel_shader(resolve_msaa_depth_2x) -compile_pixel_shader(resolve_msaa_depth_4x) -compile_pixel_shader(resolve_msaa_depth_8x) - -set(RESOURCES_SOURCE_PATH "${PROJECT_SOURCE_DIR}/../UnleashedRecompResources") -set(RESOURCES_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/res") - -# # Miscellaneous ## -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/bc_diff/button_bc_diff.bin" DEST_FILE "${RESOURCES_OUTPUT_PATH}/bc_diff/button_bc_diff.bin" ARRAY_NAME "g_button_bc_diff" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/font/im_font_atlas.bin" DEST_FILE "${RESOURCES_OUTPUT_PATH}/font/im_font_atlas.bin" ARRAY_NAME "g_im_font_atlas" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/font/im_font_atlas.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/font/im_font_atlas.dds" ARRAY_NAME "g_im_font_atlas_texture" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/achievements_menu/trophy.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/achievements_menu/trophy.dds" ARRAY_NAME "g_trophy" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/controller.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/controller.dds" ARRAY_NAME "g_controller" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/general_window.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/general_window.dds" ARRAY_NAME "g_general_window" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/hedge-dev.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/hedge-dev.dds" ARRAY_NAME "g_hedgedev" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/kbm.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/kbm.dds" ARRAY_NAME "g_kbm" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/select.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/select.dds" ARRAY_NAME "g_select" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/light.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/light.dds" ARRAY_NAME "g_light" COMPRESSION_TYPE "zstd") - -# # Installer ## -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/arrow_circle.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/arrow_circle.dds" ARRAY_NAME "g_arrow_circle" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_001.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_001.dds" ARRAY_NAME "g_install_001" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_002.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_002.dds" ARRAY_NAME "g_install_002" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_003.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_003.dds" ARRAY_NAME "g_install_003" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_004.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_004.dds" ARRAY_NAME "g_install_004" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_005.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_005.dds" ARRAY_NAME "g_install_005" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_006.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_006.dds" ARRAY_NAME "g_install_006" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_007.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_007.dds" ARRAY_NAME "g_install_007" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_008.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_008.dds" ARRAY_NAME "g_install_008" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/miles_electric_icon.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/miles_electric_icon.dds" ARRAY_NAME "g_miles_electric_icon" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/pulse_install.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/pulse_install.dds" ARRAY_NAME "g_pulse_install" COMPRESSION_TYPE "zstd") - -# # Options Menu ## -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/achievement_notifications.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/achievement_notifications.dds" ARRAY_NAME "g_achievement_notifications" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/allow_background_input_ps.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/allow_background_input_ps.dds" ARRAY_NAME "g_allow_background_input_ps" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/allow_background_input_xb.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/allow_background_input_xb.dds" ARRAY_NAME "g_allow_background_input_xb" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/antialiasing_none.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/antialiasing_none.dds" ARRAY_NAME "g_antialiasing_none" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/antialiasing_2x.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/antialiasing_2x.dds" ARRAY_NAME "g_antialiasing_2x" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/antialiasing_4x.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/antialiasing_4x.dds" ARRAY_NAME "g_antialiasing_4x" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/antialiasing_8x.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/antialiasing_8x.dds" ARRAY_NAME "g_antialiasing_8x" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/aspect_ratio.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/aspect_ratio.dds" ARRAY_NAME "g_aspect_ratio" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/battle_theme.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/battle_theme.dds" ARRAY_NAME "g_battle_theme" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/brightness.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/brightness.dds" ARRAY_NAME "g_brightness" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/channel_stereo.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/channel_stereo.dds" ARRAY_NAME "g_channel_stereo" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/channel_surround.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/channel_surround.dds" ARRAY_NAME "g_channel_surround" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/control_tutorial_ps.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/control_tutorial_ps.dds" ARRAY_NAME "g_control_tutorial_ps" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/control_tutorial_xb.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/control_tutorial_xb.dds" ARRAY_NAME "g_control_tutorial_xb" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/controller_icons.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/controller_icons.dds" ARRAY_NAME "g_controller_icons" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/default.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/default.dds" ARRAY_NAME "g_default" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/effects_volume.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/effects_volume.dds" ARRAY_NAME "g_effects_volume" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/fps.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/fps.dds" ARRAY_NAME "g_fps" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/fullscreen.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/fullscreen.dds" ARRAY_NAME "g_fullscreen" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/gi_texture_filtering_bilinear.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/gi_texture_filtering_bilinear.dds" ARRAY_NAME "g_gi_texture_filtering_bilinear" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/gi_texture_filtering_bicubic.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/gi_texture_filtering_bicubic.dds" ARRAY_NAME "g_gi_texture_filtering_bicubic" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/hints.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/hints.dds" ARRAY_NAME "g_hints" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/horizontal_camera.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/horizontal_camera.dds" ARRAY_NAME "g_horizontal_camera" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/language.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/language.dds" ARRAY_NAME "g_language" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/master_volume.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/master_volume.dds" ARRAY_NAME "g_master_volume" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/monitor.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/monitor.dds" ARRAY_NAME "g_monitor" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/motion_blur_off.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/motion_blur_off.dds" ARRAY_NAME "g_motion_blur_off" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/motion_blur_original.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/motion_blur_original.dds" ARRAY_NAME "g_motion_blur_original" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/motion_blur_enhanced.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/motion_blur_enhanced.dds" ARRAY_NAME "g_motion_blur_enhanced" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/movie_scale_fit.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/movie_scale_fit.dds" ARRAY_NAME "g_movie_scale_fit" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/movie_scale_fill.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/movie_scale_fill.dds" ARRAY_NAME "g_movie_scale_fill" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/music_attenuation.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/music_attenuation.dds" ARRAY_NAME "g_music_attenuation" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/music_volume.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/music_volume.dds" ARRAY_NAME "g_music_volume" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/shadow_resolution_x512.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/shadow_resolution_x512.dds" ARRAY_NAME "g_shadow_resolution_x512" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/shadow_resolution_x1024.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/shadow_resolution_x1024.dds" ARRAY_NAME "g_shadow_resolution_x1024" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/shadow_resolution_x2048.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/shadow_resolution_x2048.dds" ARRAY_NAME "g_shadow_resolution_x2048" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/shadow_resolution_x4096.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/shadow_resolution_x4096.dds" ARRAY_NAME "g_shadow_resolution_x4096" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/shadow_resolution_x8192.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/shadow_resolution_x8192.dds" ARRAY_NAME "g_shadow_resolution_x8192" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/time_transition_ps.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/time_transition_ps.dds" ARRAY_NAME "g_time_of_day_transition_playstation" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/time_transition_xb.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/time_transition_xb.dds" ARRAY_NAME "g_time_of_day_transition_xbox" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/transparency_antialiasing_false.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/transparency_antialiasing_false.dds" ARRAY_NAME "g_transparency_antialiasing_false" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/transparency_antialiasing_true.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/transparency_antialiasing_true.dds" ARRAY_NAME "g_transparency_antialiasing_true" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/ui_alignment_centre.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/ui_alignment_centre.dds" ARRAY_NAME "g_ui_alignment_centre" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/ui_alignment_edge.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/ui_alignment_edge.dds" ARRAY_NAME "g_ui_alignment_edge" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/vertical_camera.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/vertical_camera.dds" ARRAY_NAME "g_vertical_camera" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/voice_language.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/voice_language.dds" ARRAY_NAME "g_voice_language" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/vibration_ps.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/vibration_ps.dds" ARRAY_NAME "g_vibration_ps" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/vibration_xb.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/vibration_xb.dds" ARRAY_NAME "g_vibration_xb" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/vsync_on.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/vsync_on.dds" ARRAY_NAME "g_vsync_on" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/vsync_off.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/vsync_off.dds" ARRAY_NAME "g_vsync_off" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/window_size.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/window_size.dds" ARRAY_NAME "g_window_size" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/xbox_color_correction.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/xbox_color_correction.dds" ARRAY_NAME "g_xbox_color_correction" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/miles_electric.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/miles_electric.dds" ARRAY_NAME "g_miles_electric" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/options_static.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/options_static.dds" ARRAY_NAME "g_options_static" COMPRESSION_TYPE "zstd") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/options_static_flash.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/options_static_flash.dds" ARRAY_NAME "g_options_static_flash" COMPRESSION_TYPE "zstd") - -## Game Icon ## -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/game_icon.bmp" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/game_icon.bmp" ARRAY_NAME "g_game_icon") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/game_icon_night.bmp" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/game_icon_night.bmp" ARRAY_NAME "g_game_icon_night") - -## Audio ## -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/music/installer.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/music/installer.ogg" ARRAY_NAME "g_installer_music") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/sys_worldmap_cursor.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/sys_worldmap_cursor.ogg" ARRAY_NAME "g_sys_worldmap_cursor") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/sys_worldmap_finaldecide.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/sys_worldmap_finaldecide.ogg" ARRAY_NAME "g_sys_worldmap_finaldecide") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/sys_actstg_pausecansel.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/sys_actstg_pausecansel.ogg" ARRAY_NAME "g_sys_actstg_pausecansel") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/sys_actstg_pausecursor.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/sys_actstg_pausecursor.ogg" ARRAY_NAME "g_sys_actstg_pausecursor") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/sys_actstg_pausedecide.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/sys_actstg_pausedecide.ogg" ARRAY_NAME "g_sys_actstg_pausedecide") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/sys_actstg_pausewinclose.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/sys_actstg_pausewinclose.ogg" ARRAY_NAME "g_sys_actstg_pausewinclose") -BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/sys_actstg_pausewinopen.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/sys_actstg_pausewinopen.ogg" ARRAY_NAME "g_sys_actstg_pausewinopen") +project("UnleashedRecomp") + +if(WIN32) + option(UNLEASHED_RECOMP_D3D12 "Add D3D12 support for rendering" ON) +endif() + +if(APPLE) + option(UNLEASHED_RECOMP_METAL "Add Metal support for rendering" ON) +endif() + +if(CMAKE_SYSTEM_NAME MATCHES "Linux") + option(UNLEASHED_RECOMP_FLATPAK "Configure the build for Flatpak compatibility." OFF) +endif() + +function(BIN2C) + cmake_parse_arguments(BIN2C_ARGS "" "TARGET_OBJ;SOURCE_FILE;DEST_FILE;ARRAY_NAME;COMPRESSION_TYPE" "" ${ARGN}) + + if(NOT BIN2C_ARGS_TARGET_OBJ) + message(FATAL_ERROR "TARGET_OBJ not specified.") + endif() + + if(NOT BIN2C_ARGS_SOURCE_FILE) + message(FATAL_ERROR "SOURCE_FILE not specified.") + endif() + + if(NOT BIN2C_ARGS_DEST_FILE) + set(BIN2C_ARGS_DEST_FILE "${BIN2C_ARGS_SOURCE_FILE}") + endif() + + if(NOT BIN2C_ARGS_COMPRESSION_TYPE) + set(BIN2C_ARGS_COMPRESSION_TYPE "none") + endif() + + if(NOT CMAKE_CROSSCOMPILING) + add_custom_command(OUTPUT "${BIN2C_ARGS_DEST_FILE}.c" + COMMAND $ "${BIN2C_ARGS_SOURCE_FILE}" "${BIN2C_ARGS_ARRAY_NAME}" "${BIN2C_ARGS_COMPRESSION_TYPE}" "${BIN2C_ARGS_DEST_FILE}.c" "${BIN2C_ARGS_DEST_FILE}.h" + DEPENDS "${BIN2C_ARGS_SOURCE_FILE}" + BYPRODUCTS "${BIN2C_ARGS_DEST_FILE}.h" + COMMENT "Generating binary header for ${BIN2C_ARGS_SOURCE_FILE}..." + ) + else() + # When cross-compiling, build a host-native file_to_c out-of-tree and invoke it + set(HOST_FILE_TO_C_BUILD_DIR "${CMAKE_BINARY_DIR}/host-tools/file_to_c") + set(HOST_FILE_TO_C_BIN "${HOST_FILE_TO_C_BUILD_DIR}/file_to_c") + + add_custom_command(OUTPUT "${BIN2C_ARGS_DEST_FILE}.c" + COMMAND ${CMAKE_COMMAND} -S "${CMAKE_SOURCE_DIR}/tools/file_to_c" -B "${HOST_FILE_TO_C_BUILD_DIR}" + -G "${CMAKE_GENERATOR}" + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/host-tools/install + COMMAND ${CMAKE_COMMAND} --build "${HOST_FILE_TO_C_BUILD_DIR}" --config ${CMAKE_BUILD_TYPE} + COMMAND "${HOST_FILE_TO_C_BIN}" "${BIN2C_ARGS_SOURCE_FILE}" "${BIN2C_ARGS_ARRAY_NAME}" "${BIN2C_ARGS_COMPRESSION_TYPE}" "${BIN2C_ARGS_DEST_FILE}.c" "${BIN2C_ARGS_DEST_FILE}.h" + DEPENDS "${BIN2C_ARGS_SOURCE_FILE}" + BYPRODUCTS "${BIN2C_ARGS_DEST_FILE}.h" + COMMENT "Cross: building host file_to_c and generating binary header for ${BIN2C_ARGS_SOURCE_FILE}..." + USES_TERMINAL + ) + endif() + + set(_bin2c_target ${BIN2C_ARGS_TARGET_OBJ}) + + if(CMAKE_SYSTEM_NAME STREQUAL "iOS" AND TARGET UnleashedRecompIOSLauncher) + set(_bin2c_target UnleashedRecompIOSLauncher) + endif() + + set_source_files_properties(${BIN2C_ARGS_DEST_FILE}.c PROPERTIES SKIP_PRECOMPILE_HEADERS ON) + target_sources(${_bin2c_target} PRIVATE ${BIN2C_ARGS_DEST_FILE}.c) +endfunction() + +add_compile_options( + -fno-strict-aliasing + -Wno-switch + -Wno-unused-function + -Wno-unused-variable + -Wno-unused-but-set-variable + -Wno-void-pointer-to-int-cast + -Wno-int-to-void-pointer-cast + -Wno-invalid-offsetof + -Wno-null-arithmetic + -Wno-null-conversion + -Wno-tautological-undefined-compare +) + +if(WIN32) + add_compile_options(/fp:strict) +else() + add_compile_options(-ffp-model=strict) +endif() + +add_compile_definitions( + SDL_MAIN_HANDLED + _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR # Microsoft wtf? + _CRT_SECURE_NO_WARNINGS) + +set(UNLEASHED_RECOMP_PRECOMPILED_HEADERS + "stdafx.h" +) + +set(UNLEASHED_RECOMP_KERNEL_CXX_SOURCES + "kernel/imports.cpp" + "kernel/xdm.cpp" + "kernel/heap.cpp" + "kernel/memory.cpp" + "kernel/xam.cpp" + "kernel/io/file_system.cpp" +) + +set(UNLEASHED_RECOMP_LOCALE_CXX_SOURCES + "locale/config_locale.cpp" + "locale/locale.cpp" +) + +if(WIN32) + set(UNLEASHED_RECOMP_OS_CXX_SOURCES + "os/win32/logger_win32.cpp" + "os/win32/media_win32.cpp" + "os/win32/process_win32.cpp" + "os/win32/user_win32.cpp" + "os/win32/version_win32.cpp" + ) +elseif(CMAKE_SYSTEM_NAME MATCHES "Linux") + set(UNLEASHED_RECOMP_OS_CXX_SOURCES + "os/linux/logger_linux.cpp" + "os/linux/media_linux.cpp" + "os/linux/process_linux.cpp" + "os/linux/user_linux.cpp" + "os/linux/version_linux.cpp" + ) +elseif(APPLE) + set(UNLEASHED_RECOMP_OS_CXX_SOURCES + "os/macos/logger_macos.cpp" + "os/macos/media_macos.cpp" + "os/macos/process_macos.cpp" + "os/macos/user_macos.cpp" + "os/macos/version_macos.cpp" + ) +endif() + +set(UNLEASHED_RECOMP_CPU_CXX_SOURCES + "cpu/guest_thread.cpp" +) + +set(UNLEASHED_RECOMP_GPU_CXX_SOURCES + "gpu/video.cpp" + "gpu/imgui/imgui_common.cpp" + "gpu/imgui/imgui_font_builder.cpp" + "gpu/imgui/imgui_snapshot.cpp" +) + +set(UNLEASHED_RECOMP_APU_CXX_SOURCES + "apu/audio.cpp" + "apu/embedded_player.cpp" + "apu/driver/sdl2_driver.cpp" +) + +set(UNLEASHED_RECOMP_HID_CXX_SOURCES + "hid/hid.cpp" + "hid/driver/sdl_hid.cpp" +) + +set(UNLEASHED_RECOMP_PATCHES_CXX_SOURCES + "patches/aspect_ratio_patches.cpp" + "patches/audio_patches.cpp" + "patches/camera_patches.cpp" + "patches/CGameModeStageTitle_patches.cpp" + "patches/CHudPause_patches.cpp" + "patches/CTitleStateIntro_patches.cpp" + "patches/CTitleStateMenu_patches.cpp" + "patches/fps_patches.cpp" + "patches/frontend_listener.cpp" + "patches/input_patches.cpp" + "patches/inspire_patches.cpp" + "patches/misc_patches.cpp" + "patches/object_patches.cpp" + "patches/player_patches.cpp" + "patches/resident_patches.cpp" + "patches/video_patches.cpp" +) + +set(UNLEASHED_RECOMP_UI_CXX_SOURCES + "ui/achievement_menu.cpp" + "ui/achievement_overlay.cpp" + "ui/black_bar.cpp" + "ui/button_guide.cpp" + "ui/fader.cpp" + "ui/game_window.cpp" + "ui/imgui_utils.cpp" + "ui/installer_wizard.cpp" + "ui/message_window.cpp" + "ui/options_menu.cpp" + "ui/options_menu_thumbnails.cpp" + "ui/tv_static.cpp" +) + +set(UNLEASHED_RECOMP_INSTALL_CXX_SOURCES + "install/installer.cpp" + "install/iso_file_system.cpp" + "install/update_checker.cpp" + "install/xcontent_file_system.cpp" + "install/hashes/apotos_shamar.cpp" + "install/hashes/chunnan.cpp" + "install/hashes/empire_city_adabat.cpp" + "install/hashes/game.cpp" + "install/hashes/holoska.cpp" + "install/hashes/mazuri.cpp" + "install/hashes/spagonia.cpp" + "install/hashes/update.cpp" +) + +set(UNLEASHED_RECOMP_USER_CXX_SOURCES + "user/achievement_data.cpp" + "user/achievement_manager.cpp" + "user/config.cpp" + "user/registry.cpp" + "user/paths.cpp" + "user/persistent_data.cpp" + "user/persistent_storage_manager.cpp" +) + +set(UNLEASHED_RECOMP_MOD_CXX_SOURCES + "mod/mod_loader.cpp" +) + +set(UNLEASHED_RECOMP_THIRDPARTY_SOURCES + "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/imgui/backends/imgui_impl_sdl2.cpp" + "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/imgui/imgui.cpp" + "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/imgui/imgui_demo.cpp" + "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/imgui/imgui_draw.cpp" + "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/imgui/imgui_tables.cpp" + "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/imgui/imgui_widgets.cpp" + "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/implot/implot.cpp" + "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/implot/implot_demo.cpp" + "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/implot/implot_items.cpp" + "${UNLEASHED_RECOMP_TOOLS_ROOT}/XenosRecomp/thirdparty/smol-v/source/smolv.cpp" +) + +set(UNLEASHED_RECOMP_THIRDPARTY_INCLUDES + "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/concurrentqueue" + "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/ddspp" + "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/imgui" + "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/implot" + "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/json/include" + "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/magic_enum/include" + "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/stb" + "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/unordered_dense/include" + "${UNLEASHED_RECOMP_TOOLS_ROOT}/bc_diff" + "${UNLEASHED_RECOMP_TOOLS_ROOT}/XenosRecomp/thirdparty/smol-v/source" +) + +set_source_files_properties(${UNLEASHED_RECOMP_THIRDPARTY_SOURCES} PROPERTIES SKIP_PRECOMPILE_HEADERS ON) + +set(UNLEASHED_RECOMP_CXX_SOURCES + "app.cpp" + "exports.cpp" + "main.cpp" + "misc_impl.cpp" + "preload_executable.cpp" + "sdl_listener.cpp" + "stdafx.cpp" + "version.cpp" + "apple_utils.mm" + + ${UNLEASHED_RECOMP_KERNEL_CXX_SOURCES} + ${UNLEASHED_RECOMP_LOCALE_CXX_SOURCES} + ${UNLEASHED_RECOMP_OS_CXX_SOURCES} + ${UNLEASHED_RECOMP_CPU_CXX_SOURCES} + ${UNLEASHED_RECOMP_GPU_CXX_SOURCES} + ${UNLEASHED_RECOMP_APU_CXX_SOURCES} + ${UNLEASHED_RECOMP_HID_CXX_SOURCES} + ${UNLEASHED_RECOMP_PATCHES_CXX_SOURCES} + ${UNLEASHED_RECOMP_UI_CXX_SOURCES} + ${UNLEASHED_RECOMP_INSTALL_CXX_SOURCES} + ${UNLEASHED_RECOMP_USER_CXX_SOURCES} + ${UNLEASHED_RECOMP_MOD_CXX_SOURCES} + ${UNLEASHED_RECOMP_THIRDPARTY_SOURCES} +) + +include("version.cmake") + +set(VERSION_TXT "${PROJECT_SOURCE_DIR}/res/version.txt") + +# Only show Git info and build type if not Release. +set(SHOW_GIT_INFO_AND_BUILD_TYPE 0) + +if(NOT ${CMAKE_BUILD_TYPE} MATCHES "Release") + set(SHOW_GIT_INFO_AND_BUILD_TYPE 1) +endif() + +if(UNLEASHED_RECOMP_METAL) + set(XCRUN_TOOL "/usr/bin/xcrun") +endif() + +GenerateVersionSources( + OUTPUT_DIR ${PROJECT_SOURCE_DIR} + VERSION_TXT ${VERSION_TXT} + H_TEMPLATE "${PROJECT_SOURCE_DIR}/res/version.h.template" + CXX_TEMPLATE "${PROJECT_SOURCE_DIR}/res/version.cpp.template" + BUILD_TYPE ${CMAKE_BUILD_TYPE} + SHOW_GIT_INFO ${SHOW_GIT_INFO_AND_BUILD_TYPE} + SHOW_BUILD_TYPE ${SHOW_GIT_INFO_AND_BUILD_TYPE} +) + +if(WIN32) + # Create binary version number for Win32 integer attributes. + CreateVersionString( + VERSION_TXT ${VERSION_TXT} + OUTPUT_CSV 1 + OUTPUT_VAR WIN32_VERSION_BINARY + ) + + # Create string version number for Win32 detailed attributes. + CreateVersionString( + VERSION_TXT ${VERSION_TXT} + BUILD_TYPE ${CMAKE_BUILD_TYPE} + SHOW_GIT_INFO ${SHOW_GIT_INFO_AND_BUILD_TYPE} + SHOW_BUILD_TYPE ${SHOW_GIT_INFO_AND_BUILD_TYPE} + OUTPUT_VAR WIN32_VERSION_STRING + ) + + # Set Win32 icon path. + set(WIN32_ICON_PATH "${PROJECT_SOURCE_DIR}/../UnleashedRecompResources/images/game_icon.ico") + + configure_file("res/win32/res.rc.template" "${CMAKE_BINARY_DIR}/res.rc" @ONLY) + add_executable(UnleashedRecomp ${UNLEASHED_RECOMP_CXX_SOURCES} "${CMAKE_BINARY_DIR}/res.rc") + + # Hide console for release configurations. + if(${CMAKE_BUILD_TYPE} MATCHES "Release") + target_link_options(UnleashedRecomp PRIVATE "/SUBSYSTEM:WINDOWS" "/ENTRY:mainCRTStartup") + endif() +elseif(APPLE) + # Create version number for app bundle. + CreateVersionString( + VERSION_TXT ${VERSION_TXT} + OUTPUT_VAR MACOS_BUNDLE_VERSION + ) + + set(IOS_BUNDLE_VERSION ${MACOS_BUNDLE_VERSION}) + + add_executable(UnleashedRecomp MACOSX_BUNDLE + ${UNLEASHED_RECOMP_CXX_SOURCES} + res/macos/game_icon.icns + ) + set_source_files_properties(res/macos/game_icon.icns PROPERTIES + MACOSX_PACKAGE_LOCATION Resources) + set_target_properties(UnleashedRecomp PROPERTIES + OUTPUT_NAME "Unleashed Recompiled" + MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/res/macos/MacOSXBundleInfo.plist.in + MACOSX_BUNDLE_GUI_IDENTIFIER hedge-dev.UnleashedRecomp + MACOSX_BUNDLE_BUNDLE_NAME "Unleashed Recompiled" + MACOSX_BUNDLE_BUNDLE_VERSION ${MACOS_BUNDLE_VERSION} + MACOSX_BUNDLE_SHORT_VERSION_STRING ${MACOS_BUNDLE_VERSION} + MACOSX_BUNDLE_ICON_FILE "game_icon.icns" + MACOSX_DEPLOYMENT_TARGET "${CMAKE_OSX_DEPLOYMENT_TARGET}" + ) + + if(CMAKE_SYSTEM_NAME STREQUAL "iOS") + set_target_properties(UnleashedRecomp PROPERTIES + EXCLUDE_FROM_ALL TRUE + EXCLUDE_FROM_DEFAULT_BUILD TRUE + ) + endif() + + if(CMAKE_SYSTEM_NAME STREQUAL "iOS") + add_executable(UnleashedRecompIOSLauncher MACOSX_BUNDLE + ${UNLEASHED_RECOMP_CXX_SOURCES} + "ios/launcher_main.mm" + ) + set_target_properties(UnleashedRecompIOSLauncher PROPERTIES + OUTPUT_NAME "Unleashed Recompiled iOS" + MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/res/ios/iOSBundleInfo.plist.in + MACOSX_BUNDLE_GUI_IDENTIFIER hedge-dev.UnleashedRecomp.iOSLauncher + MACOSX_BUNDLE_BUNDLE_NAME "Unleashed Recompiled" + MACOSX_BUNDLE_BUNDLE_VERSION ${IOS_BUNDLE_VERSION} + MACOSX_BUNDLE_SHORT_VERSION_STRING ${IOS_BUNDLE_VERSION} + MACOSX_DEPLOYMENT_TARGET "${CMAKE_OSX_DEPLOYMENT_TARGET}" + ) + + set_target_properties(UnleashedRecompIOSLauncher PROPERTIES + OUTPUT_NAME "Unleashed Recompiled iOS" + MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/res/ios/iOSBundleInfo.plist.in + MACOSX_BUNDLE_GUI_IDENTIFIER hedge-dev.UnleashedRecomp.iOSLauncher + MACOSX_BUNDLE_BUNDLE_NAME "Unleashed Recompiled" + MACOSX_BUNDLE_BUNDLE_VERSION ${IOS_BUNDLE_VERSION} + MACOSX_BUNDLE_SHORT_VERSION_STRING ${IOS_BUNDLE_VERSION} + XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2" + XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${CMAKE_OSX_DEPLOYMENT_TARGET}" + ) + + target_compile_definitions(UnleashedRecompIOSLauncher PRIVATE + UNLEASHED_RECOMP_IOS_LAUNCHER + ) + + set(MVK_FRAMEWORK_PATH "Frameworks/MoltenVK.framework") + set(MVK_ICD_PATH "vulkan/icd.d") + + set(MVK_APP_DIR "$") + set(MVK_FRAMEWORK_DST "${MVK_APP_DIR}/${MVK_FRAMEWORK_PATH}") + set(MVK_ICD_DST "${MVK_APP_DIR}/${MVK_ICD_PATH}") + + set_target_properties(UnleashedRecompIOSLauncher PROPERTIES + BUILD_RPATH "@executable_path/Frameworks" + INSTALL_RPATH "@executable_path/Frameworks" + ) + + set(MVK_ICD_SRC "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/MoltenVK/MoltenVK/MoltenVK/icd/MoltenVK_icd.json") + + set(MVK_FRAMEWORK_SRC + "${CMAKE_BINARY_DIR}/thirdparty/MoltenVK/MoltenVK.framework" + ) + + add_custom_command( + TARGET UnleashedRecompIOSLauncher POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory "${MVK_FRAMEWORK_DST}" + COMMAND ${CMAKE_COMMAND} -E copy_directory + "${MVK_FRAMEWORK_SRC}" + "${MVK_FRAMEWORK_DST}" + COMMENT "Copying MoltenVK.framework into iOS app bundle" + ) + + add_custom_command( + TARGET UnleashedRecompIOSLauncher POST_BUILD + COMMAND ${CMAKE_COMMAND} -E make_directory "${MVK_APP_DIR}/vulkan/icd.d" + COMMAND ${CMAKE_COMMAND} -E copy + "${MVK_ICD_SRC}" + "${MVK_APP_DIR}/vulkan/icd.d/MoltenVK_icd.json" + COMMENT "Copying MoltenVK ICD" + ) + + add_dependencies(UnleashedRecompIOSLauncher MoltenVK) + endif() + + # Linking with MoltenVK directly would prevent using the system Vulkan loader to load with debug layers. + # Instead, copy the MoltenVK dylib to the app bundle along with an ICD file for the loader to find it. + # In the event the loader is not installed, the MoltenVK dylib can still be picked up directly in the app bundle. + set(MVK_BUNDLED_PATH "Resources/vulkan/icd.d") + set(MVK_DST "${CMAKE_CURRENT_BINARY_DIR}/Unleashed Recompiled.app/Contents/${MVK_BUNDLED_PATH}") + set_property(TARGET UnleashedRecomp APPEND PROPERTY BUILD_RPATH "@executable_path/../${MVK_BUNDLED_PATH}") + + set(MVK_ICD_SRC "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/MoltenVK/MoltenVK/MoltenVK/icd/MoltenVK_icd.json") + set(MVK_ICD_DST "${MVK_DST}/MoltenVK_icd.json") + set(MVK_DYLIB_SRC "${CMAKE_BINARY_DIR}/thirdparty/MoltenVK/MoltenVK.framework/MoltenVK") + set(MVK_DYLIB_DST "${MVK_DST}/libMoltenVK.dylib") + + add_custom_command( + OUTPUT ${MVK_DST} + COMMAND ${CMAKE_COMMAND} -E make_directory ${MVK_DST}) + add_custom_command( + OUTPUT ${MVK_ICD_DST} + DEPENDS ${MVK_ICD_SRC} ${MVK_DST} + COMMAND ${CMAKE_COMMAND} -E copy ${MVK_ICD_SRC} ${MVK_ICD_DST}) + add_custom_command( + OUTPUT ${MVK_DYLIB_DST} + DEPENDS ${MVK_DYLIB_SRC} ${MVK_DST} + COMMAND ${CMAKE_COMMAND} -E copy ${MVK_DYLIB_SRC} ${MVK_DYLIB_DST}) + add_custom_target(CopyMoltenVK DEPENDS ${MVK_ICD_DST} ${MVK_DYLIB_DST}) + add_dependencies(CopyMoltenVK MoltenVK) + add_dependencies(UnleashedRecomp CopyMoltenVK) +else() + add_executable(UnleashedRecomp ${UNLEASHED_RECOMP_CXX_SOURCES}) +endif() + +if(UNLEASHED_RECOMP_FLATPAK) + target_compile_definitions(UnleashedRecomp PRIVATE + "UNLEASHED_RECOMP_FLATPAK" + "GAME_INSTALL_DIRECTORY=\"/var/data\"" + ) +endif() + +find_package(CURL REQUIRED) +find_package(zstd CONFIG REQUIRED) + +if(UNLEASHED_RECOMP_D3D12) + find_package(directx-headers CONFIG REQUIRED) + find_package(directx12-agility CONFIG REQUIRED) + target_compile_definitions(UnleashedRecomp PRIVATE UNLEASHED_RECOMP_D3D12) + + file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/D3D12) + add_custom_command(TARGET UnleashedRecomp POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy $ $/D3D12 + COMMAND ${CMAKE_COMMAND} -E copy $ $/D3D12 + COMMAND ${CMAKE_COMMAND} -E copy $ $ + COMMAND ${CMAKE_COMMAND} -E copy $ $ + COMMAND_EXPAND_LISTS + ) + + target_link_libraries(UnleashedRecomp PRIVATE + Microsoft::DirectXShaderCompiler + Microsoft::DXIL + dxgi + ) +endif() + +if(UNLEASHED_RECOMP_METAL) + target_compile_definitions(UnleashedRecomp PRIVATE UNLEASHED_RECOMP_METAL) + + if(TARGET UnleashedRecompIOSLauncher) + target_compile_definitions(UnleashedRecompIOSLauncher PRIVATE UNLEASHED_RECOMP_METAL) + endif() +endif() + +if(WIN32) + target_link_libraries(UnleashedRecomp PRIVATE + comctl32 + dwmapi + ntdll + Shcore + Synchronization + winmm + windowsapp + ) +endif() + +set(UNLEASHED_RECOMP_LINK_LIBS + fmt::fmt + zstd::libzstd + msdf-atlas-gen::msdf-atlas-gen + nfd::nfd + o1heap + XenonUtils + SDL2::SDL2-static + SDL2_mixer + tomlplusplus::tomlplusplus + UnleashedRecompLib + xxHash::xxhash + CURL::libcurl + plume +) + +if(CMAKE_SYSTEM_NAME STREQUAL "iOS") + list(APPEND UNLEASHED_RECOMP_LINK_LIBS "-framework UniformTypeIdentifiers") +endif() + +target_link_libraries(UnleashedRecomp PRIVATE ${UNLEASHED_RECOMP_LINK_LIBS}) + +target_include_directories(UnleashedRecomp PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} + "${CMAKE_CURRENT_SOURCE_DIR}/api" + ${UNLEASHED_RECOMP_THIRDPARTY_INCLUDES} +) + +if(CMAKE_SYSTEM_NAME MATCHES "Linux") + find_package(X11 REQUIRED) + target_include_directories(UnleashedRecomp PRIVATE ${X11_INCLUDE_DIR}) + target_link_libraries(UnleashedRecomp PRIVATE ${X11_LIBRARIES}) +endif() + +target_precompile_headers(UnleashedRecomp PUBLIC ${UNLEASHED_RECOMP_PRECOMPILED_HEADERS}) + +if(TARGET UnleashedRecompIOSLauncher) + target_link_libraries(UnleashedRecompIOSLauncher PRIVATE ${UNLEASHED_RECOMP_LINK_LIBS}) + target_include_directories(UnleashedRecompIOSLauncher PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} + "${CMAKE_CURRENT_SOURCE_DIR}/api" + ${UNLEASHED_RECOMP_THIRDPARTY_INCLUDES} + ) + target_precompile_headers(UnleashedRecompIOSLauncher PUBLIC ${UNLEASHED_RECOMP_PRECOMPILED_HEADERS}) +endif() + +# If DXC tool not provided, try to pick up vendored host DXC (used for shader compilation) +if(NOT DEFINED DIRECTX_DXC_TOOL) + set(_dxc_vendor_dir "${CMAKE_SOURCE_DIR}/tools/XenosRecomp/thirdparty/dxc-bin") + + if(EXISTS "${_dxc_vendor_dir}") + if(DEFINED CMAKE_HOST_SYSTEM_PROCESSOR) + set(_dxc_arch ${CMAKE_HOST_SYSTEM_PROCESSOR}) + elseif(DEFINED CMAKE_SYSTEM_PROCESSOR) + set(_dxc_arch ${CMAKE_SYSTEM_PROCESSOR}) + else() + set(_dxc_arch "x64") + endif() + + string(TOLOWER "${_dxc_arch}" _dxc_arch) + set(_dxc_bin "${_dxc_vendor_dir}/bin/${_dxc_arch}/dxc-macos") + set(_dxc_libdir "${_dxc_vendor_dir}/lib/${_dxc_arch}") + + if(EXISTS "${_dxc_bin}") + set(DIRECTX_DXC_TOOL "DYLD_LIBRARY_PATH=${_dxc_libdir}" "${_dxc_bin}" CACHE INTERNAL "Location of the dxc tool for shader compilation") + message(STATUS "Using vendored DXC: ${_dxc_bin}") + endif() + endif() +endif() + +function(compile_shader FILE_PATH TARGET_NAME) + set(_shader_target UnleashedRecomp) + + if(CMAKE_SYSTEM_NAME STREQUAL "iOS" AND TARGET UnleashedRecompIOSLauncher) + set(_shader_target UnleashedRecompIOSLauncher) + endif() + + set(HLSL_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/hlsl/${FILE_PATH}.hlsl) + set(MSL_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/msl/${FILE_PATH}.metal) + cmake_path(GET HLSL_FILE_PATH STEM HLSL_NAME) + cmake_path(GET MSL_FILE_PATH STEM MSL_NAME) + + if(UNLEASHED_RECOMP_METAL) + # Metal shader libraries are platform-specific. CMAKE_OSX_SYSROOT is + # "iphoneos" for device builds, and defaults to the macOS SDK otherwise. + if(CMAKE_SYSTEM_NAME STREQUAL "iOS") + set(_metal_sdk iphoneos) + else() + set(_metal_sdk macosx) + endif() + + add_custom_command( + OUTPUT ${MSL_FILE_PATH}.ir + COMMAND ${XCRUN_TOOL} -sdk ${_metal_sdk} metal -o ${MSL_FILE_PATH}.ir -c ${MSL_FILE_PATH} -D__air__ -frecord-sources -gline-tables-only + DEPENDS ${MSL_FILE_PATH} + ) + add_custom_command( + OUTPUT ${MSL_FILE_PATH}.metallib + COMMAND ${XCRUN_TOOL} -sdk ${_metal_sdk} metallib -o ${MSL_FILE_PATH}.metallib ${MSL_FILE_PATH}.ir + DEPENDS ${MSL_FILE_PATH}.ir + ) + BIN2C(TARGET_OBJ ${_shader_target} SOURCE_FILE "${MSL_FILE_PATH}.metallib" DEST_FILE "${MSL_FILE_PATH}.metallib" ARRAY_NAME "g_${MSL_NAME}_air") + endif() + + if(UNLEASHED_RECOMP_D3D12) + add_custom_command( + OUTPUT ${HLSL_FILE_PATH}.dxil.h + COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -Wno-ignored-attributes -E shaderMain -Fh ${HLSL_FILE_PATH}.dxil.h ${HLSL_FILE_PATH} -Vn g_${HLSL_NAME}_dxil + DEPENDS ${HLSL_FILE_PATH} + ) + target_sources(UnleashedRecomp PRIVATE ${HLSL_FILE_PATH}.dxil.h) + endif() + + add_custom_command( + OUTPUT ${HLSL_FILE_PATH}.spirv.h + COMMAND ${DIRECTX_DXC_TOOL} -T ${TARGET_NAME} -HV 2021 -all-resources-bound -spirv -fvk-use-dx-layout ${ARGN} -E shaderMain -Fh ${HLSL_FILE_PATH}.spirv.h ${HLSL_FILE_PATH} -Vn g_${HLSL_NAME}_spirv + DEPENDS ${HLSL_FILE_PATH} + ) + target_sources(UnleashedRecomp PRIVATE ${HLSL_FILE_PATH}.spirv.h) +endfunction() + +function(compile_vertex_shader FILE_PATH) + compile_shader(${FILE_PATH} vs_6_0 -fvk-invert-y -DUNLEASHED_RECOMP) +endfunction() + +function(compile_pixel_shader FILE_PATH) + compile_shader(${FILE_PATH} ps_6_0 -DUNLEASHED_RECOMP) +endfunction() + +compile_pixel_shader(blend_color_alpha_ps) +compile_vertex_shader(copy_vs) +compile_pixel_shader(copy_color_ps) +compile_pixel_shader(copy_depth_ps) +compile_pixel_shader(csd_filter_ps) +compile_vertex_shader(csd_no_tex_vs) +compile_vertex_shader(csd_vs) +compile_pixel_shader(enhanced_motion_blur_ps) +compile_pixel_shader(gaussian_blur_3x3) +compile_pixel_shader(gaussian_blur_5x5) +compile_pixel_shader(gaussian_blur_7x7) +compile_pixel_shader(gaussian_blur_9x9) +compile_pixel_shader(gamma_correction_ps) +compile_pixel_shader(imgui_ps) +compile_vertex_shader(imgui_vs) +compile_pixel_shader(movie_ps) +compile_vertex_shader(movie_vs) +compile_pixel_shader(resolve_msaa_color_2x) +compile_pixel_shader(resolve_msaa_color_4x) +compile_pixel_shader(resolve_msaa_color_8x) +compile_pixel_shader(resolve_msaa_depth_2x) +compile_pixel_shader(resolve_msaa_depth_4x) +compile_pixel_shader(resolve_msaa_depth_8x) + +set(RESOURCES_SOURCE_PATH "${PROJECT_SOURCE_DIR}/../UnleashedRecompResources") +set(RESOURCES_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/res") + +# # Miscellaneous ## +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/bc_diff/button_bc_diff.bin" DEST_FILE "${RESOURCES_OUTPUT_PATH}/bc_diff/button_bc_diff.bin" ARRAY_NAME "g_button_bc_diff" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/font/im_font_atlas.bin" DEST_FILE "${RESOURCES_OUTPUT_PATH}/font/im_font_atlas.bin" ARRAY_NAME "g_im_font_atlas" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/font/im_font_atlas.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/font/im_font_atlas.dds" ARRAY_NAME "g_im_font_atlas_texture" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/achievements_menu/trophy.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/achievements_menu/trophy.dds" ARRAY_NAME "g_trophy" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/controller.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/controller.dds" ARRAY_NAME "g_controller" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/general_window.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/general_window.dds" ARRAY_NAME "g_general_window" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/hedge-dev.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/hedge-dev.dds" ARRAY_NAME "g_hedgedev" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/kbm.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/kbm.dds" ARRAY_NAME "g_kbm" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/select.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/select.dds" ARRAY_NAME "g_select" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/common/light.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/common/light.dds" ARRAY_NAME "g_light" COMPRESSION_TYPE "zstd") + +# # Installer ## +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/arrow_circle.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/arrow_circle.dds" ARRAY_NAME "g_arrow_circle" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_001.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_001.dds" ARRAY_NAME "g_install_001" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_002.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_002.dds" ARRAY_NAME "g_install_002" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_003.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_003.dds" ARRAY_NAME "g_install_003" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_004.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_004.dds" ARRAY_NAME "g_install_004" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_005.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_005.dds" ARRAY_NAME "g_install_005" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_006.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_006.dds" ARRAY_NAME "g_install_006" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_007.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_007.dds" ARRAY_NAME "g_install_007" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/install_008.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/install_008.dds" ARRAY_NAME "g_install_008" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/miles_electric_icon.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/miles_electric_icon.dds" ARRAY_NAME "g_miles_electric_icon" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/installer/pulse_install.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/installer/pulse_install.dds" ARRAY_NAME "g_pulse_install" COMPRESSION_TYPE "zstd") + +# # Options Menu ## +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/achievement_notifications.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/achievement_notifications.dds" ARRAY_NAME "g_achievement_notifications" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/allow_background_input_ps.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/allow_background_input_ps.dds" ARRAY_NAME "g_allow_background_input_ps" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/allow_background_input_xb.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/allow_background_input_xb.dds" ARRAY_NAME "g_allow_background_input_xb" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/antialiasing_none.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/antialiasing_none.dds" ARRAY_NAME "g_antialiasing_none" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/antialiasing_2x.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/antialiasing_2x.dds" ARRAY_NAME "g_antialiasing_2x" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/antialiasing_4x.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/antialiasing_4x.dds" ARRAY_NAME "g_antialiasing_4x" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/antialiasing_8x.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/antialiasing_8x.dds" ARRAY_NAME "g_antialiasing_8x" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/aspect_ratio.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/aspect_ratio.dds" ARRAY_NAME "g_aspect_ratio" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/battle_theme.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/battle_theme.dds" ARRAY_NAME "g_battle_theme" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/brightness.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/brightness.dds" ARRAY_NAME "g_brightness" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/channel_stereo.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/channel_stereo.dds" ARRAY_NAME "g_channel_stereo" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/channel_surround.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/channel_surround.dds" ARRAY_NAME "g_channel_surround" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/control_tutorial_ps.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/control_tutorial_ps.dds" ARRAY_NAME "g_control_tutorial_ps" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/control_tutorial_xb.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/control_tutorial_xb.dds" ARRAY_NAME "g_control_tutorial_xb" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/controller_icons.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/controller_icons.dds" ARRAY_NAME "g_controller_icons" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/default.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/default.dds" ARRAY_NAME "g_default" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/effects_volume.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/effects_volume.dds" ARRAY_NAME "g_effects_volume" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/fps.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/fps.dds" ARRAY_NAME "g_fps" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/fullscreen.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/fullscreen.dds" ARRAY_NAME "g_fullscreen" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/gi_texture_filtering_bilinear.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/gi_texture_filtering_bilinear.dds" ARRAY_NAME "g_gi_texture_filtering_bilinear" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/gi_texture_filtering_bicubic.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/gi_texture_filtering_bicubic.dds" ARRAY_NAME "g_gi_texture_filtering_bicubic" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/hints.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/hints.dds" ARRAY_NAME "g_hints" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/horizontal_camera.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/horizontal_camera.dds" ARRAY_NAME "g_horizontal_camera" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/language.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/language.dds" ARRAY_NAME "g_language" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/master_volume.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/master_volume.dds" ARRAY_NAME "g_master_volume" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/monitor.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/monitor.dds" ARRAY_NAME "g_monitor" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/motion_blur_off.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/motion_blur_off.dds" ARRAY_NAME "g_motion_blur_off" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/motion_blur_original.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/motion_blur_original.dds" ARRAY_NAME "g_motion_blur_original" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/motion_blur_enhanced.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/motion_blur_enhanced.dds" ARRAY_NAME "g_motion_blur_enhanced" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/movie_scale_fit.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/movie_scale_fit.dds" ARRAY_NAME "g_movie_scale_fit" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/movie_scale_fill.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/movie_scale_fill.dds" ARRAY_NAME "g_movie_scale_fill" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/music_attenuation.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/music_attenuation.dds" ARRAY_NAME "g_music_attenuation" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/music_volume.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/music_volume.dds" ARRAY_NAME "g_music_volume" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/shadow_resolution_x512.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/shadow_resolution_x512.dds" ARRAY_NAME "g_shadow_resolution_x512" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/shadow_resolution_x1024.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/shadow_resolution_x1024.dds" ARRAY_NAME "g_shadow_resolution_x1024" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/shadow_resolution_x2048.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/shadow_resolution_x2048.dds" ARRAY_NAME "g_shadow_resolution_x2048" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/shadow_resolution_x4096.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/shadow_resolution_x4096.dds" ARRAY_NAME "g_shadow_resolution_x4096" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/shadow_resolution_x8192.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/shadow_resolution_x8192.dds" ARRAY_NAME "g_shadow_resolution_x8192" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/time_transition_ps.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/time_transition_ps.dds" ARRAY_NAME "g_time_of_day_transition_playstation" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/time_transition_xb.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/time_transition_xb.dds" ARRAY_NAME "g_time_of_day_transition_xbox" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/transparency_antialiasing_false.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/transparency_antialiasing_false.dds" ARRAY_NAME "g_transparency_antialiasing_false" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/transparency_antialiasing_true.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/transparency_antialiasing_true.dds" ARRAY_NAME "g_transparency_antialiasing_true" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/ui_alignment_centre.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/ui_alignment_centre.dds" ARRAY_NAME "g_ui_alignment_centre" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/ui_alignment_edge.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/ui_alignment_edge.dds" ARRAY_NAME "g_ui_alignment_edge" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/vertical_camera.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/vertical_camera.dds" ARRAY_NAME "g_vertical_camera" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/voice_language.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/voice_language.dds" ARRAY_NAME "g_voice_language" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/vibration_ps.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/vibration_ps.dds" ARRAY_NAME "g_vibration_ps" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/vibration_xb.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/vibration_xb.dds" ARRAY_NAME "g_vibration_xb" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/vsync_on.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/vsync_on.dds" ARRAY_NAME "g_vsync_on" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/vsync_off.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/vsync_off.dds" ARRAY_NAME "g_vsync_off" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/window_size.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/window_size.dds" ARRAY_NAME "g_window_size" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/thumbnails/xbox_color_correction.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/thumbnails/xbox_color_correction.dds" ARRAY_NAME "g_xbox_color_correction" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/miles_electric.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/miles_electric.dds" ARRAY_NAME "g_miles_electric" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/options_static.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/options_static.dds" ARRAY_NAME "g_options_static" COMPRESSION_TYPE "zstd") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/options_menu/options_static_flash.dds" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/options_menu/options_static_flash.dds" ARRAY_NAME "g_options_static_flash" COMPRESSION_TYPE "zstd") + +# # Game Icon ## +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/game_icon.bmp" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/game_icon.bmp" ARRAY_NAME "g_game_icon") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/images/game_icon_night.bmp" DEST_FILE "${RESOURCES_OUTPUT_PATH}/images/game_icon_night.bmp" ARRAY_NAME "g_game_icon_night") + +# # Audio ## +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/music/installer.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/music/installer.ogg" ARRAY_NAME "g_installer_music") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/sys_worldmap_cursor.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/sys_worldmap_cursor.ogg" ARRAY_NAME "g_sys_worldmap_cursor") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/sys_worldmap_finaldecide.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/sys_worldmap_finaldecide.ogg" ARRAY_NAME "g_sys_worldmap_finaldecide") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/sys_actstg_pausecansel.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/sys_actstg_pausecansel.ogg" ARRAY_NAME "g_sys_actstg_pausecansel") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/sys_actstg_pausecursor.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/sys_actstg_pausecursor.ogg" ARRAY_NAME "g_sys_actstg_pausecursor") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/sys_actstg_pausedecide.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/sys_actstg_pausedecide.ogg" ARRAY_NAME "g_sys_actstg_pausedecide") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/sys_actstg_pausewinclose.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/sys_actstg_pausewinclose.ogg" ARRAY_NAME "g_sys_actstg_pausewinclose") +BIN2C(TARGET_OBJ UnleashedRecomp SOURCE_FILE "${RESOURCES_SOURCE_PATH}/sounds/sys_actstg_pausewinopen.ogg" DEST_FILE "${RESOURCES_OUTPUT_PATH}/sounds/sys_actstg_pausewinopen.ogg" ARRAY_NAME "g_sys_actstg_pausewinopen") diff --git a/UnleashedRecomp/cpu/guest_thread.cpp b/UnleashedRecomp/cpu/guest_thread.cpp index 3dbe9152..2ab2d67f 100644 --- a/UnleashedRecomp/cpu/guest_thread.cpp +++ b/UnleashedRecomp/cpu/guest_thread.cpp @@ -3,6 +3,8 @@ #include #include #include +#include +#include #include "ppc_context.h" constexpr size_t PCR_SIZE = 0xAB0; @@ -13,6 +15,29 @@ constexpr size_t TOTAL_SIZE = PCR_SIZE + TLS_SIZE + TEB_SIZE + STACK_SIZE; constexpr size_t TEB_OFFSET = PCR_SIZE + TLS_SIZE; +static std::mutex g_guestThreadRegistryMutex; +static std::unordered_map g_guestThreadRegistry; + +static void RegisterGuestThread(uint32_t guestThreadId) +{ + std::lock_guard lock(g_guestThreadRegistryMutex); + const auto [it, inserted] = g_guestThreadRegistry.emplace( + guestThreadId, GuestThread::GetCurrentThreadId()); + if (!inserted) + { + LOGFN_ERROR( + "SYNC-THREAD-DUPLICATE guestThread=0x{:08X} oldHostThread=0x{:08X} newHostThread=0x{:08X}", + guestThreadId, it->second, GuestThread::GetCurrentThreadId()); + it->second = GuestThread::GetCurrentThreadId(); + } +} + +static void UnregisterGuestThread(uint32_t guestThreadId) +{ + std::lock_guard lock(g_guestThreadRegistryMutex); + g_guestThreadRegistry.erase(guestThreadId); +} + GuestThreadContext::GuestThreadContext(uint32_t cpuNumber) { assert(thread == nullptr); @@ -33,10 +58,13 @@ GuestThreadContext::GuestThreadContext(uint32_t cpuNumber) assert(GetPPCContext() == nullptr); SetPPCContext(ppcContext); + RegisterGuestThread(ppcContext.r13.u32); } GuestThreadContext::~GuestThreadContext() { + UnregisterGuestThread(ppcContext.r13.u32); + ClearPPCContext(); g_userHeap.Free(thread); } @@ -71,7 +99,7 @@ static void* GuestThreadFunc(void* arg) static void GuestThreadFunc(GuestThreadHandle* hThread) { #endif - hThread->suspended.wait(true); + hThread->WaitWhileSuspended(); GuestThread::Start(hThread->params); #ifdef USE_PTHREAD return nullptr; @@ -125,6 +153,35 @@ uint32_t GuestThreadHandle::GetThreadId() const #endif } +void GuestThreadHandle::SetSuspended(bool value) +{ +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + { + std::lock_guard lock(suspendMutex); + suspended.store(value, std::memory_order_release); + } + if (!value) + suspendCondition.notify_all(); +#else + suspended.store(value, std::memory_order_release); + if (!value) + suspended.notify_all(); +#endif +} + +void GuestThreadHandle::WaitWhileSuspended() +{ +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + std::unique_lock lock(suspendMutex); + suspendCondition.wait(lock, [&] + { + return !suspended.load(std::memory_order_acquire); + }); +#else + suspended.wait(true, std::memory_order_acquire); +#endif +} + uint32_t GuestThreadHandle::Wait(uint32_t timeout) { assert(timeout == INFINITE); @@ -173,6 +230,13 @@ uint32_t GuestThread::GetCurrentThreadId() #endif } +uint32_t GuestThread::FindHostThreadId(uint32_t guestThreadId) +{ + std::lock_guard lock(g_guestThreadRegistryMutex); + const auto it = g_guestThreadRegistry.find(guestThreadId); + return it != g_guestThreadRegistry.end() ? it->second : 0; +} + void GuestThread::SetLastError(uint32_t error) { auto* thread = (char*)g_memory.Translate(GetPPCContext()->r13.u32); diff --git a/UnleashedRecomp/cpu/guest_thread.h b/UnleashedRecomp/cpu/guest_thread.h index e12e91a4..ad6810ca 100644 --- a/UnleashedRecomp/cpu/guest_thread.h +++ b/UnleashedRecomp/cpu/guest_thread.h @@ -1,5 +1,6 @@ #pragma once +#include #include // Use pthreads directly on macOS to be able to increase default stack size. @@ -33,6 +34,10 @@ struct GuestThreadHandle : KernelObject { GuestThreadParams params; std::atomic suspended; +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + std::mutex suspendMutex; + std::condition_variable suspendCondition; +#endif #ifdef USE_PTHREAD pthread_t thread; #else @@ -43,6 +48,8 @@ struct GuestThreadHandle : KernelObject ~GuestThreadHandle() override; uint32_t GetThreadId() const; + void SetSuspended(bool value); + void WaitWhileSuspended(); uint32_t Wait(uint32_t timeout) override; }; @@ -53,6 +60,7 @@ struct GuestThread static GuestThreadHandle* Start(const GuestThreadParams& params, uint32_t* threadId); static uint32_t GetCurrentThreadId(); + static uint32_t FindHostThreadId(uint32_t guestThreadId); static void SetLastError(uint32_t error); #ifdef _WIN32 diff --git a/UnleashedRecomp/cpu/ppc_context.h b/UnleashedRecomp/cpu/ppc_context.h index c6a67835..e4981d41 100644 --- a/UnleashedRecomp/cpu/ppc_context.h +++ b/UnleashedRecomp/cpu/ppc_context.h @@ -11,3 +11,8 @@ inline void SetPPCContext(PPCContext& ctx) { g_ppcContext = &ctx; } + +inline void ClearPPCContext() +{ + g_ppcContext = nullptr; +} diff --git a/UnleashedRecomp/gpu/video.cpp b/UnleashedRecomp/gpu/video.cpp index 025471c1..02052766 100644 --- a/UnleashedRecomp/gpu/video.cpp +++ b/UnleashedRecomp/gpu/video.cpp @@ -3,6 +3,7 @@ #include "imgui/imgui_common.h" #include "imgui/imgui_snapshot.h" #include "imgui/imgui_font_builder.h" +#include "os/logger.h" #include #include @@ -199,7 +200,7 @@ struct SharedConstants float alphaThreshold{}; }; -// Depth bias values here are only used when the render device has +// Depth bias values here are only used when the render device has // dynamic depth bias capability enabled. Otherwise, they get unused // and the values get assigned in the pipeline state instead. @@ -448,7 +449,7 @@ static std::vector g_pipelineTaskQueue; static void EnqueuePipelineTask(PipelineTaskType type, const boost::shared_ptr& databaseData) { - // Precompiled pipelines deliberately do not increment + // Precompiled pipelines deliberately do not increment // this counter to overlap the compilation with intro logos. if (type != PipelineTaskType::PrecompilePipelines) ++g_compilingPipelineTaskCount; @@ -516,7 +517,7 @@ struct UploadAllocator buffer.memory = reinterpret_cast(buffer.buffer->map()); buffer.deviceAddress = buffer.buffer->getDeviceAddress(); } - + auto ref = buffer.buffer->at(offset); offset += size; @@ -622,7 +623,7 @@ struct PrimitiveIndexData { case D3DPT_TRIANGLEFAN: primCount = guestPrimCount - 2; - indexCountPerPrimitive = 3; + indexCountPerPrimitive = 3; break; case D3DPT_QUADLIST: primCount = guestPrimCount / 4; @@ -710,8 +711,8 @@ static void DestructTempResources() g_textureDescriptorAllocator.free(texture->descriptorIndex); if (texture->patchedTexture != nullptr) - g_textureDescriptorAllocator.free(texture->patchedTexture->descriptorIndex); - + g_textureDescriptorAllocator.free(texture->patchedTexture->descriptorIndex); + if (texture->recreatedCubeMapTexture != nullptr) g_textureDescriptorAllocator.free(texture->recreatedCubeMapTexture->descriptorIndex); @@ -764,6 +765,7 @@ static void DestructTempResources() static std::thread::id g_presentThreadId = std::this_thread::get_id(); static std::atomic g_readyForCommands; +static std::atomic g_appSuspended = false; PPC_FUNC_IMPL(__imp__sub_824ECA00); PPC_FUNC(sub_824ECA00) @@ -886,7 +888,7 @@ struct RenderCommand uint32_t value; } setRenderState; - struct + struct { GuestResource* resource; } destructResource; @@ -901,31 +903,31 @@ struct RenderCommand GuestBuffer* buffer; } unlockBuffer; - struct + struct { GuestDevice* device; uint32_t flags; GuestTexture* texture; } stretchRect; - struct + struct { GuestSurface* renderTarget; } setRenderTarget; - struct + struct { GuestSurface* depthStencil; } setDepthStencilSurface; - struct + struct { uint32_t flags; float color[4]; float z; } clear; - struct + struct { float x; float y; @@ -935,13 +937,13 @@ struct RenderCommand float maxDepth; } setViewport; - struct + struct { uint32_t index; GuestTexture* texture; } setTexture; - struct + struct { int32_t left; int32_t top; @@ -967,8 +969,8 @@ struct RenderCommand uint8_t* memory; uint32_t index; uint32_t size; - } setVertexShaderConstants; - + } setVertexShaderConstants; + struct { uint8_t* memory; @@ -982,42 +984,42 @@ struct RenderCommand RenderPipeline* pipeline; } addPipeline; - struct + struct { - uint32_t primitiveType; - uint32_t startVertex; + uint32_t primitiveType; + uint32_t startVertex; uint32_t primitiveCount; } drawPrimitive; - struct + struct { uint32_t primitiveType; - int32_t baseVertexIndex; + int32_t baseVertexIndex; uint32_t startIndex; uint32_t primCount; } drawIndexedPrimitive; - struct + struct { uint32_t primitiveType; - uint32_t primitiveCount; + uint32_t primitiveCount; uint8_t* vertexStreamZeroData; uint32_t vertexStreamZeroSize; uint32_t vertexStreamZeroStride; CsdFilterState csdFilterState; } drawPrimitiveUP; - struct + struct { GuestVertexDeclaration* vertexDeclaration; } setVertexDeclaration; - struct + struct { GuestShader* shader; } setVertexShader; - struct + struct { uint32_t index; GuestBuffer* buffer; @@ -1025,12 +1027,12 @@ struct RenderCommand uint32_t stride; } setStreamSource; - struct + struct { GuestBuffer* buffer; } setIndices; - struct + struct { GuestShader* shader; } setPixelShader; @@ -1243,7 +1245,7 @@ static void ProcSetRenderState(const RenderCommand& cmd) { if (g_capabilities.dynamicDepthBias) SetDirtyValue(g_dirtyStates.depthBias, g_slopeScaledDepthBias, *reinterpret_cast(&value)); - else + else SetDirtyValue(g_dirtyStates.pipelineState, g_pipelineState.slopeScaledDepthBias, *reinterpret_cast(&value)); break; @@ -1672,6 +1674,10 @@ static void BeginCommandList() commandList->setGraphicsDescriptorSet(g_textureDescriptorSet.get(), 2); commandList->setGraphicsDescriptorSet(g_samplerDescriptorSet.get(), 3); + if (g_appSuspended.load(std::memory_order_relaxed)) { + g_appSuspended.wait(true, std::memory_order_acquire); + } + g_readyForCommands = true; g_readyForCommands.notify_one(); } @@ -1684,7 +1690,7 @@ static void ApplyLowEndDefault(ConfigDef &configDef, T newDefault, bool &chan configDef = newDefault; changed = true; } - + configDef.DefaultValue = newDefault; } @@ -1697,7 +1703,7 @@ static void ApplyLowEndDefaults() ApplyLowEndDefault(Config::TransparencyAntiAliasing, false, changed); ApplyLowEndDefault(Config::GITextureFiltering, EGITextureFiltering::Bilinear, changed); - if (changed) + if (changed) { Config::Save(); } @@ -1732,7 +1738,7 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry) // If we are attempting to create again after a reboot due to a crash, swap the order. g_backend = (g_backend == Backend::VULKAN) ? Backend::D3D12 : Backend::VULKAN; - // Don't allow redirection to Vulkan if we are retrying after a crash, + // Don't allow redirection to Vulkan if we are retrying after a crash, // so the user can at least boot the game with D3D12 if Vulkan fails to work. allowVulkanRedirection = false; } @@ -1765,7 +1771,7 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry) if (g_device != nullptr) { const RenderDeviceDescription &deviceDescription = g_device->getDescription(); - + #if defined(UNLEASHED_RECOMP_D3D12) if (interfaceFunction == CreateD3D12Interface) { @@ -1795,7 +1801,7 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry) g_device.reset(); g_interface.reset(); - // In case Vulkan fails to initialize, we will try D3D12 again afterwards, + // In case Vulkan fails to initialize, we will try D3D12 again afterwards, // just to get the game to boot. This only really happens in very old Intel GPU drivers. if (g_backend != Backend::VULKAN) { @@ -1937,20 +1943,20 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry) for (auto& acquireSemaphore : g_acquireSemaphores) acquireSemaphore = g_device->createCommandSemaphore(); - + for (auto& renderSemaphore : g_renderSemaphores) renderSemaphore = g_device->createCommandSemaphore(); RenderPipelineLayoutBuilder pipelineLayoutBuilder; pipelineLayoutBuilder.begin(false, true); - + RenderDescriptorSetBuilder descriptorSetBuilder; descriptorSetBuilder.begin(); descriptorSetBuilder.addTexture(0, TEXTURE_DESCRIPTOR_SIZE); descriptorSetBuilder.end(true, TEXTURE_DESCRIPTOR_SIZE); - + g_textureDescriptorSet = descriptorSetBuilder.create(g_device.get()); - + for (size_t i = 0; i < TEXTURE_DESCRIPTOR_NULL_COUNT; i++) { auto& texture = g_blankTextures[i]; @@ -2003,11 +2009,11 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry) pipelineLayoutBuilder.addDescriptorSet(descriptorSetBuilder); pipelineLayoutBuilder.addDescriptorSet(descriptorSetBuilder); pipelineLayoutBuilder.addDescriptorSet(descriptorSetBuilder); - + descriptorSetBuilder.begin(); descriptorSetBuilder.addSampler(0, SAMPLER_DESCRIPTOR_SIZE); descriptorSetBuilder.end(true, SAMPLER_DESCRIPTOR_SIZE); - + g_samplerDescriptorSet = descriptorSetBuilder.create(g_device.get()); auto& [descriptorIndex, sampler] = g_samplerStates[XXH3_64bits(&g_samplerDescs[0], sizeof(RenderSamplerDesc))]; descriptorIndex = 1; @@ -2028,7 +2034,7 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry) pipelineLayoutBuilder.addPushConstant(3, 4, 4, RenderShaderStageFlag::PIXEL); // For copy/resolve shaders. } pipelineLayoutBuilder.end(); - + g_pipelineLayout = pipelineLayoutBuilder.create(g_device.get()); g_copyShader = CREATE_SHADER(copy_vs); @@ -2202,7 +2208,7 @@ static uint32_t CreateDevice(uint32_t a1, uint32_t a2, uint32_t a3, uint32_t a4, return 0; } -static void DestructResource(GuestResource* resource) +static void DestructResource(GuestResource* resource) { RenderCommand cmd; cmd.type = RenderCommandType::DestructResource; @@ -2221,7 +2227,7 @@ static uint32_t ComputeTexturePitch(GuestTexture* texture) return (texture->width * RenderFormatSize(texture->format) + PITCH_ALIGNMENT - 1) & ~(PITCH_ALIGNMENT - 1); } -static void LockTextureRect(GuestTexture* texture, uint32_t, GuestLockedRect* lockedRect) +static void LockTextureRect(GuestTexture* texture, uint32_t, GuestLockedRect* lockedRect) { uint32_t pitch = ComputeTexturePitch(texture); uint32_t slicePitch = pitch * texture->height; @@ -2233,7 +2239,7 @@ static void LockTextureRect(GuestTexture* texture, uint32_t, GuestLockedRect* lo lockedRect->bits = g_memory.MapVirtual(texture->mappedMemory); } -static void UnlockTextureRect(GuestTexture* texture) +static void UnlockTextureRect(GuestTexture* texture) { assert(std::this_thread::get_id() == g_presentThreadId); @@ -2360,17 +2366,17 @@ static void UnlockVertexBuffer(GuestBuffer* buffer) UnlockBuffer(buffer); } -static void GetVertexBufferDesc(GuestBuffer* buffer, GuestBufferDesc* desc) +static void GetVertexBufferDesc(GuestBuffer* buffer, GuestBufferDesc* desc) { desc->size = buffer->dataSize; } -static void* LockIndexBuffer(GuestBuffer* buffer, uint32_t, uint32_t, uint32_t flags) +static void* LockIndexBuffer(GuestBuffer* buffer, uint32_t, uint32_t, uint32_t flags) { return LockBuffer(buffer, flags); } -static void UnlockIndexBuffer(GuestBuffer* buffer) +static void UnlockIndexBuffer(GuestBuffer* buffer) { if (buffer->guestFormat == D3DFMT_INDEX32) UnlockBuffer(buffer); @@ -2384,19 +2390,19 @@ static void GetIndexBufferDesc(GuestBuffer* buffer, GuestBufferDesc* desc) desc->size = buffer->dataSize; } -static void GetSurfaceDesc(GuestSurface* surface, GuestSurfaceDesc* desc) +static void GetSurfaceDesc(GuestSurface* surface, GuestSurfaceDesc* desc) { desc->width = surface->width; desc->height = surface->height; } -static void GetVertexDeclaration(GuestVertexDeclaration* vertexDeclaration, GuestVertexElement* vertexElements, be* count) +static void GetVertexDeclaration(GuestVertexDeclaration* vertexDeclaration, GuestVertexElement* vertexElements, be* count) { memcpy(vertexElements, vertexDeclaration->vertexElements.get(), vertexDeclaration->vertexElementCount * sizeof(GuestVertexElement)); *count = vertexDeclaration->vertexElementCount; } -static uint32_t HashVertexDeclaration(uint32_t vertexDeclaration) +static uint32_t HashVertexDeclaration(uint32_t vertexDeclaration) { // Vertex declarations are cached on host side, so the pointer itself can be used. return vertexDeclaration; @@ -2404,7 +2410,7 @@ static uint32_t HashVertexDeclaration(uint32_t vertexDeclaration) static const char *DeviceTypeName(RenderDeviceType type) { - switch (type) + switch (type) { case RenderDeviceType::INTEGRATED: return "Integrated"; @@ -2615,7 +2621,7 @@ static void DrawImGui() io.DisplaySize = { float(Video::s_viewportWidth), float(Video::s_viewportHeight) }; // ImGui doesn't know that we center the screen for specific aspect ratio - // settings, which causes mouse events to not work correctly. To fix this, + // settings, which causes mouse events to not work correctly. To fix this, // we can adjust the mouse events before ImGui processes them. uint32_t width = g_swapChain->getWidth(); uint32_t height = g_swapChain->getHeight(); @@ -2755,7 +2761,7 @@ static void ProcDrawImGui(const RenderCommand& cmd) { case ImGuiCallback::SetGradient: setPushConstants(&pushConstants.boundsMin, &callbackData->setGradient, sizeof(callbackData->setGradient)); - break; + break; case ImGuiCallback::SetShaderModifier: setPushConstants(&pushConstants.shaderModifier, &callbackData->setShaderModifier, sizeof(callbackData->setShaderModifier)); break; @@ -2764,7 +2770,7 @@ static void ProcDrawImGui(const RenderCommand& cmd) break; case ImGuiCallback::SetScale: setPushConstants(&pushConstants.scale, &callbackData->setScale, sizeof(callbackData->setScale)); - break; + break; case ImGuiCallback::SetMarqueeFade: setPushConstants(&pushConstants.boundsMin, &callbackData->setMarqueeFade, sizeof(callbackData->setMarqueeFade)); break; @@ -2840,11 +2846,21 @@ static void ProcDrawImGui(const RenderCommand& cmd) // 4. Loading thread presents and quits. // 5. After the loading thread quits, application also presents. static bool g_pendingWaitOnSwapChain = true; + void Video::HandleApplicationBackgroundState(bool isBackgrounded) { if (isBackgrounded) { + g_appSuspended.store(true, std::memory_order_release); + g_readyForCommands.store(false, std::memory_order_release); g_pendingWaitOnSwapChain = false; + g_swapChainValid = false; + g_dirtyStates.viewport = true; + + Video::WaitForGPU(); + } else { + g_appSuspended.store(false, std::memory_order_release); + g_appSuspended.notify_all(); } } @@ -2866,7 +2882,7 @@ void Video::WaitOnSwapChain() static bool g_shouldPrecompilePipelines; static std::atomic g_executedCommandList; -void Video::Present() +void Video::Present() { g_readyForCommands = false; @@ -2973,7 +2989,7 @@ static void SetRootDescriptor(const UploadAllocation& allocation, size_t index) } static void ProcExecuteCommandList(const RenderCommand& cmd) -{ +{ if (g_swapChainValid) { auto swapChainTexture = g_swapChain->getTexture(g_backBufferIndex); @@ -3084,7 +3100,7 @@ static void ProcBeginCommandList(const RenderCommand& cmd) BeginCommandList(); } -static GuestSurface* GetBackBuffer() +static GuestSurface* GetBackBuffer() { g_backBuffer->AddRef(); return g_backBuffer; @@ -3170,7 +3186,7 @@ static RenderFormat ConvertFormat(uint32_t format) } } -static GuestTexture* CreateTexture(uint32_t width, uint32_t height, uint32_t depth, uint32_t levels, uint32_t usage, uint32_t format, uint32_t pool, uint32_t type) +static GuestTexture* CreateTexture(uint32_t width, uint32_t height, uint32_t depth, uint32_t levels, uint32_t usage, uint32_t format, uint32_t pool, uint32_t type) { const auto texture = g_userHeap.AllocPhysical(type == 17 ? ResourceType::VolumeTexture : ResourceType::Texture); @@ -3222,8 +3238,8 @@ static GuestTexture* CreateTexture(uint32_t width, uint32_t height, uint32_t dep texture->descriptorIndex = g_textureDescriptorAllocator.allocate(); g_textureDescriptorSet->setTexture(texture->descriptorIndex, texture->texture, RenderTextureLayout::SHADER_READ, texture->textureView.get()); - -#ifdef _DEBUG + +#ifdef _DEBUG texture->texture->setName(fmt::format("Texture {:X}", g_memory.MapVirtual(texture))); #endif @@ -3235,12 +3251,12 @@ static RenderHeapType GetBufferHeapType() return g_capabilities.gpuUploadHeap ? RenderHeapType::GPU_UPLOAD : RenderHeapType::DEFAULT; } -static GuestBuffer* CreateVertexBuffer(uint32_t length) +static GuestBuffer* CreateVertexBuffer(uint32_t length) { auto buffer = g_userHeap.AllocPhysical(ResourceType::VertexBuffer); buffer->buffer = g_device->createBuffer(RenderBufferDesc::VertexBuffer(length, GetBufferHeapType(), RenderBufferFlag::INDEX)); buffer->dataSize = length; -#ifdef _DEBUG +#ifdef _DEBUG buffer->buffer->setName(fmt::format("Vertex Buffer {:X}", g_memory.MapVirtual(buffer))); #endif return buffer; @@ -3253,13 +3269,13 @@ static GuestBuffer* CreateIndexBuffer(uint32_t length, uint32_t, uint32_t format buffer->dataSize = length; buffer->format = ConvertFormat(format); buffer->guestFormat = format; -#ifdef _DEBUG +#ifdef _DEBUG buffer->buffer->setName(fmt::format("Index Buffer {:X}", g_memory.MapVirtual(buffer))); #endif return buffer; } -static GuestSurface* CreateSurface(uint32_t width, uint32_t height, uint32_t format, uint32_t multiSample) +static GuestSurface* CreateSurface(uint32_t width, uint32_t height, uint32_t format, uint32_t multiSample) { RenderTextureDesc desc; desc.dimension = RenderTextureDimension::TEXTURE_2D; @@ -3272,7 +3288,7 @@ static GuestSurface* CreateSurface(uint32_t width, uint32_t height, uint32_t for desc.format = ConvertFormat(format); desc.flags = desc.format == RenderFormat::D32_FLOAT ? RenderTextureFlag::DEPTH_TARGET : RenderTextureFlag::RENDER_TARGET; - auto surface = g_userHeap.AllocPhysical(desc.format == RenderFormat::D32_FLOAT ? + auto surface = g_userHeap.AllocPhysical(desc.format == RenderFormat::D32_FLOAT ? ResourceType::DepthStencil : ResourceType::RenderTarget); surface->textureHolder = g_device->createTexture(desc); @@ -3291,7 +3307,7 @@ static GuestSurface* CreateSurface(uint32_t width, uint32_t height, uint32_t for surface->descriptorIndex = g_textureDescriptorAllocator.allocate(); g_textureDescriptorSet->setTexture(surface->descriptorIndex, surface->textureHolder.get(), RenderTextureLayout::SHADER_READ, surface->textureView.get()); -#ifdef _DEBUG +#ifdef _DEBUG surface->texture->setName(fmt::format("{} {:X}", desc.flags & RenderTextureFlag::RENDER_TARGET ? "Render Target" : "Depth Stencil", g_memory.MapVirtual(surface))); #endif @@ -3399,7 +3415,7 @@ static void SetDefaultViewport(GuestDevice* device, GuestSurface* surface) } } -static void SetRenderTarget(GuestDevice* device, uint32_t index, GuestSurface* renderTarget) +static void SetRenderTarget(GuestDevice* device, uint32_t index, GuestSurface* renderTarget) { RenderCommand cmd; cmd.type = RenderCommandType::SetRenderTarget; @@ -3421,7 +3437,7 @@ static void ProcSetRenderTarget(const RenderCommand& cmd) SetAlphaTestMode((g_pipelineState.specConstants & (SPEC_CONSTANT_ALPHA_TEST | SPEC_CONSTANT_ALPHA_TO_COVERAGE)) != 0); } -static void SetDepthStencilSurface(GuestDevice* device, GuestSurface* depthStencil) +static void SetDepthStencilSurface(GuestDevice* device, GuestSurface* depthStencil) { RenderCommand cmd; cmd.type = RenderCommandType::SetDepthStencilSurface; @@ -3462,7 +3478,7 @@ static bool PopulateBarriersForStretchRect(GuestSurface* renderTarget, GuestSurf shaderResolve = false; } } - + if (shaderResolve) { srcLayout = RenderTextureLayout::SHADER_READ; @@ -3733,7 +3749,7 @@ static void SetFramebuffer(GuestSurface* renderTarget, GuestSurface* depthStenci } } -static void Clear(GuestDevice* device, uint32_t flags, uint32_t, be* color, double z) +static void Clear(GuestDevice* device, uint32_t flags, uint32_t, be* color, double z) { RenderCommand cmd; cmd.type = RenderCommandType::Clear; @@ -3815,11 +3831,11 @@ static void ProcSetViewport(const RenderCommand& cmd) SetDirtyValue(g_dirtyStates.viewport, g_viewport.height, args.height); SetDirtyValue(g_dirtyStates.viewport, g_viewport.minDepth, args.minDepth); SetDirtyValue(g_dirtyStates.viewport, g_viewport.maxDepth, args.maxDepth); - + uint32_t specConstants = g_pipelineState.specConstants; if (args.minDepth > args.maxDepth) specConstants |= SPEC_CONSTANT_REVERSE_Z; - else + else specConstants &= ~SPEC_CONSTANT_REVERSE_Z; SetDirtyValue(g_dirtyStates.pipelineState, g_pipelineState.specConstants, specConstants); @@ -3827,7 +3843,7 @@ static void ProcSetViewport(const RenderCommand& cmd) g_dirtyStates.scissorRect |= g_dirtyStates.viewport; } -static void SetTexture(GuestDevice* device, uint32_t index, GuestTexture* texture) +static void SetTexture(GuestDevice* device, uint32_t index, GuestTexture* texture) { auto isPlayStation = Config::ControllerIcons == EControllerIcons::PlayStation; @@ -3896,10 +3912,10 @@ static void ProcSetTexture(const RenderCommand& cmd) shouldSetTexture = false; } } - + if (shouldSetTexture) SetTextureInRenderThread(args.index, args.texture); - + g_textures[args.index] = args.texture; } @@ -3927,7 +3943,7 @@ static void ProcSetScissorRect(const RenderCommand& cmd) static RenderShader* GetOrLinkShader(GuestShader* guestShader, uint32_t specConstants) { if (g_backend != Backend::D3D12 || - guestShader->shaderCacheEntry == nullptr || + guestShader->shaderCacheEntry == nullptr || guestShader->shaderCacheEntry->specConstantsMask == 0) { std::lock_guard lock(guestShader->mutex); @@ -3962,9 +3978,7 @@ static RenderShader* GetOrLinkShader(GuestShader* guestShader, uint32_t specCons } } -#ifdef _DEBUG guestShader->shader->setName(fmt::format("{}:{:x}", guestShader->shaderCacheEntry->filename, guestShader->shaderCacheEntry->hash)); -#endif } return guestShader->shader.get(); @@ -4092,7 +4106,7 @@ static RenderShader* GetOrLinkShader(GuestShader* guestShader, uint32_t specCons #ifdef _DEBUG shader->setName(fmt::format("{}:{:x}", guestShader->shaderCacheEntry->filename, guestShader->shaderCacheEntry->hash)); #endif - } + } } #endif @@ -4179,43 +4193,86 @@ static std::unique_ptr CreateGraphicsPipeline(const PipelineStat desc.alphaToCoverageEnabled = pipelineState.enableAlphaToCoverage; desc.inputElements = pipelineState.vertexDeclaration->inputElements.get(); desc.inputElementsCount = pipelineState.vertexDeclaration->inputElementCount; - + RenderSpecConstant specConstant{}; specConstant.value = pipelineState.specConstants; - + if (pipelineState.specConstants != 0) { desc.specConstants = &specConstant; desc.specConstantsCount = 1; } - + RenderInputSlot inputSlots[16]{}; uint32_t inputSlotIndices[16]{}; uint32_t inputSlotCount = 0; - + for (size_t i = 0; i < pipelineState.vertexDeclaration->inputElementCount; i++) { auto& inputElement = pipelineState.vertexDeclaration->inputElements[i]; auto& inputSlotIndex = inputSlotIndices[inputElement.slotIndex]; - + if (inputSlotIndex == NULL) inputSlotIndex = ++inputSlotCount; - + auto& inputSlot = inputSlots[inputSlotIndex - 1]; inputSlot.index = inputElement.slotIndex; inputSlot.stride = pipelineState.vertexStrides[inputElement.slotIndex]; - + if (pipelineState.instancing && inputElement.slotIndex != 0 && inputElement.slotIndex != 15) inputSlot.classification = RenderInputSlotClassification::PER_INSTANCE_DATA; else inputSlot.classification = RenderInputSlotClassification::PER_VERTEX_DATA; } - + desc.inputSlots = inputSlots; desc.inputSlotsCount = inputSlotCount; - + auto pipeline = g_device->createGraphicsPipeline(desc); + // MoltenVK requires the Metal vertex attribute type to agree with the + // SPIR-V input type. D3D12 accepts several conversions that MoltenVK does + // not, so emit the complete declaration once for each failed Vulkan PSO. + if (pipeline == nullptr && g_backend == Backend::VULKAN) + { + static Mutex failureLogMutex; + static ankerl::unordered_dense::set loggedFailures; + const XXH64_hash_t pipelineHash = XXH3_64bits(&pipelineState, sizeof(pipelineState)); + + std::lock_guard lock(failureLogMutex); + if (loggedFailures.emplace(pipelineHash).second) + { + const GuestVertexDeclaration* declaration = pipelineState.vertexDeclaration; + LOGFN_ERROR( + "VK-PIPELINE-FAIL hash=0x{:016X} vs={} ps={} declaration=0x{:08X} inputs={} streams={} spec=0x{:08X}", + pipelineHash, static_cast(pipelineState.vertexShader), + static_cast(pipelineState.pixelShader), + g_memory.MapVirtual(declaration), declaration->inputElementCount, + declaration->vertexElementCount, pipelineState.specConstants); + + for (uint32_t i = 0; i < declaration->inputElementCount; ++i) + { + const RenderInputElement& element = declaration->inputElements[i]; + LOGFN_ERROR( + "VK-PIPELINE-FAIL input[{}] semantic={}:{} location={} format={} slot={} offset={}", + i, element.semanticName, element.semanticIndex, element.location, + static_cast(element.format), element.slotIndex, element.alignedByteOffset); + } + + for (uint32_t i = 0; i < declaration->vertexElementCount; ++i) + { + const GuestVertexElement& element = declaration->vertexElements[i]; + if (element.stream == 0xFF || element.type == D3DDECLTYPE_UNUSED) + break; + + LOGFN_ERROR( + "VK-PIPELINE-FAIL guestInput[{}] usage={}:{} type=0x{:08X} stream={} offset={}", + i, element.usage, element.usageIndex, static_cast(element.type), + static_cast(element.stream), static_cast(element.offset)); + } + } + } + #ifdef ASYNC_PSO_DEBUG --g_pipelinesCurrentlyCompiling; #endif @@ -4243,7 +4300,7 @@ static RenderPipeline* CreateGraphicsPipelineInRenderThread(PipelineState pipeli pipeline->setName(fmt::format("{} {} {} {:X}", loading ? "ASYNC" : "", pipelineState.vertexShader->name, pipelineState.pixelShader != nullptr ? pipelineState.pixelShader->name : "", hash)); - + if (!loading) { std::lock_guard lock(g_debugMutex); @@ -4315,7 +4372,7 @@ static RenderPipeline* CreateGraphicsPipelineInRenderThread(PipelineState pipeli g_pipelineStatesToCache.emplace(hash, pipelineState); #endif } - + return pipeline.get(); } @@ -4699,7 +4756,7 @@ static void UnsetInstancingStream() } } -static void DrawPrimitive(GuestDevice* device, uint32_t primitiveType, uint32_t startVertex, uint32_t primitiveCount) +static void DrawPrimitive(GuestDevice* device, uint32_t primitiveType, uint32_t startVertex, uint32_t primitiveCount) { LocalRenderCommandQueue queue; FlushRenderStateForMainThread(device, queue); @@ -4783,7 +4840,7 @@ static void DrawPrimitiveUP(GuestDevice* device, uint32_t primitiveType, uint32_ cmd.drawPrimitiveUP.vertexStreamZeroSize = primitiveCount * vertexStreamZeroStride; cmd.drawPrimitiveUP.vertexStreamZeroStride = vertexStreamZeroStride; cmd.drawPrimitiveUP.csdFilterState = g_csdFilterState; - + queue.submit(); } @@ -4913,7 +4970,7 @@ static RenderFormat ConvertDeclType(uint32_t type) } } -static GuestVertexDeclaration* CreateVertexDeclarationWithoutAddRef(GuestVertexElement* vertexElements) +static GuestVertexDeclaration* CreateVertexDeclarationWithoutAddRef(GuestVertexElement* vertexElements) { size_t vertexElementCount = 0; auto vertexElement = vertexElements; @@ -4925,7 +4982,7 @@ static GuestVertexDeclaration* CreateVertexDeclarationWithoutAddRef(GuestVertexE ++vertexElementCount; } - vertexElement->padding = 0; // Clear the padding in D3DDECL_END() + vertexElement->padding = 0; // Clear the padding in D3DDECL_END() std::lock_guard lock(g_vertexDeclarationMutex); @@ -4978,7 +5035,7 @@ static GuestVertexDeclaration* CreateVertexDeclarationWithoutAddRef(GuestVertexE } auto& inputElement = inputElements.emplace_back(); - + inputElement.semanticName = ConvertDeclUsage(vertexElement->usage); inputElement.semanticIndex = vertexElement->usageIndex; inputElement.location = ~0; @@ -5105,7 +5162,7 @@ static GuestVertexDeclaration* CreateVertexDeclaration(GuestVertexElement* verte return vertexDeclaration; } -static void SetVertexDeclaration(GuestDevice* device, GuestVertexDeclaration* vertexDeclaration) +static void SetVertexDeclaration(GuestDevice* device, GuestVertexDeclaration* vertexDeclaration) { RenderCommand cmd; cmd.type = RenderCommandType::SetVertexDeclaration; @@ -5186,7 +5243,7 @@ static GuestShader* CreateShader(const be* function, ResourceType reso return shader; } -static GuestShader* CreateVertexShader(const be* function) +static GuestShader* CreateVertexShader(const be* function) { return CreateShader(function, ResourceType::VertexShader); } @@ -5204,7 +5261,7 @@ static void ProcSetVertexShader(const RenderCommand& cmd) SetDirtyValue(g_dirtyStates.pipelineState, g_pipelineState.vertexShader, cmd.setVertexShader.shader); } -static void SetStreamSource(GuestDevice* device, uint32_t index, GuestBuffer* buffer, uint32_t offset, uint32_t stride) +static void SetStreamSource(GuestDevice* device, uint32_t index, GuestBuffer* buffer, uint32_t offset, uint32_t stride) { RenderCommand cmd; cmd.type = RenderCommandType::SetStreamSource; @@ -5234,7 +5291,7 @@ static void ProcSetStreamSource(const RenderCommand& cmd) } } -static void SetIndices(GuestDevice* device, GuestBuffer* buffer) +static void SetIndices(GuestDevice* device, GuestBuffer* buffer) { RenderCommand cmd; cmd.type = RenderCommandType::SetIndices; @@ -5267,7 +5324,7 @@ static void SetPixelShader(GuestDevice* device, GuestShader* shader) static void ProcSetPixelShader(const RenderCommand& cmd) { GuestShader* shader = cmd.setPixelShader.shader; - if (shader != nullptr && + if (shader != nullptr && shader->shaderCacheEntry != nullptr) { if (shader->shaderCacheEntry->hash == 0x4294510C775F4EE8) @@ -5521,7 +5578,7 @@ struct GuestPictureData static RenderTextureDimension ConvertTextureDimension(ddspp::TextureType type) { - switch (type) + switch (type) { case ddspp::Texture1D: return RenderTextureDimension::TEXTURE_1D; @@ -5554,7 +5611,7 @@ static RenderTextureViewDimension ConvertTextureViewDimension(ddspp::TextureType } } -static RenderFormat ConvertDXGIFormat(ddspp::DXGIFormat format) +static RenderFormat ConvertDXGIFormat(ddspp::DXGIFormat format) { switch (format) { @@ -5607,7 +5664,7 @@ static RenderFormat ConvertDXGIFormat(ddspp::DXGIFormat format) case ddspp::B8G8R8A8_UNORM: return RenderFormat::B8G8R8A8_UNORM; case ddspp::B8G8R8X8_UNORM: - return RenderFormat::B8G8R8A8_UNORM; + return RenderFormat::B8G8R8A8_UNORM; case ddspp::R16G16_TYPELESS: return RenderFormat::R16G16_TYPELESS; case ddspp::R16G16_FLOAT: @@ -5719,7 +5776,7 @@ static bool LoadTexture(GuestTexture& texture, const uint8_t* data, size_t dataS { forceCubeMap &= (ddsDesc.type == ddspp::Texture2D) && (ddsDesc.arraySize == 1); uint32_t arraySize = ddsDesc.type == ddspp::TextureType::Cubemap ? (ddsDesc.arraySize * 6) : ddsDesc.arraySize; - + RenderTextureDesc desc; desc.dimension = ConvertTextureDimension(ddsDesc.type); desc.width = ddsDesc.width; @@ -5918,7 +5975,7 @@ static void DiffPatchTexture(GuestTexture& texture, uint8_t* data, uint32_t data auto header = reinterpret_cast(g_buttonBcDiff.get()); auto entries = reinterpret_cast(g_buttonBcDiff.get() + header->entriesOffset); auto end = entries + header->entryCount; - + auto findResult = std::lower_bound(entries, end, hash, [](BlockCompressionDiffPatchEntry& lhs, XXH64_hash_t rhs) { return lhs.hash < rhs; @@ -5994,7 +6051,7 @@ static void SetResolution(be* device) device[47] = height == 0 ? 720 : height; } -// The game does some weird stuff to render targets if they are above +// The game does some weird stuff to render targets if they are above // 1024x1024 resolution, setting this bool at address 20 seems to avoid all that. PPC_FUNC(sub_82E9F048) { @@ -6065,7 +6122,7 @@ PPC_FUNC(sub_8258CAE0) { if (g_needsResize) { - // Backup job values. These get modified by cutscenes, + // Backup job values. These get modified by cutscenes, // and resizing will cause the values to be forgotten. auto traverseFxJobs = [&](const TCallback& callback) { @@ -6108,7 +6165,7 @@ PPC_FUNC(sub_8258CAE0) if (vfTable == 0x820CA6F8) // SWA::CFxFade { - // NOTE: Intentionally not storing shared pointers here. + // NOTE: Intentionally not storing shared pointers here. // Game sends messages that assign these every frame already. JobValues jobValues{}; @@ -6291,7 +6348,7 @@ enum eDatabaseDataFlags_CompilingPipelines = 0x80 }; -// This is passed to pipeline compilation threads to keep the loading screen busy until +// This is passed to pipeline compilation threads to keep the loading screen busy until // all of them are finished. A shared pointer makes sure the destructor is called only once. struct PipelineTaskToken { @@ -6426,8 +6483,8 @@ struct PipelineTaskTokenPair static xxHashMap g_asyncPipelineStates; static void EnqueueGraphicsPipelineCompilation( - const PipelineState& pipelineState, - PipelineTaskTokenPair& tokenPair, + const PipelineState& pipelineState, + PipelineTaskTokenPair& tokenPair, const char* name, bool isPrecompiledPipeline = false) { @@ -6566,7 +6623,7 @@ static void CompileMeshPipeline(const Mesh& mesh, CompilationArgs& args) pipelineState.vertexDeclaration = mesh.vertexDeclaration; pipelineState.cullMode = mesh.material->m_DoubleSided ? RenderCullMode::NONE : RenderCullMode::BACK; pipelineState.zFunc = RenderComparisonFunction::LESS_EQUAL; - + if (g_capabilities.dynamicDepthBias) { // Put common depth bias values for reducing unnecessary calls. @@ -6576,7 +6633,7 @@ static void CompileMeshPipeline(const Mesh& mesh, CompilationArgs& args) pipelineState.slopeScaledDepthBias = COMMON_SLOPE_SCALED_DEPTH_BIAS_VALUE; } } - else + else { pipelineState.depthBias = (1 << 24) * (*reinterpret_cast*>(g_memory.Translate(0x83302760))); pipelineState.slopeScaledDepthBias = *reinterpret_cast*>(g_memory.Translate(0x83302764)); @@ -6792,7 +6849,7 @@ static void CompileMeshPipeline(const Mesh& mesh, CompilationArgs& args) createGraphicsPipeline(noMsaaPipeline); } - if (args.objectIcon) + if (args.objectIcon) { // Object icons get rendered to a SDR buffer without MSAA. auto iconPipelineState = noMsaaPipeline; @@ -6917,7 +6974,7 @@ static void CompileParticleMaterialPipeline(const Hedgehog::Sparkle::CParticleMa return; // All the particle models in the game come with the unoptimized format, so we can assume it. - uint8_t unoptimizedVertexElements[144] = + uint8_t unoptimizedVertexElements[144] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0x23, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x2A, 0x23, 0xB9, 0x00, 0x03, 0x00, 0x00, @@ -7055,7 +7112,7 @@ PPC_FUNC(sub_825369A0) // CModelData::CheckMadeAll PPC_FUNC_IMPL(__imp__sub_82E2EFB0); PPC_FUNC(sub_82E2EFB0) -{ +{ if (reinterpret_cast(base + ctx.r3.u32)->m_Flags & eDatabaseDataFlags_CompilingPipelines) { ctx.r3.u64 = 0; @@ -7069,7 +7126,7 @@ PPC_FUNC(sub_82E2EFB0) // CTerrainModelData::CheckMadeAll PPC_FUNC_IMPL(__imp__sub_82E243D8); PPC_FUNC(sub_82E243D8) -{ +{ if (reinterpret_cast(base + ctx.r3.u32)->m_Flags & eDatabaseDataFlags_CompilingPipelines) { ctx.r3.u64 = 0; @@ -7083,7 +7140,7 @@ PPC_FUNC(sub_82E243D8) // CParticleMaterial::CheckMadeAll PPC_FUNC_IMPL(__imp__sub_82E87598); PPC_FUNC(sub_82E87598) -{ +{ if (reinterpret_cast(base + ctx.r3.u32)->m_Flags & eDatabaseDataFlags_CompilingPipelines) { ctx.r3.u64 = 0; @@ -7162,13 +7219,13 @@ static bool CheckMadeAll(const T& modelData) { if (!CheckMadeAll(mesh.get())) return false; - } + } for (auto& mesh : meshGroup->m_TransparentMeshes) { if (!CheckMadeAll(mesh.get())) return false; - } + } for (auto& mesh : meshGroup->m_PunchThroughMeshes) { @@ -7349,7 +7406,7 @@ static void PipelineTaskConsumerThread() // Compile both MSAA and non MSAA variants to work with reflection maps. The render formats are an assumption but it should hold true. if (Config::AntiAliasing != EAntiAliasing::None && - pipelineState.renderTargetFormat == RenderFormat::R16G16B16A16_FLOAT && + pipelineState.renderTargetFormat == RenderFormat::R16G16B16A16_FLOAT && pipelineState.depthStencilFormat == RenderFormat::D32_FLOAT) { auto msaaPipelineState = pipelineState; @@ -7388,7 +7445,7 @@ static void PipelineTaskConsumerThread() createGraphicsPipeline(newPipelineState, "Precompiled Enhanced Motion Blur Pipeline"); } } - + createGraphicsPipeline(pipelineState, "Precompiled Pipeline"); // Compile the CSD filter shader that we pass to the game when point filtering is used. @@ -7491,7 +7548,7 @@ PPC_FUNC(sub_82E328D8) class SDLEventListenerForPSOCaching : public SDLEventListener { public: - bool OnSDLEvent(SDL_Event* event) override + bool OnSDLEvent(SDL_Event* event) override { if (event->type != SDL_QUIT) return false; @@ -7631,7 +7688,7 @@ void VideoConfigValueChangedCallback(IConfigDef* config) if (g_needsResize) Video::ComputeViewportDimensions(); - + // Config options that require pipeline recompilation bool shouldRecompile = config == &Config::AntiAliasing || @@ -7727,7 +7784,7 @@ static void ConvertToDegenerateTriangles(uint16_t* indices, uint32_t indexCount, stripStart = true; stripSize = 0; } - else + else { if (stripStart && newIndexCount != 0) { @@ -7782,7 +7839,7 @@ PPC_FUNC(sub_82E44AF8) // If index buffers are getting merged, new indices need to survive until the merge happens. g_newIndicesToFree.push_back(newIndices); } - else + else { // Otherwise, we can free it immediately. newIndicesToFree = newIndices; diff --git a/UnleashedRecomp/ios/launcher_main.mm b/UnleashedRecomp/ios/launcher_main.mm index 489c700e..6f29e456 100644 --- a/UnleashedRecomp/ios/launcher_main.mm +++ b/UnleashedRecomp/ios/launcher_main.mm @@ -1,51 +1,81 @@ +#import +#import +#import + #include #include int UnleashedMain(int argc, char *argv[]); -int HandleAppEvents(void *userdata, SDL_Event *event) -{ - switch (event->type) - { - case SDL_APP_TERMINATING: - /* Terminate the app. - Shut everything down before returning from this function. - */ - return 0; - case SDL_APP_LOWMEMORY: - /* You will get this when your app is paused and iOS wants more memory. - Release as much memory as possible. - */ - return 0; - case SDL_APP_WILLENTERBACKGROUND: - /* Prepare your app to go into the background. Stop loops, etc. - This gets called when the user hits the home button, or gets a call. - */ - return 0; - case SDL_APP_DIDENTERBACKGROUND: - /* This will get called if the user accepted whatever sent your app to the background. - If the user got a phone call and canceled it, you'll instead get an SDL_APP_DIDENTERFOREGROUND event and restart your loops. - When you get this, you have 5 seconds to save all your state or the app will be terminated. - Your app is NOT active at this point. - */ - return 0; - case SDL_APP_WILLENTERFOREGROUND: - /* This call happens when your app is coming back to the foreground. - Restore all your state here. - */ - return 0; - case SDL_APP_DIDENTERFOREGROUND: - /* Restart your loops here. - Your app is interactive and getting CPU again. - */ - return 0; - default: - /* No special processing, add it to the event queue */ - return 1; - } +#if _DEBUG +@interface StdRedirector : NSObject +- (void)start; +@end +@interface StdRedirector () +@property (nonatomic, strong) NSFileHandle *pipeReadHandle; +@property (nonatomic) dispatch_source_t source; +@property (nonatomic) os_log_t log; +@end + +@implementation StdRedirector + +- (void)start { + self.log = os_log_create("com.yourapp.stdout", "console"); + + int pipefd[2]; + pipe(pipefd); + + int readFD = pipefd[0]; + int writeFD = pipefd[1]; + + // Redirect stdout + stderr to pipe + dup2(writeFD, STDOUT_FILENO); + dup2(writeFD, STDERR_FILENO); + + close(writeFD); + + self.pipeReadHandle = [[NSFileHandle alloc] initWithFileDescriptor:readFD closeOnDealloc:YES]; + + dispatch_queue_t queue = dispatch_get_global_queue(QOS_CLASS_UTILITY, 0); + + self.source = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, + readFD, + 0, + queue); + + __weak typeof(self) weakSelf = self; + + dispatch_source_set_event_handler(self.source, ^{ + __strong typeof(weakSelf) self = weakSelf; + if (!self) return; + + NSData *data = [self.pipeReadHandle availableData]; + if (data.length == 0) return; + + NSString *output = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; + if (!output) return; + + NSArray *lines = [output componentsSeparatedByString:@"\n"]; + + for (NSString *line in lines) { + if (line.length == 0) continue; + + os_log_info(self.log, "%{public}@", line); + } + }); + + dispatch_resume(self.source); } +@end +#endif + int main(int argc, char *argv[]) { - SDL_SetEventFilter(HandleAppEvents, NULL); - return SDL_UIKitRunApp(argc, argv, UnleashedMain); + @autoreleasepool { + #if _DEBUG + StdRedirector *redirector = [[StdRedirector alloc] init]; + [redirector start]; + #endif + return SDL_UIKitRunApp(argc, argv, UnleashedMain); + } } diff --git a/UnleashedRecomp/kernel/imports.cpp b/UnleashedRecomp/kernel/imports.cpp index 697b110a..91d795e2 100644 --- a/UnleashedRecomp/kernel/imports.cpp +++ b/UnleashedRecomp/kernel/imports.cpp @@ -1,4 +1,7 @@ #include +#include +#include +#include #include #include #include @@ -23,6 +26,10 @@ struct Event final : KernelObject, HostObject { bool manualReset; std::atomic signaled; +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + std::mutex waitMutex; + std::condition_variable waitCondition; +#endif Event(XKEVENT* header) : manualReset(!header->Type), signaled(!!header->SignalState) @@ -52,6 +59,25 @@ struct Event final : KernelObject, HostObject } else if (timeout == INFINITE) { +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + std::unique_lock lock(waitMutex); + if (manualReset) + { + waitCondition.wait(lock, [&] + { + return signaled.load(std::memory_order_acquire); + }); + } + else + { + waitCondition.wait(lock, [&] + { + bool expected = true; + return signaled.compare_exchange_strong( + expected, false, std::memory_order_acquire, std::memory_order_relaxed); + }); + } +#else if (manualReset) { signaled.wait(false); @@ -67,6 +93,7 @@ struct Event final : KernelObject, HostObject signaled.wait(expected); } } +#endif } else { @@ -78,29 +105,79 @@ struct Event final : KernelObject, HostObject bool Set() { - signaled = true; +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + bool previousState; + { + std::lock_guard lock(waitMutex); + previousState = signaled.exchange(true, std::memory_order_release); + } + + if (manualReset) + waitCondition.notify_all(); + else + waitCondition.notify_one(); +#else + const bool previousState = signaled.exchange(true, std::memory_order_release); if (manualReset) signaled.notify_all(); else signaled.notify_one(); +#endif - return TRUE; + return previousState; } bool Reset() { - signaled = false; - return TRUE; +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + std::lock_guard lock(waitMutex); +#endif + return signaled.exchange(false, std::memory_order_acq_rel); } }; static std::atomic g_keSetEventGeneration; +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +static std::mutex g_multipleEventWaitMutex; +static std::condition_variable g_multipleEventWaitCondition; +#endif + +static void NotifyMultipleEventWaiters() +{ + g_keSetEventGeneration.fetch_add(1, std::memory_order_release); +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + { + // Synchronize with the predicate check performed by condition_variable::wait. + std::lock_guard lock(g_multipleEventWaitMutex); + } + g_multipleEventWaitCondition.notify_all(); +#else + g_keSetEventGeneration.notify_all(); +#endif +} + +static void WaitForMultipleEventGenerationChange(uint32_t generation) +{ +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + std::unique_lock lock(g_multipleEventWaitMutex); + g_multipleEventWaitCondition.wait(lock, [&] + { + return g_keSetEventGeneration.load(std::memory_order_acquire) != generation; + }); +#else + g_keSetEventGeneration.wait(generation, std::memory_order_relaxed); +#endif +} struct Semaphore final : KernelObject, HostObject { std::atomic count; uint32_t maximumCount; +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + std::mutex waitMutex; + std::condition_variable waitCondition; +#endif Semaphore(XKSEMAPHORE* semaphore) : count(semaphore->Header.SignalState), maximumCount(semaphore->Limit) @@ -117,7 +194,7 @@ struct Semaphore final : KernelObject, HostObject if (timeout == 0) { uint32_t currentCount = count.load(); - if (currentCount != 0) + while (currentCount != 0) { if (count.compare_exchange_weak(currentCount, currentCount - 1)) return STATUS_SUCCESS; @@ -127,6 +204,9 @@ struct Semaphore final : KernelObject, HostObject } else if (timeout == INFINITE) { +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + std::unique_lock lock(waitMutex); +#endif uint32_t currentCount; while (true) { @@ -138,7 +218,14 @@ struct Semaphore final : KernelObject, HostObject } else { +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + waitCondition.wait(lock, [&] + { + return count.load(std::memory_order_relaxed) != 0; + }); +#else count.wait(0); +#endif } } @@ -153,13 +240,30 @@ struct Semaphore final : KernelObject, HostObject void Release(uint32_t releaseCount, uint32_t* previousCount) { - if (previousCount != nullptr) - *previousCount = count; +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + std::lock_guard lock(waitMutex); +#endif + uint32_t currentCount = count.load(std::memory_order_relaxed); + while (true) + { + assert(currentCount <= maximumCount && releaseCount <= maximumCount - currentCount); + if (releaseCount > maximumCount - currentCount) + return; + + if (count.compare_exchange_weak( + currentCount, currentCount + releaseCount, + std::memory_order_release, std::memory_order_relaxed)) + break; + } - assert(count + releaseCount <= maximumCount); + if (previousCount != nullptr) + *previousCount = currentCount; - count += releaseCount; +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + waitCondition.notify_all(); +#else count.notify_all(); +#endif } }; @@ -664,8 +768,8 @@ uint32_t NtSuspendThread(GuestThreadHandle* hThread, uint32_t* suspendCount) { assert(hThread != GetKernelObject(CURRENT_THREAD_HANDLE) && hThread->GetThreadId() == GuestThread::GetCurrentThreadId()); - hThread->suspended = true; - hThread->suspended.wait(true); + hThread->SetSuspended(true); + hThread->WaitWhileSuspended(); return S_OK; } @@ -678,28 +782,201 @@ uint32_t KeSetAffinityThread(uint32_t Thread, uint32_t Affinity, be* l return 0; } +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +// libc++ implements atomic::wait with ulock on iOS. Keep ownership atomic, but +// use a hashed condition-variable wait table so the iOS build can distinguish +// a broken ownership protocol from an atomic-wait/ulock problem. +struct CriticalSectionWaitBucket +{ + std::mutex mutex; + std::condition_variable condition; + uint64_t generation{}; +}; + +struct CriticalSectionOwnerDiagnostic +{ + uint32_t owner{}; + std::chrono::steady_clock::time_point acquiredAt{}; +}; + +static std::mutex g_criticalSectionOwnerDiagnosticMutex; +static std::unordered_map + g_criticalSectionOwnerDiagnostics; + +static void RecordCriticalSectionOwner(XRTL_CRITICAL_SECTION* cs, uint32_t owner) +{ + std::lock_guard lock(g_criticalSectionOwnerDiagnosticMutex); + g_criticalSectionOwnerDiagnostics[cs] = + { + owner, + std::chrono::steady_clock::now() + }; +} + +static CriticalSectionOwnerDiagnostic QueryCriticalSectionOwner(XRTL_CRITICAL_SECTION* cs) +{ + std::lock_guard lock(g_criticalSectionOwnerDiagnosticMutex); + const auto it = g_criticalSectionOwnerDiagnostics.find(cs); + return it != g_criticalSectionOwnerDiagnostics.end() + ? it->second + : CriticalSectionOwnerDiagnostic{}; +} + +static CriticalSectionOwnerDiagnostic RemoveCriticalSectionOwner(XRTL_CRITICAL_SECTION* cs) +{ + std::lock_guard lock(g_criticalSectionOwnerDiagnosticMutex); + const auto it = g_criticalSectionOwnerDiagnostics.find(cs); + if (it == g_criticalSectionOwnerDiagnostics.end()) + return {}; + + const CriticalSectionOwnerDiagnostic result = it->second; + g_criticalSectionOwnerDiagnostics.erase(it); + return result; +} + +static CriticalSectionWaitBucket& GetCriticalSectionWaitBucket(const XRTL_CRITICAL_SECTION* cs) +{ + static std::array buckets; + const size_t index = (reinterpret_cast(cs) >> 2) % buckets.size(); + return buckets[index]; +} + +static bool WaitForCriticalSectionOwnerChange( + XRTL_CRITICAL_SECTION* cs, + std::atomic_ref& owningThread, + uint32_t observedOwner, + uint32_t waitingThread) +{ + using namespace std::chrono_literals; + + auto& bucket = GetCriticalSectionWaitBucket(cs); + std::unique_lock lock(bucket.mutex); + const uint64_t generation = bucket.generation; + + if (owningThread.load(std::memory_order_relaxed) != observedOwner) + return true; + + const bool changed = bucket.condition.wait_for(lock, 2s, [&] + { + return bucket.generation != generation || + owningThread.load(std::memory_order_relaxed) != observedOwner; + }); + + if (!changed) + { + const uint32_t actualOwner = owningThread.load(std::memory_order_relaxed); + const uint32_t ownerHostThread = GuestThread::FindHostThreadId(actualOwner); + const CriticalSectionOwnerDiagnostic ownerDiagnostic = QueryCriticalSectionOwner(cs); + lock.unlock(); + LOGFN_WARNING( + "SYNC-CS-WAIT timeout cs=0x{:08X} waiter=0x{:08X} observedOwner=0x{:08X} actualOwner=0x{:08X} trackedOwner=0x{:08X} waiterHost=0x{:08X} ownerHost=0x{:08X} ownerActive={}", + g_memory.MapVirtual(cs), waitingThread, observedOwner, actualOwner, + ownerDiagnostic.owner, + GuestThread::GetCurrentThreadId(), ownerHostThread, ownerHostThread != 0); + } + + return changed; +} + +static void WakeCriticalSectionWaiters(XRTL_CRITICAL_SECTION* cs) +{ + auto& bucket = GetCriticalSectionWaitBucket(cs); + { + std::lock_guard lock(bucket.mutex); + ++bucket.generation; + } + bucket.condition.notify_all(); +} +#endif + +static bool IsCriticalSectionAtomicStorageValid(const XRTL_CRITICAL_SECTION* cs) +{ +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + static std::once_flag backendLogFlag; + std::call_once(backendLogFlag, [] + { + LOGN("SYNC-CS-BACKEND condition-variable-ios (libc++ atomic wait bypassed)"); + }); +#endif + + const bool aligned = (reinterpret_cast(&cs->OwningThread) % + std::atomic_ref::required_alignment) == 0; + if (!aligned) + { + LOGFN_ERROR( + "SYNC-CS-MISALIGNED csHost={} ownerHost={} requiredAlignment={}", + static_cast(cs), static_cast(&cs->OwningThread), + std::atomic_ref::required_alignment); + assert(false && "Critical section owner storage is not suitably aligned for atomic_ref."); + } + return aligned; +} + void RtlLeaveCriticalSection(XRTL_CRITICAL_SECTION* cs) { + if (!IsCriticalSectionAtomicStorageValid(cs)) + return; + uint32_t thisThread = g_ppcContext->r13.u32; assert(thisThread != NULL); std::atomic_ref owningThread(cs->OwningThread); + const uint32_t owner = owningThread.load(std::memory_order_relaxed); + if (owner != thisThread) + { + LOGFN_ERROR( + "SYNC-CS-INVALID-LEAVE cs=0x{:08X} leavingThread=0x{:08X} owner=0x{:08X} recursion={}", + g_memory.MapVirtual(cs), thisThread, owner, cs->RecursionCount); + assert(false && "Critical section left by a thread that does not own it."); + return; + } + + if (cs->RecursionCount <= 0) + { + LOGFN_ERROR( + "SYNC-CS-INVALID-RECURSION cs=0x{:08X} owner=0x{:08X} recursion={}", + g_memory.MapVirtual(cs), thisThread, cs->RecursionCount); + assert(false && "Critical section recursion count underflow."); + return; + } + cs->RecursionCount--; if (cs->RecursionCount != 0) return; +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + const CriticalSectionOwnerDiagnostic ownerDiagnostic = RemoveCriticalSectionOwner(cs); +#endif owningThread.store(0, std::memory_order_release); +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + WakeCriticalSectionWaiters(cs); + + const auto heldFor = std::chrono::steady_clock::now() - ownerDiagnostic.acquiredAt; + if (ownerDiagnostic.owner != 0 && heldFor >= std::chrono::seconds(5)) + { + LOGFN_WARNING( + "SYNC-CS-LONG-HOLD cs=0x{:08X} owner=0x{:08X} heldMs={}", + g_memory.MapVirtual(cs), thisThread, + std::chrono::duration_cast(heldFor).count()); + } +#else owningThread.notify_one(); +#endif } void RtlEnterCriticalSection(XRTL_CRITICAL_SECTION* cs) { + if (!IsCriticalSectionAtomicStorageValid(cs)) + return; + uint32_t thisThread = g_ppcContext->r13.u32; assert(thisThread != NULL); std::atomic_ref owningThread(cs->OwningThread); uint32_t currentOwner = owningThread.load(std::memory_order_acquire); + const auto contentionStart = std::chrono::steady_clock::now(); + bool contended = false; while (true) { if (currentOwner == thisThread) @@ -713,12 +990,32 @@ void RtlEnterCriticalSection(XRTL_CRITICAL_SECTION* cs) if (owningThread.compare_exchange_weak(currentOwner, thisThread, std::memory_order_acquire, std::memory_order_relaxed)) { cs->RecursionCount = 1; +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + RecordCriticalSectionOwner(cs, thisThread); +#endif + + if (contended) + { + const auto duration = std::chrono::steady_clock::now() - contentionStart; + if (duration >= std::chrono::seconds(2)) + { + LOGFN_WARNING( + "SYNC-CS-ACQUIRED-AFTER-WAIT cs=0x{:08X} thread=0x{:08X} waitedMs={}", + g_memory.MapVirtual(cs), thisThread, + std::chrono::duration_cast(duration).count()); + } + } return; } continue; } + contended = true; +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + WaitForCriticalSectionOwnerChange(cs, owningThread, currentOwner, thisThread); +#else owningThread.wait(currentOwner, std::memory_order_relaxed); +#endif currentOwner = owningThread.load(std::memory_order_acquire); } } @@ -755,10 +1052,16 @@ void RtlCompareMemoryUlong() uint32_t RtlInitializeCriticalSection(XRTL_CRITICAL_SECTION* cs) { + if (!IsCriticalSectionAtomicStorageValid(cs)) + return 0xC000000D; + cs->Header.Absolute = 0; cs->LockCount = -1; cs->RecursionCount = 0; cs->OwningThread = 0; +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + RemoveCriticalSectionOwner(cs); +#endif return 0; } @@ -1013,8 +1316,7 @@ bool KeSetEvent(XKEVENT* pEvent, uint32_t Increment, bool Wait) { bool result = QueryKernelObject(*pEvent)->Set(); - ++g_keSetEventGeneration; - g_keSetEventGeneration.notify_all(); + NotifyMultipleEventWaiters(); return result; } @@ -1214,28 +1516,47 @@ void XexGetModuleHandle() bool RtlTryEnterCriticalSection(XRTL_CRITICAL_SECTION* cs) { + if (!IsCriticalSectionAtomicStorageValid(cs)) + return false; + uint32_t thisThread = g_ppcContext->r13.u32; assert(thisThread != NULL); std::atomic_ref owningThread(cs->OwningThread); - uint32_t previousOwner = 0; - - if (owningThread.compare_exchange_weak(previousOwner, thisThread) || previousOwner == thisThread) + uint32_t previousOwner = owningThread.load(std::memory_order_relaxed); + if (previousOwner == thisThread) { cs->RecursionCount++; return true; } + previousOwner = 0; + if (owningThread.compare_exchange_strong( + previousOwner, thisThread, std::memory_order_acquire, std::memory_order_relaxed)) + { + cs->RecursionCount = 1; +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + RecordCriticalSectionOwner(cs, thisThread); +#endif + return true; + } + return false; } void RtlInitializeCriticalSectionAndSpinCount(XRTL_CRITICAL_SECTION* cs, uint32_t spinCount) { + if (!IsCriticalSectionAtomicStorageValid(cs)) + return; + cs->Header.Absolute = (spinCount + 255) >> 8; cs->LockCount = -1; cs->RecursionCount = 0; cs->OwningThread = 0; +#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) + RemoveCriticalSectionOwner(cs); +#endif } void _vswprintf_x() @@ -1331,15 +1652,18 @@ uint32_t NtResumeThread(GuestThreadHandle* hThread, uint32_t* suspendCount) { assert(hThread != GetKernelObject(CURRENT_THREAD_HANDLE)); - hThread->suspended = false; - hThread->suspended.notify_all(); + hThread->SetSuspended(false); return S_OK; } uint32_t NtSetEvent(Event* handle, uint32_t* previousState) { - handle->Set(); + const bool wasSignaled = handle->Set(); + if (previousState != nullptr) + *previousState = ByteSwap(static_cast(wasSignaled)); + + NotifyMultipleEventWaiters(); return 0; } @@ -1522,8 +1846,44 @@ uint32_t KeWaitForMultipleObjects(uint32_t Count, xpointer* if (WaitType == 0) // Wait all { + thread_local std::vector s_events; + thread_local std::vector s_consumedAutoResetEvents; + s_events.resize(Count); + s_consumedAutoResetEvents.reserve(Count); + for (size_t i = 0; i < Count; i++) - QueryKernelObject(*Objects[i])->Wait(timeout); + s_events[i] = QueryKernelObject(*Objects[i]); + + while (true) + { + const uint32_t generation = g_keSetEventGeneration.load(std::memory_order_acquire); + s_consumedAutoResetEvents.clear(); + bool allSignaled = true; + + for (Event* event : s_events) + { + if (event->Wait(0) != STATUS_SUCCESS) + { + allSignaled = false; + break; + } + + if (!event->manualReset) + s_consumedAutoResetEvents.push_back(event); + } + + if (allSignaled) + return STATUS_SUCCESS; + + if (!s_consumedAutoResetEvents.empty()) + { + for (Event* event : s_consumedAutoResetEvents) + event->Set(); + NotifyMultipleEventWaiters(); + } + + WaitForMultipleEventGenerationChange(generation); + } } else { @@ -1535,7 +1895,7 @@ uint32_t KeWaitForMultipleObjects(uint32_t Count, xpointer* while (true) { - uint32_t generation = g_keSetEventGeneration.load(); + uint32_t generation = g_keSetEventGeneration.load(std::memory_order_acquire); for (size_t i = 0; i < Count; i++) { @@ -1545,7 +1905,7 @@ uint32_t KeWaitForMultipleObjects(uint32_t Count, xpointer* } } - g_keSetEventGeneration.wait(generation); + WaitForMultipleEventGenerationChange(generation); } } @@ -1581,8 +1941,7 @@ uint32_t KeResumeThread(GuestThreadHandle* object) { assert(object != GetKernelObject(CURRENT_THREAD_HANDLE)); - object->suspended = false; - object->suspended.notify_all(); + object->SetSuspended(false); return 0; } diff --git a/UnleashedRecomp/main.cpp b/UnleashedRecomp/main.cpp index 0e1acaa8..c0faad82 100644 --- a/UnleashedRecomp/main.cpp +++ b/UnleashedRecomp/main.cpp @@ -34,6 +34,7 @@ #ifdef __APPLE__ #include "apple_utils.h" +#include #endif #if defined(_WIN32) && defined(UNLEASHED_RECOMP_D3D12) @@ -247,11 +248,21 @@ int main(int argc, char *argv[]) } } +#if TARGET_OS_IOS + // iOS: Check if there's a pending DLC installation flag set from a previous attempt + CFStringRef pendingKey = CFSTR("UnleashedRecomp_PendingDLCInstall"); + bool pendingDLC = CFPreferencesGetAppBooleanValue(pendingKey, kCFPreferencesCurrentApplication, nullptr); + if (pendingDLC) + { + CFPreferencesSetAppValue(pendingKey, kCFBooleanFalse, kCFPreferencesCurrentApplication); + forceDLCInstaller = true; + } +#endif + if (!useDefaultWorkingDirectory) { -#if !defined(TARGET_OS_IPHONE) +#if !TARGET_OS_IPHONE // Set the current working directory to the executable's path. - // iOS: CWD is not meaningful in app sandbox; paths must be absolute. std::error_code ec; std::filesystem::current_path(os::process::GetExecutableRoot(), ec); #endif diff --git a/UnleashedRecomp/patches/CTitleStateMenu_patches.cpp b/UnleashedRecomp/patches/CTitleStateMenu_patches.cpp index b3ae4580..61ac40d7 100644 --- a/UnleashedRecomp/patches/CTitleStateMenu_patches.cpp +++ b/UnleashedRecomp/patches/CTitleStateMenu_patches.cpp @@ -15,6 +15,16 @@ static bool g_installMessageOpen = false; static bool g_installMessageFaderBegun = false; static int g_installMessageResult = -1; +#if TARGET_OS_IOS +#include + +static void iOS_SetPendingInstallFlag() +{ + CFStringRef pendingKey = CFSTR("UnleashedRecomp_PendingDLCInstall"); + CFPreferencesSetAppValue(pendingKey, kCFBooleanTrue, kCFPreferencesCurrentApplication); +} +#endif + static bool ProcessInstallMessage() { if (!g_installMessageOpen) @@ -34,7 +44,14 @@ static bool ProcessInstallMessage() switch (g_installMessageResult) { case 0: +#if TARGET_OS_IOS + // iOS: Just set a flag to install DLC on next launch + iOS_SetPendingInstallFlag(); + Fader::FadeOut(1, []() { App::Exit(); }); +#else + // Desktop: Restart with installer flag Fader::FadeOut(1, []() { App::Restart({ "--install-dlc" }); }); +#endif g_installMessageFaderBegun = true; break; diff --git a/UnleashedRecomp/ui/game_window.cpp b/UnleashedRecomp/ui/game_window.cpp index 0640e164..5f1259a2 100644 --- a/UnleashedRecomp/ui/game_window.cpp +++ b/UnleashedRecomp/ui/game_window.cpp @@ -34,14 +34,15 @@ int Window_OnSDLEvent(void*, SDL_Event* event) switch (event->type) { case SDL_APP_WILLENTERBACKGROUND: - case SDL_APP_DIDENTERBACKGROUND: + { Video::HandleApplicationBackgroundState(true); break; + } - case SDL_APP_WILLENTERFOREGROUND: - case SDL_APP_DIDENTERFOREGROUND: + case SDL_APP_DIDENTERFOREGROUND: { Video::HandleApplicationBackgroundState(false); break; + } case SDL_QUIT: { diff --git a/UnleashedRecompLib/CMakeLists.txt b/UnleashedRecompLib/CMakeLists.txt index 268a0520..6b656c9a 100644 --- a/UnleashedRecompLib/CMakeLists.txt +++ b/UnleashedRecompLib/CMakeLists.txt @@ -97,6 +97,7 @@ else() -G "${CMAKE_GENERATOR}" -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/host-tools/install + -DUNLEASHED_RECOMP=ON COMMAND ${CMAKE_COMMAND} --build "${HOST_XENONRECOMP_BUILD_DIR}" --config ${CMAKE_BUILD_TYPE} @@ -149,6 +150,7 @@ else() -G "${CMAKE_GENERATOR}" -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/host-tools/install + -DUNLEASHED_RECOMP=ON COMMAND ${CMAKE_COMMAND} --build "${HOST_XENOSRECOMP_BUILD_DIR}" --config ${CMAKE_BUILD_TYPE} @@ -159,6 +161,7 @@ else() "${CMAKE_CURRENT_SOURCE_DIR}/private/shader_decompressed.ar" ${XENOS_RECOMP_SOURCES} ${XENOS_RECOMP_INCLUDE} + "${XENOS_RECOMP_ROOT}/CMakeLists.txt" COMMENT "Building host XenosRecomp and generating shader cache" USES_TERMINAL ) diff --git a/thirdparty/MoltenVK/MoltenVK b/thirdparty/MoltenVK/MoltenVK index a14cbf43..3a0b07a2 160000 --- a/thirdparty/MoltenVK/MoltenVK +++ b/thirdparty/MoltenVK/MoltenVK @@ -1 +1 @@ -Subproject commit a14cbf433414aa95da7046694b069f0f3f9263a5 +Subproject commit 3a0b07a24a4a681ffe70b461b1f4333b2729e2ef diff --git a/thirdparty/MoltenVK/SPIRV-Cross b/thirdparty/MoltenVK/SPIRV-Cross index 38681a30..22b22f56 160000 --- a/thirdparty/MoltenVK/SPIRV-Cross +++ b/thirdparty/MoltenVK/SPIRV-Cross @@ -1 +1 @@ -Subproject commit 38681a30e09679191cc3957719eeee76024f6daf +Subproject commit 22b22f5685d868828be01c9ac00c31902e60afd9 From 5d5adbc7e6953990be3184e8614787d93940b713 Mon Sep 17 00:00:00 2001 From: MarkosTh09 Date: Thu, 23 Jul 2026 10:27:53 +0300 Subject: [PATCH 04/13] remove seperate iOS launcher and unify app entry point Use main.cpp as the sole application entry point via SDL_main.h and remove UnleashedRecompIOSLauncher to avoid duplicated build logic. --- UnleashedRecomp/CMakeLists.txt | 155 +++++++++------------------ UnleashedRecomp/ios/launcher_main.mm | 81 -------------- UnleashedRecomp/main.cpp | 7 +- 3 files changed, 53 insertions(+), 190 deletions(-) delete mode 100644 UnleashedRecomp/ios/launcher_main.mm diff --git a/UnleashedRecomp/CMakeLists.txt b/UnleashedRecomp/CMakeLists.txt index b0f01dad..6f3a2e73 100644 --- a/UnleashedRecomp/CMakeLists.txt +++ b/UnleashedRecomp/CMakeLists.txt @@ -57,14 +57,8 @@ function(BIN2C) ) endif() - set(_bin2c_target ${BIN2C_ARGS_TARGET_OBJ}) - - if(CMAKE_SYSTEM_NAME STREQUAL "iOS" AND TARGET UnleashedRecompIOSLauncher) - set(_bin2c_target UnleashedRecompIOSLauncher) - endif() - set_source_files_properties(${BIN2C_ARGS_DEST_FILE}.c PROPERTIES SKIP_PRECOMPILE_HEADERS ON) - target_sources(${_bin2c_target} PRIVATE ${BIN2C_ARGS_DEST_FILE}.c) + target_sources(${BIN2C_ARGS_TARGET_OBJ} PRIVATE ${BIN2C_ARGS_DEST_FILE}.c) endfunction() add_compile_options( @@ -88,10 +82,14 @@ else() endif() add_compile_definitions( - SDL_MAIN_HANDLED _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR # Microsoft wtf? _CRT_SECURE_NO_WARNINGS) +# SDL owns the iOS process entry point and invokes the application's SDL_main. +if(NOT CMAKE_SYSTEM_NAME STREQUAL "iOS") + add_compile_definitions(SDL_MAIN_HANDLED) +endif() + set(UNLEASHED_RECOMP_PRECOMPILED_HEADERS "stdafx.h" ) @@ -336,72 +334,28 @@ elseif(APPLE) set(IOS_BUNDLE_VERSION ${MACOS_BUNDLE_VERSION}) - add_executable(UnleashedRecomp MACOSX_BUNDLE - ${UNLEASHED_RECOMP_CXX_SOURCES} - res/macos/game_icon.icns - ) - set_source_files_properties(res/macos/game_icon.icns PROPERTIES - MACOSX_PACKAGE_LOCATION Resources) - set_target_properties(UnleashedRecomp PROPERTIES - OUTPUT_NAME "Unleashed Recompiled" - MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/res/macos/MacOSXBundleInfo.plist.in - MACOSX_BUNDLE_GUI_IDENTIFIER hedge-dev.UnleashedRecomp - MACOSX_BUNDLE_BUNDLE_NAME "Unleashed Recompiled" - MACOSX_BUNDLE_BUNDLE_VERSION ${MACOS_BUNDLE_VERSION} - MACOSX_BUNDLE_SHORT_VERSION_STRING ${MACOS_BUNDLE_VERSION} - MACOSX_BUNDLE_ICON_FILE "game_icon.icns" - MACOSX_DEPLOYMENT_TARGET "${CMAKE_OSX_DEPLOYMENT_TARGET}" - ) - if(CMAKE_SYSTEM_NAME STREQUAL "iOS") + add_executable(UnleashedRecomp MACOSX_BUNDLE ${UNLEASHED_RECOMP_CXX_SOURCES}) set_target_properties(UnleashedRecomp PROPERTIES - EXCLUDE_FROM_ALL TRUE - EXCLUDE_FROM_DEFAULT_BUILD TRUE - ) - endif() - - if(CMAKE_SYSTEM_NAME STREQUAL "iOS") - add_executable(UnleashedRecompIOSLauncher MACOSX_BUNDLE - ${UNLEASHED_RECOMP_CXX_SOURCES} - "ios/launcher_main.mm" - ) - set_target_properties(UnleashedRecompIOSLauncher PROPERTIES OUTPUT_NAME "Unleashed Recompiled iOS" MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/res/ios/iOSBundleInfo.plist.in - MACOSX_BUNDLE_GUI_IDENTIFIER hedge-dev.UnleashedRecomp.iOSLauncher - MACOSX_BUNDLE_BUNDLE_NAME "Unleashed Recompiled" - MACOSX_BUNDLE_BUNDLE_VERSION ${IOS_BUNDLE_VERSION} - MACOSX_BUNDLE_SHORT_VERSION_STRING ${IOS_BUNDLE_VERSION} - MACOSX_DEPLOYMENT_TARGET "${CMAKE_OSX_DEPLOYMENT_TARGET}" - ) - - set_target_properties(UnleashedRecompIOSLauncher PROPERTIES - OUTPUT_NAME "Unleashed Recompiled iOS" - MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/res/ios/iOSBundleInfo.plist.in - MACOSX_BUNDLE_GUI_IDENTIFIER hedge-dev.UnleashedRecomp.iOSLauncher + MACOSX_BUNDLE_GUI_IDENTIFIER hedge-dev.UnleashedRecomp.iOS MACOSX_BUNDLE_BUNDLE_NAME "Unleashed Recompiled" MACOSX_BUNDLE_BUNDLE_VERSION ${IOS_BUNDLE_VERSION} MACOSX_BUNDLE_SHORT_VERSION_STRING ${IOS_BUNDLE_VERSION} XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY "1,2" XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${CMAKE_OSX_DEPLOYMENT_TARGET}" - ) - - target_compile_definitions(UnleashedRecompIOSLauncher PRIVATE - UNLEASHED_RECOMP_IOS_LAUNCHER + BUILD_RPATH "@executable_path/Frameworks" + INSTALL_RPATH "@executable_path/Frameworks" ) set(MVK_FRAMEWORK_PATH "Frameworks/MoltenVK.framework") set(MVK_ICD_PATH "vulkan/icd.d") - set(MVK_APP_DIR "$") + set(MVK_APP_DIR "$") set(MVK_FRAMEWORK_DST "${MVK_APP_DIR}/${MVK_FRAMEWORK_PATH}") set(MVK_ICD_DST "${MVK_APP_DIR}/${MVK_ICD_PATH}") - set_target_properties(UnleashedRecompIOSLauncher PROPERTIES - BUILD_RPATH "@executable_path/Frameworks" - INSTALL_RPATH "@executable_path/Frameworks" - ) - set(MVK_ICD_SRC "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/MoltenVK/MoltenVK/MoltenVK/icd/MoltenVK_icd.json") set(MVK_FRAMEWORK_SRC @@ -409,7 +363,7 @@ elseif(APPLE) ) add_custom_command( - TARGET UnleashedRecompIOSLauncher POST_BUILD + TARGET UnleashedRecomp POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "${MVK_FRAMEWORK_DST}" COMMAND ${CMAKE_COMMAND} -E copy_directory "${MVK_FRAMEWORK_SRC}" @@ -418,7 +372,7 @@ elseif(APPLE) ) add_custom_command( - TARGET UnleashedRecompIOSLauncher POST_BUILD + TARGET UnleashedRecomp POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "${MVK_APP_DIR}/vulkan/icd.d" COMMAND ${CMAKE_COMMAND} -E copy "${MVK_ICD_SRC}" @@ -426,35 +380,43 @@ elseif(APPLE) COMMENT "Copying MoltenVK ICD" ) - add_dependencies(UnleashedRecompIOSLauncher MoltenVK) - endif() - - # Linking with MoltenVK directly would prevent using the system Vulkan loader to load with debug layers. - # Instead, copy the MoltenVK dylib to the app bundle along with an ICD file for the loader to find it. - # In the event the loader is not installed, the MoltenVK dylib can still be picked up directly in the app bundle. - set(MVK_BUNDLED_PATH "Resources/vulkan/icd.d") - set(MVK_DST "${CMAKE_CURRENT_BINARY_DIR}/Unleashed Recompiled.app/Contents/${MVK_BUNDLED_PATH}") - set_property(TARGET UnleashedRecomp APPEND PROPERTY BUILD_RPATH "@executable_path/../${MVK_BUNDLED_PATH}") - - set(MVK_ICD_SRC "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/MoltenVK/MoltenVK/MoltenVK/icd/MoltenVK_icd.json") - set(MVK_ICD_DST "${MVK_DST}/MoltenVK_icd.json") - set(MVK_DYLIB_SRC "${CMAKE_BINARY_DIR}/thirdparty/MoltenVK/MoltenVK.framework/MoltenVK") - set(MVK_DYLIB_DST "${MVK_DST}/libMoltenVK.dylib") + add_dependencies(UnleashedRecomp MoltenVK) + else() + add_executable(UnleashedRecomp MACOSX_BUNDLE + ${UNLEASHED_RECOMP_CXX_SOURCES} + res/macos/game_icon.icns + ) + set_source_files_properties(res/macos/game_icon.icns PROPERTIES + MACOSX_PACKAGE_LOCATION Resources) + set_target_properties(UnleashedRecomp PROPERTIES + OUTPUT_NAME "Unleashed Recompiled" + MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/res/macos/MacOSXBundleInfo.plist.in + MACOSX_BUNDLE_GUI_IDENTIFIER hedge-dev.UnleashedRecomp + MACOSX_BUNDLE_BUNDLE_NAME "Unleashed Recompiled" + MACOSX_BUNDLE_BUNDLE_VERSION ${MACOS_BUNDLE_VERSION} + MACOSX_BUNDLE_SHORT_VERSION_STRING ${MACOS_BUNDLE_VERSION} + MACOSX_BUNDLE_ICON_FILE "game_icon.icns" + MACOSX_DEPLOYMENT_TARGET "${CMAKE_OSX_DEPLOYMENT_TARGET}" + ) + # Linking with MoltenVK directly would prevent using the system Vulkan loader to load with debug layers. + # Instead, copy the MoltenVK dylib to the app bundle along with an ICD file for the loader to find it. + # In the event the loader is not installed, the MoltenVK dylib can still be picked up directly in the app bundle. + set(MVK_BUNDLED_PATH "Resources/vulkan/icd.d") + set(MVK_DST "${CMAKE_CURRENT_BINARY_DIR}/Unleashed Recompiled.app/Contents/${MVK_BUNDLED_PATH}") + set_property(TARGET UnleashedRecomp APPEND PROPERTY BUILD_RPATH "@executable_path/../${MVK_BUNDLED_PATH}") - add_custom_command( - OUTPUT ${MVK_DST} - COMMAND ${CMAKE_COMMAND} -E make_directory ${MVK_DST}) - add_custom_command( - OUTPUT ${MVK_ICD_DST} - DEPENDS ${MVK_ICD_SRC} ${MVK_DST} - COMMAND ${CMAKE_COMMAND} -E copy ${MVK_ICD_SRC} ${MVK_ICD_DST}) - add_custom_command( - OUTPUT ${MVK_DYLIB_DST} - DEPENDS ${MVK_DYLIB_SRC} ${MVK_DST} - COMMAND ${CMAKE_COMMAND} -E copy ${MVK_DYLIB_SRC} ${MVK_DYLIB_DST}) - add_custom_target(CopyMoltenVK DEPENDS ${MVK_ICD_DST} ${MVK_DYLIB_DST}) - add_dependencies(CopyMoltenVK MoltenVK) - add_dependencies(UnleashedRecomp CopyMoltenVK) + set(MVK_ICD_SRC "${UNLEASHED_RECOMP_THIRDPARTY_ROOT}/MoltenVK/MoltenVK/MoltenVK/icd/MoltenVK_icd.json") + set(MVK_ICD_DST "${MVK_DST}/MoltenVK_icd.json") + set(MVK_DYLIB_SRC "${CMAKE_BINARY_DIR}/thirdparty/MoltenVK/MoltenVK.framework/MoltenVK") + set(MVK_DYLIB_DST "${MVK_DST}/libMoltenVK.dylib") + + add_custom_command(OUTPUT ${MVK_DST} COMMAND ${CMAKE_COMMAND} -E make_directory ${MVK_DST}) + add_custom_command(OUTPUT ${MVK_ICD_DST} DEPENDS ${MVK_ICD_SRC} ${MVK_DST} COMMAND ${CMAKE_COMMAND} -E copy ${MVK_ICD_SRC} ${MVK_ICD_DST}) + add_custom_command(OUTPUT ${MVK_DYLIB_DST} DEPENDS ${MVK_DYLIB_SRC} ${MVK_DST} COMMAND ${CMAKE_COMMAND} -E copy ${MVK_DYLIB_SRC} ${MVK_DYLIB_DST}) + add_custom_target(CopyMoltenVK DEPENDS ${MVK_ICD_DST} ${MVK_DYLIB_DST}) + add_dependencies(CopyMoltenVK MoltenVK) + add_dependencies(UnleashedRecomp CopyMoltenVK) + endif() else() add_executable(UnleashedRecomp ${UNLEASHED_RECOMP_CXX_SOURCES}) endif() @@ -492,10 +454,6 @@ endif() if(UNLEASHED_RECOMP_METAL) target_compile_definitions(UnleashedRecomp PRIVATE UNLEASHED_RECOMP_METAL) - - if(TARGET UnleashedRecompIOSLauncher) - target_compile_definitions(UnleashedRecompIOSLauncher PRIVATE UNLEASHED_RECOMP_METAL) - endif() endif() if(WIN32) @@ -527,6 +485,7 @@ set(UNLEASHED_RECOMP_LINK_LIBS ) if(CMAKE_SYSTEM_NAME STREQUAL "iOS") + list(PREPEND UNLEASHED_RECOMP_LINK_LIBS SDL2::SDL2main) list(APPEND UNLEASHED_RECOMP_LINK_LIBS "-framework UniformTypeIdentifiers") endif() @@ -546,16 +505,6 @@ endif() target_precompile_headers(UnleashedRecomp PUBLIC ${UNLEASHED_RECOMP_PRECOMPILED_HEADERS}) -if(TARGET UnleashedRecompIOSLauncher) - target_link_libraries(UnleashedRecompIOSLauncher PRIVATE ${UNLEASHED_RECOMP_LINK_LIBS}) - target_include_directories(UnleashedRecompIOSLauncher PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR} - "${CMAKE_CURRENT_SOURCE_DIR}/api" - ${UNLEASHED_RECOMP_THIRDPARTY_INCLUDES} - ) - target_precompile_headers(UnleashedRecompIOSLauncher PUBLIC ${UNLEASHED_RECOMP_PRECOMPILED_HEADERS}) -endif() - # If DXC tool not provided, try to pick up vendored host DXC (used for shader compilation) if(NOT DEFINED DIRECTX_DXC_TOOL) set(_dxc_vendor_dir "${CMAKE_SOURCE_DIR}/tools/XenosRecomp/thirdparty/dxc-bin") @@ -583,10 +532,6 @@ endif() function(compile_shader FILE_PATH TARGET_NAME) set(_shader_target UnleashedRecomp) - if(CMAKE_SYSTEM_NAME STREQUAL "iOS" AND TARGET UnleashedRecompIOSLauncher) - set(_shader_target UnleashedRecompIOSLauncher) - endif() - set(HLSL_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/hlsl/${FILE_PATH}.hlsl) set(MSL_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/gpu/shader/msl/${FILE_PATH}.metal) cmake_path(GET HLSL_FILE_PATH STEM HLSL_NAME) diff --git a/UnleashedRecomp/ios/launcher_main.mm b/UnleashedRecomp/ios/launcher_main.mm deleted file mode 100644 index 6f29e456..00000000 --- a/UnleashedRecomp/ios/launcher_main.mm +++ /dev/null @@ -1,81 +0,0 @@ -#import -#import -#import - -#include -#include - -int UnleashedMain(int argc, char *argv[]); - -#if _DEBUG -@interface StdRedirector : NSObject -- (void)start; -@end -@interface StdRedirector () -@property (nonatomic, strong) NSFileHandle *pipeReadHandle; -@property (nonatomic) dispatch_source_t source; -@property (nonatomic) os_log_t log; -@end - -@implementation StdRedirector - -- (void)start { - self.log = os_log_create("com.yourapp.stdout", "console"); - - int pipefd[2]; - pipe(pipefd); - - int readFD = pipefd[0]; - int writeFD = pipefd[1]; - - // Redirect stdout + stderr to pipe - dup2(writeFD, STDOUT_FILENO); - dup2(writeFD, STDERR_FILENO); - - close(writeFD); - - self.pipeReadHandle = [[NSFileHandle alloc] initWithFileDescriptor:readFD closeOnDealloc:YES]; - - dispatch_queue_t queue = dispatch_get_global_queue(QOS_CLASS_UTILITY, 0); - - self.source = dispatch_source_create(DISPATCH_SOURCE_TYPE_READ, - readFD, - 0, - queue); - - __weak typeof(self) weakSelf = self; - - dispatch_source_set_event_handler(self.source, ^{ - __strong typeof(weakSelf) self = weakSelf; - if (!self) return; - - NSData *data = [self.pipeReadHandle availableData]; - if (data.length == 0) return; - - NSString *output = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; - if (!output) return; - - NSArray *lines = [output componentsSeparatedByString:@"\n"]; - - for (NSString *line in lines) { - if (line.length == 0) continue; - - os_log_info(self.log, "%{public}@", line); - } - }); - - dispatch_resume(self.source); -} - -@end -#endif - -int main(int argc, char *argv[]) { - @autoreleasepool { - #if _DEBUG - StdRedirector *redirector = [[StdRedirector alloc] init]; - [redirector start]; - #endif - return SDL_UIKitRunApp(argc, argv, UnleashedMain); - } -} diff --git a/UnleashedRecomp/main.cpp b/UnleashedRecomp/main.cpp index c0faad82..e34d7e10 100644 --- a/UnleashedRecomp/main.cpp +++ b/UnleashedRecomp/main.cpp @@ -1,4 +1,7 @@ #include +#if defined(__IPHONEOS__) +#include +#endif #ifdef __x86_64__ #include #endif @@ -197,11 +200,7 @@ void init() } #endif -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) -int UnleashedMain(int argc, char *argv[]) -#else int main(int argc, char *argv[]) -#endif { #ifdef _WIN32 timeBeginPeriod(1); From 8ea1bfc1722254328ad05d0d2ed7e63a9576b365 Mon Sep 17 00:00:00 2001 From: MarkosTh09 Date: Tue, 22 Sep 2026 22:24:11 +0300 Subject: [PATCH 05/13] use ios-cmake as submodule --- .gitmodules | 3 + CMakePresets.json | 2 +- thirdparty/ios-cmake | 1 + toolchains/ios.toolchain.cmake | 1177 -------------------------------- 4 files changed, 5 insertions(+), 1178 deletions(-) create mode 160000 thirdparty/ios-cmake delete mode 100644 toolchains/ios.toolchain.cmake diff --git a/.gitmodules b/.gitmodules index 2adc3752..0976521b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -58,3 +58,6 @@ [submodule "thirdparty/plume"] path = thirdparty/plume url = https://github.com/renderbag/plume.git +[submodule "thirdparty/ios-cmake"] + path = thirdparty/ios-cmake + url = https://github.com/leetal/ios-cmake.git diff --git a/CMakePresets.json b/CMakePresets.json index 560a19c6..6a8c6ed2 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -184,7 +184,7 @@ "type": "FILEPATH" }, "VCPKG_CHAINLOAD_TOOLCHAIN_FILE": { - "value": "${sourceDir}/toolchains/ios.toolchain.cmake", + "value": "${sourceDir}/thirdparty/ios-cmake/ios.toolchain.cmake", "type": "FILEPATH" }, "VCPKG_TARGET_TRIPLET": { diff --git a/thirdparty/ios-cmake b/thirdparty/ios-cmake new file mode 160000 index 00000000..b055a032 --- /dev/null +++ b/thirdparty/ios-cmake @@ -0,0 +1 @@ +Subproject commit b055a0320feccc168dca13b381ae7097c4771585 diff --git a/toolchains/ios.toolchain.cmake b/toolchains/ios.toolchain.cmake deleted file mode 100644 index 3ee3940a..00000000 --- a/toolchains/ios.toolchain.cmake +++ /dev/null @@ -1,1177 +0,0 @@ -# This file is part of the ios-cmake project. It was retrieved from -# https://github.com/leetal/ios-cmake.git, which is a fork of -# https://github.com/gerstrong/ios-cmake.git, which is a fork of -# https://github.com/cristeab/ios-cmake.git, which is a fork of -# https://code.google.com/p/ios-cmake/. Which in turn is based off of -# the Platform/Darwin.cmake and Platform/UnixPaths.cmake files which -# are included with CMake 2.8.4 -# -# The ios-cmake project is licensed under the new BSD license. -# -# Copyright (c) 2014, Bogdan Cristea and LTE Engineering Software, -# Kitware, Inc., Insight Software Consortium. All rights reserved. -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# 3. Neither the name of the copyright holder nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# -# This file is based on the Platform/Darwin.cmake and -# Platform/UnixPaths.cmake files which are included with CMake 2.8.4 -# It has been altered for iOS development. -# -# Updated by Alex Stewart (alexs.mac@gmail.com) -# -# ***************************************************************************** -# Now maintained by Alexander Widerberg (widerbergaren [at] gmail.com) -# under the BSD-3-Clause license -# https://github.com/leetal/ios-cmake -# ***************************************************************************** -# -# INFORMATION / HELP -# -############################################################################### -# OPTIONS # -############################################################################### -# -# PLATFORM: (default "OS64") -# OS = Build for iPhoneOS. -# OS64 = Build for arm64 iphoneOS. -# OS64COMBINED = Build for arm64 x86_64 iphoneOS + iphoneOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step) -# SIMULATOR = Build for x86 i386 iphoneOS Simulator. -# SIMULATOR64 = Build for x86_64 iphoneOS Simulator. -# SIMULATORARM64 = Build for arm64 iphoneOS Simulator. -# SIMULATOR64COMBINED = Build for arm64 x86_64 iphoneOS Simulator. Combined into FAT STATIC lib (supported on 3.14+ of CMakewith "-G Xcode" argument ONLY) -# TVOS = Build for arm64 tvOS. -# TVOSCOMBINED = Build for arm64 x86_64 tvOS + tvOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step) -# SIMULATOR_TVOS = Build for x86_64 tvOS Simulator. -# SIMULATORARM64_TVOS = Build for arm64 tvOS Simulator. -# VISIONOSCOMBINED = Build for arm64 visionOS + visionOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step) -# VISIONOS = Build for arm64 visionOS. -# SIMULATOR_VISIONOS = Build for arm64 visionOS Simulator. -# WATCHOS = Build for armv7k arm64_32 for watchOS. -# WATCHOSCOMBINED = Build for armv7k arm64_32 x86_64 watchOS + watchOS Simulator. Combined into FAT STATIC lib (only supported on 3.14+ of CMake with "-G Xcode" argument in combination with the "cmake --install" CMake build step) -# SIMULATOR_WATCHOS = Build for x86_64 for watchOS Simulator. -# SIMULATORARM64_WATCHOS = Build for arm64 for watchOS Simulator. -# SIMULATOR_WATCHOSCOMBINED = Build for arm64 x86_64 for watchOS Simulator. Combined into FAT STATIC lib (supported on 3.14+ of CMakewith "-G Xcode" argument ONLY) -# MAC = Build for x86_64 macOS. -# MAC_ARM64 = Build for Apple Silicon macOS. -# MAC_UNIVERSAL = Combined build for x86_64 and Apple Silicon on macOS. -# MAC_CATALYST = Build for x86_64 macOS with Catalyst support (iOS toolchain on macOS). -# Note: The build argument "MACOSX_DEPLOYMENT_TARGET" can be used to control min-version of macOS -# MAC_CATALYST_ARM64 = Build for Apple Silicon macOS with Catalyst support (iOS toolchain on macOS). -# Note: The build argument "MACOSX_DEPLOYMENT_TARGET" can be used to control min-version of macOS -# MAC_CATALYST_UNIVERSAL = Combined build for x86_64 and Apple Silicon on Catalyst. -# -# CMAKE_OSX_SYSROOT: Path to the SDK to use. By default this is -# automatically determined from PLATFORM and xcodebuild, but -# can also be manually specified (although this should not be required). -# -# CMAKE_DEVELOPER_ROOT: Path to the Developer directory for the platform -# being compiled for. By default, this is automatically determined from -# CMAKE_OSX_SYSROOT, but can also be manually specified (although this should -# not be required). -# -# DEPLOYMENT_TARGET: Minimum SDK version to target. Default 6.0 on watchOS, 13.0 on tvOS+iOS/iPadOS, 11.0 on macOS, 1.0 on visionOS -# -# NAMED_LANGUAGE_SUPPORT: -# ON (default) = Will require "enable_language(OBJC) and/or enable_language(OBJCXX)" for full OBJC|OBJCXX support -# OFF = Will embed the OBJC and OBJCXX flags into the CMAKE_C_FLAGS and CMAKE_CXX_FLAGS (legacy behavior, CMake version < 3.16) -# -# ENABLE_BITCODE: (ON|OFF) Enables or disables bitcode support. Default OFF -# -# ENABLE_ARC: (ON|OFF) Enables or disables ARC support. Default ON (ARC enabled by default) -# -# ENABLE_VISIBILITY: (ON|OFF) Enables or disables symbol visibility support. Default OFF (visibility hidden by default) -# -# ENABLE_STRICT_TRY_COMPILE: (ON|OFF) Enables or disables strict try_compile() on all Check* directives (will run linker -# to actually check if linking is possible). Default OFF (will set CMAKE_TRY_COMPILE_TARGET_TYPE to STATIC_LIBRARY) -# -# ARCHS: (armv7 armv7s armv7k arm64 arm64_32 i386 x86_64) If specified, will override the default architectures for the given PLATFORM -# OS = armv7 armv7s arm64 (if applicable) -# OS64 = arm64 (if applicable) -# SIMULATOR = i386 -# SIMULATOR64 = x86_64 -# SIMULATORARM64 = arm64 -# TVOS = arm64 -# SIMULATOR_TVOS = x86_64 (i386 has since long been deprecated) -# SIMULATORARM64_TVOS = arm64 -# WATCHOS = armv7k arm64_32 (if applicable) -# SIMULATOR_WATCHOS = x86_64 (i386 has since long been deprecated) -# SIMULATORARM64_WATCHOS = arm64 -# MAC = x86_64 -# MAC_ARM64 = arm64 -# MAC_UNIVERSAL = x86_64 arm64 -# MAC_CATALYST = x86_64 -# MAC_CATALYST_ARM64 = arm64 -# MAC_CATALYST_UNIVERSAL = x86_64 arm64 -# -# NOTE: When manually specifying ARCHS, put a semi-colon between the entries. E.g., -DARCHS="armv7;arm64" -# -############################################################################### -# END OPTIONS # -############################################################################### -# -# This toolchain defines the following properties (available via get_property()) for use externally: -# -# PLATFORM: The currently targeted platform. -# XCODE_VERSION: Version number (not including Build version) of Xcode detected. -# SDK_VERSION: Version of SDK being used. -# OSX_ARCHITECTURES: Architectures being compiled for (generated from PLATFORM). -# APPLE_TARGET_TRIPLE: Used by autoconf build systems. NOTE: If "ARCHS" is overridden, this will *NOT* be set! -# -# This toolchain defines the following macros for use externally: -# -# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE XCODE_VARIANT) -# A convenience macro for setting xcode specific properties on targets. -# Available variants are: All, Release, RelWithDebInfo, Debug, MinSizeRel -# example: set_xcode_property (myioslib IPHONEOS_DEPLOYMENT_TARGET "3.1" "all"). -# -# find_host_package (PROGRAM ARGS) -# A macro used to find executable programs on the host system, not within the -# environment. Thanks to the android-cmake project for providing the -# command. -# - -cmake_minimum_required(VERSION 3.8.0) - -# CMake invokes the toolchain file twice during the first build, but only once during subsequent rebuilds. -# NOTE: To improve single-library build-times, provide the flag "OS_SINGLE_BUILD" as a build argument. -if(DEFINED OS_SINGLE_BUILD AND DEFINED ENV{_IOS_TOOLCHAIN_HAS_RUN}) - return() -endif() -set(ENV{_IOS_TOOLCHAIN_HAS_RUN} true) - -# List of supported platform values -list(APPEND _supported_platforms - "OS" "OS64" "OS64COMBINED" "SIMULATOR" "SIMULATOR64" "SIMULATORARM64" "SIMULATOR64COMBINED" - "TVOS" "TVOSCOMBINED" "SIMULATOR_TVOS" "SIMULATORARM64_TVOS" - "WATCHOS" "WATCHOSCOMBINED" "SIMULATOR_WATCHOS" "SIMULATORARM64_WATCHOS" "SIMULATOR_WATCHOSCOMBINED" - "MAC" "MAC_ARM64" "MAC_UNIVERSAL" - "VISIONOS" "SIMULATOR_VISIONOS" "VISIONOSCOMBINED" - "MAC_CATALYST" "MAC_CATALYST_ARM64" "MAC_CATALYST_UNIVERSAL") - -# Cache what generator is used -set(USED_CMAKE_GENERATOR "${CMAKE_GENERATOR}") - -# Check if using a CMake version capable of building combined FAT builds (simulator and target slices combined in one static lib) -if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.14") - set(MODERN_CMAKE YES) -endif() - -# Get the Xcode version being used. -# Problem: CMake runs toolchain files multiple times, but can't read cache variables on some runs. -# Workaround: On the first run (in which cache variables are always accessible), set an intermediary environment variable. -# -# NOTE: This pattern is used in many places in this toolchain to speed up checks of all sorts -if(DEFINED XCODE_VERSION_INT) - # Environment variables are always preserved. - set(ENV{_XCODE_VERSION_INT} "${XCODE_VERSION_INT}") -elseif(DEFINED ENV{_XCODE_VERSION_INT}) - set(XCODE_VERSION_INT "$ENV{_XCODE_VERSION_INT}") -elseif(NOT DEFINED XCODE_VERSION_INT) - find_program(XCODEBUILD_EXECUTABLE xcodebuild) - if(NOT XCODEBUILD_EXECUTABLE) - message(FATAL_ERROR "xcodebuild not found. Please install either the standalone commandline tools or Xcode.") - endif() - execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -version - OUTPUT_VARIABLE XCODE_VERSION_INT - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - string(REGEX MATCH "Xcode [0-9\\.]+" XCODE_VERSION_INT "${XCODE_VERSION_INT}") - string(REGEX REPLACE "Xcode ([0-9\\.]+)" "\\1" XCODE_VERSION_INT "${XCODE_VERSION_INT}") - set(XCODE_VERSION_INT "${XCODE_VERSION_INT}" CACHE INTERNAL "") -endif() - -# Assuming that xcode 12.0 is installed you most probably have ios sdk 14.0 or later installed (tested on Big Sur) -# if you don't set a deployment target it will be set the way you only get 64-bit builds -#if(NOT DEFINED DEPLOYMENT_TARGET AND XCODE_VERSION_INT VERSION_GREATER 12.0) -# Temporarily fix the arm64 issues in CMake install-combined by excluding arm64 for simulator builds (needed for Apple Silicon...) -# set(CMAKE_XCODE_ATTRIBUTE_EXCLUDED_ARCHS[sdk=iphonesimulator*] "arm64") -#endif() - -# Check if the platform variable is set -if(DEFINED PLATFORM) - # Environment variables are always preserved. - set(ENV{_PLATFORM} "${PLATFORM}") -elseif(DEFINED ENV{_PLATFORM}) - set(PLATFORM "$ENV{_PLATFORM}") -elseif(NOT DEFINED PLATFORM) - message(FATAL_ERROR "PLATFORM argument not set. Bailing configure since I don't know what target you want to build for!") -endif () - -if(PLATFORM MATCHES ".*COMBINED" AND NOT CMAKE_GENERATOR MATCHES "Xcode") - message(FATAL_ERROR "The combined builds support requires Xcode to be used as a generator via '-G Xcode' command-line argument in CMake") -endif() - -# Safeguard that the platform value is set and is one of the supported values -list(FIND _supported_platforms ${PLATFORM} contains_PLATFORM) -if("${contains_PLATFORM}" EQUAL "-1") - string(REPLACE ";" "\n * " _supported_platforms_formatted "${_supported_platforms}") - message(FATAL_ERROR " Invalid PLATFORM specified! Current value: ${PLATFORM}.\n" - " Supported PLATFORM values: \n * ${_supported_platforms_formatted}") -endif() - -# Check if Apple Silicon is supported -if(PLATFORM MATCHES "^(MAC_ARM64)$|^(MAC_CATALYST_ARM64)$|^(MAC_UNIVERSAL)$|^(MAC_CATALYST_UNIVERSAL)$" AND ${CMAKE_VERSION} VERSION_LESS "3.19.5") - message(FATAL_ERROR "Apple Silicon builds requires a minimum of CMake 3.19.5") -endif() - -# Touch the toolchain variable to suppress the "unused variable" warning. -# This happens if CMake is invoked with the same command line the second time. -if(CMAKE_TOOLCHAIN_FILE) -endif() - -# Fix for PThread library not in path -set(CMAKE_THREAD_LIBS_INIT "-lpthread") -set(CMAKE_HAVE_THREADS_LIBRARY 1) -set(CMAKE_USE_WIN32_THREADS_INIT 0) -set(CMAKE_USE_PTHREADS_INIT 1) - -# Specify named language support defaults. -if(NOT DEFINED NAMED_LANGUAGE_SUPPORT AND ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.16") - set(NAMED_LANGUAGE_SUPPORT ON) - message(STATUS "[DEFAULTS] Using explicit named language support! E.g., enable_language(CXX) is needed in the project files.") -elseif(NOT DEFINED NAMED_LANGUAGE_SUPPORT AND ${CMAKE_VERSION} VERSION_LESS "3.16") - set(NAMED_LANGUAGE_SUPPORT OFF) - message(STATUS "[DEFAULTS] Disabling explicit named language support. Falling back to legacy behavior.") -elseif(DEFINED NAMED_LANGUAGE_SUPPORT AND ${CMAKE_VERSION} VERSION_LESS "3.16") - message(FATAL_ERROR "CMake named language support for OBJC and OBJCXX was added in CMake 3.16.") -endif() -set(NAMED_LANGUAGE_SUPPORT_INT ${NAMED_LANGUAGE_SUPPORT} CACHE BOOL - "Whether or not to enable explicit named language support" FORCE) - -# Specify the minimum version of the deployment target. -if(NOT DEFINED DEPLOYMENT_TARGET) - if (PLATFORM MATCHES "WATCHOS") - # Unless specified, SDK version 6.0 is used by default as minimum target version (watchOS). - set(DEPLOYMENT_TARGET "6.0") - elseif(PLATFORM STREQUAL "MAC") - # Unless specified, SDK version 11.0 (Big Sur) is used by default as the minimum target version (macOS on x86). - set(DEPLOYMENT_TARGET "11.0") - elseif(PLATFORM STREQUAL "VISIONOS" OR PLATFORM STREQUAL "SIMULATOR_VISIONOS" OR PLATFORM STREQUAL "VISIONOSCOMBINED") - # Unless specified, SDK version 1.0 is used by default as minimum target version (visionOS). - set(DEPLOYMENT_TARGET "1.0") - elseif(PLATFORM STREQUAL "MAC_ARM64") - # Unless specified, SDK version 11.0 (Big Sur) is used by default as the minimum target version (macOS on arm). - set(DEPLOYMENT_TARGET "11.0") - elseif(PLATFORM STREQUAL "MAC_UNIVERSAL") - # Unless specified, SDK version 11.0 (Big Sur) is used by default as minimum target version for universal builds. - set(DEPLOYMENT_TARGET "11.0") - elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64" OR PLATFORM STREQUAL "MAC_CATALYST_UNIVERSAL") - # Unless specified, SDK version 13.1 is used by default as the minimum target version (mac catalyst minimum requirement). - set(DEPLOYMENT_TARGET "13.1") - else() - # Unless specified, SDK version 13.0 is used by default as the minimum target version (iOS, tvOS). - set(DEPLOYMENT_TARGET "13.0") - endif() - message(STATUS "[DEFAULTS] Using the default min-version since DEPLOYMENT_TARGET not provided!") -elseif(DEFINED DEPLOYMENT_TARGET AND PLATFORM MATCHES "^MAC_CATALYST" AND ${DEPLOYMENT_TARGET} VERSION_LESS "13.1") - message(FATAL_ERROR "Mac Catalyst builds requires a minimum deployment target of 13.1!") -endif() - -# Store the DEPLOYMENT_TARGET in the cache -set(DEPLOYMENT_TARGET "${DEPLOYMENT_TARGET}" CACHE INTERNAL "") - -# Handle the case where we are targeting iOS and a version above 10.3.4 (32-bit support dropped officially) -if(PLATFORM STREQUAL "OS" AND DEPLOYMENT_TARGET VERSION_GREATER_EQUAL 10.3.4) - set(PLATFORM "OS64") - message(STATUS "Targeting minimum SDK version ${DEPLOYMENT_TARGET}. Dropping 32-bit support.") -elseif(PLATFORM STREQUAL "SIMULATOR" AND DEPLOYMENT_TARGET VERSION_GREATER_EQUAL 10.3.4) - set(PLATFORM "SIMULATOR64") - message(STATUS "Targeting minimum SDK version ${DEPLOYMENT_TARGET}. Dropping 32-bit support.") -endif() - -set(PLATFORM_INT "${PLATFORM}") - -if(DEFINED ARCHS) - string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") -endif() - -# Determine the platform name and architectures for use in xcodebuild commands -# from the specified PLATFORM_INT name. -if(PLATFORM_INT STREQUAL "OS") - set(SDK_NAME iphoneos) - if(NOT ARCHS) - set(ARCHS armv7 armv7s arm64) - set(APPLE_TARGET_TRIPLE_INT arm-apple-ios${DEPLOYMENT_TARGET}) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}) - endif() -elseif(PLATFORM_INT STREQUAL "OS64") - set(SDK_NAME iphoneos) - if(NOT ARCHS) - if (XCODE_VERSION_INT VERSION_GREATER 10.0) - set(ARCHS arm64) # FIXME: Add arm64e when Apple has fixed the integration issues with it, libarclite_iphoneos.a is currently missing bitcode markers for example - else() - set(ARCHS arm64) - endif() - set(APPLE_TARGET_TRIPLE_INT arm64-apple-ios${DEPLOYMENT_TARGET}) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}) - endif() -elseif(PLATFORM_INT STREQUAL "OS64COMBINED") - set(SDK_NAME iphoneos) - if(MODERN_CMAKE) - if(NOT ARCHS) - if (XCODE_VERSION_INT VERSION_GREATER 12.0) - set(ARCHS arm64 x86_64) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64 arm64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64 arm64") - else() - set(ARCHS arm64 x86_64) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64") - endif() - set(APPLE_TARGET_TRIPLE_INT arm64-x86_64-apple-ios${DEPLOYMENT_TARGET}) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}) - endif() - else() - message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the OS64COMBINED setting work") - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATOR64COMBINED") - set(SDK_NAME iphonesimulator) - if(MODERN_CMAKE) - if(NOT ARCHS) - if (XCODE_VERSION_INT VERSION_GREATER 12.0) - set(ARCHS arm64 x86_64) # FIXME: Add arm64e when Apple have fixed the integration issues with it, libarclite_iphoneos.a is currently missing bitcode markers for example - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64 arm64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64 arm64") - else() - set(ARCHS arm64 x86_64) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphoneos*] "") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=iphonesimulator*] "x86_64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphoneos*] "") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=iphonesimulator*] "x86_64") - endif() - set(APPLE_TARGET_TRIPLE_INT aarch64-x86_64-apple-ios${DEPLOYMENT_TARGET}-simulator) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator) - endif() - else() - message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the SIMULATOR64COMBINED setting work") - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATOR") - set(SDK_NAME iphonesimulator) - if(NOT ARCHS) - set(ARCHS i386) - set(APPLE_TARGET_TRIPLE_INT i386-apple-ios${DEPLOYMENT_TARGET}-simulator) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator) - endif() - message(DEPRECATION "SIMULATOR IS DEPRECATED. Consider using SIMULATOR64 instead.") -elseif(PLATFORM_INT STREQUAL "SIMULATOR64") - set(SDK_NAME iphonesimulator) - if(NOT ARCHS) - set(ARCHS x86_64) - set(APPLE_TARGET_TRIPLE_INT x86_64-apple-ios${DEPLOYMENT_TARGET}-simulator) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator) - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATORARM64") - set(SDK_NAME iphonesimulator) - if(NOT ARCHS) - set(ARCHS arm64) - set(APPLE_TARGET_TRIPLE_INT arm64-apple-ios${DEPLOYMENT_TARGET}-simulator) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-simulator) - endif() -elseif(PLATFORM_INT STREQUAL "TVOS") - set(SDK_NAME appletvos) - if(NOT ARCHS) - set(ARCHS arm64) - set(APPLE_TARGET_TRIPLE_INT arm64-apple-tvos${DEPLOYMENT_TARGET}) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}) - endif() -elseif (PLATFORM_INT STREQUAL "TVOSCOMBINED") - set(SDK_NAME appletvos) - if(MODERN_CMAKE) - if(NOT ARCHS) - set(ARCHS arm64 x86_64) - set(APPLE_TARGET_TRIPLE_INT arm64-x86_64-apple-tvos${DEPLOYMENT_TARGET}) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=appletvos*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=appletvsimulator*] "x86_64 arm64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=appletvos*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=appletvsimulator*] "x86_64 arm64") - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}) - endif() - else() - message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the TVOSCOMBINED setting work") - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATOR_TVOS") - set(SDK_NAME appletvsimulator) - if(NOT ARCHS) - set(ARCHS x86_64) - set(APPLE_TARGET_TRIPLE_INT x86_64-apple-tvos${DEPLOYMENT_TARGET}-simulator) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}-simulator) - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_TVOS") - set(SDK_NAME appletvsimulator) - if(NOT ARCHS) - set(ARCHS arm64) - set(APPLE_TARGET_TRIPLE_INT arm64-apple-tvos${DEPLOYMENT_TARGET}-simulator) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-tvos${DEPLOYMENT_TARGET}-simulator) - endif() -elseif(PLATFORM_INT STREQUAL "WATCHOS") - set(SDK_NAME watchos) - if(NOT ARCHS) - if (XCODE_VERSION_INT VERSION_GREATER 10.0) - set(ARCHS armv7k arm64_32) - set(APPLE_TARGET_TRIPLE_INT arm64_32-apple-watchos${DEPLOYMENT_TARGET}) - else() - set(ARCHS armv7k) - set(APPLE_TARGET_TRIPLE_INT arm-apple-watchos${DEPLOYMENT_TARGET}) - endif() - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}) - endif() -elseif(PLATFORM_INT STREQUAL "WATCHOSCOMBINED") - set(SDK_NAME watchos) - if(MODERN_CMAKE) - if(NOT ARCHS) - if (XCODE_VERSION_INT VERSION_GREATER 10.0) - set(ARCHS armv7k arm64_32 x86_64) - set(APPLE_TARGET_TRIPLE_INT arm64_32-x86_64-apple-watchos${DEPLOYMENT_TARGET}) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "armv7k arm64_32") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "x86_64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "armv7k arm64_32") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "x86_64") - else() - set(ARCHS armv7k i386) - set(APPLE_TARGET_TRIPLE_INT arm-i386-apple-watchos${DEPLOYMENT_TARGET}) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "armv7k") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "armv7k") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386") - endif() - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}) - endif() - else() - message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the WATCHOSCOMBINED setting work") - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS") - set(SDK_NAME watchsimulator) - if(NOT ARCHS) - if (XCODE_VERSION_INT VERSION_GREATER 10.0) - set(ARCHS x86_64) - set(APPLE_TARGET_TRIPLE_INT x86_64-apple-watchos${DEPLOYMENT_TARGET}-simulator) - else() - set(ARCHS i386) - set(APPLE_TARGET_TRIPLE_INT i386-apple-watchos${DEPLOYMENT_TARGET}-simulator) - endif() - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator) - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_WATCHOS") - set(SDK_NAME watchsimulator) - if(NOT ARCHS) - set(ARCHS arm64) - set(APPLE_TARGET_TRIPLE_INT arm64-apple-watchos${DEPLOYMENT_TARGET}-simulator) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator) - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOSCOMBINED") - set(SDK_NAME watchsimulator) - if(MODERN_CMAKE) - if(NOT ARCHS) - if (XCODE_VERSION_INT VERSION_GREATER 12.0) - set(ARCHS arm64 x86_64) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "arm64 x86_64") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "arm64 x86_64") - set(APPLE_TARGET_TRIPLE_INT arm64_x86_64-apple-watchos${DEPLOYMENT_TARGET}-simulator) - else() - set(ARCHS arm64 i386) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchos*] "") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=watchsimulator*] "i386") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchos*] "") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=watchsimulator*] "i386") - set(APPLE_TARGET_TRIPLE_INT arm64_i386-apple-watchos${DEPLOYMENT_TARGET}-simulator) - endif() - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-watchos${DEPLOYMENT_TARGET}-simulator) - endif() - else() - message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the SIMULATOR_WATCHOSCOMBINED setting work") - endif() -elseif(PLATFORM_INT STREQUAL "SIMULATOR_VISIONOS") - set(SDK_NAME xrsimulator) - if(NOT ARCHS) - set(ARCHS arm64) - set(APPLE_TARGET_TRIPLE_INT arm64-apple-xros${DEPLOYMENT_TARGET}-simulator) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-xros${DEPLOYMENT_TARGET}-simulator) - endif() -elseif(PLATFORM_INT STREQUAL "VISIONOS") - set(SDK_NAME xros) - if(NOT ARCHS) - set(ARCHS arm64) - set(APPLE_TARGET_TRIPLE_INT arm64-apple-xros${DEPLOYMENT_TARGET}) - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-xros${DEPLOYMENT_TARGET}) - endif() -elseif(PLATFORM_INT STREQUAL "VISIONOSCOMBINED") - set(SDK_NAME xros) - if(MODERN_CMAKE) - if(NOT ARCHS) - set(ARCHS arm64) - set(APPLE_TARGET_TRIPLE_INT arm64-apple-xros${DEPLOYMENT_TARGET}) - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=xros*] "arm64") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=xrsimulator*] "arm64") - else() - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-xros${DEPLOYMENT_TARGET}) - endif() - else() - message(FATAL_ERROR "Please make sure that you are running CMake 3.14+ to make the VISIONOSCOMBINED setting work") - endif() -elseif(PLATFORM_INT STREQUAL "MAC" OR PLATFORM_INT STREQUAL "MAC_CATALYST") - set(SDK_NAME macosx) - if(NOT ARCHS) - set(ARCHS x86_64) - endif() - string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") - if(PLATFORM_INT STREQUAL "MAC") - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET}) - elseif(PLATFORM_INT STREQUAL "MAC_CATALYST") - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-macabi) - endif() -elseif(PLATFORM_INT MATCHES "^(MAC_ARM64)$|^(MAC_CATALYST_ARM64)$") - set(SDK_NAME macosx) - if(NOT ARCHS) - set(ARCHS arm64) - endif() - string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") - if(PLATFORM_INT STREQUAL "MAC_ARM64") - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET}) - elseif(PLATFORM_INT STREQUAL "MAC_CATALYST_ARM64") - set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-ios${DEPLOYMENT_TARGET}-macabi) - endif() -elseif(PLATFORM_INT STREQUAL "MAC_UNIVERSAL") - set(SDK_NAME macosx) - if(NOT ARCHS) - set(ARCHS "x86_64;arm64") - endif() - # For universal builds, don't set target triple - let CMake handle it - # string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") - # set(APPLE_TARGET_TRIPLE_INT ${ARCHS_SPLIT}-apple-macosx${DEPLOYMENT_TARGET}) -elseif(PLATFORM_INT STREQUAL "MAC_CATALYST_UNIVERSAL") - set(SDK_NAME macosx) - if(NOT ARCHS) - set(ARCHS "x86_64;arm64") - endif() - string(REPLACE ";" "-" ARCHS_SPLIT "${ARCHS}") - set(APPLE_TARGET_TRIPLE_INT apple-ios${DEPLOYMENT_TARGET}-macabi) -else() - message(FATAL_ERROR "Invalid PLATFORM: ${PLATFORM_INT}") -endif() - -string(REPLACE ";" " " ARCHS_SPACED "${ARCHS}") - -if(MODERN_CMAKE AND PLATFORM_INT MATCHES ".*COMBINED" AND NOT CMAKE_GENERATOR MATCHES "Xcode") - message(FATAL_ERROR "The COMBINED options only work with Xcode generator, -G Xcode") -endif() - -if(CMAKE_GENERATOR MATCHES "Xcode" AND PLATFORM_INT MATCHES "^MAC_CATALYST") - set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") - set(CMAKE_XCODE_ATTRIBUTE_SUPPORTED_PLATFORMS "macosx") - set(CMAKE_XCODE_ATTRIBUTE_SUPPORTS_MACCATALYST "YES") - if(NOT DEFINED MACOSX_DEPLOYMENT_TARGET) - set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "10.15") - else() - set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET "${MACOSX_DEPLOYMENT_TARGET}") - endif() -elseif(CMAKE_GENERATOR MATCHES "Xcode") - set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") - set(CMAKE_XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET "${DEPLOYMENT_TARGET}") - if(NOT PLATFORM_INT MATCHES ".*COMBINED") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS[sdk=${SDK_NAME}*] "${ARCHS_SPACED}") - set(CMAKE_XCODE_ATTRIBUTE_VALID_ARCHS[sdk=${SDK_NAME}*] "${ARCHS_SPACED}") - endif() -endif() - -# If the user did not specify the SDK root to use, then query xcodebuild for it. -if(DEFINED CMAKE_OSX_SYSROOT_INT) - # Environment variables are always preserved. - set(ENV{_CMAKE_OSX_SYSROOT_INT} "${CMAKE_OSX_SYSROOT_INT}") -elseif(DEFINED ENV{_CMAKE_OSX_SYSROOT_INT}) - set(CMAKE_OSX_SYSROOT_INT "$ENV{_CMAKE_OSX_SYSROOT_INT}") -elseif(NOT DEFINED CMAKE_OSX_SYSROOT_INT) - execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -version -sdk ${SDK_NAME} Path - OUTPUT_VARIABLE CMAKE_OSX_SYSROOT_INT - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -endif() - -if (NOT DEFINED CMAKE_OSX_SYSROOT_INT AND NOT DEFINED CMAKE_OSX_SYSROOT) - message(SEND_ERROR "Please make sure that Xcode is installed and that the toolchain" - "is pointing to the correct path. Please run:" - "sudo xcode-select -s /Applications/Xcode.app/Contents/Developer" - "and see if that fixes the problem for you.") - message(FATAL_ERROR "Invalid CMAKE_OSX_SYSROOT: ${CMAKE_OSX_SYSROOT} " - "does not exist.") -elseif(DEFINED CMAKE_OSX_SYSROOT_INT) - set(CMAKE_OSX_SYSROOT_INT "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "") - # Specify the location or name of the platform SDK to be used in CMAKE_OSX_SYSROOT. - set(CMAKE_OSX_SYSROOT "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "") -endif() - -# Use bitcode or not -if(NOT DEFINED ENABLE_BITCODE) - message(STATUS "[DEFAULTS] Disabling bitcode support by default. ENABLE_BITCODE not provided for override!") - set(ENABLE_BITCODE OFF) -endif() -set(ENABLE_BITCODE_INT ${ENABLE_BITCODE} CACHE BOOL - "Whether or not to enable bitcode" FORCE) -# Use ARC or not -if(NOT DEFINED ENABLE_ARC) - # Unless specified, enable ARC support by default - set(ENABLE_ARC ON) - message(STATUS "[DEFAULTS] Enabling ARC support by default. ENABLE_ARC not provided!") -endif() -set(ENABLE_ARC_INT ${ENABLE_ARC} CACHE BOOL "Whether or not to enable ARC" FORCE) -# Use hidden visibility or not -if(NOT DEFINED ENABLE_VISIBILITY) - # Unless specified, disable symbols visibility by default - set(ENABLE_VISIBILITY OFF) - message(STATUS "[DEFAULTS] Hiding symbols visibility by default. ENABLE_VISIBILITY not provided!") -endif() -set(ENABLE_VISIBILITY_INT ${ENABLE_VISIBILITY} CACHE BOOL "Whether or not to hide symbols from the dynamic linker (-fvisibility=hidden)" FORCE) -# Set strict compiler checks or not -if(NOT DEFINED ENABLE_STRICT_TRY_COMPILE) - # Unless specified, disable strict try_compile() - set(ENABLE_STRICT_TRY_COMPILE OFF) - message(STATUS "[DEFAULTS] Using NON-strict compiler checks by default. ENABLE_STRICT_TRY_COMPILE not provided!") -endif() -set(ENABLE_STRICT_TRY_COMPILE_INT ${ENABLE_STRICT_TRY_COMPILE} CACHE BOOL - "Whether or not to use strict compiler checks" FORCE) - -# Get the SDK version information. -if(DEFINED SDK_VERSION) - # Environment variables are always preserved. - set(ENV{_SDK_VERSION} "${SDK_VERSION}") -elseif(DEFINED ENV{_SDK_VERSION}) - set(SDK_VERSION "$ENV{_SDK_VERSION}") -elseif(NOT DEFINED SDK_VERSION) - execute_process(COMMAND ${XCODEBUILD_EXECUTABLE} -sdk ${CMAKE_OSX_SYSROOT_INT} -version SDKVersion - OUTPUT_VARIABLE SDK_VERSION - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -endif() - -# Find the Developer root for the specific iOS platform being compiled for -# from CMAKE_OSX_SYSROOT. Should be ../../ from SDK specified in -# CMAKE_OSX_SYSROOT. There does not appear to be a direct way to obtain -# this information from xcrun or xcodebuild. -if (NOT DEFINED CMAKE_DEVELOPER_ROOT AND NOT CMAKE_GENERATOR MATCHES "Xcode") - get_filename_component(PLATFORM_SDK_DIR ${CMAKE_OSX_SYSROOT_INT} PATH) - get_filename_component(CMAKE_DEVELOPER_ROOT ${PLATFORM_SDK_DIR} PATH) - if (NOT EXISTS "${CMAKE_DEVELOPER_ROOT}") - message(FATAL_ERROR "Invalid CMAKE_DEVELOPER_ROOT: ${CMAKE_DEVELOPER_ROOT} does not exist.") - endif() -endif() - -# Find the C & C++ compilers for the specified SDK. -if(DEFINED CMAKE_C_COMPILER) - # Environment variables are always preserved. - set(ENV{_CMAKE_C_COMPILER} "${CMAKE_C_COMPILER}") -elseif(DEFINED ENV{_CMAKE_C_COMPILER}) - set(CMAKE_C_COMPILER "$ENV{_CMAKE_C_COMPILER}") - set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) -elseif(NOT DEFINED CMAKE_C_COMPILER) - execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find clang - OUTPUT_VARIABLE CMAKE_C_COMPILER - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) -endif() -if(DEFINED CMAKE_CXX_COMPILER) - # Environment variables are always preserved. - set(ENV{_CMAKE_CXX_COMPILER} "${CMAKE_CXX_COMPILER}") -elseif(DEFINED ENV{_CMAKE_CXX_COMPILER}) - set(CMAKE_CXX_COMPILER "$ENV{_CMAKE_CXX_COMPILER}") -elseif(NOT DEFINED CMAKE_CXX_COMPILER) - execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find clang++ - OUTPUT_VARIABLE CMAKE_CXX_COMPILER - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -endif() -# Find (Apple's) libtool. -if(DEFINED BUILD_LIBTOOL) - # Environment variables are always preserved. - set(ENV{_BUILD_LIBTOOL} "${BUILD_LIBTOOL}") -elseif(DEFINED ENV{_BUILD_LIBTOOL}) - set(BUILD_LIBTOOL "$ENV{_BUILD_LIBTOOL}") -elseif(NOT DEFINED BUILD_LIBTOOL) - execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find libtool - OUTPUT_VARIABLE BUILD_LIBTOOL - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) -endif() -# Find the toolchain's provided install_name_tool if none is found on the host -if(DEFINED CMAKE_INSTALL_NAME_TOOL) - # Environment variables are always preserved. - set(ENV{_CMAKE_INSTALL_NAME_TOOL} "${CMAKE_INSTALL_NAME_TOOL}") -elseif(DEFINED ENV{_CMAKE_INSTALL_NAME_TOOL}) - set(CMAKE_INSTALL_NAME_TOOL "$ENV{_CMAKE_INSTALL_NAME_TOOL}") -elseif(NOT DEFINED CMAKE_INSTALL_NAME_TOOL) - execute_process(COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT_INT} -find install_name_tool - OUTPUT_VARIABLE CMAKE_INSTALL_NAME_TOOL_INT - ERROR_QUIET - OUTPUT_STRIP_TRAILING_WHITESPACE) - set(CMAKE_INSTALL_NAME_TOOL ${CMAKE_INSTALL_NAME_TOOL_INT} CACHE INTERNAL "") -endif() - -# Configure libtool to be used instead of ar + ranlib to build static libraries. -# This is required on Xcode 7+, but should also work on previous versions of -# Xcode. -get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES) -foreach(lang ${languages}) - set(CMAKE_${lang}_CREATE_STATIC_LIBRARY "${BUILD_LIBTOOL} -static -o " CACHE INTERNAL "") -endforeach() - -# CMake 3.14+ support building for iOS, watchOS, and tvOS out of the box. -if(MODERN_CMAKE) - if(SDK_NAME MATCHES "iphone") - set(CMAKE_SYSTEM_NAME iOS) - elseif(SDK_NAME MATCHES "xros") - set(CMAKE_SYSTEM_NAME visionOS) - elseif(SDK_NAME MATCHES "xrsimulator") - set(CMAKE_SYSTEM_NAME visionOS) - elseif(SDK_NAME MATCHES "macosx") - set(CMAKE_SYSTEM_NAME Darwin) - elseif(SDK_NAME MATCHES "appletv") - set(CMAKE_SYSTEM_NAME tvOS) - elseif(SDK_NAME MATCHES "watch") - set(CMAKE_SYSTEM_NAME watchOS) - endif() - # Provide flags for a combined FAT library build on newer CMake versions - if(PLATFORM_INT MATCHES ".*COMBINED") - set(CMAKE_IOS_INSTALL_COMBINED YES) - if(CMAKE_GENERATOR MATCHES "Xcode") - # Set the SDKROOT Xcode properties to a Xcode-friendly value (the SDK_NAME, E.g, iphoneos) - # This way, Xcode will automatically switch between the simulator and device SDK when building. - set(CMAKE_XCODE_ATTRIBUTE_SDKROOT "${SDK_NAME}") - # Force to not build just one ARCH, but all! - set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH "NO") - endif() - endif() -elseif(NOT DEFINED CMAKE_SYSTEM_NAME AND ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.10") - # Legacy code path prior to CMake 3.14 or fallback if no CMAKE_SYSTEM_NAME specified - set(CMAKE_SYSTEM_NAME iOS) -elseif(NOT DEFINED CMAKE_SYSTEM_NAME) - # Legacy code path before CMake 3.14 or fallback if no CMAKE_SYSTEM_NAME specified - set(CMAKE_SYSTEM_NAME Darwin) -endif() -# Standard settings. -set(CMAKE_SYSTEM_VERSION ${SDK_VERSION} CACHE INTERNAL "") -set(UNIX ON CACHE BOOL "") -set(APPLE ON CACHE BOOL "") -if(PLATFORM STREQUAL "MAC" OR PLATFORM STREQUAL "MAC_ARM64" OR PLATFORM STREQUAL "MAC_UNIVERSAL") - set(IOS OFF CACHE BOOL "") - set(MACOS ON CACHE BOOL "") -elseif(PLATFORM STREQUAL "MAC_CATALYST" OR PLATFORM STREQUAL "MAC_CATALYST_ARM64" OR PLATFORM STREQUAL "MAC_CATALYST_UNIVERSAL") - set(IOS ON CACHE BOOL "") - set(MACOS ON CACHE BOOL "") -elseif(PLATFORM STREQUAL "VISIONOS" OR PLATFORM STREQUAL "SIMULATOR_VISIONOS" OR PLATFORM STREQUAL "VISIONOSCOMBINED") - set(IOS OFF CACHE BOOL "") - set(VISIONOS ON CACHE BOOL "") -else() - set(IOS ON CACHE BOOL "") -endif() -# Set the architectures for which to build. -set(CMAKE_OSX_ARCHITECTURES ${ARCHS} CACHE INTERNAL "") -# Change the type of target generated for try_compile() so it'll work when cross-compiling, weak compiler checks -if(NOT ENABLE_STRICT_TRY_COMPILE_INT) - set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) -endif() -# All iOS/Darwin specific settings - some may be redundant. -if (NOT DEFINED CMAKE_MACOSX_BUNDLE) - set(CMAKE_MACOSX_BUNDLE YES) -endif() -set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO") -set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED "NO") -set(CMAKE_SHARED_LIBRARY_PREFIX "lib") -set(CMAKE_SHARED_LIBRARY_SUFFIX ".dylib") -set(CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES ".tbd" ".so") -set(CMAKE_SHARED_MODULE_PREFIX "lib") -set(CMAKE_SHARED_MODULE_SUFFIX ".so") -set(CMAKE_C_COMPILER_ABI ELF) -set(CMAKE_CXX_COMPILER_ABI ELF) -set(CMAKE_C_HAS_ISYSROOT 1) -set(CMAKE_CXX_HAS_ISYSROOT 1) -set(CMAKE_MODULE_EXISTS 1) -set(CMAKE_DL_LIBS "") -set(CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ") -set(CMAKE_C_OSX_CURRENT_VERSION_FLAG "-current_version ") -set(CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}") -set(CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}") - -if(ARCHS MATCHES "((^|;|, )(arm64|arm64e|x86_64))+") - set(CMAKE_C_SIZEOF_DATA_PTR 8) - set(CMAKE_CXX_SIZEOF_DATA_PTR 8) - if(ARCHS MATCHES "((^|;|, )(arm64|arm64e))+") - set(CMAKE_SYSTEM_PROCESSOR "aarch64") - else() - set(CMAKE_SYSTEM_PROCESSOR "x86_64") - endif() -else() - set(CMAKE_C_SIZEOF_DATA_PTR 4) - set(CMAKE_CXX_SIZEOF_DATA_PTR 4) - set(CMAKE_SYSTEM_PROCESSOR "arm") -endif() - -# Note that only Xcode 7+ supports the newer more specific: -# -m${SDK_NAME}-version-min flags, older versions of Xcode use: -# -m(ios/ios-simulator)-version-min instead. -if(${CMAKE_VERSION} VERSION_LESS "3.11") - if(PLATFORM_INT STREQUAL "OS" OR PLATFORM_INT STREQUAL "OS64") - if(XCODE_VERSION_INT VERSION_LESS 7.0) - set(SDK_NAME_VERSION_FLAGS - "-mios-version-min=${DEPLOYMENT_TARGET}") - else() - # Xcode 7.0+ uses flags we can build directly from SDK_NAME. - set(SDK_NAME_VERSION_FLAGS - "-m${SDK_NAME}-version-min=${DEPLOYMENT_TARGET}") - endif() - elseif(PLATFORM_INT STREQUAL "TVOS") - set(SDK_NAME_VERSION_FLAGS - "-mtvos-version-min=${DEPLOYMENT_TARGET}") - elseif(PLATFORM_INT STREQUAL "SIMULATOR_TVOS") - set(SDK_NAME_VERSION_FLAGS - "-mtvos-simulator-version-min=${DEPLOYMENT_TARGET}") -elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_TVOS") - set(SDK_NAME_VERSION_FLAGS - "-mtvos-simulator-version-min=${DEPLOYMENT_TARGET}") - elseif(PLATFORM_INT STREQUAL "WATCHOS") - set(SDK_NAME_VERSION_FLAGS - "-mwatchos-version-min=${DEPLOYMENT_TARGET}") - elseif(PLATFORM_INT STREQUAL "SIMULATOR_WATCHOS") - set(SDK_NAME_VERSION_FLAGS - "-mwatchos-simulator-version-min=${DEPLOYMENT_TARGET}") - elseif(PLATFORM_INT STREQUAL "SIMULATORARM64_WATCHOS") - set(SDK_NAME_VERSION_FLAGS - "-mwatchos-simulator-version-min=${DEPLOYMENT_TARGET}") - elseif(PLATFORM_INT STREQUAL "MAC") - set(SDK_NAME_VERSION_FLAGS - "-mmacosx-version-min=${DEPLOYMENT_TARGET}") - else() - # SIMULATOR or SIMULATOR64 both use -mios-simulator-version-min. - set(SDK_NAME_VERSION_FLAGS - "-mios-simulator-version-min=${DEPLOYMENT_TARGET}") - endif() -elseif(NOT PLATFORM_INT MATCHES "^MAC_CATALYST") - # Newer versions of CMake sets the version min flags correctly, skip this for Mac Catalyst targets - set(CMAKE_OSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET} CACHE INTERNAL "Minimum OS X deployment version") -endif() - -if(DEFINED APPLE_TARGET_TRIPLE_INT) - set(APPLE_TARGET_TRIPLE ${APPLE_TARGET_TRIPLE_INT} CACHE INTERNAL "") - set(CMAKE_C_COMPILER_TARGET ${APPLE_TARGET_TRIPLE}) - set(CMAKE_CXX_COMPILER_TARGET ${APPLE_TARGET_TRIPLE}) - set(CMAKE_ASM_COMPILER_TARGET ${APPLE_TARGET_TRIPLE}) -endif() - -if(PLATFORM_INT MATCHES "^MAC_CATALYST") - set(C_TARGET_FLAGS "-isystem ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/usr/include -iframework ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/System/Library/Frameworks") -endif() - -if(ENABLE_BITCODE_INT) - set(BITCODE "-fembed-bitcode") - set(CMAKE_XCODE_ATTRIBUTE_BITCODE_GENERATION_MODE "bitcode") - set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "YES") -else() - set(BITCODE "") - set(CMAKE_XCODE_ATTRIBUTE_ENABLE_BITCODE "NO") -endif() - -if(ENABLE_ARC_INT) - set(FOBJC_ARC "-fobjc-arc") - set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "YES") -else() - set(FOBJC_ARC "-fno-objc-arc") - set(CMAKE_XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC "NO") -endif() - -if(NAMED_LANGUAGE_SUPPORT_INT) - set(OBJC_VARS "-fobjc-abi-version=2 -DOBJC_OLD_DISPATCH_PROTOTYPES=0") - set(OBJC_LEGACY_VARS "") -else() - set(OBJC_VARS "") - set(OBJC_LEGACY_VARS "-fobjc-abi-version=2 -DOBJC_OLD_DISPATCH_PROTOTYPES=0") -endif() - -if(NOT ENABLE_VISIBILITY_INT) - foreach(lang ${languages}) - set(CMAKE_${lang}_VISIBILITY_PRESET "hidden" CACHE INTERNAL "") - endforeach() - set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "YES") - set(VISIBILITY "-fvisibility=hidden -fvisibility-inlines-hidden") -else() - foreach(lang ${languages}) - set(CMAKE_${lang}_VISIBILITY_PRESET "default" CACHE INTERNAL "") - endforeach() - set(CMAKE_XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN "NO") - set(VISIBILITY "-fvisibility=default") -endif() - -if(DEFINED APPLE_TARGET_TRIPLE) - set(APPLE_TARGET_TRIPLE_FLAG "-target ${APPLE_TARGET_TRIPLE}") -endif() - -#Check if Xcode generator is used since that will handle these flags automagically -if(CMAKE_GENERATOR MATCHES "Xcode") - message(STATUS "Not setting any manual command-line buildflags, since Xcode is selected as the generator. Modifying the Xcode build-settings directly instead.") -else() - set(CMAKE_C_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${OBJC_LEGACY_VARS} ${BITCODE} ${VISIBILITY} ${CMAKE_C_FLAGS}" CACHE INTERNAL - "Flags used by the compiler during all C build types.") - set(CMAKE_C_FLAGS_DEBUG "-O0 -g ${CMAKE_C_FLAGS_DEBUG}") - set(CMAKE_C_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_C_FLAGS_MINSIZEREL}") - set(CMAKE_C_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_C_FLAGS_RELWITHDEBINFO}") - set(CMAKE_C_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_C_FLAGS_RELEASE}") - set(CMAKE_CXX_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${OBJC_LEGACY_VARS} ${BITCODE} ${VISIBILITY} ${CMAKE_CXX_FLAGS}" CACHE INTERNAL - "Flags used by the compiler during all CXX build types.") - set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g ${CMAKE_CXX_FLAGS_DEBUG}") - set(CMAKE_CXX_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_CXX_FLAGS_MINSIZEREL}") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") - set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_CXX_FLAGS_RELEASE}") - if(NAMED_LANGUAGE_SUPPORT_INT) - set(CMAKE_OBJC_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${BITCODE} ${VISIBILITY} ${FOBJC_ARC} ${OBJC_VARS} ${CMAKE_OBJC_FLAGS}" CACHE INTERNAL - "Flags used by the compiler during all OBJC build types.") - set(CMAKE_OBJC_FLAGS_DEBUG "-O0 -g ${CMAKE_OBJC_FLAGS_DEBUG}") - set(CMAKE_OBJC_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_OBJC_FLAGS_MINSIZEREL}") - set(CMAKE_OBJC_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_OBJC_FLAGS_RELWITHDEBINFO}") - set(CMAKE_OBJC_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_OBJC_FLAGS_RELEASE}") - set(CMAKE_OBJCXX_FLAGS "${C_TARGET_FLAGS} ${APPLE_TARGET_TRIPLE_FLAG} ${SDK_NAME_VERSION_FLAGS} ${BITCODE} ${VISIBILITY} ${FOBJC_ARC} ${OBJC_VARS} ${CMAKE_OBJCXX_FLAGS}" CACHE INTERNAL - "Flags used by the compiler during all OBJCXX build types.") - set(CMAKE_OBJCXX_FLAGS_DEBUG "-O0 -g ${CMAKE_OBJCXX_FLAGS_DEBUG}") - set(CMAKE_OBJCXX_FLAGS_MINSIZEREL "-DNDEBUG -Os ${CMAKE_OBJCXX_FLAGS_MINSIZEREL}") - set(CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO "-DNDEBUG -O2 -g ${CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO}") - set(CMAKE_OBJCXX_FLAGS_RELEASE "-DNDEBUG -O3 ${CMAKE_OBJCXX_FLAGS_RELEASE}") - endif() - set(CMAKE_C_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}" CACHE INTERNAL - "Flags used by the compiler for all C link types.") - set(CMAKE_CXX_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}" CACHE INTERNAL - "Flags used by the compiler for all CXX link types.") - if(NAMED_LANGUAGE_SUPPORT_INT) - set(CMAKE_OBJC_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_OBJC_LINK_FLAGS}" CACHE INTERNAL - "Flags used by the compiler for all OBJC link types.") - set(CMAKE_OBJCXX_LINK_FLAGS "${C_TARGET_FLAGS} ${SDK_NAME_VERSION_FLAGS} -Wl,-search_paths_first ${CMAKE_OBJCXX_LINK_FLAGS}" CACHE INTERNAL - "Flags used by the compiler for all OBJCXX link types.") - endif() - set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -x assembler-with-cpp" CACHE INTERNAL - "Flags used by the compiler for all ASM build types.") -endif() - -## Print status messages to inform of the current state -message(STATUS "Configuring ${SDK_NAME} build for platform: ${PLATFORM_INT}, architecture(s): ${ARCHS}") -message(STATUS "Using SDK: ${CMAKE_OSX_SYSROOT_INT}") -message(STATUS "Using C compiler: ${CMAKE_C_COMPILER}") -message(STATUS "Using CXX compiler: ${CMAKE_CXX_COMPILER}") -message(STATUS "Using libtool: ${BUILD_LIBTOOL}") -message(STATUS "Using install name tool: ${CMAKE_INSTALL_NAME_TOOL}") -if(DEFINED APPLE_TARGET_TRIPLE) - message(STATUS "Autoconf target triple: ${APPLE_TARGET_TRIPLE}") -endif() -message(STATUS "Using minimum deployment version: ${DEPLOYMENT_TARGET}" - " (SDK version: ${SDK_VERSION})") -if(MODERN_CMAKE) - message(STATUS "Merging integrated CMake 3.14+ iOS,tvOS,watchOS,macOS toolchain(s) with this toolchain!") - if(PLATFORM_INT MATCHES ".*COMBINED") - message(STATUS "Will combine built (static) artifacts into FAT lib...") - endif() -endif() -if(CMAKE_GENERATOR MATCHES "Xcode") - message(STATUS "Using Xcode version: ${XCODE_VERSION_INT}") -endif() -message(STATUS "CMake version: ${CMAKE_VERSION}") -if(DEFINED SDK_NAME_VERSION_FLAGS) - message(STATUS "Using version flags: ${SDK_NAME_VERSION_FLAGS}") -endif() -message(STATUS "Using a data_ptr size of: ${CMAKE_CXX_SIZEOF_DATA_PTR}") -if(ENABLE_BITCODE_INT) - message(STATUS "Bitcode: Enabled") -else() - message(STATUS "Bitcode: Disabled") -endif() - -if(ENABLE_ARC_INT) - message(STATUS "ARC: Enabled") -else() - message(STATUS "ARC: Disabled") -endif() - -if(ENABLE_VISIBILITY_INT) - message(STATUS "Hiding symbols: Disabled") -else() - message(STATUS "Hiding symbols: Enabled") -endif() - -# Set global properties -set_property(GLOBAL PROPERTY PLATFORM "${PLATFORM}") -set_property(GLOBAL PROPERTY APPLE_TARGET_TRIPLE "${APPLE_TARGET_TRIPLE_INT}") -set_property(GLOBAL PROPERTY SDK_VERSION "${SDK_VERSION}") -set_property(GLOBAL PROPERTY XCODE_VERSION "${XCODE_VERSION_INT}") -set_property(GLOBAL PROPERTY OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}") - -# Export configurable variables for the try_compile() command. -set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES - PLATFORM - XCODE_VERSION_INT - SDK_VERSION - NAMED_LANGUAGE_SUPPORT - DEPLOYMENT_TARGET - CMAKE_DEVELOPER_ROOT - CMAKE_OSX_SYSROOT_INT - ENABLE_BITCODE - ENABLE_ARC - CMAKE_ASM_COMPILER - CMAKE_C_COMPILER - CMAKE_C_COMPILER_TARGET - CMAKE_CXX_COMPILER - CMAKE_CXX_COMPILER_TARGET - BUILD_LIBTOOL - CMAKE_INSTALL_NAME_TOOL - CMAKE_C_FLAGS - CMAKE_C_DEBUG - CMAKE_C_MINSIZEREL - CMAKE_C_RELWITHDEBINFO - CMAKE_C_RELEASE - CMAKE_CXX_FLAGS - CMAKE_CXX_FLAGS_DEBUG - CMAKE_CXX_FLAGS_MINSIZEREL - CMAKE_CXX_FLAGS_RELWITHDEBINFO - CMAKE_CXX_FLAGS_RELEASE - CMAKE_C_LINK_FLAGS - CMAKE_CXX_LINK_FLAGS - CMAKE_ASM_FLAGS -) - -if(NAMED_LANGUAGE_SUPPORT_INT) - list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES - CMAKE_OBJC_FLAGS - CMAKE_OBJC_DEBUG - CMAKE_OBJC_MINSIZEREL - CMAKE_OBJC_RELWITHDEBINFO - CMAKE_OBJC_RELEASE - CMAKE_OBJCXX_FLAGS - CMAKE_OBJCXX_DEBUG - CMAKE_OBJCXX_MINSIZEREL - CMAKE_OBJCXX_RELWITHDEBINFO - CMAKE_OBJCXX_RELEASE - CMAKE_OBJC_LINK_FLAGS - CMAKE_OBJCXX_LINK_FLAGS - ) -endif() - -set(CMAKE_PLATFORM_HAS_INSTALLNAME 1) -set(CMAKE_SHARED_LINKER_FLAGS "-rpath @executable_path/Frameworks -rpath @loader_path/Frameworks") -set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-dynamiclib -Wl,-headerpad_max_install_names") -set(CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle -Wl,-headerpad_max_install_names") -set(CMAKE_SHARED_MODULE_LOADER_C_FLAG "-Wl,-bundle_loader,") -set(CMAKE_SHARED_MODULE_LOADER_CXX_FLAG "-Wl,-bundle_loader,") -set(CMAKE_FIND_LIBRARY_SUFFIXES ".tbd" ".dylib" ".so" ".a") -set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-install_name") - -# Set the find root to the SDK developer roots. -# Note: CMAKE_FIND_ROOT_PATH is only useful when cross-compiling. Thus, do not set on macOS builds. -if(NOT PLATFORM_INT MATCHES "^MAC.*$") - list(APPEND CMAKE_FIND_ROOT_PATH "${CMAKE_OSX_SYSROOT_INT}" CACHE INTERNAL "") - set(CMAKE_IGNORE_PATH "/System/Library/Frameworks;/usr/local/lib;/opt/homebrew" CACHE INTERNAL "") -endif() - -# Default to searching for frameworks first. -IF(NOT DEFINED CMAKE_FIND_FRAMEWORK) - set(CMAKE_FIND_FRAMEWORK FIRST) -ENDIF(NOT DEFINED CMAKE_FIND_FRAMEWORK) - -# Set up the default search directories for frameworks. -if(PLATFORM_INT MATCHES "^MAC_CATALYST") - set(CMAKE_FRAMEWORK_PATH - ${CMAKE_DEVELOPER_ROOT}/Library/PrivateFrameworks - ${CMAKE_OSX_SYSROOT_INT}/System/Library/Frameworks - ${CMAKE_OSX_SYSROOT_INT}/System/iOSSupport/System/Library/Frameworks - ${CMAKE_FRAMEWORK_PATH} CACHE INTERNAL "") -else() - set(CMAKE_FRAMEWORK_PATH - ${CMAKE_DEVELOPER_ROOT}/Library/PrivateFrameworks - ${CMAKE_OSX_SYSROOT_INT}/System/Library/Frameworks - ${CMAKE_FRAMEWORK_PATH} CACHE INTERNAL "") -endif() - -# By default, search both the specified iOS SDK and the remainder of the host filesystem. -if(NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH CACHE INTERNAL "") -endif() -if(NOT CMAKE_FIND_ROOT_PATH_MODE_LIBRARY) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH CACHE INTERNAL "") -endif() -if(NOT CMAKE_FIND_ROOT_PATH_MODE_INCLUDE) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH CACHE INTERNAL "") -endif() -if(NOT CMAKE_FIND_ROOT_PATH_MODE_PACKAGE) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH CACHE INTERNAL "") -endif() - -# -# Some helper-macros below to simplify and beautify the CMakeFile -# - -# This little macro lets you set any Xcode specific property. -macro(set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE XCODE_RELVERSION) - set(XCODE_RELVERSION_I "${XCODE_RELVERSION}") - if(XCODE_RELVERSION_I STREQUAL "All") - set_property(TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} "${XCODE_VALUE}") - else() - set_property(TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY}[variant=${XCODE_RELVERSION_I}] "${XCODE_VALUE}") - endif() -endmacro(set_xcode_property) - -# This macro lets you find executable programs on the host system. -macro(find_host_package) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE NEVER) - set(_TOOLCHAIN_IOS ${IOS}) - set(IOS OFF) - find_package(${ARGN}) - set(IOS ${_TOOLCHAIN_IOS}) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH) -endmacro(find_host_package) From 0f5c36fa521834673e27ce9e50d2dcf5f28e9eef Mon Sep 17 00:00:00 2001 From: MarkosTh09 Date: Tue, 22 Sep 2026 22:28:09 +0300 Subject: [PATCH 06/13] update build to work with sdk 27 --- UnleashedRecomp/CMakeLists.txt | 9 ++++++++- UnleashedRecompLib/CMakeLists.txt | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/UnleashedRecomp/CMakeLists.txt b/UnleashedRecomp/CMakeLists.txt index 6f3a2e73..9da1f6cc 100644 --- a/UnleashedRecomp/CMakeLists.txt +++ b/UnleashedRecomp/CMakeLists.txt @@ -90,6 +90,10 @@ if(NOT CMAKE_SYSTEM_NAME STREQUAL "iOS") add_compile_definitions(SDL_MAIN_HANDLED) endif() +if(CMAKE_SYSTEM_NAME STREQUAL "iOS") + add_compile_definitions(UNLEASHED_RECOMP_IOS) +endif() + set(UNLEASHED_RECOMP_PRECOMPILED_HEADERS "stdafx.h" ) @@ -398,6 +402,7 @@ elseif(APPLE) MACOSX_BUNDLE_ICON_FILE "game_icon.icns" MACOSX_DEPLOYMENT_TARGET "${CMAKE_OSX_DEPLOYMENT_TARGET}" ) + # Linking with MoltenVK directly would prevent using the system Vulkan loader to load with debug layers. # Instead, copy the MoltenVK dylib to the app bundle along with an ICD file for the loader to find it. # In the event the loader is not installed, the MoltenVK dylib can still be picked up directly in the app bundle. @@ -542,13 +547,15 @@ function(compile_shader FILE_PATH TARGET_NAME) # "iphoneos" for device builds, and defaults to the macOS SDK otherwise. if(CMAKE_SYSTEM_NAME STREQUAL "iOS") set(_metal_sdk iphoneos) + set(_metal_sdk_version_arg -mios-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}) else() set(_metal_sdk macosx) + set(_metal_sdk_version_arg -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}) endif() add_custom_command( OUTPUT ${MSL_FILE_PATH}.ir - COMMAND ${XCRUN_TOOL} -sdk ${_metal_sdk} metal -o ${MSL_FILE_PATH}.ir -c ${MSL_FILE_PATH} -D__air__ -frecord-sources -gline-tables-only + COMMAND ${XCRUN_TOOL} -sdk ${_metal_sdk} metal ${_metal_sdk_version_arg} -o ${MSL_FILE_PATH}.ir -c ${MSL_FILE_PATH} -D__air__ -frecord-sources -gline-tables-only DEPENDS ${MSL_FILE_PATH} ) add_custom_command( diff --git a/UnleashedRecompLib/CMakeLists.txt b/UnleashedRecompLib/CMakeLists.txt index 6b656c9a..70f6147b 100644 --- a/UnleashedRecompLib/CMakeLists.txt +++ b/UnleashedRecompLib/CMakeLists.txt @@ -151,6 +151,8 @@ else() -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/host-tools/install -DUNLEASHED_RECOMP=ON + -DXENOS_RECOMP_METAL_SDK="iphoneos" + -DXENOS_RECOMP_OSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET} COMMAND ${CMAKE_COMMAND} --build "${HOST_XENOSRECOMP_BUILD_DIR}" --config ${CMAKE_BUILD_TYPE} From f5842706852c3c42e352ddf5535e6ed80e608473 Mon Sep 17 00:00:00 2001 From: MarkosTh09 Date: Tue, 22 Sep 2026 22:42:37 +0300 Subject: [PATCH 07/13] gate the conservative guest sync implementation under `UNLEASHED_RECOMP_IOS` --- UnleashedRecomp/cpu/guest_thread.cpp | 6 ++-- UnleashedRecomp/cpu/guest_thread.h | 2 +- UnleashedRecomp/kernel/imports.cpp | 42 ++++++++++++++-------------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/UnleashedRecomp/cpu/guest_thread.cpp b/UnleashedRecomp/cpu/guest_thread.cpp index 2ab2d67f..e67e280e 100644 --- a/UnleashedRecomp/cpu/guest_thread.cpp +++ b/UnleashedRecomp/cpu/guest_thread.cpp @@ -155,7 +155,7 @@ uint32_t GuestThreadHandle::GetThreadId() const void GuestThreadHandle::SetSuspended(bool value) { -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) { std::lock_guard lock(suspendMutex); suspended.store(value, std::memory_order_release); @@ -171,7 +171,7 @@ void GuestThreadHandle::SetSuspended(bool value) void GuestThreadHandle::WaitWhileSuspended() { -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) std::unique_lock lock(suspendMutex); suspendCondition.wait(lock, [&] { @@ -292,7 +292,7 @@ int GetThreadPriorityImpl(GuestThreadHandle* hThread) { #ifdef _WIN32 return GetThreadPriority(hThread == GetKernelObject(CURRENT_THREAD_HANDLE) ? GetCurrentThread() : hThread->thread.native_handle()); -#else +#else return 0; #endif } diff --git a/UnleashedRecomp/cpu/guest_thread.h b/UnleashedRecomp/cpu/guest_thread.h index ad6810ca..9c4599ca 100644 --- a/UnleashedRecomp/cpu/guest_thread.h +++ b/UnleashedRecomp/cpu/guest_thread.h @@ -34,7 +34,7 @@ struct GuestThreadHandle : KernelObject { GuestThreadParams params; std::atomic suspended; -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) std::mutex suspendMutex; std::condition_variable suspendCondition; #endif diff --git a/UnleashedRecomp/kernel/imports.cpp b/UnleashedRecomp/kernel/imports.cpp index 91d795e2..a6e9bb04 100644 --- a/UnleashedRecomp/kernel/imports.cpp +++ b/UnleashedRecomp/kernel/imports.cpp @@ -26,7 +26,7 @@ struct Event final : KernelObject, HostObject { bool manualReset; std::atomic signaled; -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) std::mutex waitMutex; std::condition_variable waitCondition; #endif @@ -59,7 +59,7 @@ struct Event final : KernelObject, HostObject } else if (timeout == INFINITE) { -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) std::unique_lock lock(waitMutex); if (manualReset) { @@ -105,7 +105,7 @@ struct Event final : KernelObject, HostObject bool Set() { -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) bool previousState; { std::lock_guard lock(waitMutex); @@ -130,7 +130,7 @@ struct Event final : KernelObject, HostObject bool Reset() { -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) std::lock_guard lock(waitMutex); #endif return signaled.exchange(false, std::memory_order_acq_rel); @@ -138,7 +138,7 @@ struct Event final : KernelObject, HostObject }; static std::atomic g_keSetEventGeneration; -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) static std::mutex g_multipleEventWaitMutex; static std::condition_variable g_multipleEventWaitCondition; #endif @@ -146,7 +146,7 @@ static std::condition_variable g_multipleEventWaitCondition; static void NotifyMultipleEventWaiters() { g_keSetEventGeneration.fetch_add(1, std::memory_order_release); -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) { // Synchronize with the predicate check performed by condition_variable::wait. std::lock_guard lock(g_multipleEventWaitMutex); @@ -159,7 +159,7 @@ static void NotifyMultipleEventWaiters() static void WaitForMultipleEventGenerationChange(uint32_t generation) { -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) std::unique_lock lock(g_multipleEventWaitMutex); g_multipleEventWaitCondition.wait(lock, [&] { @@ -174,7 +174,7 @@ struct Semaphore final : KernelObject, HostObject { std::atomic count; uint32_t maximumCount; -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) std::mutex waitMutex; std::condition_variable waitCondition; #endif @@ -204,7 +204,7 @@ struct Semaphore final : KernelObject, HostObject } else if (timeout == INFINITE) { -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) std::unique_lock lock(waitMutex); #endif uint32_t currentCount; @@ -218,7 +218,7 @@ struct Semaphore final : KernelObject, HostObject } else { -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) waitCondition.wait(lock, [&] { return count.load(std::memory_order_relaxed) != 0; @@ -240,7 +240,7 @@ struct Semaphore final : KernelObject, HostObject void Release(uint32_t releaseCount, uint32_t* previousCount) { -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) std::lock_guard lock(waitMutex); #endif uint32_t currentCount = count.load(std::memory_order_relaxed); @@ -259,7 +259,7 @@ struct Semaphore final : KernelObject, HostObject if (previousCount != nullptr) *previousCount = currentCount; -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) waitCondition.notify_all(); #else count.notify_all(); @@ -782,7 +782,7 @@ uint32_t KeSetAffinityThread(uint32_t Thread, uint32_t Affinity, be* l return 0; } -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) // libc++ implements atomic::wait with ulock on iOS. Keep ownership atomic, but // use a hashed condition-variable wait table so the iOS build can distinguish // a broken ownership protocol from an atomic-wait/ulock problem. @@ -891,7 +891,7 @@ static void WakeCriticalSectionWaiters(XRTL_CRITICAL_SECTION* cs) static bool IsCriticalSectionAtomicStorageValid(const XRTL_CRITICAL_SECTION* cs) { -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) static std::once_flag backendLogFlag; std::call_once(backendLogFlag, [] { @@ -945,11 +945,11 @@ void RtlLeaveCriticalSection(XRTL_CRITICAL_SECTION* cs) if (cs->RecursionCount != 0) return; -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) const CriticalSectionOwnerDiagnostic ownerDiagnostic = RemoveCriticalSectionOwner(cs); #endif owningThread.store(0, std::memory_order_release); -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) WakeCriticalSectionWaiters(cs); const auto heldFor = std::chrono::steady_clock::now() - ownerDiagnostic.acquiredAt; @@ -990,7 +990,7 @@ void RtlEnterCriticalSection(XRTL_CRITICAL_SECTION* cs) if (owningThread.compare_exchange_weak(currentOwner, thisThread, std::memory_order_acquire, std::memory_order_relaxed)) { cs->RecursionCount = 1; -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) RecordCriticalSectionOwner(cs, thisThread); #endif @@ -1011,7 +1011,7 @@ void RtlEnterCriticalSection(XRTL_CRITICAL_SECTION* cs) } contended = true; -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) WaitForCriticalSectionOwnerChange(cs, owningThread, currentOwner, thisThread); #else owningThread.wait(currentOwner, std::memory_order_relaxed); @@ -1059,7 +1059,7 @@ uint32_t RtlInitializeCriticalSection(XRTL_CRITICAL_SECTION* cs) cs->LockCount = -1; cs->RecursionCount = 0; cs->OwningThread = 0; -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) RemoveCriticalSectionOwner(cs); #endif @@ -1536,7 +1536,7 @@ bool RtlTryEnterCriticalSection(XRTL_CRITICAL_SECTION* cs) previousOwner, thisThread, std::memory_order_acquire, std::memory_order_relaxed)) { cs->RecursionCount = 1; -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) RecordCriticalSectionOwner(cs, thisThread); #endif return true; @@ -1554,7 +1554,7 @@ void RtlInitializeCriticalSectionAndSpinCount(XRTL_CRITICAL_SECTION* cs, uint32_ cs->LockCount = -1; cs->RecursionCount = 0; cs->OwningThread = 0; -#if defined(UNLEASHED_RECOMP_IOS_LAUNCHER) +#if defined(UNLEASHED_RECOMP_IOS) RemoveCriticalSectionOwner(cs); #endif } From 06026b11f461f500a9e508e4653e4a63933324cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=87a=C4=9Fan=20=C3=96zcan?= <232228291+yorgunkral31@users.noreply.github.com> Date: Mon, 21 Sep 2026 04:43:03 +0300 Subject: [PATCH 08/13] feat: allow above-60Hz frame rates on iPhone iOS caps third-party Metal apps at 60 Hz on iPhones unless CADisableMinimumFrameDurationOnPhone is declared, so the in-game 120 FPS setting had no effect on ProMotion displays. --- UnleashedRecomp/res/ios/iOSBundleInfo.plist.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/UnleashedRecomp/res/ios/iOSBundleInfo.plist.in b/UnleashedRecomp/res/ios/iOSBundleInfo.plist.in index 817db381..e09a81e7 100644 --- a/UnleashedRecomp/res/ios/iOSBundleInfo.plist.in +++ b/UnleashedRecomp/res/ios/iOSBundleInfo.plist.in @@ -28,6 +28,8 @@ Unleashed Recompiled CFBundleIconName AppIcon + CADisableMinimumFrameDurationOnPhone + UIFileSharingEnabled LSSupportsOpeningDocumentsInPlace From a9b61cfec9c75a7563971af896a680781b83a95e Mon Sep 17 00:00:00 2001 From: MarkosTh09 Date: Sat, 26 Sep 2026 15:57:26 +0300 Subject: [PATCH 09/13] add basic touch controls --- CMakeLists.txt | 23 +- UnleashedRecomp/CMakeLists.txt | 7 + UnleashedRecomp/gpu/video.cpp | 9 + UnleashedRecomp/hid/driver/sdl_hid.cpp | 33 +- UnleashedRecomp/ui/file_picker_ios.mm | 0 UnleashedRecomp/ui/touch_controls.cpp | 923 ++++++++++++++++++++++++ UnleashedRecomp/ui/touch_controls.h | 22 + UnleashedRecomp/ui/touch_haptics.h | 9 + UnleashedRecomp/ui/touch_haptics_ios.mm | 29 + UnleashedRecomp/user/config_def.h | 2 + 10 files changed, 1039 insertions(+), 18 deletions(-) create mode 100644 UnleashedRecomp/ui/file_picker_ios.mm create mode 100644 UnleashedRecomp/ui/touch_controls.cpp create mode 100644 UnleashedRecomp/ui/touch_controls.h create mode 100644 UnleashedRecomp/ui/touch_haptics.h create mode 100644 UnleashedRecomp/ui/touch_haptics_ios.mm diff --git a/CMakeLists.txt b/CMakeLists.txt index c95ca063..f525f1d0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,11 @@ -cmake_minimum_required (VERSION 3.20) +cmake_minimum_required(VERSION 3.20) if(NOT DEFINED ENV{VCPKG_ROOT}) - message(FATAL_ERROR "VCPKG_ROOT is not defined!") + if(EXISTS "${CMAKE_SOURCE_DIR}/thirdparty/vcpkg/scripts/buildsystems/vcpkg.cmake") + set(ENV{VCPKG_ROOT} "${CMAKE_SOURCE_DIR}/thirdparty/vcpkg") + else() + message(FATAL_ERROR "VCPKG_ROOT is not defined!") + endif() endif() set(UNLEASHED_RECOMP_THIRDPARTY_ROOT ${CMAKE_SOURCE_DIR}/thirdparty) @@ -10,37 +14,38 @@ set(CMAKE_CXX_STANDARD 20) set(BUILD_SHARED_LIBS OFF) # Enable Hot Reload for MSVC compilers if supported. -if (POLICY CMP0141) - cmake_policy(SET CMP0141 NEW) - set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$,$>,$<$:EditAndContinue>,$<$:ProgramDatabase>>") +if(POLICY CMP0141) + cmake_policy(SET CMP0141 NEW) + set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$,$>,$<$:EditAndContinue>,$<$:ProgramDatabase>>") endif() set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") project("UnleashedRecomp-ALL") -if (APPLE) +if(APPLE) enable_language(OBJC OBJCXX) endif() -if (CMAKE_OSX_ARCHITECTURES) +if(CMAKE_OSX_ARCHITECTURES) set(UNLEASHED_RECOMP_ARCHITECTURE ${CMAKE_OSX_ARCHITECTURES}) elseif(CMAKE_SYSTEM_PROCESSOR) set(UNLEASHED_RECOMP_ARCHITECTURE ${CMAKE_SYSTEM_PROCESSOR}) else() set(UNLEASHED_RECOMP_ARCHITECTURE ${CMAKE_HOST_SYSTEM_PROCESSOR}) endif() + string(TOLOWER "${UNLEASHED_RECOMP_ARCHITECTURE}" UNLEASHED_RECOMP_ARCHITECTURE) message(STATUS "Detected architecture: ${UNLEASHED_RECOMP_ARCHITECTURE}") -if (UNLEASHED_RECOMP_ARCHITECTURE STREQUAL "x86_64" OR UNLEASHED_RECOMP_ARCHITECTURE STREQUAL "amd64") +if(UNLEASHED_RECOMP_ARCHITECTURE STREQUAL "x86_64" OR UNLEASHED_RECOMP_ARCHITECTURE STREQUAL "amd64") # Target Sandy Bridge for all projects add_compile_options( -march=sandybridge ) endif() -if (CMAKE_BUILD_TYPE STREQUAL "Debug") +if(CMAKE_BUILD_TYPE STREQUAL "Debug") # Normally only defined by Visual Studio, added for consistency add_compile_definitions(_DEBUG) endif() diff --git a/UnleashedRecomp/CMakeLists.txt b/UnleashedRecomp/CMakeLists.txt index 9da1f6cc..66f83ace 100644 --- a/UnleashedRecomp/CMakeLists.txt +++ b/UnleashedRecomp/CMakeLists.txt @@ -92,6 +92,7 @@ endif() if(CMAKE_SYSTEM_NAME STREQUAL "iOS") add_compile_definitions(UNLEASHED_RECOMP_IOS) + set(UNLEASHED_RECOMP_IOS ON) endif() set(UNLEASHED_RECOMP_PRECOMPILED_HEADERS @@ -191,9 +192,15 @@ set(UNLEASHED_RECOMP_UI_CXX_SOURCES "ui/message_window.cpp" "ui/options_menu.cpp" "ui/options_menu_thumbnails.cpp" + "ui/touch_controls.cpp" "ui/tv_static.cpp" ) +if(UNLEASHED_RECOMP_IOS) + list(APPEND UNLEASHED_RECOMP_UI_CXX_SOURCES "ui/file_picker_ios.mm") + list(APPEND UNLEASHED_RECOMP_UI_CXX_SOURCES "ui/touch_haptics_ios.mm") +endif() + set(UNLEASHED_RECOMP_INSTALL_CXX_SOURCES "install/installer.cpp" "install/iso_file_system.cpp" diff --git a/UnleashedRecomp/gpu/video.cpp b/UnleashedRecomp/gpu/video.cpp index 02052766..50c1a421 100644 --- a/UnleashedRecomp/gpu/video.cpp +++ b/UnleashedRecomp/gpu/video.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -1429,6 +1430,10 @@ static void CreateImGuiBackend() OptionsMenu::Init(); InstallerWizard::Init(); +#ifdef UNLEASHED_RECOMP_IOS + TouchControls::Init(); +#endif + ImGui_ImplSDL2_InitForOther(GameWindow::s_pWindow); #ifdef ENABLE_IM_FONT_ATLAS_SNAPSHOT @@ -2677,6 +2682,10 @@ static void DrawImGui() Fader::Draw(); BlackBar::Draw(); +#ifdef UNLEASHED_RECOMP_IOS + TouchControls::Draw(float(width), float(height), mousePosOffsetX, mousePosOffsetY); +#endif + assert(ImGui::GetBackgroundDrawList()->_ClipRectStack.Size == 1 && "Some clip rects were not removed from the stack!"); DrawFPS(); diff --git a/UnleashedRecomp/hid/driver/sdl_hid.cpp b/UnleashedRecomp/hid/driver/sdl_hid.cpp index 76235524..60bb31f5 100644 --- a/UnleashedRecomp/hid/driver/sdl_hid.cpp +++ b/UnleashedRecomp/hid/driver/sdl_hid.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include @@ -264,6 +265,7 @@ int HID_OnSDLEvent(void*, SDL_Event* event) { SDL_ShowCursor(SDL_DISABLE); SetControllerInputDevice(controller); + TouchControls::OnPhysicalControllerInput(); } controller->PollAxis(); @@ -272,6 +274,7 @@ int HID_OnSDLEvent(void*, SDL_Event* event) { SDL_ShowCursor(SDL_DISABLE); SetControllerInputDevice(controller); + TouchControls::OnPhysicalControllerInput(); controller->Poll(); } @@ -282,17 +285,22 @@ int HID_OnSDLEvent(void*, SDL_Event* event) case SDL_KEYDOWN: case SDL_KEYUP: hid::g_inputDevice = hid::EInputDevice::Keyboard; + TouchControls::OnPhysicalControllerInput(); break; case SDL_MOUSEMOTION: case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: { + // Mouse events synthesised from touches shouldn't switch the button prompts to keyboard and mouse. + if (event->motion.which == SDL_TOUCH_MOUSEID) + break; + if (!GameWindow::IsFullscreen() || GameWindow::s_isFullscreenCursorVisible) SDL_ShowCursor(SDL_ENABLE); hid::g_inputDevice = hid::EInputDevice::Mouse; - + TouchControls::OnPhysicalControllerInput(); break; } @@ -332,7 +340,7 @@ void hid::Init() SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE, "1"); SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_WII, "1"); SDL_SetHint(SDL_HINT_XINPUT_ENABLED, "1"); - + SDL_SetHint(SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS, "0"); // Uses Button Labels. This hint is disabled for Nintendo Controllers. SDL_InitSubSystem(SDL_INIT_EVENTS); @@ -352,10 +360,13 @@ uint32_t hid::GetState(uint32_t dwUserIndex, XAMINPUT_STATE* pState) pState->dwPacketNumber = packet++; - if (!g_activeController) + if (!g_activeController && !TouchControls::IsActive()) return ERROR_DEVICE_NOT_CONNECTED; - pState->Gamepad = g_activeController->state; + if (g_activeController) + pState->Gamepad = g_activeController->state; + + TouchControls::Apply(pState->Gamepad); return ERROR_SUCCESS; } @@ -366,7 +377,7 @@ uint32_t hid::SetState(uint32_t dwUserIndex, XAMINPUT_VIBRATION* pVibration) return ERROR_BAD_ARGUMENTS; if (!g_activeController) - return ERROR_DEVICE_NOT_CONNECTED; + return TouchControls::IsActive() ? ERROR_SUCCESS : ERROR_DEVICE_NOT_CONNECTED; g_activeController->SetVibration(*pVibration); @@ -378,16 +389,20 @@ uint32_t hid::GetCapabilities(uint32_t dwUserIndex, XAMINPUT_CAPABILITIES* pCaps if (!pCaps) return ERROR_BAD_ARGUMENTS; - if (!g_activeController) + if (!g_activeController && !TouchControls::IsActive()) return ERROR_DEVICE_NOT_CONNECTED; memset(pCaps, 0, sizeof(*pCaps)); pCaps->Type = XAMINPUT_DEVTYPE_GAMEPAD; - pCaps->SubType = XAMINPUT_DEVSUBTYPE_GAMEPAD; // TODO: other types? + pCaps->SubType = XAMINPUT_DEVSUBTYPE_GAMEPAD; pCaps->Flags = 0; - pCaps->Gamepad = g_activeController->state; - pCaps->Vibration = g_activeController->vibration; + + if (g_activeController) + { + pCaps->Gamepad = g_activeController->state; + pCaps->Vibration = g_activeController->vibration; + } return ERROR_SUCCESS; } diff --git a/UnleashedRecomp/ui/file_picker_ios.mm b/UnleashedRecomp/ui/file_picker_ios.mm new file mode 100644 index 00000000..e69de29b diff --git a/UnleashedRecomp/ui/touch_controls.cpp b/UnleashedRecomp/ui/touch_controls.cpp new file mode 100644 index 00000000..8df51bb2 --- /dev/null +++ b/UnleashedRecomp/ui/touch_controls.cpp @@ -0,0 +1,923 @@ +#include "touch_controls.h" +#include "installer_wizard.h" +#include "imgui_utils.h" +#include +#include +#include +#include +#include +#include +#include + +#if defined(__APPLE__) +#include +#endif + +#if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE +#include "touch_haptics.h" +#define TOUCH_CONTROLS_SUPPORTED 1 +#else +#define TOUCH_CONTROLS_SUPPORTED 0 +#endif + +// Layout frames and tuning values match the XeniOS defaults (https://github.com/xenios-jp/XeniOS/src/xenia/hid/touch). +static constexpr float STICK_DEADZONE = 0.14f; +static constexpr float STICK_ACTIVATION_RADIUS = 0.48f; +static constexpr float STICK_DPAD_RING_RADIUS = 0.32f; +static constexpr float LOOK_POINTS_PER_FULL_SCALE = 4.0f; +static constexpr float LOOK_VERTICAL_SCALE = 1.2f; +static constexpr double LOOK_HOLD_SECONDS = 0.10; +static constexpr double BUTTON_TAP_HOLD_SECONDS = 0.10; + +// Horizontal margin kept free on wide screens so controls stay clear of the notch and rounded corners. +static constexpr float WIDE_SCREEN_SAFE_MARGIN = 0.055f; + +// Layout editor limits, in layout space. +static constexpr float EDIT_MIN_SIZE = 0.04f; +static constexpr float EDIT_MAX_SIZE = 0.45f; +static constexpr float EDIT_SIZE_STEP = 1.1f; +static constexpr float EDIT_OPACITY_STEP = 0.1f; +static constexpr float EDIT_MIN_OPACITY = 0.1f; + +static constexpr const char* LAYOUT_FILE_NAME = "touch_layout.toml"; + +struct TouchRect +{ + float x, y, width, height; +}; + +enum class TouchControlKind +{ + Stick, + Button +}; + +struct TouchControl +{ + TouchControlKind kind; + const char* id; + const char* label; + TouchRect frame; // Default frame, normalised to the layout space. + uint16_t buttons; + uint8_t leftTrigger; + uint8_t rightTrigger; +}; + +// Default frames come from the XeniOS default layout, with its actions mapped to their gamepad equivalents. +static const TouchControl g_controls[] = +{ + { TouchControlKind::Stick, "stick", nullptr, { 0.055f, 0.560f, 0.190f, 0.315f }, 0, 0, 0 }, + { TouchControlKind::Button, "back", "BACK", { 0.390f, 0.045f, 0.080f, 0.112f }, XAMINPUT_GAMEPAD_BACK, 0, 0 }, + { TouchControlKind::Button, "start", "START", { 0.495f, 0.045f, 0.085f, 0.112f }, XAMINPUT_GAMEPAD_START, 0, 0 }, + { TouchControlKind::Button, "lb", "LB", { 0.660f, 0.050f, 0.085f, 0.112f }, XAMINPUT_GAMEPAD_LEFT_SHOULDER, 0, 0 }, + { TouchControlKind::Button, "rb", "RB", { 0.765f, 0.050f, 0.085f, 0.112f }, XAMINPUT_GAMEPAD_RIGHT_SHOULDER, 0, 0 }, + { TouchControlKind::Button, "lt", "LT", { 0.095f, 0.405f, 0.120f, 0.110f }, 0, 0xFF, 0 }, + { TouchControlKind::Button, "rt", "RT", { 0.860f, 0.405f, 0.120f, 0.110f }, 0, 0, 0xFF }, + { TouchControlKind::Button, "y", "Y", { 0.760f, 0.455f, 0.065f, 0.115f }, XAMINPUT_GAMEPAD_Y, 0, 0 }, + { TouchControlKind::Button, "x", "X", { 0.700f, 0.585f, 0.065f, 0.115f }, XAMINPUT_GAMEPAD_X, 0, 0 }, + { TouchControlKind::Button, "b", "B", { 0.820f, 0.585f, 0.065f, 0.115f }, XAMINPUT_GAMEPAD_B, 0, 0 }, + { TouchControlKind::Button, "a", "A", { 0.760f, 0.715f, 0.065f, 0.115f }, XAMINPUT_GAMEPAD_A, 0, 0 }, +}; + +static constexpr size_t CONTROL_COUNT = std::size(g_controls); + +// The button that opens the layout editor. It isn't part of the editable layout. +static constexpr TouchRect EDIT_BUTTON_FRAME = { 0.290f, 0.045f, 0.075f, 0.112f }; + +struct LayoutEntry +{ + TouchRect frame; + bool hidden; +}; + +static LayoutEntry g_layout[CONTROL_COUNT]; + +enum class EditorAction +{ + Smaller, + Bigger, + ToggleHidden, + LessOpaque, + MoreOpaque, + Reset, + Done +}; + +struct EditorButton +{ + EditorAction action; + const char* label; +}; + +static const EditorButton g_editorButtons[] = +{ + { EditorAction::Smaller, "SIZE -" }, + { EditorAction::Bigger, "SIZE +" }, + { EditorAction::ToggleHidden, "HIDE" }, + { EditorAction::LessOpaque, "ALPHA -" }, + { EditorAction::MoreOpaque, "ALPHA +" }, + { EditorAction::Reset, "RESET" }, + { EditorAction::Done, "DONE" }, +}; + +static constexpr size_t EDITOR_BUTTON_COUNT = std::size(g_editorButtons); + +// Special capture targets besides the layout's controls. +static constexpr int LOOK_ZONE = -1; +static constexpr int EDIT_BUTTON = -2; +static constexpr int EDITOR_TOOLBAR = -3; +static constexpr int EDITOR_EMPTY = -4; + +enum class StickZone +{ + Stick, + DpadUp, + DpadDown, + DpadLeft, + DpadRight +}; + +struct TouchCapture +{ + SDL_FingerID fingerId; + int control; + StickZone stickZone; + ImVec2 anchor; // Window points. + ImVec2 current; // Window points. + TouchRect frameAtAnchor; // Layout space, used when dragging in the editor. +}; + +static std::mutex g_mutex; +static std::vector g_captures; +static double g_buttonPressTimes[CONTROL_COUNT]; +static ImVec2 g_lookVector; +static double g_lookTime = -1.0; +static ImVec2 g_windowSize{ 1.0f, 1.0f }; +static std::atomic g_hiddenByController; +static std::atomic g_isEditing; +static int g_selectedControl = -1; +static ImFont* g_font; + +static double GetTime() +{ + return double(SDL_GetPerformanceCounter()) / double(SDL_GetPerformanceFrequency()); +} + +static bool IsEnabled() +{ +#if TOUCH_CONTROLS_SUPPORTED + return Config::TouchControls && !InstallerWizard::s_isVisible; +#else + return false; +#endif +} + +static std::filesystem::path GetLayoutPath() +{ + return GetUserPath() / LAYOUT_FILE_NAME; +} + +static void ResetLayout() +{ + for (size_t i = 0; i < CONTROL_COUNT; i++) + g_layout[i] = { g_controls[i].frame, false }; +} + +static void LoadLayout() +{ + ResetLayout(); + + std::error_code ec; + if (!std::filesystem::exists(GetLayoutPath(), ec)) + return; + + try + { + std::ifstream stream(GetLayoutPath()); + toml::table table = toml::parse(stream); + + for (size_t i = 0; i < CONTROL_COUNT; i++) + { + auto entry = table[g_controls[i].id]; + if (!entry.is_table()) + continue; + + TouchRect& frame = g_layout[i].frame; + frame.x = std::clamp(entry["x"].value_or(frame.x), 0.0f, 1.0f); + frame.y = std::clamp(entry["y"].value_or(frame.y), 0.0f, 1.0f); + frame.width = std::clamp(entry["width"].value_or(frame.width), EDIT_MIN_SIZE, EDIT_MAX_SIZE); + frame.height = std::clamp(entry["height"].value_or(frame.height), EDIT_MIN_SIZE, EDIT_MAX_SIZE); + g_layout[i].hidden = entry["hidden"].value_or(false); + } + } + catch (toml::parse_error& err) + { + LOGFN_ERROR("Failed to parse touch layout: {}", err.what()); + ResetLayout(); + } +} + +static void SaveLayout() +{ + toml::table table; + + for (size_t i = 0; i < CONTROL_COUNT; i++) + { + const LayoutEntry& entry = g_layout[i]; + + table.insert(g_controls[i].id, toml::table + { + { "x", entry.frame.x }, + { "y", entry.frame.y }, + { "width", entry.frame.width }, + { "height", entry.frame.height }, + { "hidden", entry.hidden } + }); + } + + std::ofstream stream(GetLayoutPath()); + if (stream.is_open()) + stream << table; + else + LOGN_ERROR("Failed to save touch layout."); +} + +static TouchRect GetLayoutSpace(ImVec2 size) +{ + float margin = (size.x / size.y) > 1.9f ? size.x * WIDE_SCREEN_SAFE_MARGIN : 0.0f; + return { margin, 0.0f, size.x - margin * 2.0f, size.y }; +} + +// Resolves a frame in layout space to window points. +static TouchRect ToWindowFrame(const TouchRect& frame, ImVec2 size) +{ + TouchRect space = GetLayoutSpace(size); + + return + { + space.x + frame.x * space.width, + space.y + frame.y * space.height, + frame.width * space.width, + frame.height * space.height + }; +} + +static TouchRect GetControlFrame(size_t index) +{ + return ToWindowFrame(g_layout[index].frame, g_windowSize); +} + +// The editor toolbar runs along the bottom of the screen, in window points. +static TouchRect GetEditorButtonFrame(size_t index) +{ + TouchRect space = GetLayoutSpace(g_windowSize); + float spacing = space.width * 0.01f; + float width = (space.width * 0.9f - spacing * float(EDITOR_BUTTON_COUNT - 1)) / float(EDITOR_BUTTON_COUNT); + float height = g_windowSize.y * 0.11f; + float startX = space.x + space.width * 0.05f; + + return { startX + float(index) * (width + spacing), g_windowSize.y * 0.86f, width, height }; +} + +static ImVec2 GetCentre(const TouchRect& rect) +{ + return { rect.x + rect.width * 0.5f, rect.y + rect.height * 0.5f }; +} + +static float GetRadius(const TouchRect& rect) +{ + return std::min(rect.width, rect.height) * 0.5f; +} + +static bool RectContainsPoint(const TouchRect& rect, ImVec2 point) +{ + return point.x >= rect.x && point.x <= rect.x + rect.width && + point.y >= rect.y && point.y <= rect.y + rect.height; +} + +// Buttons are pills: circles, stretched along their longer side. +static bool PillContainsPoint(const TouchRect& frame, ImVec2 point) +{ + float radius = GetRadius(frame); + ImVec2 centre = GetCentre(frame); + float halfSpanX = std::max(frame.width * 0.5f - radius, 0.0f); + float halfSpanY = std::max(frame.height * 0.5f - radius, 0.0f); + float dx = std::max(std::abs(point.x - centre.x) - halfSpanX, 0.0f); + float dy = std::max(std::abs(point.y - centre.y) - halfSpanY, 0.0f); + return dx * dx + dy * dy <= radius * radius; +} + +static bool ControlContainsPoint(size_t index, ImVec2 point) +{ + TouchRect frame = GetControlFrame(index); + + if (g_controls[index].kind == TouchControlKind::Stick) + return RectContainsPoint(frame, point); + + return PillContainsPoint(frame, point); +} + +static StickZone GetStickZone(const TouchRect& frame, ImVec2 point) +{ + ImVec2 centre = GetCentre(frame); + float stickRadius = std::min(frame.width, frame.height) * STICK_DPAD_RING_RADIUS; + float dx = point.x - centre.x; + float dy = point.y - centre.y; + + if (dx * dx + dy * dy <= stickRadius * stickRadius) + return StickZone::Stick; + + if (std::abs(dx) > std::abs(dy)) + return dx > 0.0f ? StickZone::DpadRight : StickZone::DpadLeft; + + return dy > 0.0f ? StickZone::DpadDown : StickZone::DpadUp; +} + +// Returns the stick deflection for a capture, with Y pointing down. +static ImVec2 GetStickVector(const TouchRect& frame, const TouchCapture& capture) +{ + float outerRadius = std::min(frame.width, frame.height) * STICK_ACTIVATION_RADIUS; + ImVec2 delta = { capture.current.x - capture.anchor.x, capture.current.y - capture.anchor.y }; + float distance = std::hypot(delta.x, delta.y); + + if (distance > outerRadius && distance > 0.0f) + { + delta.x *= outerRadius / distance; + delta.y *= outerRadius / distance; + } + + ImVec2 normalised = { delta.x / outerRadius, delta.y / outerRadius }; + float magnitude = std::hypot(normalised.x, normalised.y); + + if (magnitude < STICK_DEADZONE || magnitude <= 0.0f) + return {}; + + float rescaled = std::clamp((magnitude - STICK_DEADZONE) / (1.0f - STICK_DEADZONE), 0.0f, 1.0f); + return { normalised.x / magnitude * rescaled, normalised.y / magnitude * rescaled }; +} + +static int16_t ToAxis(float value) +{ + return int16_t(std::lround(std::clamp(value, -1.0f, 1.0f) * 32767.0f)); +} + +static void MergeAxis(int16_t& target, int16_t value) +{ + if (std::abs(int(value)) > std::abs(int(target))) + target = value; +} + +static int FindControlAtPoint(ImVec2 point, bool includeHidden) +{ + // Buttons take priority over the stick. + for (int pass = 0; pass < 2; pass++) + { + TouchControlKind kind = pass == 0 ? TouchControlKind::Button : TouchControlKind::Stick; + + for (size_t i = 0; i < CONTROL_COUNT; i++) + { + if (g_controls[i].kind == kind && (includeHidden || !g_layout[i].hidden) && ControlContainsPoint(i, point)) + return int(i); + } + } + + return -1; +} + +static void PlayHaptic(bool light) +{ +#if TOUCH_CONTROLS_SUPPORTED + TouchHaptics::Play(light); +#endif +} + +static void ClampToLayout(TouchRect& frame) +{ + frame.width = std::clamp(frame.width, EDIT_MIN_SIZE, EDIT_MAX_SIZE); + frame.height = std::clamp(frame.height, EDIT_MIN_SIZE, EDIT_MAX_SIZE); + frame.x = std::clamp(frame.x, 0.0f, 1.0f - frame.width); + frame.y = std::clamp(frame.y, 0.0f, 1.0f - frame.height); +} + +static void ApplyEditorAction(EditorAction action) +{ + switch (action) + { + case EditorAction::Smaller: + case EditorAction::Bigger: + { + if (g_selectedControl < 0) + break; + + TouchRect& frame = g_layout[g_selectedControl].frame; + ImVec2 centre = GetCentre(frame); + float scale = action == EditorAction::Bigger ? EDIT_SIZE_STEP : 1.0f / EDIT_SIZE_STEP; + float newWidth = frame.width * scale; + float newHeight = frame.height * scale; + + // Stop at the limits instead of clamping one side, so the control keeps its shape. + if (newWidth < EDIT_MIN_SIZE || newHeight < EDIT_MIN_SIZE || newWidth > EDIT_MAX_SIZE || newHeight > EDIT_MAX_SIZE) + break; + + frame = { centre.x - newWidth * 0.5f, centre.y - newHeight * 0.5f, newWidth, newHeight }; + ClampToLayout(frame); + break; + } + + case EditorAction::ToggleHidden: + { + if (g_selectedControl >= 0) + g_layout[g_selectedControl].hidden = !g_layout[g_selectedControl].hidden; + + break; + } + + case EditorAction::LessOpaque: + case EditorAction::MoreOpaque: + { + float step = action == EditorAction::MoreOpaque ? EDIT_OPACITY_STEP : -EDIT_OPACITY_STEP; + Config::TouchControlsOpacity = std::clamp(Config::TouchControlsOpacity + step, EDIT_MIN_OPACITY, 1.0f); + break; + } + + case EditorAction::Reset: + { + ResetLayout(); + Config::TouchControlsOpacity = 1.0f; + break; + } + + case EditorAction::Done: + { + SaveLayout(); + Config::Save(); + g_isEditing = false; + g_selectedControl = -1; + g_captures.clear(); + break; + } + } +} + +static void OnEditorFingerDown(TouchCapture& capture, ImVec2 point) +{ + for (size_t i = 0; i < EDITOR_BUTTON_COUNT; i++) + { + if (RectContainsPoint(GetEditorButtonFrame(i), point)) + { + capture.control = EDITOR_TOOLBAR; + PlayHaptic(false); + ApplyEditorAction(g_editorButtons[i].action); + return; + } + } + + int control = FindControlAtPoint(point, true); + if (control >= 0) + { + capture.control = control; + capture.frameAtAnchor = g_layout[control].frame; + g_selectedControl = control; + PlayHaptic(true); + } + else + { + capture.control = EDITOR_EMPTY; + g_selectedControl = -1; + } +} + +static void OnEditorFingerMotion(TouchCapture& capture) +{ + if (capture.control < 0) + return; + + TouchRect space = GetLayoutSpace(g_windowSize); + TouchRect& frame = g_layout[capture.control].frame; + + frame.x = capture.frameAtAnchor.x + (capture.current.x - capture.anchor.x) / space.width; + frame.y = capture.frameAtAnchor.y + (capture.current.y - capture.anchor.y) / space.height; + ClampToLayout(frame); +} + +static void OnGameplayFingerDown(TouchCapture& capture, ImVec2 point) +{ + if (RectContainsPoint(ToWindowFrame(EDIT_BUTTON_FRAME, g_windowSize), point)) + { + capture.control = EDIT_BUTTON; + g_isEditing = true; + g_selectedControl = -1; + PlayHaptic(false); + return; + } + + capture.control = FindControlAtPoint(point, false); + + if (capture.control < 0) + { + capture.control = LOOK_ZONE; + return; + } + + const TouchControl& control = g_controls[capture.control]; + + if (control.kind == TouchControlKind::Stick) + { + capture.stickZone = GetStickZone(GetControlFrame(capture.control), point); + PlayHaptic(true); + } + else + { + g_buttonPressTimes[capture.control] = GetTime(); + PlayHaptic(false); + } +} + +static int TouchControls_OnSDLEvent(void*, SDL_Event* event) +{ + if (event->type != SDL_FINGERDOWN && event->type != SDL_FINGERMOTION && event->type != SDL_FINGERUP) + return 0; + + std::lock_guard lock(g_mutex); + + if (!IsEnabled()) + { + g_captures.clear(); + return 0; + } + + int windowWidth = 0; + int windowHeight = 0; + SDL_GetWindowSize(GameWindow::s_pWindow, &windowWidth, &windowHeight); + + if (windowWidth > 0 && windowHeight > 0) + g_windowSize = { float(windowWidth), float(windowHeight) }; + + ImVec2 point = { event->tfinger.x * g_windowSize.x, event->tfinger.y * g_windowSize.y }; + auto capture = std::find_if(g_captures.begin(), g_captures.end(), [&](const TouchCapture& c) { return c.fingerId == event->tfinger.fingerId; }); + + switch (event->type) + { + case SDL_FINGERDOWN: + { + g_hiddenByController = false; + + if (!App::s_isLoading) + { + // Show Xbox button prompts, matching the on-screen labels. + hid::g_inputDevice = hid::EInputDevice::Xbox; + hid::g_inputDeviceController = hid::EInputDevice::Xbox; + } + + if (capture != g_captures.end()) + g_captures.erase(capture); + + TouchCapture newCapture{}; + newCapture.fingerId = event->tfinger.fingerId; + newCapture.anchor = point; + newCapture.current = point; + + if (g_isEditing) + OnEditorFingerDown(newCapture, point); + else + OnGameplayFingerDown(newCapture, point); + + // Pressing DONE clears the captures, so don't track that touch any further. + if (g_isEditing || newCapture.control != EDITOR_TOOLBAR) + g_captures.push_back(newCapture); + + break; + } + + case SDL_FINGERMOTION: + { + if (capture == g_captures.end()) + break; + + capture->current = point; + + if (g_isEditing) + { + OnEditorFingerMotion(*capture); + } + else if (capture->control == LOOK_ZONE) + { + float deltaX = event->tfinger.dx * g_windowSize.x; + float deltaY = event->tfinger.dy * g_windowSize.y; + + g_lookVector = + { + std::clamp(deltaX / LOOK_POINTS_PER_FULL_SCALE, -1.0f, 1.0f), + std::clamp(-deltaY / LOOK_POINTS_PER_FULL_SCALE * LOOK_VERTICAL_SCALE, -1.0f, 1.0f) + }; + + g_lookTime = GetTime(); + } + + break; + } + + case SDL_FINGERUP: + { + if (capture != g_captures.end()) + g_captures.erase(capture); + + break; + } + } + + return 0; +} + +void TouchControls::Init() +{ + g_font = ImFontAtlasSnapshot::GetFont("FOT-NewRodinPro-M.otf"); + +#if TOUCH_CONTROLS_SUPPORTED + { + std::lock_guard lock(g_mutex); + LoadLayout(); + } + + TouchHaptics::Init(); + SDL_AddEventWatch(TouchControls_OnSDLEvent, nullptr); +#endif +} + +bool TouchControls::IsActive() +{ + return IsEnabled() && !g_hiddenByController; +} + +void TouchControls::OnPhysicalControllerInput() +{ + std::lock_guard lock(g_mutex); + + // Keep the overlay up while its layout is being edited. + if (g_isEditing) + return; + + g_hiddenByController = true; + g_captures.clear(); + g_lookTime = -1.0; +} + +void TouchControls::Apply(XAMINPUT_GAMEPAD& pad) +{ + // No game input while the layout is being edited. + if (!IsActive() || g_isEditing) + return; + + std::lock_guard lock(g_mutex); + + double time = GetTime(); + uint16_t buttons = 0; + uint8_t leftTrigger = 0; + uint8_t rightTrigger = 0; + int16_t leftX = 0; + int16_t leftY = 0; + int16_t rightX = 0; + int16_t rightY = 0; + + for (auto& capture : g_captures) + { + if (capture.control < 0) + continue; + + const TouchControl& control = g_controls[capture.control]; + + if (control.kind == TouchControlKind::Stick) + { + switch (capture.stickZone) + { + case StickZone::DpadUp: buttons |= XAMINPUT_GAMEPAD_DPAD_UP; break; + case StickZone::DpadDown: buttons |= XAMINPUT_GAMEPAD_DPAD_DOWN; break; + case StickZone::DpadLeft: buttons |= XAMINPUT_GAMEPAD_DPAD_LEFT; break; + case StickZone::DpadRight: buttons |= XAMINPUT_GAMEPAD_DPAD_RIGHT; break; + + case StickZone::Stick: + { + ImVec2 vector = GetStickVector(GetControlFrame(capture.control), capture); + leftX = ToAxis(vector.x); + leftY = ToAxis(-vector.y); + break; + } + } + } + else if (ControlContainsPoint(capture.control, capture.current)) + { + buttons |= control.buttons; + leftTrigger = std::max(leftTrigger, control.leftTrigger); + rightTrigger = std::max(rightTrigger, control.rightTrigger); + } + } + + // Keep quick taps pressed for long enough that the game sees them even at low frame rates. + for (size_t i = 0; i < CONTROL_COUNT; i++) + { + if (g_controls[i].kind == TouchControlKind::Button && (time - g_buttonPressTimes[i]) < BUTTON_TAP_HOLD_SECONDS) + { + buttons |= g_controls[i].buttons; + leftTrigger = std::max(leftTrigger, g_controls[i].leftTrigger); + rightTrigger = std::max(rightTrigger, g_controls[i].rightTrigger); + } + } + + // Swipes produce a short look impulse that fades out, so the camera stops when the finger does. + if (g_lookTime >= 0.0) + { + double age = time - g_lookTime; + + if (age < LOOK_HOLD_SECONDS) + { + float decay = float(1.0 - age / LOOK_HOLD_SECONDS); + rightX = ToAxis(g_lookVector.x * decay); + rightY = ToAxis(g_lookVector.y * decay); + } + } + + pad.wButtons |= buttons; + pad.bLeftTrigger = std::max(pad.bLeftTrigger, leftTrigger); + pad.bRightTrigger = std::max(pad.bRightTrigger, rightTrigger); + MergeAxis(pad.sThumbLX, leftX); + MergeAxis(pad.sThumbLY, leftY); + MergeAxis(pad.sThumbRX, rightX); + MergeAxis(pad.sThumbRY, rightY); +} + +void TouchControls::Draw(float swapChainWidth, float swapChainHeight, float viewportOffsetX, float viewportOffsetY) +{ + if (!IsActive()) + return; + + std::lock_guard lock(g_mutex); + + auto drawList = ImGui::GetBackgroundDrawList(); + float scale = swapChainWidth / g_windowSize.x; + float opacity = std::clamp(Config::TouchControlsOpacity.Value, 0.0f, 1.0f); + float borderWidth = std::max(1.5f * scale, 1.0f); + bool isEditing = g_isEditing; + + auto toScreen = [&](ImVec2 point) + { + return ImVec2(point.x * scale - viewportOffsetX, point.y * scale - viewportOffsetY); + }; + + // White with the given alpha, scaled by the opacity setting unless told otherwise. + auto white = [&](float alpha, bool applyOpacity = true) + { + float finalAlpha = std::clamp(applyOpacity ? alpha * opacity : alpha, 0.0f, 1.0f); + return IM_COL32(255, 255, 255, int(finalAlpha * 255.0f)); + }; + + auto drawLabel = [&](const char* text, ImVec2 centre, float fontSize, ImU32 colour) + { + if (g_font == nullptr) + return; + + ImVec2 textSize = g_font->CalcTextSizeA(fontSize, FLT_MAX, 0.0f, text); + drawList->AddText(g_font, fontSize, { centre.x - textSize.x * 0.5f, centre.y - textSize.y * 0.5f }, colour, text); + }; + + auto drawPill = [&](const TouchRect& frame, ImU32 fill, ImU32 border) + { + ImVec2 min = toScreen({ frame.x, frame.y }); + ImVec2 max = toScreen({ frame.x + frame.width, frame.y + frame.height }); + float rounding = GetRadius(frame) * scale; + + drawList->AddRectFilled(min, max, fill, rounding); + drawList->AddRect(min, max, border, rounding, 0, borderWidth); + }; + + auto isControlHeld = [&](size_t index) + { + return std::any_of(g_captures.begin(), g_captures.end(), [&](const TouchCapture& c) { return c.control == int(index); }); + }; + + if (isEditing) + { + // Dim the game so it's clear the controls are being edited, not played. + drawList->AddRectFilled(toScreen({ 0.0f, 0.0f }), toScreen(g_windowSize), IM_COL32(0, 0, 0, 110)); + drawLabel("Drag controls to move them. Tap one to select it.", toScreen({ g_windowSize.x * 0.5f, g_windowSize.y * 0.79f }), g_windowSize.y * 0.045f * scale, IM_COL32(255, 255, 255, 230)); + } + else + { + TouchRect frame = ToWindowFrame(EDIT_BUTTON_FRAME, g_windowSize); + drawPill(frame, white(0.08f), white(0.32f)); + drawLabel("EDIT", toScreen(GetCentre(frame)), std::min(frame.width, frame.height) * 0.30f * scale, white(0.85f)); + } + + for (size_t i = 0; i < CONTROL_COUNT; i++) + { + const TouchControl& control = g_controls[i]; + const LayoutEntry& entry = g_layout[i]; + + if (entry.hidden && !isEditing) + continue; + + TouchRect frame = GetControlFrame(i); + ImVec2 centre = toScreen(GetCentre(frame)); + bool held = !isEditing && isControlHeld(i); + bool selected = isEditing && int(i) == g_selectedControl; + + // Hidden controls stay faintly visible in the editor so they can be shown again. + float alphaScale = entry.hidden ? 0.35f : 1.0f; + + if (control.kind == TouchControlKind::Stick) + { + float radius = GetRadius(frame) * scale; + float ringRadius = std::min(frame.width, frame.height) * STICK_DPAD_RING_RADIUS * scale; + + drawList->AddCircleFilled(centre, radius, white(0.10f * alphaScale), 48); + drawList->AddCircle(centre, radius, white(0.38f * alphaScale), 48, borderWidth); + drawList->AddCircle(centre, ringRadius, white(0.20f * alphaScale), 48, borderWidth); + + // D-Pad arrows on the outer ring. + float arrowDistance = (radius + ringRadius) * 0.5f; + float arrowSize = (radius - ringRadius) * 0.3f; + const ImVec2 directions[] = { { 0.0f, -1.0f }, { 0.0f, 1.0f }, { -1.0f, 0.0f }, { 1.0f, 0.0f } }; + const StickZone zones[] = { StickZone::DpadUp, StickZone::DpadDown, StickZone::DpadLeft, StickZone::DpadRight }; + + for (size_t d = 0; d < 4; d++) + { + bool pressed = !isEditing && std::any_of(g_captures.begin(), g_captures.end(), [&](const TouchCapture& c) { return c.control == int(i) && c.stickZone == zones[d]; }); + ImVec2 dir = directions[d]; + ImVec2 tip = { centre.x + dir.x * (arrowDistance + arrowSize), centre.y + dir.y * (arrowDistance + arrowSize) }; + ImVec2 base = { centre.x + dir.x * (arrowDistance - arrowSize), centre.y + dir.y * (arrowDistance - arrowSize) }; + ImVec2 side = { -dir.y * arrowSize, dir.x * arrowSize }; + + drawList->AddTriangleFilled(tip, { base.x + side.x, base.y + side.y }, { base.x - side.x, base.y - side.y }, white((pressed ? 0.85f : 0.45f) * alphaScale)); + } + + // Knob follows the finger while the stick is held. + ImVec2 knob = centre; + for (auto& capture : g_captures) + { + if (!isEditing && capture.control == int(i) && capture.stickZone == StickZone::Stick) + { + float outerRadius = std::min(frame.width, frame.height) * STICK_ACTIVATION_RADIUS; + ImVec2 delta = { capture.current.x - capture.anchor.x, capture.current.y - capture.anchor.y }; + float distance = std::hypot(delta.x, delta.y); + + if (distance > outerRadius && distance > 0.0f) + { + delta.x *= outerRadius / distance; + delta.y *= outerRadius / distance; + } + + knob = { centre.x + delta.x * scale, centre.y + delta.y * scale }; + } + } + + float knobRadius = std::min(frame.width, frame.height) * 0.14f * scale; + drawList->AddCircleFilled(knob, knobRadius, white(0.18f * alphaScale), 32); + drawList->AddCircle(knob, knobRadius, white(0.72f * alphaScale), 32, borderWidth); + + if (selected) + drawList->AddCircle(centre, radius + borderWidth * 3.0f, IM_COL32(255, 200, 40, 255), 48, borderWidth * 2.0f); + } + else + { + drawPill(frame, white((held ? 0.35f : 0.08f) * alphaScale), white((held ? 0.80f : 0.32f) * alphaScale)); + + float fontSize = std::min(frame.width, frame.height) * (strlen(control.label) > 2 ? 0.30f : 0.42f) * scale; + drawLabel(control.label, centre, fontSize, white((held ? 1.0f : 0.85f) * alphaScale)); + + if (selected) + { + float outset = borderWidth * 3.0f / scale; + TouchRect outline = { frame.x - outset, frame.y - outset, frame.width + outset * 2.0f, frame.height + outset * 2.0f }; + ImVec2 min = toScreen({ outline.x, outline.y }); + ImVec2 max = toScreen({ outline.x + outline.width, outline.y + outline.height }); + drawList->AddRect(min, max, IM_COL32(255, 200, 40, 255), GetRadius(outline) * scale, 0, borderWidth * 2.0f); + } + } + } + + if (isEditing) + { + // The toolbar ignores the opacity setting so it's always readable. + for (size_t i = 0; i < EDITOR_BUTTON_COUNT; i++) + { + const EditorButton& button = g_editorButtons[i]; + TouchRect frame = GetEditorButtonFrame(i); + bool needsSelection = button.action == EditorAction::Smaller || button.action == EditorAction::Bigger || button.action == EditorAction::ToggleHidden; + bool enabled = !needsSelection || g_selectedControl >= 0; + bool isDone = button.action == EditorAction::Done; + const char* label = button.label; + + if (button.action == EditorAction::ToggleHidden && g_selectedControl >= 0 && g_layout[g_selectedControl].hidden) + label = "SHOW"; + + ImU32 fill = isDone ? IM_COL32(255, 200, 40, 200) : white(enabled ? 0.25f : 0.08f, false); + ImU32 text = isDone ? IM_COL32(0, 0, 0, 255) : white(enabled ? 1.0f : 0.35f, false); + ImVec2 min = toScreen({ frame.x, frame.y }); + ImVec2 max = toScreen({ frame.x + frame.width, frame.y + frame.height }); + float rounding = frame.height * 0.25f * scale; + + drawList->AddRectFilled(min, max, fill, rounding); + drawList->AddRect(min, max, white(0.6f, false), rounding, 0, borderWidth); + drawLabel(label, toScreen(GetCentre(frame)), frame.height * 0.32f * scale, text); + } + } +} diff --git a/UnleashedRecomp/ui/touch_controls.h b/UnleashedRecomp/ui/touch_controls.h new file mode 100644 index 00000000..5c5c4a32 --- /dev/null +++ b/UnleashedRecomp/ui/touch_controls.h @@ -0,0 +1,22 @@ +#pragma once + +// On-screen touch gamepad, modelled after the default XeniOS layout: +// a movement stick with a D-Pad ring on the left, swipe-to-look anywhere on +// the screen that isn't a control, and face/shoulder/trigger buttons on the right. +namespace TouchControls +{ + void Init(); + + // Draws the overlay. Coordinates are mapped from the window to the ImGui + // viewport, which may be letterboxed inside the swap chain. + void Draw(float swapChainWidth, float swapChainHeight, float viewportOffsetX, float viewportOffsetY); + + // Whether the touch gamepad is on screen and should be reported as a connected controller. + bool IsActive(); + + // Merges the touch gamepad state into a controller state. + void Apply(XAMINPUT_GAMEPAD& pad); + + // Hides the overlay once a physical controller is used. Touching the screen shows it again. + void OnPhysicalControllerInput(); +} diff --git a/UnleashedRecomp/ui/touch_haptics.h b/UnleashedRecomp/ui/touch_haptics.h new file mode 100644 index 00000000..01abed6b --- /dev/null +++ b/UnleashedRecomp/ui/touch_haptics.h @@ -0,0 +1,9 @@ +#pragma once + +namespace TouchHaptics +{ + void Init(); + + // Plays a short tap on the Taptic Engine. Light is used for the stick, medium for buttons. + void Play(bool light); +} diff --git a/UnleashedRecomp/ui/touch_haptics_ios.mm b/UnleashedRecomp/ui/touch_haptics_ios.mm new file mode 100644 index 00000000..c06a7d6c --- /dev/null +++ b/UnleashedRecomp/ui/touch_haptics_ios.mm @@ -0,0 +1,29 @@ +#include "touch_haptics.h" + +#import + +static UIImpactFeedbackGenerator* g_lightFeedback; +static UIImpactFeedbackGenerator* g_mediumFeedback; + +namespace TouchHaptics +{ + void Init() + { + dispatch_async(dispatch_get_main_queue(), ^{ + g_lightFeedback = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleLight]; + g_mediumFeedback = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleMedium]; + [g_lightFeedback prepare]; + [g_mediumFeedback prepare]; + }); + } + + void Play(bool light) + { + // UIKit feedback generators must only be used from the main thread. + dispatch_async(dispatch_get_main_queue(), ^{ + UIImpactFeedbackGenerator* generator = light ? g_lightFeedback : g_mediumFeedback; + [generator impactOccurred]; + [generator prepare]; + }); + } +} diff --git a/UnleashedRecomp/user/config_def.h b/UnleashedRecomp/user/config_def.h index 80eb29c9..2d0e0004 100644 --- a/UnleashedRecomp/user/config_def.h +++ b/UnleashedRecomp/user/config_def.h @@ -15,6 +15,8 @@ CONFIG_DEFINE_ENUM_LOCALISED("Input", ECameraRotationMode, VerticalCamera, ECame CONFIG_DEFINE_LOCALISED("Input", bool, Vibration, true); CONFIG_DEFINE_LOCALISED("Input", bool, AllowBackgroundInput, false); CONFIG_DEFINE_ENUM_LOCALISED("Input", EControllerIcons, ControllerIcons, EControllerIcons::Auto); +CONFIG_DEFINE("Input", bool, TouchControls, true); +CONFIG_DEFINE("Input", float, TouchControlsOpacity, 1.0f); CONFIG_DEFINE_ENUM("Bindings", SDL_Scancode, Key_A, SDL_SCANCODE_S); CONFIG_DEFINE_ENUM("Bindings", SDL_Scancode, Key_B, SDL_SCANCODE_D); From f3a9443c06f6de7e9fb08627c525d4c3a6e347a8 Mon Sep 17 00:00:00 2001 From: MarkosTh09 Date: Sat, 26 Sep 2026 16:53:36 +0300 Subject: [PATCH 10/13] use native apis for file picker instead of porting NFDe --- UnleashedRecomp/CMakeLists.txt | 5 +- UnleashedRecomp/ui/file_picker_ios.h | 11 + UnleashedRecomp/ui/file_picker_ios.mm | 267 ++++++++++++++++++++++++ UnleashedRecomp/ui/installer_wizard.cpp | 188 ++++++++++++++++- 4 files changed, 459 insertions(+), 12 deletions(-) create mode 100644 UnleashedRecomp/ui/file_picker_ios.h diff --git a/UnleashedRecomp/CMakeLists.txt b/UnleashedRecomp/CMakeLists.txt index 66f83ace..a44a4a79 100644 --- a/UnleashedRecomp/CMakeLists.txt +++ b/UnleashedRecomp/CMakeLists.txt @@ -484,7 +484,6 @@ set(UNLEASHED_RECOMP_LINK_LIBS fmt::fmt zstd::libzstd msdf-atlas-gen::msdf-atlas-gen - nfd::nfd o1heap XenonUtils SDL2::SDL2-static @@ -496,6 +495,10 @@ set(UNLEASHED_RECOMP_LINK_LIBS plume ) +if(NOT CMAKE_SYSTEM_NAME STREQUAL "iOS") + list(APPEND UNLEASHED_RECOMP_LINK_LIBS nfd::nfd) +endif() + if(CMAKE_SYSTEM_NAME STREQUAL "iOS") list(PREPEND UNLEASHED_RECOMP_LINK_LIBS SDL2::SDL2main) list(APPEND UNLEASHED_RECOMP_LINK_LIBS "-framework UniformTypeIdentifiers") diff --git a/UnleashedRecomp/ui/file_picker_ios.h b/UnleashedRecomp/ui/file_picker_ios.h new file mode 100644 index 00000000..fb67151d --- /dev/null +++ b/UnleashedRecomp/ui/file_picker_ios.h @@ -0,0 +1,11 @@ +#pragma once + +#include +#include +#include + +namespace ios +{ + bool PickPaths(bool folderMode, std::list& outPaths, std::string& outError); + void ReleaseAllAccess(); +} diff --git a/UnleashedRecomp/ui/file_picker_ios.mm b/UnleashedRecomp/ui/file_picker_ios.mm index e69de29b..edfb495c 100644 --- a/UnleashedRecomp/ui/file_picker_ios.mm +++ b/UnleashedRecomp/ui/file_picker_ios.mm @@ -0,0 +1,267 @@ +#include "file_picker_ios.h" + +#import +#import +#import +#include + + +@interface FilePickerDelegate : NSObject +@property(nonatomic, copy) void (^completionHandler)(NSArray *urls, NSError *error, BOOL cancelled); +@end + +@implementation FilePickerDelegate +- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentsAtURLs:(NSArray *)urls { + if (self.completionHandler) { + self.completionHandler(urls, nil, NO); + } +} +- (void)documentPickerWasCancelled:(UIDocumentPickerViewController *)controller { + if (self.completionHandler) { + self.completionHandler(@[], nil, YES); + } +} +@end + +static UIWindow* GetActiveWindow() +{ + UIApplication* app = UIApplication.sharedApplication; + + if (@available(iOS 13.0, *)) + { + for (UIScene* scene in app.connectedScenes) + { + if (![scene isKindOfClass:[UIWindowScene class]]) + continue; + + UIWindowScene* windowScene = (UIWindowScene*)scene; + if (windowScene.activationState != UISceneActivationStateForegroundActive) + continue; + + for (UIWindow* window in windowScene.windows) + { + if (window.isKeyWindow) + return window; + } + + if (windowScene.windows.count > 0) + return windowScene.windows.firstObject; + } + } + + if (app.windows.count > 0) + return app.windows.firstObject; + + return nil; +} + +namespace ios +{ + static std::atomic s_pickerInFlight = false; + static NSMutableArray* s_activeScopedURLs = nil; + + static void ClearActiveScopedURLs() + { + if (s_activeScopedURLs == nil) + return; + + NSArray* urlsToStop = [NSArray arrayWithArray:s_activeScopedURLs]; + for (id scopedObject in urlsToStop) + { + if (![scopedObject isKindOfClass:[NSURL class]]) + continue; + + NSURL* scopedURL = (NSURL*)scopedObject; + [scopedURL stopAccessingSecurityScopedResource]; + } + + [s_activeScopedURLs removeAllObjects]; + } + + static bool IsTrackingScopedURL(NSURL* url) + { + if (url == nil || s_activeScopedURLs == nil) + return false; + + for (id scopedObject in s_activeScopedURLs) + { + if (![scopedObject isKindOfClass:[NSURL class]]) + continue; + + NSURL* scopedURL = (NSURL*)scopedObject; + if ([scopedURL isEqual:url]) + return true; + } + + return false; + } + + bool PickPaths(bool folderMode, std::list& outPaths, std::string& outError) + { + @autoreleasepool + { + bool expected = false; + if (!s_pickerInFlight.compare_exchange_strong(expected, true)) + { + outError = "A file picker request is already active."; + return false; + } + + __block BOOL finished = NO; + __block BOOL cancelled = NO; + __block NSError* pickerError = nil; + __block NSArray* selectedURLs = nil; + dispatch_semaphore_t completionSemaphore = dispatch_semaphore_create(0); + + if (s_activeScopedURLs == nil) + { + s_activeScopedURLs = [[NSMutableArray alloc] init]; + } + + auto presentPicker = ^{ + UIWindow* window = GetActiveWindow(); + UIViewController* presenter = window.rootViewController; + + while (presenter != nil && presenter.presentedViewController != nil) + presenter = presenter.presentedViewController; + + if (presenter == nil) + { + pickerError = [NSError errorWithDomain:@"UnleashedRecomp" code:1 userInfo:@{NSLocalizedDescriptionKey: @"No active presenter for file picker."}]; + finished = YES; + dispatch_semaphore_signal(completionSemaphore); + return; + } + UIDocumentPickerViewController* picker = nil; + if (@available(iOS 14.0, *)) { + NSArray *types = folderMode ? @[UTTypeFolder] : @[UTTypeData]; + picker = [[UIDocumentPickerViewController alloc] initForOpeningContentTypes:types asCopy:NO]; + } else { + NSArray* documentTypes = folderMode ? @[@"public.folder"] : @[@"public.data"]; + picker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:documentTypes inMode:UIDocumentPickerModeOpen]; + } + picker.allowsMultipleSelection = YES; + + FilePickerDelegate* delegate = [FilePickerDelegate new]; + delegate.completionHandler = ^(NSArray* urls, NSError* error, BOOL wasCancelled) + { + selectedURLs = urls != nil ? [urls copy] : @[]; + pickerError = error; + cancelled = wasCancelled; + finished = YES; + dispatch_semaphore_signal(completionSemaphore); + }; + + picker.delegate = delegate; + objc_setAssociatedObject(picker, @selector(PickPaths), delegate, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + [presenter presentViewController:picker animated:YES completion:nil]; + }; + + if ([NSThread isMainThread]) + { + presentPicker(); + while (!finished) + { + [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.01]]; + } + } + else + { + dispatch_sync(dispatch_get_main_queue(), presentPicker); + dispatch_semaphore_wait(completionSemaphore, DISPATCH_TIME_FOREVER); + } + + if (pickerError != nil) + { + outError = [[pickerError localizedDescription] UTF8String]; + s_pickerInFlight.store(false); + return false; + } + + if (cancelled) + { + s_pickerInFlight.store(false); + return true; + } + + if (selectedURLs != nil && ![selectedURLs isKindOfClass:[NSArray class]]) + { + outError = "Document picker returned invalid selection data."; + s_pickerInFlight.store(false); + return false; + } + + bool foundValidPath = false; + NSArray* selectedURLArray = selectedURLs != nil ? selectedURLs : @[]; + for (id pickedObject in selectedURLArray) + { + if (![pickedObject isKindOfClass:[NSURL class]]) + continue; + + NSURL* url = (NSURL*)pickedObject; + if (url == nil) + continue; + + BOOL startedScopedAccess = [url startAccessingSecurityScopedResource]; + if (startedScopedAccess && !IsTrackingScopedURL(url)) + [s_activeScopedURLs addObject:url]; + + NSURL* fileURL = url; + if (![fileURL isFileURL]) + { + NSURL* filePathURL = [fileURL filePathURL]; + if (filePathURL != nil) + fileURL = filePathURL; + } + + NSString* path = fileURL.path; + if ((path == nil || path.length == 0) && url.standardizedURL != nil) + path = url.standardizedURL.path; + + if ((path == nil || path.length == 0) && url.absoluteString != nil) + { + NSURL* absoluteURL = [NSURL URLWithString:url.absoluteString]; + if (absoluteURL != nil) + path = absoluteURL.path; + } + + if (path != nil && path.length > 0) + { + outPaths.emplace_back(std::filesystem::path([path UTF8String])); + foundValidPath = true; + } + } + + if (!foundValidPath && selectedURLArray.count > 0) + { + outError = "Document picker returned items without usable local file paths. Try selecting a local file under 'On My iPhone' and ensure the file is fully downloaded."; + s_pickerInFlight.store(false); + return false; + } + + if (!foundValidPath && selectedURLArray.count == 0) + { + s_pickerInFlight.store(false); + return true; + } + + if (outPaths.empty()) + { + outError = "No readable file paths were returned by the picker."; + s_pickerInFlight.store(false); + return false; + } + + s_pickerInFlight.store(false); + return true; + } + } + + void ReleaseAllAccess() + { + @autoreleasepool + { + ClearActiveScopedURLs(); + } + } +} diff --git a/UnleashedRecomp/ui/installer_wizard.cpp b/UnleashedRecomp/ui/installer_wizard.cpp index a9d060ed..8a97524a 100644 --- a/UnleashedRecomp/ui/installer_wizard.cpp +++ b/UnleashedRecomp/ui/installer_wizard.cpp @@ -1,6 +1,8 @@ #include "installer_wizard.h" +#ifndef UNLEASHED_RECOMP_IOS #include +#endif #include #include @@ -9,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -17,6 +20,14 @@ #include #include +#if defined(__APPLE__) +#include +#endif + +#if defined(__APPLE__) && TARGET_OS_IPHONE +#include +#endif + #include #include #include @@ -29,6 +40,16 @@ #include #include #include +#if defined(UNLEASHED_RECOMP_IOS_INSTALLER_PNGS) +#include +#include +#include +#include +#include +#include +#include +#include +#endif #include // One Shot Animations Constants @@ -167,6 +188,21 @@ static bool g_currentCursorBack = false; static std::vector> g_currentCursorRects; static std::string g_creditsStr; +static int FindCursorRectIndexAtPoint(const ImVec2 &point) +{ + for (size_t i = 0; i < g_currentCursorRects.size(); i++) + { + const auto ¤tRect = g_currentCursorRects[i]; + if (point.x >= currentRect.first.x && point.x <= currentRect.second.x + && point.y >= currentRect.first.y && point.y <= currentRect.second.y) + { + return int(i); + } + } + + return -1; +} + class SDLEventListenerForInstaller : public SDLEventListener { public: @@ -290,6 +326,27 @@ class SDLEventListenerForInstaller : public SDLEventListener break; } + + case SDL_FINGERDOWN: + case SDL_FINGERMOTION: + { + ImVec2 touchPos = { + event->tfinger.x * ImGui::GetIO().DisplaySize.x, + event->tfinger.y * ImGui::GetIO().DisplaySize.y, + }; + + newCursorIndex = FindCursorRectIndexAtPoint(touchPos); + if (newCursorIndex < 0) + { + g_currentCursorIndex = -1; + } + else if (event->type == SDL_FINGERDOWN) + { + g_currentCursorAccepted = true; + } + + break; + } } if (tapDirection.x != 0.0f || tapDirection.y != 0.0f) @@ -418,12 +475,12 @@ static double ComputeMotionInstaller(double timeAppear, double timeDisappear, do return ComputeMotion(timeAppear, offset, total) * (1.0 - ComputeMotion(timeDisappear, ALL_ANIMATIONS_FULL_DURATION - offset - total, total)); } -static double ComputeMotionInstallerLoop(double timeAppear, double speed, double offset) +static double ComputeMotionInstallerLoop(double timeAppear, double speed, double offset) { return std::clamp(fmodf((ImGui::GetTime() - timeAppear) * speed, 1.0f + offset) - offset, 0.0, 1.0) / 1.0; } -static double ComputeHermiteMotionInstallerLoop(double timeAppear, double speed, double offset) +static double ComputeHermiteMotionInstallerLoop(double timeAppear, double speed, double offset) { return (cosf(M_PI * ComputeMotionInstallerLoop(timeAppear, speed, offset) + M_PI) + 1) / 2; } @@ -482,6 +539,23 @@ static void DrawLeftImage() double imageAlpha = ComputeMotionInstaller(g_appearTime, g_disappearTime, IMAGE_ANIMATION_TIME, IMAGE_ANIMATION_DURATION); int a = std::lround(255.0 * imageAlpha); GuestTexture *guestTexture = g_installTextures[installTextureIndex % g_installTextures.size()].get(); + if (guestTexture == nullptr) + { + for (const auto &texture : g_installTextures) + { + if (texture) + { + guestTexture = texture.get(); + break; + } + } + } + + if (guestTexture == nullptr) + { + return; + } + auto &res = ImGui::GetIO().DisplaySize; auto drawList = ImGui::GetBackgroundDrawList(); ImVec2 min = { g_aspectRatioOffsetX + Scale(IMAGE_X), g_aspectRatioOffsetY + Scale(IMAGE_Y) }; @@ -505,7 +579,7 @@ static void DrawHeaderIconsForInstallPhase(double iconsPosX, double iconsPosY, d // Calculate rotated corners float cosCurrentAngle = cosf(rotation); float sinCurrentAngle = sinf(rotation); - ImVec2 corners[4] = + ImVec2 corners[4] = { ImRotate(ImVec2(arrowCircleMin.x - center.x, arrowCircleMin.y - center.y), cosCurrentAngle, sinCurrentAngle), ImRotate(ImVec2(arrowCircleMax.x - center.x, arrowCircleMin.y - center.y), cosCurrentAngle, sinCurrentAngle), @@ -533,7 +607,7 @@ static void DrawHeaderIconsForInstallPhase(double iconsPosX, double iconsPosY, d // Calculate linear fade-out from high point time - ({PULSE_ANIMATION_LOOP_FADE_HIGH_POINT}, 1) - to loop end - (1, 0) -. float m = -1 / (1 - PULSE_ANIMATION_LOOP_FADE_HIGH_POINT); float b = m * (-PULSE_ANIMATION_LOOP_FADE_HIGH_POINT) + 1; - + pulseFade = m * pulseMotion + b; } @@ -678,11 +752,11 @@ static void DrawScanlineBars() } static void DrawContainer(ImVec2 min, ImVec2 max, bool isTextArea) -{ +{ auto &res = ImGui::GetIO().DisplaySize; auto drawList = ImGui::GetBackgroundDrawList(); - double gridAlpha = ComputeMotionInstaller(g_appearTime, g_disappearTime, + double gridAlpha = ComputeMotionInstaller(g_appearTime, g_disappearTime, isTextArea ? CONTAINER_INNER_TIME : CONTAINER_OUTER_TIME, isTextArea ? CONTAINER_INNER_DURATION : CONTAINER_OUTER_DURATION ); @@ -699,7 +773,7 @@ static void DrawContainer(ImVec2 min, ImVec2 max, bool isTextArea) SetAdditive(false); SetShaderModifier(IMGUI_SHADER_MODIFIER_NONE); - if (isTextArea) + if (isTextArea) { drawList->AddRectFilled(min, max, gridOverlayColor); } @@ -835,7 +909,7 @@ static void DrawDescriptionContainer() ImVec2 imageRegionMin = { containerLeft, textY + descTextSize.y }; ImVec2 imageRegionMax = { containerRight, containerBottom - (marqueeTextMax.y - marqueeTextMin.y) }; - ImVec2 imageMin = + ImVec2 imageMin = { /* X */ imageRegionMin.x + ((imageRegionMax.x - imageRegionMin.x) / 2) - (imageScale / 2) - (hedgeDevTextSize.x / 2) - hedgeDevTextMarginX, /* Y */ imageRegionMin.y + ((imageRegionMax.y - imageRegionMin.y) / 2) - (imageScale / 2) - imageMarginY @@ -1083,6 +1157,7 @@ static void DrawProgressBar(float progressRatio) drawList->AddRectFilledMultiColor(sliderMin, sliderMax, sliderColor0, sliderColor0, sliderColor1, sliderColor1); } +#ifndef UNLEASHED_RECOMP_IOS static bool ConvertPathSet(const nfdpathset_t *pathSet, std::list &filePaths) { nfdpathsetsize_t pathSetCount = 0; @@ -1106,9 +1181,19 @@ static bool ConvertPathSet(const nfdpathset_t *pathSet, std::list &paths) std::list failedPaths; if (g_currentPage == WizardPage::SelectGameAndUpdate) { +#if defined(__APPLE__) && TARGET_OS_IPHONE + auto toLowerString = [](std::string value) + { + std::transform(value.begin(), value.end(), value.begin(), [](unsigned char c) { return char(std::tolower(c)); }); + return value; + }; + + for (const std::filesystem::path &path : paths) + { + std::error_code ec; + bool isDirectory = std::filesystem::is_directory(path, ec); + std::string extension = toLowerString(path.extension().string()); + bool looksLikeGameSource = (extension == ".iso") || isDirectory; + + if (looksLikeGameSource || g_gameSourcePath.empty()) + { + g_gameSourcePath = path; + } + else + { + g_updateSourcePath = path; + } + } +#else for (const std::filesystem::path &path : paths) { if (Installer::parseGame(path)) @@ -1200,6 +1313,7 @@ static bool ParseSourcePaths(std::list &paths) isFailedPathsOverLimit = true; } } +#endif } else if(g_currentPage == WizardPage::SelectDLC) { @@ -1438,9 +1552,17 @@ static void DrawNavigationButton() XexPatcher::Result patcherResult; if (g_currentPage == WizardPage::SelectGameAndUpdate && (patcherResult = Installer::checkGameUpdateCompatibility(g_gameSourcePath, g_updateSourcePath), patcherResult != XexPatcher::Result::Success)) { + std::u8string gameNameU8 = g_gameSourcePath.filename().u8string(); + std::u8string updateNameU8 = g_updateSourcePath.filename().u8string(); + os::logger::Log(fmt::format( + "Installer compatibility check failed (result={}) game='{}' update='{}'", + int(patcherResult), + std::string(gameNameU8.begin(), gameNameU8.end()), + std::string(updateNameU8.begin(), updateNameU8.end()))); g_currentMessagePrompt = Localise("Installer_Message_IncompatibleGameData"); g_currentMessagePromptConfirmation = false; } + else if (g_currentPage == WizardPage::SelectDLC) { // Check if any of the DLC was not specified. @@ -1512,7 +1634,7 @@ static void CheckCancelAction() { return; } - + g_currentCursorBack = false; if (g_currentPage == WizardPage::InstallSucceeded) @@ -1750,6 +1872,23 @@ void InstallerWizard::Init() g_seuratFont = ImFontAtlasSnapshot::GetFont("FOT-SeuratPro-M.otf"); g_dfsogeistdFont = ImFontAtlasSnapshot::GetFont("DFSoGeiStd-W7.otf"); g_newRodinFont = ImFontAtlasSnapshot::GetFont("FOT-NewRodinPro-DB.otf"); +#if defined(UNLEASHED_RECOMP_IOS_INSTALLER_PNGS) +#if defined(UNLEASHED_RECOMP_IOS_LOW_MEM_INSTALLER) + g_installTextures[0] = LOAD_ZSTD_TEXTURE(g_install_001_png); +#else + g_installTextures[0] = LOAD_ZSTD_TEXTURE(g_install_001_png); + g_installTextures[1] = LOAD_ZSTD_TEXTURE(g_install_002_png); + g_installTextures[2] = LOAD_ZSTD_TEXTURE(g_install_003_png); + g_installTextures[3] = LOAD_ZSTD_TEXTURE(g_install_004_png); + g_installTextures[4] = LOAD_ZSTD_TEXTURE(g_install_005_png); + g_installTextures[5] = LOAD_ZSTD_TEXTURE(g_install_006_png); + g_installTextures[6] = LOAD_ZSTD_TEXTURE(g_install_007_png); + g_installTextures[7] = LOAD_ZSTD_TEXTURE(g_install_008_png); +#endif +#else +#if defined(UNLEASHED_RECOMP_IOS_LOW_MEM_INSTALLER) + g_installTextures[0] = LOAD_ZSTD_TEXTURE(g_install_001); +#else g_installTextures[0] = LOAD_ZSTD_TEXTURE(g_install_001); g_installTextures[1] = LOAD_ZSTD_TEXTURE(g_install_002); g_installTextures[2] = LOAD_ZSTD_TEXTURE(g_install_003); @@ -1758,6 +1897,8 @@ void InstallerWizard::Init() g_installTextures[5] = LOAD_ZSTD_TEXTURE(g_install_006); g_installTextures[6] = LOAD_ZSTD_TEXTURE(g_install_007); g_installTextures[7] = LOAD_ZSTD_TEXTURE(g_install_008); +#endif +#endif g_milesElectricIcon = LOAD_ZSTD_TEXTURE(g_miles_electric_icon); g_arrowCircle = LOAD_ZSTD_TEXTURE(g_arrow_circle); g_pulseInstall = LOAD_ZSTD_TEXTURE(g_pulse_install); @@ -1825,11 +1966,15 @@ void InstallerWizard::Shutdown() g_currentPickerThread.reset(); } +#if defined(__APPLE__) && TARGET_OS_IPHONE + ios::ReleaseAllAccess(); +#endif + // Erase the sources. g_installerSources.game.reset(); g_installerSources.update.reset(); g_installerSources.dlc.clear(); - + // Make sure the GPU is not currently active before deleting these textures. Video::WaitForGPU(); @@ -1846,10 +1991,15 @@ void InstallerWizard::Shutdown() bool InstallerWizard::Run(std::filesystem::path installPath, bool skipGame) { + os::logger::Log(fmt::format("InstallerWizard::Run start - installPath: {}, skipGame: {}", (const char*)installPath.u8string().c_str(), skipGame)); g_installPath = installPath; EmbeddedPlayer::Init(); + os::logger::Log("InstallerWizard::Run - EmbeddedPlayer::Init completed"); +#ifndef UNLEASHED_RECOMP_IOS NFD_Init(); + os::logger::Log("InstallerWizard::Run - NFD_Init completed"); +#endif // Guarantee one controller is initialized. We'll rely on SDL's event loop to get the controller events. XAMINPUT_STATE inputState; @@ -1868,19 +2018,35 @@ bool InstallerWizard::Run(std::filesystem::path installPath, bool skipGame) GameWindow::SetFullscreenCursorVisibility(true); s_isVisible = true; + os::logger::Log("InstallerWizard::Run - entering wizard loop"); + + bool firstFrame = true; while (s_isVisible) { + if (firstFrame) + os::logger::Log("InstallerWizard::Run - first frame: WaitOnSwapChain begin"); Video::WaitOnSwapChain(); + if (firstFrame) + os::logger::Log("InstallerWizard::Run - first frame: WaitOnSwapChain end"); ProcessMusic(); + if (firstFrame) + os::logger::Log("InstallerWizard::Run - first frame: ProcessMusic end"); SDL_PumpEvents(); SDL_FlushEvents(SDL_FIRSTEVENT, SDL_LASTEVENT); GameWindow::Update(); Video::Present(); + if (firstFrame) + { + os::logger::Log("InstallerWizard::Run - first frame: Present end"); + firstFrame = false; + } } GameWindow::SetFullscreenCursorVisibility(false); +#ifndef UNLEASHED_RECOMP_IOS NFD_Quit(); +#endif InstallerWizard::Shutdown(); EmbeddedPlayer::Shutdown(); From b03baccb56dab728db6c7b97b20281dcbfdb7f4f Mon Sep 17 00:00:00 2001 From: MarkosTh09 Date: Sat, 26 Sep 2026 17:17:01 +0300 Subject: [PATCH 11/13] pause rendering when the app is suspended --- UnleashedRecomp/gpu/video.cpp | 44 ++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/UnleashedRecomp/gpu/video.cpp b/UnleashedRecomp/gpu/video.cpp index 50c1a421..147ffa07 100644 --- a/UnleashedRecomp/gpu/video.cpp +++ b/UnleashedRecomp/gpu/video.cpp @@ -339,6 +339,10 @@ static std::unique_ptr g_commandFences[NUM_FRAMES]; static std::unique_ptr g_queryPools[NUM_FRAMES]; static bool g_commandListStates[NUM_FRAMES]; +static Mutex g_waitForGPUMutex; +static std::unique_ptr g_waitForGPUCommandList; +static std::unique_ptr g_waitForGPUCommandFence; + static Mutex g_copyMutex; static std::unique_ptr g_copyQueue; static std::unique_ptr g_copyCommandList; @@ -768,6 +772,8 @@ static std::thread::id g_presentThreadId = std::this_thread::get_id(); static std::atomic g_readyForCommands; static std::atomic g_appSuspended = false; +static const std::thread::id g_eventThreadId = std::this_thread::get_id(); + PPC_FUNC_IMPL(__imp__sub_824ECA00); PPC_FUNC(sub_824ECA00) { @@ -1900,6 +1906,9 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry) for (auto& commandFence : g_commandFences) commandFence = g_device->createCommandFence(); + g_waitForGPUCommandList = g_queue->createCommandList(); + g_waitForGPUCommandFence = g_device->createCommandFence(); + for (auto& queryPool : g_queryPools) queryPool = g_device->createQueryPool(NUM_QUERIES); @@ -2140,6 +2149,7 @@ static uint32_t g_waitForGPUCount = 0; void Video::WaitForGPU() { + std::lock_guard lock(g_waitForGPUMutex); g_waitForGPUCount++; // Wait for all queued frames to finish. @@ -2153,10 +2163,10 @@ void Video::WaitForGPU() } // Execute an empty command list and wait for it to end to guarantee that any remaining presentation has finished. - g_commandLists[0]->begin(); - g_commandLists[0]->end(); - g_queue->executeCommandLists(g_commandLists[0].get(), g_commandFences[0].get()); - g_queue->waitForCommandFence(g_commandFences[0].get()); + g_waitForGPUCommandList->begin(); + g_waitForGPUCommandList->end(); + g_queue->executeCommandLists(g_waitForGPUCommandList.get(), g_waitForGPUCommandFence.get()); + g_queue->waitForCommandFence(g_waitForGPUCommandFence.get()); } static uint32_t CreateDevice(uint32_t a1, uint32_t a2, uint32_t a3, uint32_t a4, uint32_t a5, be* a6) @@ -2858,21 +2868,26 @@ static bool g_pendingWaitOnSwapChain = true; void Video::HandleApplicationBackgroundState(bool isBackgrounded) { - if (isBackgrounded) + if (g_appSuspended.exchange(isBackgrounded, std::memory_order_acq_rel) != isBackgrounded) + LOGFN("Application {} the background.", isBackgrounded ? "entered" : "left"); +} + +// iOS doesn't allow GPU work in the background, so stop presenting new frames until the app is back. +static void WaitWhileApplicationSuspended() +{ + while (g_appSuspended.load(std::memory_order_acquire)) { - g_appSuspended.store(true, std::memory_order_release); - g_readyForCommands.store(false, std::memory_order_release); - g_pendingWaitOnSwapChain = false; - g_swapChainValid = false; - g_dirtyStates.viewport = true; + if (std::this_thread::get_id() == g_eventThreadId) + { + SDL_PumpEvents(); + SDL_FlushEvents(SDL_FIRSTEVENT, SDL_LASTEVENT); + } - Video::WaitForGPU(); - } else { - g_appSuspended.store(false, std::memory_order_release); - g_appSuspended.notify_all(); + std::this_thread::sleep_for(std::chrono::milliseconds(16)); } } + void Video::WaitOnSwapChain() { if (g_pendingWaitOnSwapChain) @@ -2893,6 +2908,7 @@ static std::atomic g_executedCommandList; void Video::Present() { + WaitWhileApplicationSuspended(); g_readyForCommands = false; RenderCommand cmd; From 7a9fc2ca9c8e026ade509efb79caa587d2c5e519 Mon Sep 17 00:00:00 2001 From: MarkosTh09 Date: Sun, 27 Sep 2026 09:59:26 +0300 Subject: [PATCH 12/13] add option to enable/disable the Metal Performance HUD --- UnleashedRecomp/gpu/video.cpp | 11 +++++ UnleashedRecomp/locale/config_locale.cpp | 11 +++++ UnleashedRecomp/ui/options_menu.cpp | 62 ++++++++++++++---------- UnleashedRecomp/user/config_def.h | 3 ++ 4 files changed, 62 insertions(+), 25 deletions(-) diff --git a/UnleashedRecomp/gpu/video.cpp b/UnleashedRecomp/gpu/video.cpp index 147ffa07..3f061758 100644 --- a/UnleashedRecomp/gpu/video.cpp +++ b/UnleashedRecomp/gpu/video.cpp @@ -1720,6 +1720,13 @@ static void ApplyLowEndDefaults() } } +#ifdef __APPLE__ +static void ApplyMetalHUDConfig() +{ + setenv("MTL_HUD_ENABLED", Config::ShowMetalHUD ? "1" : "0", 1); +} +#endif + bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry) { for (uint32_t i = 0; i < 16; i++) @@ -1737,6 +1744,10 @@ bool Video::CreateHostDevice(const char *sdlVideoDriver, bool graphicsApiRetry) g_backend = Config::GraphicsAPI == EGraphicsAPI::Vulkan ? Backend::VULKAN : Backend::METAL; #endif +#ifdef __APPLE__ + ApplyMetalHUDConfig(); +#endif + // Attempt to create the possible backends using a vector of function pointers. Whichever succeeds first will be the chosen API. using RenderInterfaceFunction = std::unique_ptr(void); std::vector interfaceFunctions; diff --git a/UnleashedRecomp/locale/config_locale.cpp b/UnleashedRecomp/locale/config_locale.cpp index 1242e4eb..636024ad 100644 --- a/UnleashedRecomp/locale/config_locale.cpp +++ b/UnleashedRecomp/locale/config_locale.cpp @@ -1012,3 +1012,14 @@ CONFIG_DEFINE_ENUM_LOCALE(EUIAlignmentMode) } } }; + +// TODO: Add localization for the following languages: Japanese, French +CONFIG_DEFINE_LOCALE(ShowMetalHUD) +{ + { ELanguage::English, { "Show Metal HUD", "Toggle the Metal Performance HUD." } }, + // { ELanguage::Japanese, { "", "" } }, + { ELanguage::German, { "Zeige Metal HUD", "Schalte das Metal Performance HUD an oder aus." } }, + // { ELanguage::French, { "", "" } }, + { ELanguage::Spanish, { "Mostrar Metal HUD", "Activa/desactiva el Metal Performance HUD." } }, + { ELanguage::Italian, { "Mostra Metal HUD", "Attiva/disattiva il Metal Performance HUD." } } +}; diff --git a/UnleashedRecomp/ui/options_menu.cpp b/UnleashedRecomp/ui/options_menu.cpp index 33ac5c69..10daefeb 100644 --- a/UnleashedRecomp/ui/options_menu.cpp +++ b/UnleashedRecomp/ui/options_menu.cpp @@ -100,6 +100,9 @@ static bool g_canReset = false; static bool g_isLanguageOptionChanged = false; static bool g_titleAnimBegin = true; static EChannelConfiguration g_currentChannelConfig; +#ifdef __APPLE__ +static bool g_currentShowMetalHUD; +#endif static double g_appearTime = 0.0; @@ -199,7 +202,7 @@ static void DrawTitle() rectX += rectSize + (rectSize * 0.25f); isRectFinalAdjustment = true; } - + isRectVisible = !isRectVisible; rectBlinkMotionOffset += squareBlinkDuration; } @@ -331,18 +334,18 @@ static void DrawScanlineBars() drawList->AddRectFilledMultiColor( { 0.0f, y - Scale(2.0f) }, - { res.x, y }, + { res.x, y }, + top ? TOP_COLOR0 : BOTTOM_COLOR1, top ? TOP_COLOR0 : BOTTOM_COLOR1, - top ? TOP_COLOR0 : BOTTOM_COLOR1, top ? TOP_COLOR1 : BOTTOM_COLOR0, top ? TOP_COLOR1 : BOTTOM_COLOR0); drawList->AddRectFilledMultiColor( - { 0.0f, y + Scale(1.0f) }, - { res.x, y + Scale(3.0f) }, - top ? BOTTOM_COLOR0 : TOP_COLOR1, + { 0.0f, y + Scale(1.0f) }, + { res.x, y + Scale(3.0f) }, + top ? BOTTOM_COLOR0 : TOP_COLOR1, top ? BOTTOM_COLOR0 : TOP_COLOR1, - top ? BOTTOM_COLOR1 : TOP_COLOR0, + top ? BOTTOM_COLOR1 : TOP_COLOR0, top ? BOTTOM_COLOR1 : TOP_COLOR0); constexpr uint32_t CENTER_COLOR = IM_COL32(115, 178, 104, 255); @@ -528,7 +531,7 @@ static bool DrawCategories() float animWidth = g_categoryAnimMax.x - g_categoryAnimMin.x; float width = max.x - min.x; float height = max.y - min.y; - + animWidth = Lerp(animWidth, width, 1.0f - exp(-64.0f * ImGui::GetIO().DeltaTime)); auto center = Lerp(min, max, 0.5f); @@ -549,14 +552,14 @@ static bool DrawCategories() g_categoryAnimMin, g_categoryAnimMax, IM_COL32(0, 130, 0, 223 * motion), - IM_COL32(0, 130, 0, 178 * motion), + IM_COL32(0, 130, 0, 178 * motion), IM_COL32(0, 130, 0, 223 * motion), IM_COL32(0, 130, 0, 178 * motion) ); drawList->AddRectFilledMultiColor ( - g_categoryAnimMin, + g_categoryAnimMin, g_categoryAnimMax, IM_COL32(0, 0, 0, 13 * motion), IM_COL32(0, 0, 0, 0), @@ -566,11 +569,11 @@ static bool DrawCategories() drawList->AddRectFilledMultiColor ( - g_categoryAnimMin, + g_categoryAnimMin, g_categoryAnimMax, IM_COL32(0, 130, 0, 13 * motion), IM_COL32(0, 130, 0, 111 * motion), - IM_COL32(0, 130, 0, 0), + IM_COL32(0, 130, 0, 0), IM_COL32(0, 130, 0, 55 * motion) ); @@ -588,7 +591,7 @@ static bool DrawCategories() { auto& pos = textPositions[i]; uint8_t alpha = (i == g_categoryIndex ? 235 : 128) * motion; - + SetOrigin({ pos.x, pos.y }); SetGradient ( @@ -1102,7 +1105,7 @@ static void DrawConfigOption(int32_t rowIndex, float yOffset, ConfigDef* conf bool isConfigValueInBounds = config->Value >= valueMin && config->Value <= valueMax; - if ((increment || decrement) && isConfigValueInBounds && isPlayIncrementSound) + if ((increment || decrement) && isConfigValueInBounds && isPlayIncrementSound) { g_lastIncrementSoundTime = time; Game_PlaySound("sys_actstg_twn_speechbutton"); @@ -1282,6 +1285,7 @@ static void DrawConfigOptions() DrawConfigOption(rowCount++, yOffset, &Config::XboxColorCorrection, true); DrawConfigOption(rowCount++, yOffset, &Config::CutsceneAspectRatio, true); DrawConfigOption(rowCount++, yOffset, &Config::UIAlignmentMode, true); + DrawConfigOption(rowCount++, yOffset, &Config::ShowMetalHUD, true); break; } @@ -1533,7 +1537,7 @@ static void DrawInfoPanel(ImVec2 infoMin, ImVec2 infoMax) clipRectMax.x += annotationFontSize; textY += annotationFontSize; - + // Dirty hack to disallow clipping on Japanese text // whilst allowing annotations to go over the border lineWidth -= annotationFontSize; @@ -1554,7 +1558,7 @@ static void DrawInfoPanel(ImVec2 infoMin, ImVec2 infoMax) if (scrollMax > 0.0f) { auto vert = -g_rightStickY; - + if (fabs(vert) > 0.25f) { isManualScrolling = true; @@ -1567,21 +1571,21 @@ static void DrawInfoPanel(ImVec2 infoMin, ImVec2 infoMax) scrollTimer = 0.0f; scrollDirection = vert > 0.0f ? 1.0f : -1.0f; } - + if (!isManualScrolling) { if (!isScrolling) { scrollTimer += App::s_deltaTime; - + if (scrollTimer >= INFO_TEXT_MARQUEE_DELAY) isScrolling = true; } - + if (isScrolling) { scrollOffset += scrollSpeed * scrollDirection * App::s_deltaTime; - + if (scrollOffset >= scrollMax) { isScrolling = false; @@ -1598,7 +1602,7 @@ static void DrawInfoPanel(ImVec2 infoMin, ImVec2 infoMax) } } } - + scrollOffset = std::clamp(scrollOffset, 0.0f, scrollMax); } else @@ -1670,7 +1674,7 @@ static bool DrawMilesElectric() { if (g_isClosing) SetOptionsMenuVisible(false); - + return true; } @@ -1789,7 +1793,12 @@ void OptionsMenu::Draw() DrawFadeTransition(); } - s_isRestartRequired = Config::Language != App::s_language || Config::ChannelConfiguration != g_currentChannelConfig; + s_isRestartRequired = Config::Language != App::s_language + || Config::ChannelConfiguration != g_currentChannelConfig + #ifdef __APPLE__ + || Config::ShowMetalHUD != g_currentShowMetalHUD + #endif + ; } void OptionsMenu::Open(bool isPause, SWA::EMenuType pauseMenuType) @@ -1798,7 +1807,7 @@ void OptionsMenu::Open(bool isPause, SWA::EMenuType pauseMenuType) s_isPause = isPause; s_pauseMenuType = pauseMenuType; g_isStage = isPause && pauseMenuType != SWA::eMenuType_WorldMap; - + g_appearTime = ImGui::GetTime(); g_categoryIndex = 0; g_categoryAnimMin = { 0.0f, 0.0f }; @@ -1806,6 +1815,9 @@ void OptionsMenu::Open(bool isPause, SWA::EMenuType pauseMenuType) g_selectedItem = nullptr; g_titleAnimBegin = true; g_currentChannelConfig = Config::ChannelConfiguration; +#if defined(__APPLE__) + g_currentShowMetalHUD = Config::ShowMetalHUD; +#endif /* Store button state so we can track it later and prevent the first item being selected. */ @@ -1822,7 +1834,7 @@ void OptionsMenu::Open(bool isPause, SWA::EMenuType pauseMenuType) Button("Common_Select", 115.0f, EButtonIcon::A, &g_isControlsVisible), Button("Common_Back", 65.0f, EButtonIcon::B, &g_isControlsVisible) }; - + ButtonGuide::Open(buttons); ButtonGuide::SetSideMargins(250); diff --git a/UnleashedRecomp/user/config_def.h b/UnleashedRecomp/user/config_def.h index 2d0e0004..8b04693c 100644 --- a/UnleashedRecomp/user/config_def.h +++ b/UnleashedRecomp/user/config_def.h @@ -76,6 +76,9 @@ CONFIG_DEFINE_ENUM_LOCALISED("Video", EMotionBlur, MotionBlur, EMotionBlur::Orig CONFIG_DEFINE_LOCALISED("Video", bool, XboxColorCorrection, false); CONFIG_DEFINE_ENUM_LOCALISED("Video", ECutsceneAspectRatio, CutsceneAspectRatio, ECutsceneAspectRatio::Original); CONFIG_DEFINE_ENUM_LOCALISED("Video", EUIAlignmentMode, UIAlignmentMode, EUIAlignmentMode::Edge); +#if defined(__APPLE__) +CONFIG_DEFINE_LOCALISED("Video", bool, ShowMetalHUD, false); +#endif CONFIG_DEFINE_HIDDEN("Codes", bool, AllowCancellingUnleash, false); CONFIG_DEFINE_HIDDEN("Codes", bool, DisableAutoSaveWarning, false); From 87098a95e1b594a11b92a982bd66669e69609625 Mon Sep 17 00:00:00 2001 From: MarkosTh09 Date: Sun, 27 Sep 2026 10:18:47 +0300 Subject: [PATCH 13/13] add app icon --- UnleashedRecomp/CMakeLists.txt | 11 ++++++++++ UnleashedRecomp/res/ios/Assets.car | Bin 0 -> 2160280 bytes .../res/ios/iOSBundleInfo.plist.in | 20 +++++++++++++++--- 3 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 UnleashedRecomp/res/ios/Assets.car diff --git a/UnleashedRecomp/CMakeLists.txt b/UnleashedRecomp/CMakeLists.txt index a44a4a79..d8513438 100644 --- a/UnleashedRecomp/CMakeLists.txt +++ b/UnleashedRecomp/CMakeLists.txt @@ -373,6 +373,9 @@ elseif(APPLE) "${CMAKE_BINARY_DIR}/thirdparty/MoltenVK/MoltenVK.framework" ) + set(ASSETS_CAR_SRC "${CMAKE_CURRENT_SOURCE_DIR}/res/ios/Assets.car") + set(ASSETS_CAR_SRC_DST "${MVK_APP_DIR}/Assets.car") + add_custom_command( TARGET UnleashedRecomp POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "${MVK_FRAMEWORK_DST}" @@ -391,6 +394,14 @@ elseif(APPLE) COMMENT "Copying MoltenVK ICD" ) + add_custom_command( + TARGET UnleashedRecomp POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + "${ASSETS_CAR_SRC}" + "${ASSETS_CAR_SRC_DST}" + COMMENT "Copying Assets.car into iOS app bundle" + ) + add_dependencies(UnleashedRecomp MoltenVK) else() add_executable(UnleashedRecomp MACOSX_BUNDLE diff --git a/UnleashedRecomp/res/ios/Assets.car b/UnleashedRecomp/res/ios/Assets.car new file mode 100644 index 0000000000000000000000000000000000000000..40cc8cda7dfb55360a190fc4eb80602c8af8534f GIT binary patch literal 2160280 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

-T^>D=zzOtpja7y($ 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

Y8zGM%0L^DeZ~J_aM6Qze6V;6|aq= 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%0Apr?-a9pXb$|Fz!+e>R3>>&y!=BZ(T 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%0DfDK)<`Bj1Cg^TzIpHbnF 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%0DW=~tP93G(+aED-#c#TCS+JD)pafeK#L|{ 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%0D0t9j0Qt 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%0ADIZjmg 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

    4SiHt>tP0$W6dByXA*39HDVcD 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%0A|kLb_P&UrutoBr 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 N(Z6`J^^?D;F17N1V|#lyb-V*0Hp`R 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 KN?ltP|V5qmHz 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 CFBundleDisplayName Unleashed Recompiled - CFBundleIconName - AppIcon + CFBundleIcons + + CFBundlePrimaryIcon + + CFBundleIconName + AppIcon + + + CFBundleIcons~ipad + + CFBundlePrimaryIcon + + CFBundleIconName + AppIcon + + CADisableMinimumFrameDurationOnPhone - + UIFileSharingEnabled LSSupportsOpeningDocumentsInPlace