mirror of
https://git.eden-emu.dev/archive/citron
synced 2026-04-03 01:48:29 -04:00
fix(macos): macOS build fixes and MoltenVK improvements
- Switch to Ryujinx MoltenVK build compiled with older Metal SDK to avoid MSL 3.2 thread_scope_subgroup bugs that cause text rendering issues - Exclude Apple from GNU ld.bfd linker option (macOS uses different linker) - Handle VK_ERROR_FRAGMENTED_POOL in Vulkan descriptor pool allocation
This commit is contained in:
@@ -396,7 +396,7 @@ if (APPLE)
|
||||
|
||||
if (NOT USE_SYSTEM_MOLTENVK)
|
||||
set(MOLTENVK_PLATFORM "macOS")
|
||||
set(MOLTENVK_VERSION "v1.4.0-rc1")
|
||||
set(MOLTENVK_VERSION "v1.4.0")
|
||||
download_moltenvk_external(${MOLTENVK_PLATFORM} ${MOLTENVK_VERSION})
|
||||
endif()
|
||||
find_library(MOLTENVK_LIBRARY MoltenVK REQUIRED)
|
||||
@@ -421,7 +421,7 @@ elseif(WIN32)
|
||||
endif()
|
||||
|
||||
# Robust static linking and linker selection under GCC LTO
|
||||
if (NOT MSVC)
|
||||
if (NOT MSVC AND NOT APPLE)
|
||||
# Use GNU ld.bfd for GCC LTO plugin-aware archive resolution
|
||||
target_link_options(citron PRIVATE -fuse-ld=bfd)
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ add_executable(citron-cmd
|
||||
)
|
||||
|
||||
# Robust static linking and linker selection under GCC LTO
|
||||
if (NOT MSVC)
|
||||
if (NOT MSVC AND NOT APPLE)
|
||||
# Use GNU ld.bfd for GCC LTO plugin-aware archive resolution
|
||||
target_link_options(citron-cmd PRIVATE -fuse-ld=bfd)
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ add_executable(citron-room
|
||||
)
|
||||
|
||||
# Robust static linking order using GNU ld group to resolve cycles
|
||||
if (NOT MSVC)
|
||||
if (NOT MSVC AND NOT APPLE)
|
||||
# Use GNU ld.bfd for GCC LTO archives (ld.lld cannot consume GCC LTO plugin objects)
|
||||
target_link_options(citron-room PRIVATE -fuse-ld=bfd)
|
||||
|
||||
|
||||
@@ -565,6 +565,7 @@ DescriptorSets DescriptorPool::Allocate(const VkDescriptorSetAllocateInfo& ai) c
|
||||
case VK_SUCCESS:
|
||||
return DescriptorSets(std::move(sets), num, owner, handle, *dld);
|
||||
case VK_ERROR_OUT_OF_POOL_MEMORY:
|
||||
case VK_ERROR_FRAGMENTED_POOL:
|
||||
return {};
|
||||
default:
|
||||
throw Exception(result);
|
||||
|
||||
Reference in New Issue
Block a user