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)
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 (freely licensed 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.
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)
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".
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.
On December 15, 2016, Unity Technologies announced that version 5.6 of their game engine, Unity, would support the Vulkan API.
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.
On February 26, 2018, Khronos Group announced that the Vulkan API became available to all on macOS and iOS through the MoltenVK library, which enables Vulkan to run on top of Metal. Previously MoltenVK was a proprietary and commercially licensed solution, but Valve made an arrangement with developer Brenwill Workshop Ltd to open source MoltenVK under the Apache 2.0 license and as a result the library will be available to all. Valve also announced that Dota 2 can as of 26 February 2018 run on macOS using the Vulkan API, which is based on MoltenVK.
On March 7, 2018, Vulkan 1.1 was announced by the Khronos Group. This first major update to the API standardized several extensions, such as multi-view, device groups, cross-process and cross-API sharing, advanced compute functionality, HLSL support, and YCbCr support. At the same time it also brings better compatibility with DirectX 12, explicit multi-GPU support and lays the groundwork for next generation of GPU's. Alongside Vulkan 1.1, SPIR-V also got updated to version 1.3.
Software that supports Vulkan
- 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 was added in an after release update.
- 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
- Libretro port of Mupen64Plus
- 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.
- Godot - a 2D and 3D, cross-platform, Open Source, game engine. In late February, 2018 the developers announced they will shift their focus from solely using OpenGL ES 3 to target all platforms, to instead using a combination of OpenGL ES 2 and Vulkan.
- UX3D Engine - Vulkan support was added in September 2017.
- 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.
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.
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.
- 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
- 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
- Vulkan 1.0 specification
- Vulkan hardware database
- Vulkan Continues To Show Its Gaming Strength On Low-End Hardware
Source of article : Wikipedia