Skip to content

radv: LBVH!

Konstantin Seurer requested to merge KonstantinSeurer/mesa:bvh-sort into main

I can't believe that this actually works! The performance improvement isn't that large for applications that already perform well with the current acceleration structures (meaning everything that isn't procedually generated) but the improvement with GravityMark speaks for itself:

Without this MR: ~13fps (10000 asteroids)
With this MR: ~250fps (10000 asteroids)
With this MR: ~60fps (200000 asteroids)

Vulkan Renderer:

19ms -> 17ms

Quake II RTX:

No changes. D:

The 'new' bvh building code uses a combination of https://developer.nvidia.com/blog/thinking-parallel-part-iii-tree-construction-gpu/ and https://fuchsia.googlesource.com/fuchsia/+/refs/heads/main/src/graphics/lib/compute/radix_sort/ to sort the nodes along a space filling curve before creating the internal nodes.

Test run totals:
  Passed:        22418/23426 (95.7%)
  Failed:        0/23426 (0.0%)
  Not supported: 1008/23426 (4.3%)
  Warnings:      0/23426 (0.0%)
  Waived:        0/23426 (0.0%)
Edited by Konstantin Seurer

Merge request reports