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:
sylveondeko
2025-12-12 10:57:23 -05:00
parent 6afb4e5370
commit 3b35c2eeb9
5 changed files with 8 additions and 7 deletions

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)

View File

@@ -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);