Vulkan, an open-source, multi-vendors, application programming interface (API) for 3D graphics / GPU has now an actual implementation and as available to developers. Vulkan was previously at the design phase where the programming interface was made public in 2015, but there was no implementation yet. There are some now, and drivers for Android 6.0, Windows 7-10 and Linux are coming out, with Windows leading the way.
What is Vulkan for?
Vulkan is a graphics API that is built for high-performance graphics. Its design lets the app in control of the resources, which removes a lot of graphics driver “guess work” (guessing the developer intent), which leads to higher CPU overhead and sub-optimal hardware utilization.
Because the developer is in charge of resources (memory allocation, 3D command buffer construction…), Vulkan is much more friendly with multi-threading which maximizes the usage of multiple CPU cores by letting the app build multiple command buffers on different cores (read: are more cores better?). This is very hard to do with a state-machine API such as OpenGL.
What are the pros and cons?
The pros are plentiful: the most obvious is high-performance and low CPU overhead. The latter could even lead to better battery life, which is one of the factors on mobiles.
Portability: Vulkan is multi-platform so that developers can re-use code targeting Vulkan on Android, Windows and Linux. Vulkan has the same goals and the same level of graphics features as DirectX12.
However, it is compatible with more operating systems. Vulkan could also simplify the work of middleware vendors such as Unity or Unreal Engine by replacing Open GL and OpenGL ES, although the lack of Mac and iOS support would prevent that in the real world.
The cons consist mainly of added complexity in the sense that a good chunk of the work that was previously done by the driver (managing resources) now has to be done by the app. Not everyone can, want to or has time to build that codebase.
Is Vulkan meant to replace OpenGL?
In short, no. Although it is managed by Khronos, the same group behind OpenGL, it is not meant to replace that legacy API.
OpenGL still remains useful for compatibility and simplicity reasons. There are many types of apps where developers don’t need to be particularly picky about resource management, or CPU overhead.
Computer Assisted Design (CAD) apps also have a huge legacy codebase and probably won’t switch over anytime soon. As it stands, Vulkan is truly a new API that will live alongside OpenGL and others for quite some time.
What hardware is Vulkan compatible with?
Typically, Vulkan is compatible with recent hardware which is capable of running OpenGL ES 3.1 – OpenGL 4.5. For a vendor such as NVIDIA, this would mean the “Kepler” generation of graphics processors (GPUs) and beyond. Tegra K1 and Tegra X1 would also be part of this.
Qualcomm has not provided us with a list yet, but most recent Adreno GPUs support OpenGL ES 3.1. Vulkan doesn’t bring new features, but it can support all the existing leading edge ones.
Google has committed to bring Vulkan to Android with an upcoming OS update. No additional information has been given at the moment. We expect some of the handsets to be announced at Mobile World Congres 2016 (MWC 2016) to support Vulkan.