Joshua Ashton Is Porting Vulkan Raytracing to AMD’s Vega, Polaris, Navi


Vulkan raytracing is being ported to AMD's Vega, Polaris, and Navi graphics cards by Joshua Ashton, known as the developer behind the DirectX to Vulkan translation layer (DXVK), which allows running 3D applications on Linux using Wine.

In a blog post penned just yesterday, Ashton explained that there is no reason for Vulkan raytracing to be limited to Big Navi (AMD's Radeon RX 6000 graphics cards), even though this doesn't guarantee that the performance will be acceptable on older hardware.

Vulkan API Is Officially Ray Tracing Ready With SDK, Tools, And Drivers

Compute ray tracers have existed since forever, so what does the new hardware bring to the table? The answer is... very little.

The new hardware brings two instructions, bvh_intersect_ray, and bvh64_intersect_ray to accelerate BVH ray intersection tests. The functionality is pretty straight forward for the most part: address/id of the bvh node and the ray information goes in, ray distance and barycentric coordinates come out for triangles, and a ordered list (by distance) of children that were hit for box intersections. There is a slight bit more to it, as well such as another triangle modes that can give triangle IDs instead of barycentrics (not sure what that's useful for).

This is nothing that can't simply be emulated by hand with a shader, so as soon as Bas had it working on RDNA 2, I started writing something to lower this instruction into the logic behind it for older generations.

Vulkan raytracing on older generations of AMD hardware is possible and there is no technical reason to not expose it. I am not sure how performant it is going to be yet by the end of everything but it should at least be possible to eventually run games with it.

If I am honest, I see no reason why AMD should not expose this in their open/proprietary drivers, even if it runs bad. In my opinion it would be a better marketing strategy to show a solid performance delta in ray-tracing performance from say Vega/RDNA1 -> RDNA2 rather than artificially locking out customers with older GPUs.

Via Mesa's unofficial RADV (Radeon Vulkan driver), he already managed to expose some of the functionality. You can check out his work on this repository, though RADV as a whole isn't ready yet to run actual games. When that happens, we'll be sure to let you know.

In other Linux gaming news, NVIDIA is collaborating with Valve to bring DLSS support to Proton; Vulkan titles will have it enabled this month, while DirectX support is scheduled for this Fall.