Khronos Group’s ‘Vulkan’ Low Level API and ‘OpenCL 2.’1 Platform Detailed
The Khronos Group unveiled the successor of the OpenGL API a couple of days with much aplomb, this is our belated coverage of the same. Vulkan high performance API, which was previously known as glNext has been built from the scratch up to not only address the shortcomings of the OpenGL platform but also build upon the recent trend of low level design in APIs.
Vulkan API and Open CL 2.1 - the cross platform, cross GPU API of the open world
Now some of the technical details mentioned are in the form of pure coding - something that is frankly above my pay grade, so if you are interested in checking the software side of things out be sure to head over to the official site. Vulkan was basically designed more or less like a GPU - atleast that is what they state, and the inherent advantage of having a user and kernel space optimized like that means it is actually much more efficient in handling resources than the previous API. This generation of APIs is all about the low level advantage and given below is a rudimentary benchmark of how vulkan reduces load on the CPU under the same scenario (which means that it would result in high performance gains if even a small percent of the GPU is idling).
Vulkan is a unified specification that minimizes driver overhead and enables multi-threaded GPU command preparation for optimal graphics and compute performance on diverse mobile, desktop, console and embedded platforms. Vulkan also provides the direct GPU control demanded by sophisticated game engines, middleware and applications with the cross vendor performance and functional portability resulting from simpler, more predictable drivers. The layered design of Vulkan enables multiple IHVs to plug into a common, extensible architecture for code validation, debugging and profiling during development without impacting performance.
The OpenCL C++ kernel language is a static subset of C++14 and significantly boosts parallel programming productivity by providing lambda functions, classes, templates, operator overloading, and many other C++ features to free developers from low-level coding details without sacrificing performance. OpenCL C++ enables reusable device libraries and containers for easily sharable code that is fast and elegant, and templates enables meta-programming for highly adaptive software that cleanly delivers performance portability.
Vulkan and OpenCL 2.1 are now sharing core intermediate language technologies resulting in SPIR-V; a revolution in the Khronos Standard Portable Intermediate Representation initially used by OpenCL™, now fully defined by Khronos with native support for shader and kernel features. SPIR-V splits the compiler chain, enabling high-level language front-ends to emit programs in a standardized intermediate form to be ingested by Vulkan or OpenCL drivers. Eliminating the need for a built-in high-level language source compiler significantly reduces GPU driver complexity and will enable a diversity of language front-ends. Additionally, a standardized IR provides a measure of shader IP protection, accelerated shader load times and enables developers to use a common language front-end, improving shader reliability and portability across multiple implementations.
Imagination has already developed a proof of concept driver for Vulkan on their PowerVR Rogue GPUs and ran the Library Demo on it (shown above) which is was originally an OpenGL ES 3.0 based demo, ported to the brand new API. The demo showcases:
- High-quality, physically-based shading
- HDR (High dynamic range) rendering
- 20 unique 2K PVRTC textures
- 2 GiB of texture data compressed to 266 MiB using Imagination’s PVRTC texture compression standard
- 4 x MSAA (Multi-sample anti-aliasing)
- 16 x Anisotropic texture filtering
- Physically-correct material parameters
- Low CPU usage, very efficient GPU usage
- Correct specular reflections on reflective materials
- More than 250,000 triangles
- Post processing effects: saturation, exposure and tone mapping
Considering this demo is designed for mobile devices that is pretty damn impressive. Mobile platforms have had the brute force to come close to the console platform for quite some time now, but always lacked software and the necessary developer ecosystem. While, the software part now appears to have been taken care of, the ecosystem problem still remains. Hopefully, all these new entrants will help catalyze a more enthusiastic environment on the mobile gaming platform.