From fc57fa45891b5b615a7c5a078a6a8a59cf296d48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Krist=C3=B3f?= Date: Thu, 18 Dec 2025 22:46:58 -0600 Subject: [PATCH] radv, radeonsi: Don't pass task ring info to mesh/task payload lowering MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The pass now uses the ring descriptors to figure these out. Signed-off-by: Timur Kristóf Reviewed-by: Qiang Yu Reviewed-by: Marek Olšák Part-of: --- src/amd/common/nir/ac_nir.h | 6 +----- src/amd/common/nir/ac_nir_lower_taskmesh_io_to_mem.c | 9 +-------- src/amd/vulkan/nir/radv_nir_lower_io.c | 5 ++--- src/gallium/drivers/radeonsi/si_shader_nir.c | 8 ++------ 4 files changed, 6 insertions(+), 22 deletions(-) diff --git a/src/amd/common/nir/ac_nir.h b/src/amd/common/nir/ac_nir.h index 2ab3e10a1f5..a73c2719b9e 100644 --- a/src/amd/common/nir/ac_nir.h +++ b/src/amd/common/nir/ac_nir.h @@ -238,14 +238,10 @@ ac_nir_lower_ngg_mesh(nir_shader *shader, bool ac_nir_lower_task_outputs_to_mem(nir_shader *shader, - unsigned task_payload_entry_bytes, - unsigned task_num_entries, bool has_query); bool -ac_nir_lower_mesh_inputs_to_mem(nir_shader *shader, - unsigned task_payload_entry_bytes, - unsigned task_num_entries); +ac_nir_lower_mesh_inputs_to_mem(nir_shader *shader); bool ac_nir_lower_global_access(nir_shader *shader); diff --git a/src/amd/common/nir/ac_nir_lower_taskmesh_io_to_mem.c b/src/amd/common/nir/ac_nir_lower_taskmesh_io_to_mem.c index ec990899bc5..1f860ea8079 100644 --- a/src/amd/common/nir/ac_nir_lower_taskmesh_io_to_mem.c +++ b/src/amd/common/nir/ac_nir_lower_taskmesh_io_to_mem.c @@ -305,11 +305,8 @@ lower_task_intrinsics(nir_builder *b, bool ac_nir_lower_task_outputs_to_mem(nir_shader *shader, - unsigned task_payload_entry_bytes, - unsigned task_num_entries, bool has_query) { - assert(util_is_power_of_two_nonzero(task_num_entries)); bool progress = false; nir_lower_task_shader_options lower_ts_opt = { @@ -368,12 +365,8 @@ lower_mesh_intrinsics(nir_builder *b, } bool -ac_nir_lower_mesh_inputs_to_mem(nir_shader *shader, - unsigned task_payload_entry_bytes, - unsigned task_num_entries) +ac_nir_lower_mesh_inputs_to_mem(nir_shader *shader) { - assert(util_is_power_of_two_nonzero(task_num_entries)); - lower_tsms_io_state state = { .draw_entry_bytes = 16, }; diff --git a/src/amd/vulkan/nir/radv_nir_lower_io.c b/src/amd/vulkan/nir/radv_nir_lower_io.c index 665c73b08df..629d7ee2a61 100644 --- a/src/amd/vulkan/nir/radv_nir_lower_io.c +++ b/src/amd/vulkan/nir/radv_nir_lower_io.c @@ -262,11 +262,10 @@ radv_nir_lower_io_to_mem(struct radv_device *device, struct radv_shader_stage *s NIR_PASS(_, nir, ac_nir_lower_gs_inputs_to_mem, map_input, pdev->info.gfx_level, false); return true; } else if (nir->info.stage == MESA_SHADER_TASK) { - ac_nir_lower_task_outputs_to_mem(nir, pdev->task_info.payload_entry_size, pdev->task_info.num_entries, - info->cs.has_query); + ac_nir_lower_task_outputs_to_mem(nir, info->cs.has_query); return true; } else if (nir->info.stage == MESA_SHADER_MESH) { - ac_nir_lower_mesh_inputs_to_mem(nir, pdev->task_info.payload_entry_size, pdev->task_info.num_entries); + ac_nir_lower_mesh_inputs_to_mem(nir); return true; } diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c index 931a6ce1e01..ad32211c472 100644 --- a/src/gallium/drivers/radeonsi/si_shader_nir.c +++ b/src/gallium/drivers/radeonsi/si_shader_nir.c @@ -324,13 +324,9 @@ static void si_lower_nir(struct si_screen *sscreen, struct nir_shader *nir) NIR_PASS(_, nir, nir_lower_gs_intrinsics, flags); } else if (nir->info.stage == MESA_SHADER_TASK) { - NIR_PASS(_, nir, ac_nir_lower_task_outputs_to_mem, - sscreen->task_info.payload_entry_size, - sscreen->task_info.num_entries, false); + NIR_PASS(_, nir, ac_nir_lower_task_outputs_to_mem, false); } else if (nir->info.stage == MESA_SHADER_MESH) { - NIR_PASS(_, nir, ac_nir_lower_mesh_inputs_to_mem, - sscreen->task_info.payload_entry_size, - sscreen->task_info.num_entries); + NIR_PASS(_, nir, ac_nir_lower_mesh_inputs_to_mem); } if (mesa_shader_stage_is_compute(nir->info.stage)) {