Module: Mesa
Branch: main
Commit: 07c1b23022133e9ba5b226a6479b44af75fa33a1
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=07c1b23022133e9ba5b226a6479b44af75fa33a1

Author: Konstantin Seurer <[email protected]>
Date:   Fri Jan 20 19:29:05 2023 +0100

radv/bvh: Implement compact encoding

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20818>

---

 src/amd/vulkan/bvh/bvh.h       | 1 +
 src/amd/vulkan/bvh/encode.comp | 4 ++++
 src/amd/vulkan/bvh/meson.build | 7 ++++++-
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/amd/vulkan/bvh/bvh.h b/src/amd/vulkan/bvh/bvh.h
index 0778db2af9f..56fe37864a4 100644
--- a/src/amd/vulkan/bvh/bvh.h
+++ b/src/amd/vulkan/bvh/bvh.h
@@ -165,6 +165,7 @@ struct radv_ir_header {
    uint32_t dispatch_size_y;
    uint32_t dispatch_size_z;
    radv_global_sync_data sync_data;
+   uint32_t dst_node_offset;
 };
 
 struct radv_bvh_triangle_node {
diff --git a/src/amd/vulkan/bvh/encode.comp b/src/amd/vulkan/bvh/encode.comp
index 8145c861552..609c9c10797 100644
--- a/src/amd/vulkan/bvh/encode.comp
+++ b/src/amd/vulkan/bvh/encode.comp
@@ -233,9 +233,13 @@ main()
          uint32_t dst_offset;
 
          if (type == radv_ir_node_internal) {
+#if COMPACT
+            dst_offset = atomicAdd(DEREF(args.header).dst_node_offset, 
SIZEOF(radv_bvh_box32_node));
+#else
             uint32_t offset_in_internal_nodes = offset - 
intermediate_leaf_nodes_size;
             uint32_t child_index = offset_in_internal_nodes / 
SIZEOF(radv_ir_box_node);
             dst_offset = dst_internal_offset + child_index * 
SIZEOF(radv_bvh_box32_node);
+#endif
 
             REF(radv_ir_box_node) child_node = 
REF(radv_ir_box_node)OFFSET(args.intermediate_bvh, offset);
             DEREF(child_node).bvh_offset = dst_offset;
diff --git a/src/amd/vulkan/bvh/meson.build b/src/amd/vulkan/bvh/meson.build
index bcd8bb6738f..ba5a757a1bc 100644
--- a/src/amd/vulkan/bvh/meson.build
+++ b/src/amd/vulkan/bvh/meson.build
@@ -28,7 +28,12 @@ bvh_shaders = [
   [
     'encode.comp',
     'encode',
-    [],
+    ['COMPACT=0'],
+  ],
+  [
+    'encode.comp',
+    'encode_compact',
+    ['COMPACT=1'],
   ],
   [
     'lbvh_generate_ir.comp',

Reply via email to