RetroArch with Metal 2 support for macOS High Sierra users!

Up until now, we had three versions of RetroArch for macOS/OSX users:

  • RetroArch for OSX PowerPC (10.5) – For users with an old PowerMac or iBook/Powerbook. You should have at least Mac OS X version 10.5 (Leopard) installed in order for this version to work. Cores are packaged with this version because our buildbot does not serve fresh 32bit PowerPC cores for OSX.
  • RetroArch for OSX 32bit Intel (10.6) – For users with an old MacBook that has a 32bit Intel processor (for instance, 1st generation MacBook). In order to use this, you should have at least MacOS X version 10.6 (Snow Leopard) installed. Cores are packaged with this version because our buildbot does not serve fresh 32bit Intel cores for OSX.
  • RetroArch for macOS/OSX 64bit Intel (10.6) – This is what you are likely wanting to use on a modern Mac computer. You should have at least MacOS X/macOS version 10.7 (Lion) installed. Cores are distributed separately on our buildbot.

We are now adding a fourth one:

  • RetroArch for macOS 64bit Intel with Metal 2 support (10.13) – This version has all of the features of ‘RetroArch for macOS/OSX 64bit Intel’ plus a Metal 2 video driver. This version requires at least macOS 10.13 (High Sierra), a fairly modern version of macOS. For this version, we default to the Metal video driver by default.

If you have relatively modern Mac and you want to enjoy the latest in cutting edge technology, you should definitely try out this latest version. Get it by going to our Downloads page, and click on the download link below macOS High Sierra (or later).

Some important things you should know about Metal 2 – not all of the devices that can run macOS 10.13 necessarily support this. Here is a compatibility list of all supported hardware:

  • MacBook (Early 2015 or newer)
  • MacBook Pro (Mid 2012 or newer)
  • MacBook Air (Mid 2012 or newer)
  • Mac mini (Late 2012 or newer)
  • iMac (Late 2012 or newer)
  • Mac Pro (Late 2013)

What is Metal, and why is it relevant?

Up until the ’10s, Mac OS X has relied on the crossplatform OpenGL API to provide hardware accelerated rendering to developers writing Mac applications. However, since 2014, there has been an industry-wide push towards lower-level APIs, and Apple in specific decided to go with its own proprietary graphics API. This API is called Metal, and was first premiered with iOS 7 and Apple A7 devices. It has since some years ago made the switch to macOS as well, and this year the API has been bumped to version 2.

Apple has announced OpenGL will be deprecated in the future, its graphics driver stuck with the dated OpenGL 4.1 spec for years now. While we regret this industry wide push away from a standardized, cross-platform graphics API, we have been forced to move with the times and instead cater to all the major graphics APIs. There is no longer the potential for one single graphics API to cater to all platforms.

With the release of RetroArch 1.7.4, we have achieved an important milestone: we now have fully functioning graphics drivers for the three major next-generation graphics APIs. This includes Khronos’ Vulkan API (added to RetroArch since 2016), Microsoft’s Direct3D 11/12 (added to RetroArch since earlier this year), and now Apple’s Metal 2 for macOS. Thanks to Hans-Kristian Arntzen’s SPIRV-Cross middleware, we can reuse the same shaders across Direct3D/Vulkan/Metal. We therefore are very close to having a universal shader specification that will work on all the major platforms.

We are now ready for a future when Apple will outright kill OpenGL support, while at the same time we have ensured that we have one common set of shaders that can be used across all these video drivers. The developer who has added Metal 2 support to RetroArch has already indicated he intends to bring this over to iOS and tvOS as well. And who knows, maybe even backwards compatibility with Metal 1 could arrive.

How complete is the Metal video driver right now?

Fairly complete. You get:

  • Fully functioning menu drivers. XMB, MaterialUI and RGUI should work fine.
  • XMB shader pipeline effect should work as expected.
  • You can take screenshots.
  • You can go into fullscreen mode.
  • You can use slang shaders with the Metal video driver, the same shaders that can be used with Vulkan/D3D10/D3D11/D3D12.

Things that have still yet to be added which the author is considering adding:

  • Recording support independent of ffmpeg.
  • Support for the libretro API’s RETRO_ENVIRONMENT_GET_CURRENT_SOFTWARE_FRAMEBUFFER.
  • Hardware renderer context support, so that libretro cores could make use of the Metal API.

General changelog

– COMMON: Support for “OEM-102” key (usually ‘\’ on Euro keyboards).
– MENU/QT/WIMP: Add option to filter extensions inside archives when adding to a playlist.
– METAL: Add screenshot support.