The Khronos group is now launching Vulkan 1.0, new generation, open-standard and cross-platform API descended from AMD Mantle to answer the demand for a low-overhead open-source 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.
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.
Not For Everyone…Yet!
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 is 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.
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.
Vulkan Is Mobile
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 in 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.
Support from the Start
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 — both 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), there are heaps of reference materials, code samples, validators, conformance tests, and more. Another Android SDK will be available soon, too.
The Future Looks Bright
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. While Both Microsoft and Apple may still push Direct X and Metal respectively for a long time to come – gaming devs need an API set that can go beyond one OS, one CPU architecture which can scale across large range of devices from console, to TV to phone to PCs and beyond.