i965/nir: Lower to registers a bit later.
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 9 Mar 2015 08:58:53 +0000 (01:58 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Thu, 12 Mar 2015 15:29:48 +0000 (08:29 -0700)
We can't safely call nir_optimize() with register present, since several
passes called in the loop can't handle registers, and will fail asserts.

Notably, nir_lower_vec_alus() and nir_opt_algebraic() really don't want
registers.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
src/mesa/drivers/dri/i965/brw_fs_nir.cpp

index ef83693..c225c00 100644 (file)
@@ -108,9 +108,6 @@ fs_visitor::emit_nir_code()
    nir_lower_io(nir);
    nir_validate_shader(nir);
 
-   nir_lower_locals_to_regs(nir);
-   nir_validate_shader(nir);
-
    nir_remove_dead_variables(nir);
    nir_validate_shader(nir);
 
@@ -125,6 +122,9 @@ fs_visitor::emit_nir_code()
 
    nir_optimize(nir);
 
+   nir_lower_locals_to_regs(nir);
+   nir_validate_shader(nir);
+
    nir_lower_to_source_mods(nir);
    nir_validate_shader(nir);
    nir_copy_prop(nir);