Khronos has released Vulkan 1.0, the next generation open graphics API, and a Vulkan SDK for Windows and Linux is now available from LunarG.
Khronos is an industry consortium which creates open graphics standards, including OpenGL and WebGL. Vulkan was announced in March 2015 and represents the next generation after OpenGL, though Khronos is keen to emphasise that OpenGL, and the cut-down OpenGL ES designed for mobile and embedded use, remain in active development.
Today's release includes version 1.0 of the specification, LunarG's SDK which has been sponsored by Valve Corporation, open source conformance tests, and a sample application. Croteam's Talos Principle, running on Steam, is available in a beta version that uses the Vulkan API.
Vulkan has wide support from GPU vendors. AMD has announced a beta of its Radeon software driver which supports the Vulkan API. Intel is offering "industry-certified drivers for three generations of Intel graphics platforms, with more to come," according to VP Imad Sousou. NVIDIA has Vulkan drivers for Windows, Linux and Android available from today. Imagination has early-access Linux drivers for its PowerVR GPU and is promising "Vulkan support extended to all our tools in the very near future". Qualcomm has announced Vulkan drivers for Android 6 for its Adreno 530 and 4xx GPUs, and ARM also has drivers in progress. Google is adding Vulkan support to the Android SDK.
Vulkan is not an update of OpenGL, but takes a different approach, allowing more direct access to GPU hardware and giving developers the ability to create and manage multiple threads running on GPU cores. This enables lower latency and better performance, though porting from OpenGL is not straightforward and in some respects the Vulkan API is more challenging for developers.
That said, most game developers use a game engine rather than coding directly to OpenGL or Vulkan, and it is here, according to Khronos president Neil Trevett, that the new spec comes into its own. "It's the dream API for games engine developers," he told the Reg. "It's the API they have been asking for, and which they have come to the working group to help design."
When is porting to Vulkan worth the effort? "If your app is CPU-bound, if your GPU is sitting idle because OpenGL is essentially single-threaded when it comes to work creation and submission, and you can parallelise that work creation, Vulkan's multi-threading can give significant speed-ups. If your GPU is already fully saturated, Vulkan won't make any difference," said Trevett.
Unlike OpenGL, which has several variants, there will only be one Vulkan API, though different hardware capabilities are allowed for by means of "feature sets". Platform owners define feature sets for their platform, with Khronos providing them for Windows and Linux.
Another key feature of Vulkan is its support for SPIR-V (Standard Portable Intermediate Representation), an intermediate language for graphics and parallel computing. This enables different front-end languages to generate Vulkan code, including both graphics and general-purpose code that uses the GPU as an accelerator for compute-intensive operations.
The choice for graphics developers is between Microsoft's DirectX or Apple's Metal, for platform-specific APIs, or OpenGL or Vulkan for a cross-platform API. Vulkan's better performance may reduce the attraction of platform-specific APIs, which is good news for platforms that are not from Apple or Microsoft, such as Linux and Android. Valves's sponsorship of the Vulkan SDK is understandable, given that its interest in growing its non-Windows market such as that for the Linux-based SteamOS.®