Vulkan is the answer from the Khronos Group to the demand for a low-overhead graphics API. Eighteen months ago, the Khronos Group got to work on its new graphics API, Vulkan, and after some legal delays, the group is launching Vulkan 1.0.
This is a little different from the Khronos Group's past launches, however, in that this time around there will be more than a specification PDF available – there are drivers, support documentation and a free SDK, and there is even a game that you can download with a Vulkan backend.
There is a multitude of companies comprising the Khronos Group, and those in the working group for Vulkan include not only AMD, Nvidia, and Intel, but game engine makers and even Oculus VR.
What Is Vulkan?
In order to achieve the aforementioned low overhead, the API operates at a lower level, leaving much of the work done by past APIs to the developers – allowing the developers themselves to manage the graphics hardware more closely. This makes the API more difficult to use, but it enables higher performance than before.
Unlike DirectX 12, Vulkan is completely open-source and royalty-free. Anyone who wants to use the code or adjust the code to fit their personal needs is free to do so, be that for private or commercial purposes.
But It’s Not For Everyone?
Correct. Because various components of the hardware management are left over to the application developers, the language is more difficult to work with. Although it does have its benefits, using it would increase development cost and require a higher skill level. For that reason, Vulkan does not serve as a replacement for OpenGL. Instead, they are meant to exist in parallel.
There are a handful of situations where Vulkan becomes a valuable recourse, but naturally it isn’t the obvious choice for every application. There are three main situations in which Vulkan may be worth the additional development costs: When an application is suffering from a CPU bottleneck, when you need the maximum performance you can get, and when you need the smoothest experience possible.
The reason why Vulkan is able to provide a smoother experience than OpenGL or other high-level APIs is simple: When memory management is left to the API, the application developer has no idea how the data is managed. This can lead to unpredictable scenarios, such as the memory management suddenly deciding to re-arrange everything when the application introduces a new piece of data. The user will experience a stutter when this happens.
Of course, in traditional gaming, a brief stutter is just a stutter -- it’s not the end of the world. However, in VR, stuttering can break presence, ruining the immersion and perhaps even making you nauseous. High-demand applications like VR are where Vulkan will show its benefits most clearly.
Additionally, Vulkan is actually able to handle multiple CPU threads effectively, which can resolve the CPU bottlenecks from which many OpenGL applications suffer.
In gaming, the folks that are in direct contact with Vulkan are the creators of the game engine -- developers working on the content do not necessarily need to understand how Vulkan works and how to use it.
Will There Be Vulkan Mobile, Too?
DirectX 12 is Microsoft’s graphics API, and it works only on Windows 10. Metal is an API made by Apple, and although it is also a low-overhead API, it works only on Apple devices. Vulkan, by contrast, works on many platforms. You can use it on operating systems as old as Windows XP on up to Windows 10, pretty much any Linux distro including SteamOS, and Android. Interestingly enough, Apple has opted not to integrate support for Vulkan into its devices -- although it is free to do so, so a day may come when Apple devices do have Vulkan support.
In the days of OpenGL, we had OpenGL for desktops, OpenGL ES for embedded systems, and OpenGL SC for safety critical applications. That’s still the case, but for Vulkan it works differently. Rather than different versions of Vulkan for desktop, embedded systems and mobile, there are pre-set features that are enabled on each platform. Platform owners themselves can also decide to deviate from these feature sets and define their own, implementing simpler or more lavish feature sets. With a simpler set, however, they risk compatibility with applications that require certain features.
It's A Juicy Launch, This One
As I mentioned above, where the launch of Vulkan 1.0 differs from the launch of most other APIs is that the API is launching with plenty of resources available. On day one -- today, right now -- AMD, Intel and Nvidia have published graphics drivers that integrate Vulkan support. Qualcomm is also working on support for Android 6.0, and there are drivers coming from ARM with Linux support, as well.
Additionally, Valve funded the development of a Vulkan-based SDK from LunarG (which is available, you guessed it, for free), and there are heaps of reference materials, code samples, validators, conformance tests, and more. Another Android SDK will be available soon, too.
For that matter, any moment now, the game Talos Principle will have an update pushed through Steam. If the game then detects that you’re running a Vulkan-enabled graphics driver, it will give you the option of enabling the Vulkan backend.
Where Is Vulkan Headed?
All of the obvious places. As we speak, the various game developers are working on creating engines with Vulkan support, and in due time we will be seeing more games with it. It isn’t only gaming, though; Vulkan will also play a big role in scientific super-computing, self-driving cars, medicine, robotics and more.
Remember, OpenGL is an API that has been around for 25 years now, and during that time it has evolved tremendously. The same is likely to happen with Vulkan, too.