summaryrefslogtreecommitdiff
path: root/src/intel
diff options
context:
space:
mode:
authorJason Ekstrand <jason.ekstrand@intel.com>2018-08-08 12:00:55 -0700
committerAndres Gomez <agomez@igalia.com>2018-08-16 02:09:21 +0300
commitb9a97a8b880d35ebc6f9b32cc6743e0997d70349 (patch)
treee741c66a6462aa0f17c33ae1f183af5d61e38be9 /src/intel
parentdbb5396667cdc308279decc72ac2025c0990a304 (diff)
Revert "intel/nir: Call nir_lower_io_to_scalar_early"
Commit 4434591bf56a6b0 caused substantially more URB messages in geometry and tessellation shaders. Before we can really enable this sort of optimization, We either need some way of combining them back together into vectors or we need to do cross-stage vector element elimination without splitting everything into scalars. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107510 Fixes: 4434591bf56a6 "intel/nir: Call nir_lower_io_to_scalar_early" Acked-by: Kenneth Graunke <kenneth@whitecape.org> Tested-by: Mark Janes <mark.a.janes@intel.com> (cherry picked from commit 10f44da775a69561c77438507298363ff4eeb65d)
Diffstat (limited to 'src/intel')
-rw-r--r--src/intel/compiler/brw_nir.c17
1 files changed, 5 insertions, 12 deletions
diff --git a/src/intel/compiler/brw_nir.c b/src/intel/compiler/brw_nir.c
index 31ffbe613ec..29ad68fdb2a 100644
--- a/src/intel/compiler/brw_nir.c
+++ b/src/intel/compiler/brw_nir.c
@@ -713,18 +713,6 @@ brw_nir_link_shaders(const struct brw_compiler *compiler,
nir_validate_shader(*producer);
nir_validate_shader(*consumer);
- const bool p_is_scalar =
- compiler->scalar_stage[(*producer)->info.stage];
- const bool c_is_scalar =
- compiler->scalar_stage[(*consumer)->info.stage];
-
- if (p_is_scalar && c_is_scalar) {
- NIR_PASS_V(*producer, nir_lower_io_to_scalar_early, nir_var_shader_out);
- NIR_PASS_V(*consumer, nir_lower_io_to_scalar_early, nir_var_shader_in);
- *producer = brw_nir_optimize(*producer, compiler, p_is_scalar);
- *consumer = brw_nir_optimize(*consumer, compiler, c_is_scalar);
- }
-
NIR_PASS_V(*producer, nir_remove_dead_variables, nir_var_shader_out);
NIR_PASS_V(*consumer, nir_remove_dead_variables, nir_var_shader_in);
@@ -741,7 +729,12 @@ brw_nir_link_shaders(const struct brw_compiler *compiler,
NIR_PASS_V(*consumer, nir_lower_indirect_derefs,
brw_nir_no_indirect_mask(compiler, (*consumer)->info.stage));
+ const bool p_is_scalar =
+ compiler->scalar_stage[(*producer)->info.stage];
*producer = brw_nir_optimize(*producer, compiler, p_is_scalar);
+
+ const bool c_is_scalar =
+ compiler->scalar_stage[(*consumer)->info.stage];
*consumer = brw_nir_optimize(*consumer, compiler, c_is_scalar);
}
}