Last summer, the Khronos Group announced its intention to replace the current OpenGL graphics API with a next-generation API that is much leaner and gives more direct control over gaming hardware such as the CPU and the GPU.
Some gaming developers have complained for years that while graphics APIs such as DirectX and OpenGL can standardize a variety of different CPUs and GPUs, that abstraction layer was too thick, and it significantly reduced the performance of that hardware. This is why it's game developers that have been pushing for an API like AMD's Mantle, which was then given to Khronos to modify and extend and turn it into the next-generation Vulkan API.
Although Khronos has just announced the new Vulkan API at GDC, Imagination has already created a proof of concept driver for its PowerVR GPUs. The company has also ported one of its OpenGL ES 3.0 demos to the new API, which it showed at the event.
As Vulkan is meant to cover all devices from embedded to desktop, it's no surprise that it should work on mobile GPUs as well. In fact, Khronos said that all hardware that supports the OpenGL ES 3.1 API right now will support Vulkan, too. In the demo, Imagination showed the following effects:
- 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
Even though the OpenGL ES API was created with efficiency in mind so it's suitable for the mobile environment, the Vulkan API still manages to go beyond that with a much higher CPU efficiency due to the lower overhead and the more direct access to the hardware. Such a leaner API can lead to higher performance in games and drivers that are less complex and easier to write and update than ever before.
Imagination said that higher-level management of the GPU will now have to be performed in the application itself, rather than in the driver, which could be extra work for developers. However, this could be offset by the fact that developers don't have to work around the driver anymore, either. They can tell the GPU exactly what they want it to do. If that application uses an engine to do the rendering, the management will be done by that engine anyway, so most developers can get the Vulkan speed-up virtually for free, with no extra work.
Along with the free performance gain, Vulkan will also give games more consistent performance, which isn't possible right now because different GPU hardware can respond differently to certain GPU commands in OpenGL.
The Vulkan API, unlike OpenGL ES, is much more parallel as well, and it can do work in multiple threads more easily. Rendering commands can now be created on all of a CPU's cores, which can be useful to games that need to recreate their render commands often (games such as Minecraft).
Vulkan also has a much more intuitive and transparent design, which gives developers more control over their own applications.
“Vulkan gives you the advantage of knowing exactly the state that you are setting. Take for example the glActiveTexture() function in OpenGL ES: it is not obvious whether this function will change the state globally for all shaders or maybe change the state just for the current shader program.
In Vulkan, this is explicitly defined: you know that when you bind your resources, it is changing the state for the bound command buffer because that is the first parameter to the function."
In OpenGL ES, the memory allocation process is a black box. In Vulkan, the application knows how much and what type of memory it is using. This type of control can help to further optimize resource-heavy applications.
Khronos promised to release the full Vulkan specs later this year and have hardware supporting the new API soon after that. Imagination also said that it will continue to work on porting the Vulkan API to its PowerVR GPUs and release example source code in the near future.