There has been a lot of chatter in the macsphere over the past several months about the new graphics technologies that are coming (or might be coming) to OS X. This post will seek to give information on each of the major four graphics APIs, and talk about the advantages of each.
What is a Graphics API?
To put it simply, the graphics API is the system that is used to allow a game (or other computing task) to talk to the computer's hardware. The more efficient the API, the more performance you will be able to get out of your computer's hardware, which means better frame rates and/or render times in intensive applications/games. That is an extremely simplified explanation of what a graphics API is and what it does, so for more information I would recommend checking out the following links (warning: gets pretty technical):
- Application Programming Interface (API) (Wikipedia)
- OpenGL (Wikipedia)
- Vulkan (API) (Wikipedia)
- Metal (API) (Wikipedia)
What are the Major APIs?
Historically, there have been two major APIs: DirectX and OpenGL. DirectX has always been locked down to Microsoft systems (Windows OS and Xbox), whereas OpenGL runs on pretty much everything (Windows, Mac, Linux, Playstation, etc). In OS X, OpenGL has been the only graphics API for years now. Recently, several new API's have popped up that promise better performance over what was capable with OpenGL and DirectX.
Vulkan is an upcoming graphics API that is compatible with all platforms and has widespread industry support from titans such Intel, AMD, Nvidia, Valve, Apple, Sony, and so on. It was originally speculated that Apple will support Vulkan in OS X, although that is looking less likely now (more on that below).
Metal is another graphics API that has been developed by Apple in order to allow developers of iOS and Mac applications to get better performance from their hardware. Metal began as iOS only, but Apple has brought it to OS X and we know for a fact that at least some major developers such as Blizzard and Epic are going to support it.
That means there are a total of four major graphics APIs:
- DirectX - which has never been supported in OS X as Microsoft owns it and will not allow it to be used on other platforms
- OpenGL - the historical graphics API of choice for nearly every computing system outside of a Microsoft environment. OpenGL is likely to be replaced by...
- Vulkan - a brand new, up-and-coming API that has widespread support and a lot of praise by many members of the technology community
- Metal - a custom graphics API developed by Apple for use with Apple systems (iOS and OS X). It is currently on the market and in use by a small number of applications
Since DirectX is locked to Microsoft platforms I will not be discussing it in this article. If you want to learn more about it, I would head over to its Wikipedia page.
OpenGL in OS X
OpenGL has been the graphics API that Apple has used for years, and up until El Capitan it was the only API that could be used (El Capitan brought support for Metal). Despite relying on OpenGL, Apple has always been slow to update its OpenGL support with the latest features. The release of El Capitan is no different. El Capitan supports the exact same version of OpenGL that both Mavericks and Yosemite do: OpenGL 4.1 (with a few 4.2 extensions added in). OpenGL 4.1 was finalized in 2010, so Apple's (lack of) support for it is puzzling to say that least and doesn't bode well for them in supporting other API's like Vulkan (OpenGL is currently at version 4.5). Newer versions bring in new features and optimize existing features.
In regards to performance, OpenGL is a very capable API that can rival the performance and features of DirectX when used properly. Unfortunately for OpenGL, nearly all games are designed first using DirectX and then ported over to OpenGL later. This almost always results in a performance loss of up to 50%.
Games that are developed using OpenGL from the beginning will see similar performance in both OS X and Windows. ID Software (Enemy Territory: Quake Wars, Doom 3, RAGE) has used OpenGL for its games in the past. All major games on OS X currently use OpenGL.
Metal in OS X
Metal is still in its junior stages on both OS X and iPhone and will likely see much-expanded support in coming years. Blizzard has committed to using Metal for its games in OS X, but none of them have been updated with Metal support as of yet.
Ars Technica posted a preview of Metal vs OpenGL performance in their article Metal Performance in OS X El Capitan: Sometimes Great, Often Mixed. Below is a slide from the article.
You'll notice that Metal wins some benchmarks, while OpenGL wins others. I would expect that Metal performance should increase as times goes on, but that is speculation on my part. OpenGL is a known quantity at this point, whereas metal can be a much more efficient API with the right programming and effort. Metal isn't going to give an Intel Integrated GPU the performance of a discrete GPU on OpenGL, but it does have the potential to give a slight boost in frame rates.
- The following studios/developers are confirmed to be supporting Metal:
- Blizzard Games - World of Warcraft will see support first, followed by Starcraft 2 and Heroes of the Storm
- Unity - Already support Metal on iOS; OS X support is a coming feature
- Unreal Engine - Already support Metal on iOS; OS X support is unknown at this time
- The Foundry - Confirmed to be supporting Metal. Timeline unknown
- Campo Santo - Upcoming game "Firewatch" will have metal support in OS X
- 2K - Confirmed to be supporting metal. Timeline unknown
- Autodesk - Confirmed to be working on Metal support. Timeline unknown
- Feral - Confirmed to be supporting Metal. Will likely use for upcoming Mac ports of Windows games
- Aspyr - Confirmed to be supporting Metal. Will likely use for upcoming Mac ports of Windows games
- Adobe: Adobe has committed to bringing Metal support to all its Mac OS Creative Cloud applications. Timeline unknown
Vulkan in OS X
Vulkan support in OS X is non-existent at this point and it has been speculated that Apple is going all-in on Metal and will not support Vulkan at all. Vulkan is managed by the Khronos Group, which also manages OpenGL. The Khronos Group is made up of many members, including Microsoft, Apple, Google, Sony, and many more.
Given Apple's track record with OpenGL, and its new focus on Metal, it is myspeculation that Vulkan will not be supported in OS X in the near future. Perhaps in a few years once Vulkan has had some additional development time and Apple sees how support for the new API plays out in the real world. The Vulkan 1.0 release was scheduled for 2015, but has missed that target. The Khronos Group states that its release is 'imminent'.
Which One is Best?
That is a difficult question to answer, as we have not yet seen all of them in action. Vulkan is the successor to AMD's Mantle API, which gave a performance boost over DirectX (see Battlefield 4: Mantle vs DirectX), but Vulkan is expected to be much more refined than Mantle and give even greater performance boosts. That said, there are no official numbers to go off of for Vulkan, so any performance estimates would be pure speculation.
At the moment, there are only two API options for OS X: OpenGL and Metal. Of those two, Metal offers better theoretical performance, making it the best OS X graphics API as of the time of writing.
If you have any questions, comments or disagreements feel free to comment below. I will be responding the comment section.