From f528de896e758241c6d21b1be1bdac89f6d8c6c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timur=20Krist=C3=B3f?= Date: Fri, 20 Dec 2024 12:38:17 -0600 Subject: [PATCH] ac/nir/ngg: Refactor export_pos0_wait_attr_ring. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is no need to create phis in this function anymore, because they can be already created by create_output_phis before. Signed-off-by: Timur Kristóf Acked-by: Marek Olšák Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/common/ac_nir_lower_ngg.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/src/amd/common/ac_nir_lower_ngg.c b/src/amd/common/ac_nir_lower_ngg.c index 5bb5df0a23a..b4462ccff11 100644 --- a/src/amd/common/ac_nir_lower_ngg.c +++ b/src/amd/common/ac_nir_lower_ngg.c @@ -2649,16 +2649,10 @@ export_pos0_wait_attr_ring(nir_builder *b, nir_if *if_es_thread, nir_def *output b->cursor = nir_after_cf_node(&if_es_thread->cf_node); /* Create phi for the position output values. */ - vs_output pos_output = { - .slot = VARYING_SLOT_POS, - .chan = { - outputs[VARYING_SLOT_POS][0], - outputs[VARYING_SLOT_POS][1], - outputs[VARYING_SLOT_POS][2], - outputs[VARYING_SLOT_POS][3], - }, + ac_nir_prerast_out out = { + .outputs = {{outputs[VARYING_SLOT_POS][0], outputs[VARYING_SLOT_POS][1], outputs[VARYING_SLOT_POS][2], outputs[VARYING_SLOT_POS][3]}}, + .infos = {{.components_mask = 0xf}}, }; - create_vertex_param_phis(b, 1, &pos_output); b->cursor = nir_after_cf_list(&b->impl->body); @@ -2671,11 +2665,6 @@ export_pos0_wait_attr_ring(nir_builder *b, nir_if *if_es_thread, nir_def *output /* Export just the pos0 output. */ nir_if *if_export_empty_pos = nir_push_if(b, if_es_thread->condition.ssa); { - ac_nir_prerast_out out = { - .outputs = {{pos_output.chan[0], pos_output.chan[1], pos_output.chan[2], pos_output.chan[3]}}, - .infos = {{.components_mask = 0xf}}, - }; - ac_nir_export_position(b, options->gfx_level, options->clip_cull_dist_mask, !options->has_param_exports, @@ -2685,6 +2674,7 @@ export_pos0_wait_attr_ring(nir_builder *b, nir_if *if_es_thread, nir_def *output nir_pop_if(b, if_export_empty_pos); } + static void nogs_export_vertex_params(nir_builder *b, nir_function_impl *impl, nir_if *if_es_thread, nir_def *num_es_threads, @@ -2697,7 +2687,7 @@ nogs_export_vertex_params(nir_builder *b, nir_function_impl *impl, /* Export varyings for GFX11+ */ b->cursor = nir_after_cf_node(&if_es_thread->cf_node); - create_output_phis(b, b->shader->info.outputs_written & ~VARYING_BIT_POS, b->shader->info.outputs_written_16bit, &s->out); + create_output_phis(b, b->shader->info.outputs_written, b->shader->info.outputs_written_16bit, &s->out); b->cursor = nir_after_impl(impl); if (!num_es_threads) @@ -3382,7 +3372,7 @@ ngg_gs_export_vertices(nir_builder *b, nir_def *max_num_out_vtx, nir_def *tid_in if (s->options->has_param_exports) { if (s->options->gfx_level >= GFX11) { - create_output_phis(b, b->shader->info.outputs_written & ~VARYING_BIT_POS, b->shader->info.outputs_written_16bit, &s->out); + create_output_phis(b, b->shader->info.outputs_written, b->shader->info.outputs_written_16bit, &s->out); ac_nir_store_parameters_to_attr_ring(b, s->options->vs_output_param_offset, b->shader->info.outputs_written,