mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 20:38:06 +02:00
intel/fs: rerun divergence prior to lowering non-uniform interpolate at sample
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Fixes: 74a40cc4b6 ("intel/fs: move lower of non-uniform at_sample barycentric to NIR")
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26797>
This commit is contained in:
parent
8f5a7f57df
commit
2437556d83
1 changed files with 10 additions and 1 deletions
|
|
@ -1686,6 +1686,7 @@ brw_postprocess_nir(nir_shader *nir, const struct brw_compiler *compiler,
|
|||
OPT(nir_opt_move, nir_move_comparisons);
|
||||
OPT(nir_opt_dead_cf);
|
||||
|
||||
bool divergence_analysis_dirty = false;
|
||||
NIR_PASS(_, nir, nir_convert_to_lcssa, true, true);
|
||||
NIR_PASS_V(nir, nir_divergence_analysis);
|
||||
|
||||
|
|
@ -1711,11 +1712,19 @@ brw_postprocess_nir(nir_shader *nir, const struct brw_compiler *compiler,
|
|||
|
||||
if (OPT(nir_lower_int64))
|
||||
brw_nir_optimize(nir, is_scalar, devinfo);
|
||||
|
||||
divergence_analysis_dirty = true;
|
||||
}
|
||||
|
||||
/* Do this only after the last opt_gcm. GCM will undo this lowering. */
|
||||
if (nir->info.stage == MESA_SHADER_FRAGMENT)
|
||||
if (nir->info.stage == MESA_SHADER_FRAGMENT) {
|
||||
if (divergence_analysis_dirty) {
|
||||
NIR_PASS(_, nir, nir_convert_to_lcssa, true, true);
|
||||
NIR_PASS_V(nir, nir_divergence_analysis);
|
||||
}
|
||||
|
||||
OPT(brw_nir_lower_non_uniform_barycentric_at_sample);
|
||||
}
|
||||
|
||||
/* Clean up LCSSA phis */
|
||||
OPT(nir_opt_remove_phis);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue