From f249c297b21d3d9b11032c11d9447563367df9c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Fri, 20 Mar 2026 00:20:31 -0400 Subject: [PATCH] radeonsi: set num_vs_inputs from nir->num_inputs and use it more MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Acked-by: Pierre-Eric Acked-by: Timur Kristóf Part-of: --- src/gallium/drivers/radeonsi/si_nir_lower_vs_inputs.c | 4 ++-- src/gallium/drivers/radeonsi/si_shader_info.c | 4 ++-- src/gallium/drivers/radeonsi/si_state_shaders.cpp | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_nir_lower_vs_inputs.c b/src/gallium/drivers/radeonsi/si_nir_lower_vs_inputs.c index 6bd3e1e6264..f9468c2c624 100644 --- a/src/gallium/drivers/radeonsi/si_nir_lower_vs_inputs.c +++ b/src/gallium/drivers/radeonsi/si_nir_lower_vs_inputs.c @@ -89,7 +89,7 @@ get_vertex_index_for_all_inputs(nir_shader *nir, struct lower_vs_inputs_state *s si_nir_load_internal_binding(sel->screen, b, s->args, SI_VS_CONST_INSTANCE_DIVISORS, 4); } - for (int i = 0; i < sel->info.num_inputs; i++) + for (int i = 0; i < sel->info.num_vs_inputs; i++) s->vertex_index[i] = get_vertex_index(b, i, s); } @@ -589,7 +589,7 @@ si_nir_lower_vs_inputs(nir_shader *nir, struct si_shader *shader, struct si_shad const struct si_shader_selector *sel = shader->selector; /* no inputs to lower */ - if (!sel->info.num_inputs) + if (!sel->info.num_vs_inputs && !nir->info.vs.blit_sgprs_amd) return false; struct lower_vs_inputs_state state = { diff --git a/src/gallium/drivers/radeonsi/si_shader_info.c b/src/gallium/drivers/radeonsi/si_shader_info.c index e40779468fd..6dbf0f98fd6 100644 --- a/src/gallium/drivers/radeonsi/si_shader_info.c +++ b/src/gallium/drivers/radeonsi/si_shader_info.c @@ -667,8 +667,8 @@ void si_nir_gather_info(struct si_screen *sscreen, struct nir_shader *nir, info->has_divergent_loop = nir_has_divergent_loop(nir); if (nir->info.stage == MESA_SHADER_VERTEX) { - info->num_vs_inputs = - nir->info.stage == MESA_SHADER_VERTEX && !nir->info.vs.blit_sgprs_amd ? info->num_inputs : 0; + info->num_vs_inputs = nir->info.stage == MESA_SHADER_VERTEX && !nir->info.vs.blit_sgprs_amd ? + nir->num_inputs : 0; unsigned num_vbos_in_sgprs = si_num_vbos_in_user_sgprs_inline(sscreen->info.gfx_level); info->num_vbos_in_user_sgprs = MIN2(info->num_vs_inputs, num_vbos_in_sgprs); } diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.cpp b/src/gallium/drivers/radeonsi/si_state_shaders.cpp index 735b8c49f58..2d33138e66d 100644 --- a/src/gallium/drivers/radeonsi/si_state_shaders.cpp +++ b/src/gallium/drivers/radeonsi/si_state_shaders.cpp @@ -2322,7 +2322,7 @@ void si_vs_key_update_inputs(struct si_context *sctx) key->ge.mono.instance_divisor_is_fetched = elts->instance_divisor_is_fetched; key->ge.opt.prefer_mono = elts->instance_divisor_is_fetched; - unsigned count_mask = (1 << vs->info.num_inputs) - 1; + unsigned count_mask = (1 << vs->info.num_vs_inputs) - 1; unsigned fix = elts->fix_fetch_always & count_mask; unsigned opencode = elts->fix_fetch_opencode & count_mask;