radv/bvh/encoder: Move dst_node initialization into the loop
authorKonstantin Seurer <konstantin.seurer@gmail.com>
Thu, 19 Jan 2023 21:10:24 +0000 (22:10 +0100)
committerMarge Bot <emma+marge@anholt.net>
Fri, 24 Feb 2023 15:14:40 +0000 (15:14 +0000)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20818>

src/amd/vulkan/bvh/encode.comp

index 877e6e2..8145c86 100644 (file)
@@ -153,13 +153,7 @@ main()
    REF(radv_ir_box_node) src_node = INDEX(radv_ir_box_node, intermediate_internal_nodes, global_id);
    radv_ir_box_node src = DEREF(src_node);
 
-  uint32_t dst_node_offset = dst_internal_offset + global_id * SIZEOF(radv_bvh_box32_node);
    bool is_root_node = global_id == DEREF(args.header).ir_internal_node_count - 1;
-   if (is_root_node)
-      dst_node_offset = id_to_offset(RADV_BVH_ROOT_NODE);
-
-   REF(radv_bvh_box32_node) dst_node = REF(radv_bvh_box32_node)(OFFSET(args.output_bvh, dst_node_offset));
-   uint32_t node_id = pack_node_id(dst_node_offset, radv_bvh_node_box32);
 
    for (;;) {
       /* Make changes to the current node's BVH offset value visible. */
@@ -173,6 +167,9 @@ main()
       if (bvh_offset == RADV_NULL_BVH_OFFSET)
          break;
 
+      REF(radv_bvh_box32_node) dst_node = REF(radv_bvh_box32_node)(OFFSET(args.output_bvh, bvh_offset));
+      uint32_t node_id = pack_node_id(bvh_offset, radv_bvh_node_box32);
+
       uint32_t found_child_count = 0;
       uint32_t children[4] = {RADV_BVH_INVALID_NODE, RADV_BVH_INVALID_NODE,
                               RADV_BVH_INVALID_NODE, RADV_BVH_INVALID_NODE};