Vulkan - graphics and compute API
The standards body Khronos released the successor to OpenGL, Vulkan-1.0 in February 2016, ushering in the next generation of Open, Cross Platform API for graphics and compute.
Pros:
-
Very low CPU overhead enables low power consumption and higher performance.
-
Multi-threaded for modern CPUs and GPUs: Designed from the ground up for multi-threading, with state localized within command buffers and explicit synchronisation primitives.
-
Cross platform: source Wikipedia “Vulkan runs natively on Android, Linux, BSD Unix, QNX, Haiku, Nintendo Switch, Raspberry Pi, Stadia, Fuchsia, Tizen, and Windows 7, 8, 10, and 11. MoltenVK provides freely-licensed third-party support for macOS, iOS and tvOS by wrapping over Apple’s Metal API.”
- Runtime extension system, enabling fine-grained support for latest hardware features, including:
- Ray Tracing
- Mesh Shaders
- Vulkan layers that can be enabled at runtime:
- Validation layers
- API output layers
- Best practice guides
Cons:
-
Low level, responsibility for many tasks moves from driver into application scope. Developers must explicitly configure settings, allocate and manage memory, manage transferring of data to/from GPU and dispatching and synchronizing CPU and GPU operations.
-
Requires more knowledge and code to implement even simple features - 1500 lines of code to just render a textured triangle!
Useful links:
-
VulkanSDK LUNARG’s website containing the VulkanSDK - provides a single package with headers and libs for Windows, Linux and macOS.
-
AndroidNDK - Googles Android NDK
-
vulkan.org - official website
- Learning:
- Tools:
- Drivers
- SDK
- Profilers and debuggers
- Frameworks - includes VulkanSceneGraph :-)
- Profiles
- Events
- News
- Vulkan-SC Vulkan for safety-critical systems
Prev: Low Level APIs | Next: High Level APIs |