brw: avoid calling lower_indirect_derefs multiple times
Lowering the indirect derefs multiple times leads to very inefficient shaders because of all the control flow inserted. In particular on some DGC tests with mesh shaders, the tests can spin for 1hour on an i7 and still not complete compilation. Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Caio Oliveira <caio.oliveira@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33809>
This commit is contained in:
committed by
Marge Bot
parent
c7bc90eaec
commit
1835bf3520
@@ -1432,17 +1432,6 @@ brw_nir_link_shaders(const struct brw_compiler *compiler,
|
||||
NIR_PASS(_, producer, nir_lower_global_vars_to_local);
|
||||
NIR_PASS(_, consumer, nir_lower_global_vars_to_local);
|
||||
|
||||
/* The backend might not be able to handle indirects on
|
||||
* temporaries so we need to lower indirects on any of the
|
||||
* varyings we have demoted here.
|
||||
*/
|
||||
NIR_PASS(_, producer, nir_lower_indirect_derefs,
|
||||
brw_nir_no_indirect_mask(compiler, producer->info.stage),
|
||||
UINT32_MAX);
|
||||
NIR_PASS(_, consumer, nir_lower_indirect_derefs,
|
||||
brw_nir_no_indirect_mask(compiler, consumer->info.stage),
|
||||
UINT32_MAX);
|
||||
|
||||
brw_nir_optimize(producer, devinfo);
|
||||
brw_nir_optimize(consumer, devinfo);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user