Mesa (master): st/glsl_to_nir: call some lowering passes earlier
Timothy Arceri
tarceri at kemper.freedesktop.org
Sun Dec 3 22:14:57 UTC 2017
Module: Mesa
Branch: master
Commit: 90abaf8a214affa2bffdc04ee24f941caedb29c0
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=90abaf8a214affa2bffdc04ee24f941caedb29c0
Author: Timothy Arceri <tarceri at itsqueeze.com>
Date: Tue Nov 14 12:56:20 2017 +1100
st/glsl_to_nir: call some lowering passes earlier
This is required so that we can enbale NIR linking optimisations.
Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>
---
src/mesa/state_tracker/st_glsl_to_nir.cpp | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/src/mesa/state_tracker/st_glsl_to_nir.cpp b/src/mesa/state_tracker/st_glsl_to_nir.cpp
index 1b4f07111c..5f92bcef00 100644
--- a/src/mesa/state_tracker/st_glsl_to_nir.cpp
+++ b/src/mesa/state_tracker/st_glsl_to_nir.cpp
@@ -300,7 +300,11 @@ st_glsl_to_nir(struct st_context *st, struct gl_program *prog,
if (prog->nir)
return prog->nir;
- return glsl_to_nir(shader_program, stage, options);
+ nir_shader *nir = glsl_to_nir(shader_program, stage, options);
+
+ st_nir_opts(nir);
+
+ return nir;
}
/* Second third of converting glsl_to_nir. This creates uniforms, gathers
@@ -343,13 +347,6 @@ st_glsl_to_nir_post_opts(struct st_context *st, struct gl_program *prog,
*/
_mesa_associate_uniform_storage(st->ctx, shader_program, prog, true);
- NIR_PASS_V(nir, nir_lower_io_to_temporaries,
- nir_shader_get_entrypoint(nir),
- true, true);
- NIR_PASS_V(nir, nir_lower_global_vars_to_local);
- NIR_PASS_V(nir, nir_split_var_copies);
- NIR_PASS_V(nir, nir_lower_var_copies);
-
/* fragment shaders may need : */
if (prog->info.stage == MESA_SHADER_FRAGMENT) {
static const gl_state_index wposTransformState[STATE_LENGTH] = {
@@ -497,6 +494,13 @@ st_nir_get_mesa_program(struct gl_context *ctx,
set_st_program(prog, shader_program, nir);
prog->nir = nir;
+
+ NIR_PASS_V(nir, nir_lower_io_to_temporaries,
+ nir_shader_get_entrypoint(nir),
+ true, true);
+ NIR_PASS_V(nir, nir_lower_global_vars_to_local);
+ NIR_PASS_V(nir, nir_split_var_copies);
+ NIR_PASS_V(nir, nir_lower_var_copies);
}
extern "C" {
More information about the mesa-commit
mailing list