Vulkan is a low-overhead, cross-platform 3D graphics and compute API. Vulkan targets high-performance realtime 3D graphics applications such as video games and interactive media across all platforms. Compared with OpenGL and Direct3D 11, and like Direct3D 12 and Metal, Vulkan is intended to offer higher performance and more balanced CPU/GPU usage. Other major differences from Direct3D 11 (and prior) 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 best suited for 3D. In addition to its lower CPU usage, Vulkan is also able to better distribute work amongst multiple CPU cores.
Vulkan was first announced by the non-profit Khronos Group at GDC 2015. 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.
Video Vulkan (API)
Features
Vulkan is intended to provide a variety of advantages over other APIs as well as its 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, Metal 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 hardware 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 Android, Linux, Tizen, Windows 7, Windows 8, and Windows 10 (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.
AMD says that Vulkan supports close-to-metal control, enabling faster performance and better image quality across Windows 7, Windows 8.1, Windows 10, and Linux. No other graphics API offers the same powerful combination of OS compatibility, rendering features, and hardware efficiency.
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.
When releasing OpenCL version 2.2 the Khronos Group announced that OpenCL would be merging into Vulkan in the future.
Maps Vulkan (API)
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 7.x "Nougat" launched support for Vulkan on August 22, 2016. Android 8.0 "Oreo" has full support, but there are no news on making Vulkan available on Android 6.0.1 "Marshmallow".
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 conforming drivers were available. The specification and the open-source Vulkan SDK were released on February 16, 2016.
2016
On December 15, 2016, Unity Technologies announced that version 5.6 of their game engine, Unity, would support the Vulkan API.
2017
On February 9, 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.
On March 19, 2017, Cloud Imperium Games announced that Star Citizen would be using the Vulkan API instead of Direct3D.
On July 25, 2017, Crytek released a preview of CryEngine 5.4 which added beta support for Vulkan.
Software that supports Vulkan
Video games
- The Talos Principle - The first game with Vulkan rendering support.
- Dota 2 - Vulkan support was released in May 2016.
- Doom - Vulkan support was released in July 2016.
- vkQuake - A Vulkan Quake port was released in July 2016.
- Roblox - In March 2017, Vulkan support for Roblox was added.
- Star Citizen - In March 2017, the Director of Graphics Programming for Cloud Imperium Games, Alistair Brown, 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 - In March 2017, the developers added beta support for Vulkan exclusively for the Linux port.
- Ballistic Overkill - Vulkan support was released in May 2017.
- Quake III Arena Kenny Edition - A Quake 3 engine modification added Vulkan support in May 2017.
- Ashes of the Singularity: Escalation - Vulkan support will be added in an upcoming release.
- vkDoom3 - a Vulkan port of Doom3 BFG support was released in August 2017.
- Wolfenstein II: The New Colossus - Launched in 2017 with only Vulkan support
- X4: Foundations - To be launched in 2018 with a Vulkan-only graphics engine
- X-Plane 11 - Laminar Research announces in the second half of 2017 their intentions to move from OpenGL to Vulkan, starting the testings in 2018.
Game console emulators
- Beetle/Mednafen PSX, Libretro port of Mednafen PlayStation
- Dolphin
- Libretro port of Mupen64Plus
- RPCS3
- PPSSPP
- Xenia
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.
- Torque 3D - In April 2016, the developers community announced they will include Vulkan support.
- Quake Engine - Vulkan support was added in July 2016.
- id Tech 3 - Vulkan support was added in May 2017.
- id Tech 4 - Vulkan support was added in August 2017.
- id Tech 6 - In May 2016, id Software announced Doom, running the id Tech 6 engine, would support Vulkan.
- Xenko - Vulkan support was added in July 2016.
- Unity - The engine has support for Vulkan since version 5.6.
- CryEngine - Support for Vulkan was added in the 5.4 release.
- Intrinsic - A free and open-source cross-platform game engine that supports Vulkan.
- Unigine - In April 2017, Unigine Corp announced that Vulkan support for Unigine is in the roadmap for 2017.
- Abyss Engine - In May 2017, Deep Silver FISHLABS released Galaxy on Fire 3 on Android with Vulkan support.
- Banshee 3D - A free and open-source cross-platform game engine that supports Vulkan.
Rendering engines
- UX3D Engine - Vulkan support was added in September 2017.
Development tools
- GPU PerfStudio 3.6 supports Vulkan on Linux and Windows.
- GTK+ Scene Graph Kit, released on March 2017 as part of GTK+ 3.90, has a Vulkan rendering path.
- RenderDoc has support for Vulkan, since it was added on February 10, 2016.
OS components
The Vulkan Window System Integration (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.
See also
- Direct3D 12 - main competitor of Vulkan
- OpenGL - another graphics API by the Khronos Group
- OpenCL - a heterogeneous computing framework by the Khronos Group
- Mantle - a low-level graphics and compute API from AMD, the foundation of Vulkan
- Metal - a low-level graphics and compute API for iOS and macOS
- AMDGPU - AMD's fully open-source unified graphics driver for Linux
Notes
References
Further reading
- Vulkan Programming Guide: The Official Guide to Learning Vulkan (OpenGL), Nov 10, 2016, by Graham Sellers and John Kessenich ISBN 978-0-1344-64541
- Introduction to Computer Graphics and the Vulkan API, Jul 1, 2017, by Kenwright ISBN 978-1-5486-16175
- Vulkan Cookbook, Apr 28, 2017, by Pawel Lapinski ISBN 978-1-7864-68154
External links
- Vulkan 1.0 specification
- Vulkan hardware database
- Vulkan Continues To Show Its Gaming Strength On Low-End Hardware
Source of the article : Wikipedia