lima: re-run nir_opt_algebraic after int lowering
nir_lower_int_to_float is currently only meant to run once, and some ops must be lowered after being converted from int ops to be implementable, so re-run nir_opt_algebraic after lowering ints to floats. Signed-off-by: Erico Nunes <nunes.erico@gmail.com> Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com>
This commit is contained in:
parent
3db4949197
commit
9e8f8dbcd1
|
@ -128,6 +128,14 @@ lima_program_optimize_vs_nir(struct nir_shader *s)
|
|||
|
||||
NIR_PASS_V(s, nir_lower_int_to_float);
|
||||
NIR_PASS_V(s, nir_lower_bool_to_float);
|
||||
|
||||
/* Some ops must be lowered after being converted from int ops,
|
||||
* so re-run nir_opt_algebraic after int lowering. */
|
||||
do {
|
||||
progress = false;
|
||||
NIR_PASS(progress, s, nir_opt_algebraic);
|
||||
} while (progress);
|
||||
|
||||
NIR_PASS_V(s, nir_copy_prop);
|
||||
NIR_PASS_V(s, nir_opt_dce);
|
||||
NIR_PASS_V(s, nir_lower_locals_to_regs);
|
||||
|
@ -179,6 +187,13 @@ lima_program_optimize_fs_nir(struct nir_shader *s)
|
|||
NIR_PASS_V(s, nir_lower_int_to_float);
|
||||
NIR_PASS_V(s, nir_lower_bool_to_float);
|
||||
|
||||
/* Some ops must be lowered after being converted from int ops,
|
||||
* so re-run nir_opt_algebraic after int lowering. */
|
||||
do {
|
||||
progress = false;
|
||||
NIR_PASS(progress, s, nir_opt_algebraic);
|
||||
} while (progress);
|
||||
|
||||
/* Lower modifiers */
|
||||
NIR_PASS_V(s, nir_lower_to_source_mods, nir_lower_all_source_mods);
|
||||
NIR_PASS_V(s, nir_copy_prop);
|
||||
|
|
Loading…
Reference in New Issue