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 <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18370>
This commit is contained in:
Friedrich Vock
2022-09-01 16:25:58 +02:00
committed by Marge Bot
parent e55b60d0bb
commit 4f846468e1

View File

@@ -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: