azahar/CMakeModules
Sergei Golishnikov 04f3a93854
macos: fix Vulkan/Metal renderer on macOS 26+ and bump MoltenVK (#2149)
* macos: fix Vulkan/Metal renderer on macOS 26+ and bump MoltenVK

Four related changes that together let the Vulkan backend boot a game
on Apple Silicon Macs running macOS 26.x. Each is needed independently;
the combination was tested on a Mac16,6 (M4 Max) / macOS 26.4.1.

CMakeModules/DownloadExternals.cmake:
  Bump bundled MoltenVK from v1.2.9 to v1.4.1. v1.2.9 does not
  recognize macOS 26 surface objects and traps with an Objective-C
  "unrecognized selector" inside vkGetPhysicalDeviceSurfaceCapabilitiesKHR.

src/video_core/renderer_vulkan/vk_instance.cpp:
  Disable VK_EXT_tooling_info on MoltenVK. MoltenVK advertises the
  extension but does not expose vkGetPhysicalDeviceToolPropertiesEXT
  through its dispatcher, so the call inside CollectToolingInfo()
  trips a vulkan-hpp assertion in Debug and dereferences NULL in
  Release.

src/citra_qt/bootmanager.cpp:
  Force-install a fresh CAMetalLayer on the NSView before handing it
  to createMetalSurfaceEXT. Qt 6.11's QWindow::MetalSurface does not
  always back the view with a CAMetalLayer on macOS 26, and MoltenVK
  1.3+ aborts in MVKSurface::getNaturalExtent() if the layer is not
  the right class. Implemented via objc_msgSend so no .mm conversion
  is needed.

src/citra_meta/CMakeLists.txt:
  Gate LaunchScreen.storyboard behind 'if (IOS)'. The storyboard is
  iOS-only and previously broke the Xcode generator on macOS with
  "iOS storyboards do not support target device type 'mac'."

* Move Metal layer creation logic into MetalUtil::CreateMetalLayer ObjC++ function

This change makes the code much more readable, as the logic is now in its native language

---------

Co-authored-by: SergeyMild <>
Co-authored-by: OpenSauce04 <opensauce04@gmail.com>
2026-06-17 16:15:42 +01:00
..
AndroidNdkModules.cmake android: set up cmake 2018-11-20 14:24:19 -05:00
aqt_config.ini build: Block qt.mirror.constant.com as a Qt download mirror. (#7148) 2023-11-11 11:52:11 -08:00
BundleTarget.cmake cmake: Implemented bundle target for MXE builds 2026-05-09 10:32:52 +01:00
DisablePaxMprotect.cmake Fixed launch failures on NetBSD due to PaX MPROTECT restrictions 2026-04-05 13:11:40 +01:00
DownloadExternals.cmake macos: fix Vulkan/Metal renderer on macOS 26+ and bump MoltenVK (#2149) 2026-06-17 16:15:42 +01:00
GenerateBuildInfo.cmake cmake: Version info generation improvements 2026-03-04 11:45:55 +00:00
GenerateSCMRev.cmake cmake: Version info generation improvements 2026-03-04 11:45:55 +00:00
GenerateSettingKeys.cmake android: Secondary Layout and Menu Improvements (#1385) 2026-06-14 17:37:32 +01:00