uint32_t lbvh_node_offset;
uint32_t ir_offset;
+ uint32_t internal_node_offset;
};
static struct build_config
scratch->ir_offset = offset;
offset += ir_leaf_size * leaf_count;
+
+ scratch->internal_node_offset = offset;
offset += sizeof(struct radv_ir_box_node) * internal_count;
scratch->size = offset;
}
struct bvh_state {
- uint32_t internal_node_base;
uint32_t node_count;
uint32_t scratch_offset;
bvh_states[i].leaf_node_count += buildRangeInfo->primitiveCount;
bvh_states[i].node_count += buildRangeInfo->primitiveCount;
}
- bvh_states[i].internal_node_base = leaf_consts.dst_offset;
}
cmd_buffer->state.flush_bits |= flush_bits;
.src_ids = pInfos[i].scratchData.deviceAddress + src_scratch_offset,
.node_info = pInfos[i].scratchData.deviceAddress + bvh_states[i].scratch.lbvh_node_offset,
.id_count = bvh_states[i].node_count,
- .internal_node_base = bvh_states[i].internal_node_base,
+ .internal_node_base = bvh_states[i].scratch.internal_node_offset - bvh_states[i].scratch.ir_offset,
};
radv_CmdPushConstants(commandBuffer, cmd_buffer->device->meta_state.accel_struct_build.lbvh_main_p_layout,
.bvh = pInfos[i].scratchData.deviceAddress + bvh_states[i].scratch.ir_offset,
.node_info = pInfos[i].scratchData.deviceAddress + bvh_states[i].scratch.lbvh_node_offset,
.header = pInfos[i].scratchData.deviceAddress + bvh_states[i].scratch.header_offset,
- .internal_node_base = bvh_states[i].internal_node_base,
+ .internal_node_base = bvh_states[i].scratch.internal_node_offset - bvh_states[i].scratch.ir_offset,
};
radv_CmdPushConstants(commandBuffer, cmd_buffer->device->meta_state.accel_struct_build.lbvh_generate_ir_p_layout,
.ids_1 = pInfos[i].scratchData.deviceAddress + dst_scratch_offset,
.prefix_scan_partitions =
pInfos[i].scratchData.deviceAddress + bvh_states[i].scratch.ploc_prefix_sum_partition_offset,
- .internal_node_offset = bvh_states[i].internal_node_base,
+ .internal_node_offset = bvh_states[i].scratch.internal_node_offset - bvh_states[i].scratch.ir_offset,
};
radv_CmdPushConstants(commandBuffer, cmd_buffer->device->meta_state.accel_struct_build.ploc_p_layout,