Lime3DS/src/video_core
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
..
custom_textures video_core: vulkan: Add disk shader cache (#1725) 2026-02-16 15:59:22 +01:00
debug_utils video_core: Switch to xxHash and improve ShaderSetup behaviour (#1592) 2026-01-09 18:01:49 +01:00
host_shaders libretro: draw cursor in vulkan 2026-03-08 19:04:10 +00:00
pica pica_core.cpp: Initialize IRQ_CMP (#2143) 2026-05-24 11:07:57 +01:00
rasterizer_cache video_core: Properly handle non RGBA8 shadow textures (#2047) 2026-04-17 21:45:50 +02:00
renderer_opengl renderer_gl: Add DebugScopes to rasterizer and texture-runtime (#2133) 2026-06-14 22:53:18 +01:00
renderer_software video_core: Fix LCD color fill (#1198) 2025-06-29 13:51:29 +02:00
renderer_vulkan macos: fix Vulkan/Metal renderer on macOS 26+ and bump MoltenVK (#2149) 2026-06-17 16:15:42 +01:00
shader android: Manual kotlin formatting corrections 2026-06-16 16:13:05 +01:00
texture video_core: Properly handle non RGBA8 shadow textures (#2047) 2026-04-17 21:45:50 +02:00
CMakeLists.txt cmake: Add EXCLUDE_FROM_ALL to targets where applicable 2026-05-09 14:01:56 +01:00
gpu_debugger.h misc: fix issues pointed out by msvc (#7316) 2024-01-07 12:37:42 -08:00
gpu_impl.h renderer: Add disable right eye performance hack 2024-11-19 16:36:24 +00:00
gpu.cpp gsp: Fix GPU interrupt queue and add GPU timing emulation (#2095) 2026-05-07 01:36:21 +02:00
gpu.h Implement libretro core (#1215) 2026-02-19 22:30:25 +00:00
pica_types.h Implement framebuffer vertical flip flag (#699) 2025-03-17 19:39:55 +00:00
precompiled_headers.h Port yuzu-emu/yuzu#9300: "CMake: Use precompiled headers to improve compile times" (#6213) 2022-12-17 16:06:38 +01:00
rasterizer_accelerated.cpp video_core: Vectorize RasterizerAccelerated::AnalyzeVertexArray 2025-05-31 11:12:28 +00:00
rasterizer_accelerated.h video_core: Refactor state tracking (#1059) 2025-05-26 14:37:03 +02:00
rasterizer_interface.h video_core: vulkan: Add disk shader cache (#1725) 2026-02-16 15:59:22 +01:00
renderer_base.cpp android: Force use of Vulkan if OpenGL renderer is ANGLE 2026-06-16 17:27:33 +01:00
renderer_base.h android: Implement secondary display support (#617) 2025-08-08 21:41:52 +01:00
right_eye_disabler.cpp renderer: Add disable right eye performance hack 2024-11-19 16:36:24 +00:00
right_eye_disabler.h renderer: Add disable right eye performance hack 2024-11-19 16:36:24 +00:00
utils.h Update the entire application to use the new clang format style 2018-03-09 10:54:43 -07:00
video_core.cpp android: Force use of Vulkan if OpenGL renderer is ANGLE 2026-06-16 17:27:33 +01:00
video_core.h video_core: Refactor GPU interface (#7272) 2023-12-28 11:46:57 +01:00