From 4f846468e1397a735b7ed7f0956cacc3c78129cb Mon Sep 17 00:00:00 2001 From: Friedrich Vock Date: Thu, 1 Sep 2022 16:25:58 +0200 Subject: [PATCH] radv: Use radv_CmdUpdateBuffer instead of radv_update_buffer_cp for geometry info writes This fixes some hangs and avoids an assert if geometry infos are bigger than 1KB. Fixes: 97ffaea5 ("radv: Add Radeon Raytracing Analyzer capturing layer") Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_acceleration_structure.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/amd/vulkan/radv_acceleration_structure.c b/src/amd/vulkan/radv_acceleration_structure.c index 40bab067872..6f1b7ca9a48 100644 --- a/src/amd/vulkan/radv_acceleration_structure.c +++ b/src/amd/vulkan/radv_acceleration_structure.c @@ -944,9 +944,13 @@ radv_CmdBuildAccelerationStructuresKHR( radv_update_buffer_cp(cmd_buffer, radv_buffer_get_va(accel_struct->bo) + accel_struct->mem_offset + base, (const char *)&header + base, sizeof(header) - base); - radv_update_buffer_cp(cmd_buffer, - radv_accel_struct_get_va(accel_struct) + bvh_states[i].node_offset, - geometry_infos, geometry_infos_size); + + struct radv_buffer accel_struct_buffer; + radv_buffer_init(&accel_struct_buffer, cmd_buffer->device, accel_struct->bo, + accel_struct->size, accel_struct->mem_offset); + radv_CmdUpdateBuffer(commandBuffer, radv_buffer_to_handle(&accel_struct_buffer), + bvh_states[i].node_offset, geometry_infos_size, geometry_infos); + radv_buffer_finish(&accel_struct_buffer); } fail: