summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRob Clark <[email protected]>2016-03-25 13:47:15 -0400
committerRob Clark <[email protected]>2016-05-11 12:20:11 -0400
commit47fcef9a209e533103a7ecf4d69440a67aa463ed (patch)
treed21b1f701e1dc7bccdeb16aa1ec9e5d8973b1e9b
parent5261947260bf63693fc13eaaf8a1e845ab130a57 (diff)
nir: move callsite of lower_outputs_to_temporaries
Going to convert this pass to parameterized lower_io_to_temporaries, and we want the user to be able to specify whether to lower outputs or inputs or both. The restriction of running this pass before validate to avoid output reads no longer applies. Signed-off-by: Rob Clark <[email protected]> Reviewed-by: Jason Ekstrand <[email protected]>
-rw-r--r--src/compiler/nir/glsl_to_nir.cpp2
-rw-r--r--src/compiler/nir/nir_lower_outputs_to_temporaries.c4
-rw-r--r--src/mesa/drivers/dri/i965/brw_nir.c1
3 files changed, 1 insertions, 6 deletions
diff --git a/src/compiler/nir/glsl_to_nir.cpp b/src/compiler/nir/glsl_to_nir.cpp
index e3fa623ba04..a86b966a26b 100644
--- a/src/compiler/nir/glsl_to_nir.cpp
+++ b/src/compiler/nir/glsl_to_nir.cpp
@@ -143,8 +143,6 @@ glsl_to_nir(const struct gl_shader_program *shader_prog,
v2.run(sh->ir);
visit_exec_list(sh->ir, &v1);
- nir_lower_outputs_to_temporaries(shader, nir_shader_get_entrypoint(shader));
-
shader->info.name = ralloc_asprintf(shader, "GLSL%d", shader_prog->Name);
if (shader_prog->Label)
shader->info.label = ralloc_strdup(shader, shader_prog->Label);
diff --git a/src/compiler/nir/nir_lower_outputs_to_temporaries.c b/src/compiler/nir/nir_lower_outputs_to_temporaries.c
index 21bc15b70b8..0dfb7b0e718 100644
--- a/src/compiler/nir/nir_lower_outputs_to_temporaries.c
+++ b/src/compiler/nir/nir_lower_outputs_to_temporaries.c
@@ -25,10 +25,6 @@
* Implements a pass that lowers output variables to a temporary plus an
* output variable with a single copy at each exit point of the shader.
* This way the output variable is only ever written.
- *
- * Because valid NIR requires that output variables are never read, this
- * pass is more of a helper for NIR producers and must be run before the
- * shader is ever validated.
*/
#include "nir.h"
diff --git a/src/mesa/drivers/dri/i965/brw_nir.c b/src/mesa/drivers/dri/i965/brw_nir.c
index 9414fa6561e..fb658ec85df 100644
--- a/src/mesa/drivers/dri/i965/brw_nir.c
+++ b/src/mesa/drivers/dri/i965/brw_nir.c
@@ -563,6 +563,7 @@ brw_create_nir(struct brw_context *brw,
/* First, lower the GLSL IR or Mesa IR to NIR */
if (shader_prog) {
nir = glsl_to_nir(shader_prog, stage, options);
+ OPT_V(nir_lower_outputs_to_temporaries, nir_shader_get_entrypoint(nir));
} else {
nir = prog_to_nir(prog, options);
OPT_V(nir_convert_to_ssa); /* turn registers into SSA */