radv: use radv_CmdDispatchIndirect() in the accel struct path
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33599>
This commit is contained in:
committed by
Marge Bot
parent
a03e391aa3
commit
361a598b4c
@@ -788,7 +788,6 @@ radv_CmdCopyAccelerationStructureKHR(VkCommandBuffer commandBuffer, const VkCopy
|
||||
VK_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
|
||||
VK_FROM_HANDLE(vk_acceleration_structure, src, pInfo->src);
|
||||
VK_FROM_HANDLE(vk_acceleration_structure, dst, pInfo->dst);
|
||||
VK_FROM_HANDLE(radv_buffer, src_buffer, src->buffer);
|
||||
struct radv_device *device = radv_cmd_buffer_device(cmd_buffer);
|
||||
struct radv_meta_saved_state saved_state;
|
||||
|
||||
@@ -817,9 +816,9 @@ radv_CmdCopyAccelerationStructureKHR(VkCommandBuffer commandBuffer, const VkCopy
|
||||
cmd_buffer->state.flush_bits |= radv_dst_access_flush(cmd_buffer, VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT,
|
||||
VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT, 0, NULL, NULL);
|
||||
|
||||
radv_indirect_dispatch(
|
||||
cmd_buffer, src_buffer->bo,
|
||||
vk_acceleration_structure_get_va(src) + offsetof(struct radv_accel_struct_header, copy_dispatch_size));
|
||||
radv_CmdDispatchIndirect(commandBuffer, src->buffer,
|
||||
src->offset + offsetof(struct radv_accel_struct_header, copy_dispatch_size));
|
||||
|
||||
radv_meta_restore(&saved_state, cmd_buffer);
|
||||
}
|
||||
|
||||
@@ -877,7 +876,6 @@ radv_CmdCopyAccelerationStructureToMemoryKHR(VkCommandBuffer commandBuffer,
|
||||
{
|
||||
VK_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
|
||||
VK_FROM_HANDLE(vk_acceleration_structure, src, pInfo->src);
|
||||
VK_FROM_HANDLE(radv_buffer, src_buffer, src->buffer);
|
||||
struct radv_device *device = radv_cmd_buffer_device(cmd_buffer);
|
||||
const struct radv_physical_device *pdev = radv_device_physical(device);
|
||||
struct radv_meta_saved_state saved_state;
|
||||
@@ -907,9 +905,9 @@ radv_CmdCopyAccelerationStructureToMemoryKHR(VkCommandBuffer commandBuffer,
|
||||
cmd_buffer->state.flush_bits |= radv_dst_access_flush(cmd_buffer, VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT,
|
||||
VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT, 0, NULL, NULL);
|
||||
|
||||
radv_indirect_dispatch(
|
||||
cmd_buffer, src_buffer->bo,
|
||||
vk_acceleration_structure_get_va(src) + offsetof(struct radv_accel_struct_header, copy_dispatch_size));
|
||||
radv_CmdDispatchIndirect(commandBuffer, src->buffer,
|
||||
src->offset + offsetof(struct radv_accel_struct_header, copy_dispatch_size));
|
||||
|
||||
radv_meta_restore(&saved_state, cmd_buffer);
|
||||
|
||||
/* Set the header of the serialized data. */
|
||||
|
||||
@@ -12084,9 +12084,12 @@ radv_CmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer _buffer, VkDevi
|
||||
{
|
||||
VK_FROM_HANDLE(radv_cmd_buffer, cmd_buffer, commandBuffer);
|
||||
VK_FROM_HANDLE(radv_buffer, buffer, _buffer);
|
||||
const uint64_t va = buffer->addr + offset;
|
||||
struct radv_device *device = radv_cmd_buffer_device(cmd_buffer);
|
||||
struct radv_dispatch_info info = {.indirect_va = buffer->addr + offset};
|
||||
|
||||
radv_indirect_dispatch(cmd_buffer, buffer->bo, va);
|
||||
radv_cs_add_buffer(device->ws, cmd_buffer->cs, buffer->bo);
|
||||
|
||||
radv_compute_dispatch(cmd_buffer, &info);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -12102,17 +12105,6 @@ radv_unaligned_dispatch(struct radv_cmd_buffer *cmd_buffer, uint32_t x, uint32_t
|
||||
radv_compute_dispatch(cmd_buffer, &info);
|
||||
}
|
||||
|
||||
void
|
||||
radv_indirect_dispatch(struct radv_cmd_buffer *cmd_buffer, struct radeon_winsys_bo *bo, uint64_t va)
|
||||
{
|
||||
struct radv_device *device = radv_cmd_buffer_device(cmd_buffer);
|
||||
struct radv_dispatch_info info = {.indirect_va = va};
|
||||
|
||||
radv_cs_add_buffer(device->ws, cmd_buffer->cs, bo);
|
||||
|
||||
radv_compute_dispatch(cmd_buffer, &info);
|
||||
}
|
||||
|
||||
static void
|
||||
radv_trace_trace_rays(struct radv_cmd_buffer *cmd_buffer, const VkTraceRaysIndirectCommand2KHR *cmd,
|
||||
uint64_t indirect_va)
|
||||
|
||||
@@ -793,8 +793,6 @@ void radv_compute_dispatch(struct radv_cmd_buffer *cmd_buffer, const struct radv
|
||||
*/
|
||||
void radv_unaligned_dispatch(struct radv_cmd_buffer *cmd_buffer, uint32_t x, uint32_t y, uint32_t z);
|
||||
|
||||
void radv_indirect_dispatch(struct radv_cmd_buffer *cmd_buffer, struct radeon_winsys_bo *bo, uint64_t va);
|
||||
|
||||
uint32_t radv_init_fmask(struct radv_cmd_buffer *cmd_buffer, struct radv_image *image,
|
||||
const VkImageSubresourceRange *range);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user