From bd377cfe899da06903f9f16fae2d54aa178ef839 Mon Sep 17 00:00:00 2001 From: Konstantin Seurer Date: Wed, 20 Mar 2024 20:36:06 +0100 Subject: [PATCH] radv/rra: Move some code into handle_accel_struct_write The code is the same for all callers. Reviewed-by: Friedrich Vock Part-of: --- src/amd/vulkan/layers/radv_rra_layer.c | 33 ++++++++------------------ 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/src/amd/vulkan/layers/radv_rra_layer.c b/src/amd/vulkan/layers/radv_rra_layer.c index 06706fffde2..32b2a7b3761 100644 --- a/src/amd/vulkan/layers/radv_rra_layer.c +++ b/src/amd/vulkan/layers/radv_rra_layer.c @@ -174,12 +174,16 @@ exit: } static void -handle_accel_struct_write(VkCommandBuffer commandBuffer, struct vk_acceleration_structure *accel_struct, - struct radv_rra_accel_struct_data *data) +handle_accel_struct_write(VkCommandBuffer commandBuffer, VkAccelerationStructureKHR accelerationStructure) { VK_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer); + VK_FROM_HANDLE(vk_acceleration_structure, accel_struct, accelerationStructure); + struct radv_device *device = radv_cmd_buffer_device(cmd_buffer); + struct hash_entry *entry = _mesa_hash_table_search(device->rra_trace.accel_structs, accel_struct); + struct radv_rra_accel_struct_data *data = entry->data; + VkMemoryBarrier2 barrier = { .sType = VK_STRUCTURE_TYPE_MEMORY_BARRIER_2, .srcStageMask = VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, @@ -234,15 +238,10 @@ rra_CmdBuildAccelerationStructuresKHR(VkCommandBuffer commandBuffer, uint32_t in device->layer_dispatch.rra.CmdBuildAccelerationStructuresKHR(commandBuffer, infoCount, pInfos, ppBuildRangeInfos); simple_mtx_lock(&device->rra_trace.data_mtx); - for (uint32_t i = 0; i < infoCount; ++i) { - VK_FROM_HANDLE(vk_acceleration_structure, structure, pInfos[i].dstAccelerationStructure); - struct hash_entry *entry = _mesa_hash_table_search(device->rra_trace.accel_structs, structure); - assert(entry); - struct radv_rra_accel_struct_data *data = entry->data; + for (uint32_t i = 0; i < infoCount; ++i) + handle_accel_struct_write(commandBuffer, pInfos[i].dstAccelerationStructure); - handle_accel_struct_write(commandBuffer, structure, data); - } simple_mtx_unlock(&device->rra_trace.data_mtx); } @@ -256,13 +255,7 @@ rra_CmdCopyAccelerationStructureKHR(VkCommandBuffer commandBuffer, const VkCopyA simple_mtx_lock(&device->rra_trace.data_mtx); - VK_FROM_HANDLE(vk_acceleration_structure, structure, pInfo->dst); - struct hash_entry *entry = _mesa_hash_table_search(device->rra_trace.accel_structs, structure); - - assert(entry); - struct radv_rra_accel_struct_data *data = entry->data; - - handle_accel_struct_write(commandBuffer, structure, data); + handle_accel_struct_write(commandBuffer, pInfo->dst); simple_mtx_unlock(&device->rra_trace.data_mtx); } @@ -278,13 +271,7 @@ rra_CmdCopyMemoryToAccelerationStructureKHR(VkCommandBuffer commandBuffer, simple_mtx_lock(&device->rra_trace.data_mtx); - VK_FROM_HANDLE(vk_acceleration_structure, structure, pInfo->dst); - struct hash_entry *entry = _mesa_hash_table_search(device->rra_trace.accel_structs, structure); - - assert(entry); - struct radv_rra_accel_struct_data *data = entry->data; - - handle_accel_struct_write(commandBuffer, structure, data); + handle_accel_struct_write(commandBuffer, pInfo->dst); simple_mtx_unlock(&device->rra_trace.data_mtx); }