MoltenVK Enables Two Nintendo Emulators on macOS

Two open-source Nintendo emulator projects recently posted updates on their success in shipping on macOS using the open source MoltenVK ‘Vulkan over Metal’ runtime library:
- Ryujinx Switch Emulator Uses MoltenVK to Ship on Mac
“All in all, we’re pleased with what we’ve managed to accomplish. A barrier that many, including ourselves, originally thought unbreakable has been cracked wide open, and the best part is: this is just the beginning. With not only our own efforts to improve the core emulation, but upcoming updates to Metal 3 and the constantly improving MoltenVK, the experience is only going to get better”
- Dolphin GameCube and the Wii Emulator Compares Metal Native Backend and MoltenVK
“We will be relying on MoltenVK to be the benchmark that we compare our native Metal backend against going forward. And it should perform that role excellently, as it is bringing our well tested Vulkan backend to macOS through a very well supported translation layer from a team that has earned our trust. So, while our new native Metal backend is faster, MoltenVK is here to stay. Together, they will help us deliver the most consistently reliable and performant experience that we can give to our macOS users”

MoltenVK 1.2 was tagged today and with this version there is now support for Vulkan 1.2. This MoltenVK 1.2 release is built against the Vulkan SDK 1.3.231 and also exposes SPIR-V 1.4 support, KHR_shader_float_controls, improves Vulkan semaphore functionality, memory leaks have been addressed, crash fixes, and a variety of other improvements for mapping Vulkan to Metal.

The Vulkan Portability Technical Subgroup is seeking to reduce the number of CTS failures in MoltenVK under Vulkan 1.0 with no extensions. MoltenVK provides Vulkan functionality layered on top of the Metal graphics API on Apple devices. All RFP responses are due by 5p.m. PDT on Friday, June 24, 2022.

Today, the functionality of the Vulkan SDK gets a major upgrade for Vulkan developers targeting Apple platforms. LunarG is now shipping Device Simulation (DevSim) and Validation layers for the Vulkan SDK on macOS in addition to Linux and Windows. DevSim layers enable Vulkan application development on a highly-capable development system by “simulating” a less-capable target Vulkan implementation through constraining the reported features and resources on the more-capable platform. Validation layers verify that applications are correctly using the reported Vulkan functionality. The validation layers and associated Vulkan loader on macOS also now support Apple Silicon via Universal Binaries.

The MoltenVK development team is pleased to announce that the latest release of MoltenVK supports Vulkan 1.1 functionality.
This release also embraces the Vulkan Portability Initiative, adding support for the new VK_KHR_portability_subset extension, which allows application developers to further embrace platform portability by enumerating the subset of Vulkan functionality available on platforms that don’t natively support Vulkan, such as macOS and iOS.
This release is part of the ongoing evolution of MoltenVK to add additional advanced Vulkan functionality, work towards conformance with the Vulkan standard, and continue to play an important role in a broad and vibrant Vulkan eco-system.

Khronos has shipped the provisional version of the Vulkan Portability Extension version 1.0 and it is shipping today in both MoltenVK and gfx-portability. If you want to try out the extension, build MoltenVK or download gfx-portability-0.8.1 and redirect the Vulkan loader to a JSON manifest using the regular ICD logic, as if MoltenVK and gfx-portability were native Vulkan drivers. Learn more about the Vulkan Portability Initiative and explore the value of layered implementations to the graphics community in this blog.
Diligent Engine was just tagged 2.4.e on Github. With this release comes support for Vulkan on Android. Last October Diligent Engine 2.4.c saw support for macOS via MoltenVK.
A new release of MoltenVK is now available that is updated against Vulkan 1.1.121 for allowing much of this graphics/compute API to function under Apple’s macOS and iOS platforms by remapping the Vulkan calls to Metal. More details are available on Phoronix and the MoltenVK repository on GitHub.
MoltenVK 1.0.35 is this new release based on the Vulkan SDK 1.1.108 milestone. This MoltenVK update brings various new extensions like VK_EXT_debug_report, VK_NV_glsl_shader, VK_EXT_debug_utils, and others. More details on MoltenVK 1.0.35 can be found via GitHub. (source: Phoronix)
The new MoltenVK now allows run-time configuration of MoltenVK via environment variables, support for GPU switching was added and is enabled by default, queue family specialization was added but currently disabled by default, synchronous queue submits was added and enabled by default, there is now support for four queue families, support for the VK_AMD_gpu_shader_half_float and VK_KHR_variable_pointers extensions, and updated against the latest SPIR-V Cross. There is also some fixes and other internal improvements. Checkout the Change Log on GitHub and read more about this update on Phoronix.

Diligent Engine is a modern cross-platform abstraction layer for Vulkan, OpenGL, OpenGL ES, Direct3D11 and Direct3D12. In the latest release, Diligent Engine added support for Vulkan on MacOS, enabled by MoltenVK.
This Rust crate by @gwihlidal, a Senior Rendering Engineer II at Electronic Arts (EA), provides an FFI layer and idiomatic rust wrappers for the AMD Vulkan Memory Allocator (VMA) C/C++ library. Designed to help game developers to manage memory allocations and resource creation by offering some higher-level functions. vk-mem is Cross-platform: Windows, Linux and macOS (MoltenVK).
Forsaken Remastered was just updated with Vulkan support! If you’re on Linux, you’re probably hitting 60fps with the existing OpenGL renderer, but it’s good to be future proof. If you’re on a Mac, though, you definitely want to switch. On my MacBook, the framerate goes from around 15 to a solid 60! On macOS, Vulkan support is supplied by MoltenVK, which we now ship with the game. It should work on any Mac that supports Apple’s Metal API, which MoltenVK uses to make Vulkan work. You can change from OpenGL to Vulkan in-game in the “Video” options menu.
MoltenVK 1.0.20 is out as the latest feature update to this Vulkan-over-Metal layer. With the MoltenVK 1.0.20 release there is support for several new extensions including VK_KHR_maintenance1, VK_KHR_shader_draw_parameters, VK_KHR_get_physical_device_properties2, and VK_KHR_push_descriptor. MoltenVK 1.0.20 also adds the ability to track and access supported/enabled extensions and has re-based its SPIRV-Cross code against upstream.
Earlier this month there was a report on a game studio finding their MoltenVK-using game rejected from Apple’s App Store. The situation is now resolved and Apple has allowed this Vulkan-over-Metal game into their iOS marketplace. Details on the issue and how it was resolved are set out in this Phoronix story.