mirror of
https://github.com/shadps4-emu/shadPS4.git
synced 2025-12-09 05:08:43 +00:00
externals: Update and simplify MoltenVK setup. (#3747)
This commit is contained in:
18
.gitmodules
vendored
18
.gitmodules
vendored
@@ -91,18 +91,6 @@
|
|||||||
path = externals/libpng
|
path = externals/libpng
|
||||||
url = https://github.com/pnggroup/libpng
|
url = https://github.com/pnggroup/libpng
|
||||||
shallow = true
|
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"]
|
[submodule "externals/ext-libusb"]
|
||||||
path = externals/ext-libusb
|
path = externals/ext-libusb
|
||||||
url = https://github.com/shadps4-emu/ext-libusb.git
|
url = https://github.com/shadps4-emu/ext-libusb.git
|
||||||
@@ -117,4 +105,8 @@
|
|||||||
path = externals/ext-wepoll
|
path = externals/ext-wepoll
|
||||||
url = https://github.com/shadps4-emu/ext-wepoll.git
|
url = https://github.com/shadps4-emu/ext-wepoll.git
|
||||||
shallow = true
|
shallow = true
|
||||||
branch = dist
|
branch = dist
|
||||||
|
[submodule "externals/MoltenVK"]
|
||||||
|
path = externals/MoltenVK
|
||||||
|
url = https://github.com/KhronosGroup/MoltenVK.git
|
||||||
|
shallow = true
|
||||||
|
|||||||
@@ -237,7 +237,7 @@ find_package(SDL3 3.1.2 CONFIG)
|
|||||||
find_package(stb MODULE)
|
find_package(stb MODULE)
|
||||||
find_package(toml11 4.2.0 CONFIG)
|
find_package(toml11 4.2.0 CONFIG)
|
||||||
find_package(tsl-robin-map 1.3.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(VulkanMemoryAllocator 3.1.0 CONFIG)
|
||||||
find_package(xbyak 7.07 CONFIG)
|
find_package(xbyak 7.07 CONFIG)
|
||||||
find_package(xxHash 0.8.2 MODULE)
|
find_package(xxHash 0.8.2 MODULE)
|
||||||
@@ -1204,9 +1204,9 @@ if (APPLE)
|
|||||||
set(MVK_DST ${CMAKE_CURRENT_BINARY_DIR})
|
set(MVK_DST ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
endif()
|
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_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)
|
set(MVK_ICD_DST ${MVK_DST}/MoltenVK_icd.json)
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
|
|||||||
2
externals/CMakeLists.txt
vendored
2
externals/CMakeLists.txt
vendored
@@ -231,6 +231,8 @@ if (APPLE)
|
|||||||
|
|
||||||
# MoltenVK
|
# MoltenVK
|
||||||
if (NOT TARGET MoltenVK)
|
if (NOT TARGET MoltenVK)
|
||||||
|
set(MVK_EXCLUDE_SPIRV_TOOLS ON)
|
||||||
|
set(MVK_USE_METAL_PRIVATE_API ON)
|
||||||
add_subdirectory(MoltenVK)
|
add_subdirectory(MoltenVK)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
1
externals/MoltenVK
vendored
Submodule
1
externals/MoltenVK
vendored
Submodule
Submodule externals/MoltenVK added at b23d425346
93
externals/MoltenVK/CMakeLists.txt
vendored
93
externals/MoltenVK/CMakeLists.txt
vendored
@@ -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)
|
|
||||||
1
externals/MoltenVK/MoltenVK
vendored
1
externals/MoltenVK/MoltenVK
vendored
Submodule externals/MoltenVK/MoltenVK deleted from 3e935eb564
1
externals/MoltenVK/SPIRV-Cross
vendored
1
externals/MoltenVK/SPIRV-Cross
vendored
Submodule externals/MoltenVK/SPIRV-Cross deleted from 7affe74d77
1
externals/MoltenVK/cereal
vendored
1
externals/MoltenVK/cereal
vendored
Submodule externals/MoltenVK/cereal deleted from a56bad8bbb
2
externals/vulkan-headers
vendored
2
externals/vulkan-headers
vendored
Submodule externals/vulkan-headers updated: a01329f307...33d7f51258
Reference in New Issue
Block a user