[Mesa-dev] [PATCH 09/17] nir: move callsite of lower_outputs_to_temporaries

Rob Clark robdclark at gmail.com
Fri Apr 15 14:49:44 UTC 2016


From: Rob Clark <robclark at freedesktop.org>

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 <robclark at freedesktop.org>
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
---
 src/compiler/nir/glsl_to_nir.cpp                    | 2 --
 src/compiler/nir/nir_lower_outputs_to_temporaries.c | 4 ----
 src/mesa/drivers/dri/i965/brw_nir.c                 | 1 +
 3 files changed, 1 insertion(+), 6 deletions(-)

diff --git a/src/compiler/nir/glsl_to_nir.cpp b/src/compiler/nir/glsl_to_nir.cpp
index fafa8bb..c952a7f 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 00ac091..1a8d843 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 932979a..ea58d09 100644
--- a/src/mesa/drivers/dri/i965/brw_nir.c
+++ b/src/mesa/drivers/dri/i965/brw_nir.c
@@ -565,6 +565,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 */
-- 
2.5.5



More information about the mesa-dev mailing list