20 Commits
Author SHA1 Message Date
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 <[email protected]>
2026-06-17 16:15:42 +01:00
crueterandOpenSauce04 379649dbce cmake: Fix MoltenVK fetch order/library conflicts (#2183)
* [cmake] Fix MoltenVK fetch order/library conflicts

Rather than dealing with `find_library` shenanigans, just set the
library path directly (when using bundled MoltenVK). System MoltenVK
solely uses `find_library`.

Avoids cache nonsense that can cause system/bundled versions to get
mixed up, and overall makes the system/bundled mvk handling a lot more
consistent

```
cmake -S . -B build -DUSE_SYSTEM_MOLTENVK=ON
-- Using MoltenVK at /opt/homebrew/lib/libMoltenVK.dylib.
cmake -S . -B build -DUSE_SYSTEM_MOLTENVK=OFF
-- Using MoltenVK at /Users/crueter/code/azahar/build/externals/MoltenVK/MoltenVK/dynamic/dylib/macOS/libMoltenVK.dylib.
cmake -S . -B build -DUSE_SYSTEM_MOLTENVK=ON
-- Using MoltenVK at /opt/homebrew/lib/libMoltenVK.dylib.
```

Signed-off-by: crueter <[email protected]>

* remove old comment

Signed-off-by: crueter <[email protected]>

* Cleanup

---------

Signed-off-by: crueter <[email protected]>
Co-authored-by: OpenSauce04 <[email protected]>
2026-06-05 16:36:48 +01:00
OpenSauce04 bf03cac9e1 cmake: On Windows, download MSVC 2022 Qt versions instead of MSVC 2019 2025-09-03 03:15:14 +01:00
OpenSauce04 b6be443069 cmake: Bump downloaded Qt version to 6.9.2
Also bumps aqtinstall to 3.3.0
2025-09-03 03:15:14 +01:00
RedBlackAka f20e5be513 Update MoltenVK to 1.2.9 2025-05-26 19:33:27 +01:00
Reg Tiangha 7142e4f0e5 cmake: Update aqtinstall to v3.1.18 2024-11-10 19:01:21 +00:00
Steveice10 19784355f9 build: Improve support for Windows cross-compilation. (#7389)
* build: Improve support for Windows cross-compilation.

* build: Move linuxdeploy download to bundle target execution time.
2024-02-05 10:09:50 -08:00
Steveice10 37f0a7484f renderer_vulkan: Revert vkGetInstanceProcAddr symbol change for MoltenVK. (#7341) 2024-01-12 09:16:04 -08:00
Steveice10 2ce0a9e899 renderer_vulkan: Update to support MoltenVK 1.2.7 (#7335) 2024-01-09 11:33:47 -08:00
Steveice10 1c75d895fc build: Block qt.mirror.constant.com as a Qt download mirror. (#7148) 2023-11-11 11:52:11 -08:00
Steveice10 5193a5d222 build: Remove need for system Python to download Qt on macOS. (#7125) 2023-11-06 12:26:50 -08:00
Steveice10 9e898bca06 build: Fix Qt installer build script. (#6938) 2023-09-01 15:18:47 -07:00
Steveice10 af78268dd5 qt: Update Qt to 6.5.1 (#6863) 2023-08-10 14:32:51 -07:00
Steveice10 2d6aca4563 build: Rework CI and move all bundling into new build target. (#6556)
* build: Rework CI and move all bundling into new build target.

* ci: Use "mingw" in msys2 release names for compatibility.

* ci: Use "osx" in macOS release names for compatibility.

* ci: Disable macOS upload.

Will be moved to a separate PR for canary merge.
2023-06-26 17:42:00 -07:00
Steveice10 238a574645 qt: Add support for building for iOS. (#6594) 2023-06-07 20:40:53 -07:00
Steveice10andGPUCode 54c499ed5b Prepare for Vulkan backend (#6595)
* externals: Add libraries required for vulkan

* build: Add support for downloading bundled MoltenVK.

* ci: Install tools needed for Vulkan.

* citra_qt: Add API status indicator

---------

Co-authored-by: GPUCode <[email protected]>
2023-06-05 07:29:05 -07:00
Steveice10 0f5ff64ae6 build: Fix Qt download commands working directory. (#6579) 2023-05-31 15:42:13 -07:00
Steveice10 2273df4d70 qt: Migrate to Qt6. (#6418) 2023-05-05 03:10:34 -07:00
Steveice10 ea649263b7 build: Improvements to bundled libraries support. (#6435) 2023-04-28 13:02:53 -07:00
James Rowe 9e847b7549 Build: Enable SSL in mingw by linking against WinSSL
The mingw builds aren't submitting telemetry because the curl library
they are linked against is configured to use openSSL and openSSL looks
for the certificates in the users home folder. This keeps it from
contacting web services because it can't communicate over SSL.

This commit adds a download in mingw builds that will download a
precompiled curl for mingw linked against winssl and sspi.
2017-09-11 09:10:17 -06:00