Ever since the advent of dedicated 3D graphics cards there have been battles as to which application programming interface (API) is "best" to use for a certain platform. There have been quite a few API players (some now defunct) in those battles during various points in history. Vulkan is one of the newer frameworks based on the older API called Mantle.

Low level access

API's like Vulkan, Metal, and Mantle all have a similar "low level access" to the underlying hardware that the OS is running on top of. The benefit of this is that programmers, with enough programming acumen, can get better control over the hardware and as such create programs that can take advantage of more performance and capabilities from the hardware by bypassing any software layer that traditional API's has previously implemented for compatibility sake.

Not directly Vulkan

Khronos Group, the maintainers of the Vulkan API have brought the low level API to macOS and iOS. But there's a catch. Vulkan isn't being directly supported on Apple's platforms. A compatibility layer for Vulkan that translates the Vulkan API into Metal commands (the low level graphics hardware API for Apple OS's) is being released my Khronos called MoltenVK.

Why Apple didn't allow for direct Vulkan support by it's OS's is anybody's guess but it may be because Apple already has a low level API and would rather developers use that on it's platforms. And although Vulkan was created to allow for better access to the hardware, MoltenVK re-introduces a software layer on Apple based platforms.

Why bother with Vulkan on macOS/iOS if Apple already has a low level API?

The short answer is portability. Developers have to contend with resources when deciding on which platform they plan on creating a program for. Creating a program for Metal is not the same as creating a program for Vulkan which is not the same as creating a program for Direct X 12 etc…

Using an API that uses the same command calls on all platforms theoretically saves time and money for a development house. On top of that, if a development house is used to programming for a certain API, then creating applications for multiple platforms is that much easier. There is no need for one person to know all of the API's or hiring multiple developers for each API.

Cross platform sounds good in practice

There is a bit of a rumbling on social sites and forums for the ramping up of the Vulkan API by gamers. The thought is that once developers switch to the Vulkan API, games will start to proliferate across macOS, Linux, PC and so on. This is potentially true. However, as with other-cross platform API's like OpenGL, it seems that the bulk of developers stick to one platform regardless of API cross-platform compatibility. My guess is it's due to cost. Although you can build a program for Vulkan that will run on Windows and macOS, you will still need to build and test on both of those platforms if you wish to release your app for both platforms. That's double the time, double the cost, double the headache. Sure some big names like Valve, ID and Croteam have the resources to bring some amazing games to many platforms. Most developers do not have that option and have to choose the one platform that they believe will give them the best return.

More APIs are better than less

Don't get me wrong. I would jump out of my skin if my gaming platform was completely agnostic to the games I play. I'm really happy that the Khronos group has decided to skip waiting on Apple to support Vulkan directly and decided to create MoltenVK. I am hoping that the Vulkan API is so compelling that in spite of the drawbacks of cross-platform support, developers will create their games and apps for all platforms. Choice is good, Competition is good. let's hope that the initiative shown by the Khronos group spurs greater innovation on all platforms.

Your Thoughts

What are your thoughts on Vulkan running on macOS and iOS via a compatibility layer? Good? Bad? Let us know in the comments!