Khronos launches Vulkan: the next, low-level version of OpenGLBy Tim Schiesser
The Khronos Group has been preparing Next Generation OpenGL (GLnext) for some time now, but at GDC 2015, they're ready to officially release details of the API and give it a new name: Vulkan.
Vulkan, like AMD's Mantle and Microsoft's DirectX 12, is a low-level 3D graphics API, allowing it to get more out of a device's hardware by being 'closer to the metal'. As well as having less overhead, Vulkan gives developers control of tasks typically left to drivers, such as thread management, memory management and error checking.
Many of the changes in Vulkan are geared towards making the CPU side more efficient, which in turn allows more draw calls per frame and (at least in some cases) better frame rates. This is also the case with DirectX 12 and Mantle, however unlike these APIs, Vulkan is GPU vendor- and OS-agnostic, allowing it to run on any platform including mobile devices. And yes, this does mean Vulkan is replacing OpenGL ES, the mobile variant of OpenGL.
Vulkan also brings changes to the way shader programs are compiled, introducing a new intermediate language called SPIR-V which shader programs must now be compiled to by developers. This removes the need for a full shader program compiler in display drivers, which simplifies them for better performance.
SPIR-V is also the intermediate language used for Khronos' OpenCL 2.1, which was announced today alongside Vulkan. This means that SPIR-V is now the language used for both compute and graphics shaders, which in turn means that drivers only need to support one shader language. Previous versions of OpenCL used SPIR, which differed from the language used for OpenGL.
OpenCL 2.1 also supports writing compute applications in a special subset of C++. Nvidia already supports C++ code in CUDA, but this is the first time C++ can be used for cross-platform computing applications.
Vulkan will be available from today as a preview, with Khronos expecting to ship a final version later this year alongside supporting drivers. OpenCL 2.1 is also available from today as a provisional specification, with no word on when it'll be finalized.