mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 11:28:05 +02:00
radeonsi: recompute IO bases after optimizations
to fix an assertion added by the commit, reproduced by viewperf13/catia
Fixes: d06616063c - radeonsi: assert that IO bases don't have holes & the same base isn't used twice
Reviewed-by: Pierre-Eric
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40589>
This commit is contained in:
parent
731e5e466a
commit
8ea3d794fb
1 changed files with 5 additions and 1 deletions
|
|
@ -111,6 +111,7 @@ void si_finalize_nir(struct pipe_screen *screen, struct nir_shader *nir,
|
||||||
bool optimize)
|
bool optimize)
|
||||||
{
|
{
|
||||||
struct si_screen *sscreen = (struct si_screen *)screen;
|
struct si_screen *sscreen = (struct si_screen *)screen;
|
||||||
|
nir_variable_mode recompute_io_bases = 0;
|
||||||
|
|
||||||
if (nir->info.io_lowered) {
|
if (nir->info.io_lowered) {
|
||||||
nir_foreach_variable_with_modes(var, nir, nir_var_shader_in | nir_var_shader_out) {
|
nir_foreach_variable_with_modes(var, nir, nir_var_shader_in | nir_var_shader_out) {
|
||||||
|
|
@ -119,7 +120,7 @@ void si_finalize_nir(struct pipe_screen *screen, struct nir_shader *nir,
|
||||||
|
|
||||||
/* Not all places recompute FS input bases, but we need them to be up to date. */
|
/* Not all places recompute FS input bases, but we need them to be up to date. */
|
||||||
if (nir->info.stage == MESA_SHADER_FRAGMENT)
|
if (nir->info.stage == MESA_SHADER_FRAGMENT)
|
||||||
NIR_PASS(_, nir, nir_recompute_io_bases, nir_var_shader_in | nir_var_shader_out);
|
recompute_io_bases = nir_var_shader_in | nir_var_shader_out;
|
||||||
} else {
|
} else {
|
||||||
/* This always recomputes FS output bases. */
|
/* This always recomputes FS output bases. */
|
||||||
nir_lower_io_passes(nir, false);
|
nir_lower_io_passes(nir, false);
|
||||||
|
|
@ -146,6 +147,9 @@ void si_finalize_nir(struct pipe_screen *screen, struct nir_shader *nir,
|
||||||
NIR_PASS_ASSERT_NO_PROGRESS(nir, nir_opt_intrinsics);
|
NIR_PASS_ASSERT_NO_PROGRESS(nir, nir_opt_intrinsics);
|
||||||
NIR_PASS_ASSERT_NO_PROGRESS(nir, nir_lower_system_values);
|
NIR_PASS_ASSERT_NO_PROGRESS(nir, nir_lower_system_values);
|
||||||
|
|
||||||
|
if (recompute_io_bases)
|
||||||
|
NIR_PASS(_, nir, nir_recompute_io_bases, recompute_io_bases);
|
||||||
|
|
||||||
/* Remove uniforms because those should have been lowered to UBOs already. */
|
/* Remove uniforms because those should have been lowered to UBOs already. */
|
||||||
nir_foreach_variable_with_modes_safe(var, nir, nir_var_uniform) {
|
nir_foreach_variable_with_modes_safe(var, nir, nir_var_uniform) {
|
||||||
if (!glsl_type_get_image_count(var->type) &&
|
if (!glsl_type_get_image_count(var->type) &&
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue