Rahul Sharma (Editor)

Vulkan (API)

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Platform
  
Cross-platform

Developer(s)
  
Khronos Group, developed from AMD's Mantle

Initial release
  
16 February 2016; 13 months ago (2016-02-16)

Stable release
  
1.0.43 (11 March 2017; 23 days ago (2017-03-11)) [±]

Operating system
  
Android, Linux, Tizen, Microsoft Windows

Type
  
3D graphics and compute API

Vulkan is a low-overhead, cross-platform 3D graphics and compute API first announced at GDC 2015 by the Khronos Group. The Vulkan API was initially referred to as the "next generation OpenGL initiative," or "OpenGL next" by Khronos, but use of those names was discontinued once the Vulkan name was announced. Vulkan is derived from and built upon components of AMD's Mantle API, which was donated by AMD to Khronos with the intent of giving Khronos a foundation on which to begin developing a low-level API that they could standardize across the industry, much like OpenGL.

Contents

Like OpenGL, Vulkan targets high-performance realtime 3D graphics applications such as video games and interactive media across all platforms, and can offer higher performance and more balanced CPU/GPU usage, much like Direct3D 12 and Mantle. Other major differences to Direct3D (prior to version 12) and OpenGL are Vulkan being a considerably lower level API and offering parallel tasking. Vulkan also has the ability to render 2D graphics applications, however it is generally suited for 3D. In addition to its lower CPU usage, Vulkan is also able to better distribute work amongst multiple CPU cores.

Features

Vulkan is intended to provide a variety of advantages over other APIs as well as its spiritual predecessor, OpenGL. Vulkan offers lower overhead, more direct control over the GPU, and lower CPU usage. The overall concept and feature set of Vulkan is similar to Direct3D 12 and Mantle.

Intended advantages of Vulkan over previous-generation APIs include:

  • Vulkan API is well suited for high-end graphics cards as well as for graphics solutions present on mobile devices (OpenGL has a specific subset for mobile devices called OpenGL ES; it's still an alternative API in Vulkan supporting devices).
  • In contrast to Direct3D 12, Vulkan is available on multiple modern operating systems; like OpenGL, the Vulkan API is not locked to a single OS or device form factor. As of release, Vulkan runs on Windows 7, Windows 8, Windows 10, Tizen, Linux, and Android (third party support for iOS and macOS is also available)
  • Reduced driver overhead, reducing CPU workloads.
  • Reduced load on CPUs through the use of batching, leaving the CPU free to do more computation or rendering than otherwise.
  • Better scaling on multi-core CPUs. Direct3D 11 and OpenGL 4 were initially designed for use with single-core CPUs and only received augmentation to be executed on multi-cores. Even when application developers use the augmentations, the API regularly does not scale well on multi-cores.
  • OpenGL uses the high-level language GLSL for writing shaders which forces each OpenGL driver to implement its own compiler for GLSL that executes at application runtime to translate the program's shaders into the GPU's machine code. Vulkan drivers are supposed to ingest instead shaders already translated into an intermediate binary format called SPIR-V (Standard Portable Intermediate Representation), analogous to the binary format that HLSL shaders are compiled into in Direct3D. By allowing shader pre-compilation, application initialization speed is improved and a larger variety of shaders can be used per scene. A Vulkan driver only needs to do GPU specific optimization and code generation, resulting in easier driver maintenance, and eventually smaller driver packages (currently GPU vendors still have to include OpenGL/CL).
  • Unified management of compute kernels and graphical shaders, eliminating the need to use a separate compute API in conjunction with a graphics API.
  • NVIDIA notes that OpenGL is still a great option for a lot of use-cases, as it does come at a much lower complexity and maintenance burden than Vulkan, while in many cases still providing great overall performance.

    Planned features

    At SIGGRAPH 2016, Khronos announced that Vulkan would be getting support for automatic multi-GPU features, similar to what is offered by Direct3D 12. Multi-GPU support included in-API removes the need for SLI or Crossfire which requires graphics cards to be of the same model. API multi-GPU instead allows the API to intelligently split the workload among two or more completely different GPUs. For example, integrated GPUs included on the CPU can be used in conjunction with a high-end dedicated GPU for a slight performance boost.

    History

    The Khronos Group began a project to create a next generation graphics API in July 2014 with a kickoff meeting at Valve Corporation. At SIGGRAPH 2014, the project was publicly announced with a call for participants.

    According to the US Patent and Trademark Office, the trademark for Vulkan was filed on February 19, 2015.

    Vulkan was formally named and announced at Game Developers Conference 2015, although speculation and rumors centered around a new API existed beforehand and referred to it as "glNext".

    2015

    In early 2015, LunarG (funded by Valve) developed and showcased a Linux driver for Intel which enabled Vulkan compatibility on the HD 4000 series integrated graphics, despite the open source Mesa drivers not being fully compatible with OpenGL 4.0 until later that year. There is still the possibility of Sandy Bridge support, since it supports compute through Direct3D11.

    On August 10, 2015, Google announced that future versions of Android would support Vulkan. Android Nougat launched support for Vulkan on August 22, 2016.

    On December 18, 2015, the Khronos Group announced that the 1.0 version of the Vulkan specification was nearly complete and would be released when conformant drivers were available. The specification and the open-source Vulkan SDK were released on February 16, 2016.

    2016

    In December of 2016, Unity Technologies announced that version 5.6 of their game engine, Unity, would support the Vulkan API.

    2017

    In February of 2017, Croteam announced that it would be adopting the Vulkan API in its games and leveraging it to make their games more cross-platform friendly. In March of 2017, Cloud Imperium Games announced Star Citizen would be using Vulkan API instead of DirectX.

    Video games

  • The Talos Principle – The first game with Vulkan rendering support.
  • Dota 2 – Vulkan support released in May 2016.
  • Doom – Vulkan support released in July 2016.
  • vkQuake – A Vulkan Quake port was released in July 2016.
  • Roblox – As of March 2017, Roblox now has support for Vulkan.
  • Star Citizen – As of March 2017, the Director of Graphics Programming for Cloud Imperium Games, Alistair Brown, has announced on the official Star Citizen forums that Cloud Imperium will now only focus on implementing Vulkan into Star Citizen and Squadron 42. Support for DirectX 12 will be dropped as it would require customers to use Windows 10.
  • Mad Max (2015 video game) – Beta Vulkan support exclusively for Linux port released in March 2017.
  • Game console emulators

  • Beetle/Mednafen PSX, Libretro port of Mednafen PlayStation
  • Dolphin Emulator
  • Libretro port of Mupen64Plus
  • RPCS3
  • PPSSPP
  • Game engines

  • Source 2 – In March 2015, Valve Corporation announced the Source 2 engine, the successor engine to the original Source engine, would support Vulkan.
  • Serious Engine 4 – In February 2016, Croteam announced that they were supporting Vulkan in their Serious Engine.
  • Unreal Engine 4 – In February 2016, Epic Games announced Unreal Engine 4 support for Vulkan at Samsung's Galaxy S7 Unpacked event.
  • id Tech 6 – In May 2016, id Software announced Doom, running the id Tech 6 engine, would support Vulkan.
  • CryEngine – Crytek has plans to include Vulkan support in CryEngine.
  • Unity – The engine currently has a beta version supporting Vulkan; it is on track to be included in version 5.6 targeted for March 2017.
  • Xenko – Vulkan support was added in July 2016.
  • Intrinsic – A free Vulkan based cross-platform game engine published on GitHub.
  • Torque 3D – In April 2016, the developers community announced they will include Vulkan support.
  • Development tools

  • GPU PerfStudio 3.6 supports Vulkan on Windows and Linux.
  • GTK+ Scene Graph Kit, released on March 2017 as part of GTK+ 3.90 has a Vulkan rendering path.
  • OS components

    The Vulkan Window System Interface (WSI) does for Vulkan what EGL does for OpenGL ES. EGL is used by OpenGL ES programs to interface with the native platform windowing system. EGL handles context management, surface binding and rendering synchronization.

    Compatibility

    Initial specifications stated that Vulkan will work on hardware that currently supports OpenGL ES 3.1 or OpenGL 4.x and up. As Vulkan support requires new graphics drivers, this does not necessarily imply that every existing device that supports OpenGL ES 3.1 or OpenGL 4.x will have Vulkan drivers available.

    Android 7.0 Nougat supports Vulkan. The software was released in August 2016.

    Vulkan support for iOS and macOS has not been announced by Apple, but at least one company provides a Vulkan implementation that runs on top of Metal on iOS and macOS devices.

    References

    Vulkan (API) Wikipedia