From 7a8063a4fa12077d211b9093bf40436b1f36b9ed Mon Sep 17 00:00:00 2001 From: Konstantin Seurer Date: Thu, 21 Apr 2022 20:48:43 +0200 Subject: [PATCH] radv: Indirect unaligned dispatches Closes: #6251 Signed-off-by: Konstantin Seurer Reviewed-by: Bas Nieuwenhuizen Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 5b7aa8b6d45..117bcb9de28 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -7319,6 +7319,15 @@ radv_emit_dispatch_packets(struct radv_cmd_buffer *cmd_buffer, struct radv_pipel if (info->indirect) radv_cs_add_buffer(ws, cs, info->indirect); + if (info->unaligned) { + radeon_set_sh_reg_seq(cs, R_00B81C_COMPUTE_NUM_THREAD_X, 3); + radeon_emit(cs, S_00B81C_NUM_THREAD_FULL(compute_shader->info.cs.block_size[0])); + radeon_emit(cs, S_00B81C_NUM_THREAD_FULL(compute_shader->info.cs.block_size[1])); + radeon_emit(cs, S_00B81C_NUM_THREAD_FULL(compute_shader->info.cs.block_size[2])); + + dispatch_initiator |= S_00B800_USE_THREAD_DIMENSIONS(1); + } + if (loc->sgpr_idx != -1) { unsigned reg = R_00B900_COMPUTE_USER_DATA_0 + loc->sgpr_idx * 4;