From bf34665a8faaa073370871745e6f0cdde40b4a06 Mon Sep 17 00:00:00 2001 From: squidbus <175574877+squidbus@users.noreply.github.com> Date: Thu, 23 Oct 2025 00:17:47 -0700 Subject: [PATCH] externals: Update and simplify MoltenVK setup. (#3747) --- .gitmodules | 18 ++---- CMakeLists.txt | 6 +- externals/CMakeLists.txt | 2 + externals/MoltenVK | 1 + externals/MoltenVK/CMakeLists.txt | 93 ------------------------------- externals/MoltenVK/MoltenVK | 1 - externals/MoltenVK/SPIRV-Cross | 1 - externals/MoltenVK/cereal | 1 - externals/vulkan-headers | 2 +- 9 files changed, 12 insertions(+), 113 deletions(-) create mode 160000 externals/MoltenVK delete mode 100644 externals/MoltenVK/CMakeLists.txt delete mode 160000 externals/MoltenVK/MoltenVK delete mode 160000 externals/MoltenVK/SPIRV-Cross delete mode 160000 externals/MoltenVK/cereal diff --git a/.gitmodules b/.gitmodules index 4dfd47d01..0deb96309 100644 --- a/.gitmodules +++ b/.gitmodules @@ -91,18 +91,6 @@ path = externals/libpng url = https://github.com/pnggroup/libpng shallow = true -[submodule "externals/MoltenVK/SPIRV-Cross"] - path = externals/MoltenVK/SPIRV-Cross - url = https://github.com/KhronosGroup/SPIRV-Cross - shallow = true -[submodule "externals/MoltenVK/MoltenVK"] - path = externals/MoltenVK/MoltenVK - url = https://github.com/KhronosGroup/MoltenVK - shallow = true -[submodule "externals/MoltenVK/cereal"] - path = externals/MoltenVK/cereal - url = https://github.com/USCiLab/cereal - shallow = true [submodule "externals/ext-libusb"] path = externals/ext-libusb url = https://github.com/shadps4-emu/ext-libusb.git @@ -117,4 +105,8 @@ path = externals/ext-wepoll url = https://github.com/shadps4-emu/ext-wepoll.git shallow = true - branch = dist + branch = dist +[submodule "externals/MoltenVK"] + path = externals/MoltenVK + url = https://github.com/KhronosGroup/MoltenVK.git + shallow = true diff --git a/CMakeLists.txt b/CMakeLists.txt index d2b2a7dc7..2b69754c8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -237,7 +237,7 @@ find_package(SDL3 3.1.2 CONFIG) find_package(stb MODULE) find_package(toml11 4.2.0 CONFIG) find_package(tsl-robin-map 1.3.0 CONFIG) -find_package(VulkanHeaders 1.4.324 CONFIG) +find_package(VulkanHeaders 1.4.329 CONFIG) find_package(VulkanMemoryAllocator 3.1.0 CONFIG) find_package(xbyak 7.07 CONFIG) find_package(xxHash 0.8.2 MODULE) @@ -1204,9 +1204,9 @@ if (APPLE) set(MVK_DST ${CMAKE_CURRENT_BINARY_DIR}) endif() - set(MVK_DYLIB_SRC ${CMAKE_CURRENT_BINARY_DIR}/externals/MoltenVK/libMoltenVK.dylib) + set(MVK_DYLIB_SRC ${CMAKE_CURRENT_BINARY_DIR}/externals/MoltenVK/MoltenVK/libMoltenVK.dylib) set(MVK_DYLIB_DST ${MVK_DST}/libMoltenVK.dylib) - set(MVK_ICD_SRC ${CMAKE_CURRENT_SOURCE_DIR}/externals/MoltenVK/MoltenVK/MoltenVK/icd/MoltenVK_icd.json) + set(MVK_ICD_SRC ${CMAKE_CURRENT_SOURCE_DIR}/externals/MoltenVK/MoltenVK/icd/MoltenVK_icd.json) set(MVK_ICD_DST ${MVK_DST}/MoltenVK_icd.json) add_custom_command( diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 686c05101..2df833426 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -231,6 +231,8 @@ if (APPLE) # MoltenVK if (NOT TARGET MoltenVK) + set(MVK_EXCLUDE_SPIRV_TOOLS ON) + set(MVK_USE_METAL_PRIVATE_API ON) add_subdirectory(MoltenVK) endif() diff --git a/externals/MoltenVK b/externals/MoltenVK new file mode 160000 index 000000000..b23d42534 --- /dev/null +++ b/externals/MoltenVK @@ -0,0 +1 @@ +Subproject commit b23d42534622cd9926fe526fec1b7f8795a2853c diff --git a/externals/MoltenVK/CMakeLists.txt b/externals/MoltenVK/CMakeLists.txt deleted file mode 100644 index 908c2847c..000000000 --- a/externals/MoltenVK/CMakeLists.txt +++ /dev/null @@ -1,93 +0,0 @@ -# SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project -# SPDX-License-Identifier: GPL-2.0-or-later - -# 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) -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}") - -# Prepare MoltenVK version -file(READ ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVK/MoltenVK/API/mvk_private_api.h MVK_PRIVATE_API) -string(REGEX MATCH "#define MVK_VERSION_MAJOR [0-9]+" MVK_VERSION_MAJOR_LINE "${MVK_PRIVATE_API}") -string(REGEX MATCH "[0-9]+" MVK_VERSION_MAJOR "${MVK_VERSION_MAJOR_LINE}") -string(REGEX MATCH "#define MVK_VERSION_MINOR [0-9]+" MVK_VERSION_MINOR_LINE "${MVK_PRIVATE_API}") -string(REGEX MATCH "[0-9]+" MVK_VERSION_MINOR "${MVK_VERSION_MINOR_LINE}") -string(REGEX MATCH "#define MVK_VERSION_PATCH [0-9]+" MVK_VERSION_PATCH_LINE "${MVK_PRIVATE_API}") -string(REGEX MATCH "[0-9]+" MVK_VERSION_PATCH "${MVK_VERSION_PATCH_LINE}") -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) -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) - -# cereal -option(SKIP_PORTABILITY_TEST "" ON) -option(BUILD_DOC "" OFF) -option(BUILD_SANDBOX "" OFF) -option(SKIP_PERFORMANCE_COMPARISON "" ON) -option(SPIRV_CROSS_SKIP_INSTALL "" ON) -add_subdirectory(cereal) - -# SPIRV-Cross -option(SPIRV_CROSS_CLI "" OFF) -option(SPIRV_CROSS_ENABLE_TESTS "" OFF) -option(SPIRV_CROSS_ENABLE_HLSL "" OFF) -option(SPIRV_CROSS_ENABLE_CPP "" OFF) -option(SPIRV_CROSS_SKIP_INSTALL "" ON) -add_subdirectory(SPIRV-Cross) - -# Common -set(MVK_COMMON_DIR ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/Common) -file(GLOB_RECURSE MVK_COMMON_SOURCES CONFIGURE_DEPENDS - ${MVK_COMMON_DIR}/*.cpp - ${MVK_COMMON_DIR}/*.m - ${MVK_COMMON_DIR}/*.mm) -set(MVK_COMMON_INCLUDES ${MVK_COMMON_DIR}) - -add_library(MoltenVKCommon STATIC ${MVK_COMMON_SOURCES}) -target_include_directories(MoltenVKCommon PUBLIC ${MVK_COMMON_INCLUDES}) -target_compile_options(MoltenVKCommon PRIVATE -w) - -# MoltenVKShaderConverter -set(MVK_SHADER_CONVERTER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVKShaderConverter) -file(GLOB_RECURSE MVK_SHADER_CONVERTER_SOURCES CONFIGURE_DEPENDS - ${MVK_SHADER_CONVERTER_DIR}/MoltenVKShaderConverter/*.cpp - ${MVK_SHADER_CONVERTER_DIR}/MoltenVKShaderConverter/*.m - ${MVK_SHADER_CONVERTER_DIR}/MoltenVKShaderConverter/*.mm) -set(MVK_SHADER_CONVERTER_INCLUDES ${MVK_SHADER_CONVERTER_DIR} ${MVK_SHADER_CONVERTER_DIR}/include) - -add_library(MoltenVKShaderConverter STATIC ${MVK_SHADER_CONVERTER_SOURCES}) -target_include_directories(MoltenVKShaderConverter PUBLIC ${MVK_SHADER_CONVERTER_INCLUDES}) -target_compile_options(MoltenVKShaderConverter PRIVATE -w) -target_link_libraries(MoltenVKShaderConverter PRIVATE spirv-cross-msl spirv-cross-reflect MoltenVKCommon) -target_compile_definitions(MoltenVKShaderConverter PRIVATE MVK_EXCLUDE_SPIRV_TOOLS=1) - -# MoltenVK -set(MVK_DIR ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVK) -file(GLOB_RECURSE MVK_SOURCES CONFIGURE_DEPENDS - ${MVK_DIR}/MoltenVK/*.cpp - ${MVK_DIR}/MoltenVK/*.m - ${MVK_DIR}/MoltenVK/*.mm) -file(GLOB MVK_SRC_INCLUDES LIST_DIRECTORIES ON ${MVK_DIR}/MoltenVK/*) -set(MVK_INCLUDES ${MVK_SRC_INCLUDES} ${MVK_GENERATED_INCLUDES} ${MVK_DIR}/include) - -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} - Vulkan::Headers cereal::cereal spirv-cross-msl MoltenVKCommon MoltenVKShaderConverter) -target_compile_definitions(MoltenVK PRIVATE MVK_FRAMEWORK_VERSION=${MVK_VERSION} MVK_USE_METAL_PRIVATE_API=1) diff --git a/externals/MoltenVK/MoltenVK b/externals/MoltenVK/MoltenVK deleted file mode 160000 index 3e935eb56..000000000 --- a/externals/MoltenVK/MoltenVK +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3e935eb5642813f0506518771528aee37539e601 diff --git a/externals/MoltenVK/SPIRV-Cross b/externals/MoltenVK/SPIRV-Cross deleted file mode 160000 index 7affe74d7..000000000 --- a/externals/MoltenVK/SPIRV-Cross +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7affe74d77f93a622bb5002789d5332d32e512ee diff --git a/externals/MoltenVK/cereal b/externals/MoltenVK/cereal deleted file mode 160000 index a56bad8bb..000000000 --- a/externals/MoltenVK/cereal +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a56bad8bbb770ee266e930c95d37fff2a5be7fea diff --git a/externals/vulkan-headers b/externals/vulkan-headers index a01329f30..33d7f5125 160000 --- a/externals/vulkan-headers +++ b/externals/vulkan-headers @@ -1 +1 @@ -Subproject commit a01329f307fa6067da824de9f587f292d761680b +Subproject commit 33d7f512583b8de44d1b6384aa1cf482f92e53e9