From e2b7e478a52c7a56aac2942b27c05a8d2979f646 Mon Sep 17 00:00:00 2001 From: Konstantin Seurer Date: Tue, 29 Nov 2022 21:40:54 +0100 Subject: [PATCH] radv/rra: Fix setting some offsets Part-of: --- src/amd/vulkan/radv_rra.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/amd/vulkan/radv_rra.c b/src/amd/vulkan/radv_rra.c index 29bbe7b..04f1006 100644 --- a/src/amd/vulkan/radv_rra.c +++ b/src/amd/vulkan/radv_rra.c @@ -228,10 +228,10 @@ struct rra_accel_struct_header { uint32_t unused1; uint32_t geometry_description_count; VkGeometryTypeKHR geometry_type; - uint32_t internal_node_data_start; - uint32_t internal_node_data_end; - uint32_t leaf_node_data_start; - uint32_t leaf_node_data_end; + uint32_t internal_nodes_offset; + uint32_t leaf_nodes_offset; + uint32_t geometry_infos_offset; + uint32_t leaf_ids_offset; uint32_t interior_fp32_node_count; uint32_t interior_fp16_node_count; uint32_t leaf_node_count; @@ -288,10 +288,12 @@ rra_fill_accel_struct_header_common(struct radv_accel_struct_header *header, result.file_size = result.metadata_size + sizeof(struct rra_accel_struct_header) + internal_node_data_size + leaf_node_data_size; - result.internal_node_data_start = sizeof(struct rra_accel_struct_metadata); - result.internal_node_data_end = result.internal_node_data_start + internal_node_data_size; - result.leaf_node_data_start = result.internal_node_data_end; - result.leaf_node_data_end = result.leaf_node_data_start + leaf_node_data_size; + result.internal_nodes_offset = sizeof(struct rra_accel_struct_metadata); + result.leaf_nodes_offset = result.internal_nodes_offset + internal_node_data_size; + result.geometry_infos_offset = result.leaf_nodes_offset + leaf_node_data_size; + result.leaf_ids_offset = result.geometry_infos_offset; + if (!header->instance_count) + result.leaf_ids_offset += header->geometry_count * sizeof(struct rra_geometry_info); return result; } @@ -379,11 +381,6 @@ rra_dump_blas_header(struct radv_accel_struct_header *header, size_t parent_id_t file_header.post_build_info.bvh_type = RRA_BVH_TYPE_BLAS; file_header.geometry_type = header->geometry_count ? geometry_infos->type : VK_GEOMETRY_TYPE_TRIANGLES_KHR; - /* - * In BLASes in RRA, this seems to correspond to the start offset of the - * geometry info instead of leaf node data. - */ - file_header.leaf_node_data_start += leaf_node_data_size; fwrite(&file_header, sizeof(struct rra_accel_struct_header), 1, output); } -- 2.7.4