The next revision of the Vulkan API is now available.
Vulkan 1.2 has a final specification alongside multiple drivers that pass their conformance tests. Five hardware vendors (AMD, ARM, Imagination, Intel, and NVIDIA) have submitted passing drivers – and NVIDIA’s is available today on Windows and Linux. As usual, “developer beta” drivers are not for the general public. They are focused on getting features out to software developers as fast as possible, which probably means that the other parts are not kept up to date.Image Credit: The Khronos Group
The Khronos Group’s messaging seems to focus on two highlights:
- Increased support for HLSL (DirectX’s shading language)
- The Timeline Semaphore Primitive
For game developers, HLSL is a big deal. It is the shading language – code that runs directly on GPUs – that DirectX uses. Many engine developers write their shader code in HLSL and maintain tools that cross-compile it to other shading languages when they target non-DirectX platforms. Vulkan drivers ingest SPIR-V bytecode, which is compiled into by another language. The Khronos Group maintains a GLSL compiler, but Microsoft maintains a SPIR-V back-end for their DXC compiler.
With Vulkan 1.2, this SPIR-V target now supports all “native” HLSL feature up to Shader Model 6.2. This stops just short of DXR (which is Shader Model 6.3) but hardware vendors can plug the gaps, such as NVIDIA with their VKRay extension. Better support for HLSL means that Vulkan games should be easier to make because the developer must work around fewer rendering glitches (such as unexplained black splotches in materials or weird lighting oddities).
Also – a hidden gem: The HLSL blog post specifically mentions that “a cross-vendor solution for ray tracing is still in discussion”. It goes on to thank NVIDIA for trailblazing this with contributions to DXC, but our readers would probably appreciate the confirmation that cross-vendor ray tracing has been discussed at a graphics standards body.Image Credit: The Khronos Group
The other feature, the Timeline Semaphore Primitive, also seems very useful for developers. Synchronizing multiple threads is often a buggy nightmare. It’s good to get the graphics vendors involved in making one that works across both CPU and GPU, which synchronizes both threads (CPU) and queues (GPU). This should hopefully make it easier to efficiently load the GPU with fewer hiccups caused by timing bugs.
If you are not a developer, then it will be a little while before this directly affects you. It’s still good to see where the industry is moving, though.