Mesa (master): freedreno: Only call nir_lower_io on shader_in/out
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Jul 6 20:19:16 UTC 2020
Module: Mesa
Branch: master
Commit: 36a90468486252cb35cdea3d67ace991f1fb4bd0
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=36a90468486252cb35cdea3d67ace991f1fb4bd0
Author: Jason Ekstrand <jason at jlekstrand.net>
Date: Wed Jun 10 17:42:15 2020 -0500
freedreno: Only call nir_lower_io on shader_in/out
Gallium drivers should never see nir_var_uniform because gallium lowers
regular uniforms to a UBO. No GL driver should ever see either
nir_var_mem_shared because that's lowered in GLSL IR.
Reviewed-by: Eric Anholt <eric at anholt.net>
Reviewed-by: Connor Abbott <cwabbott0 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5418>
---
src/freedreno/ir3/ir3_nir.c | 4 ++--
src/gallium/drivers/freedreno/a2xx/fd2_program.c | 10 ++++++----
src/gallium/drivers/freedreno/ir3/ir3_cmdline.c | 9 ++++++---
3 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/src/freedreno/ir3/ir3_nir.c b/src/freedreno/ir3/ir3_nir.c
index 5c15f5b8dfc..5707cbcb66f 100644
--- a/src/freedreno/ir3/ir3_nir.c
+++ b/src/freedreno/ir3/ir3_nir.c
@@ -278,8 +278,8 @@ ir3_finalize_nir(struct ir3_compiler *compiler, nir_shader *s)
void
ir3_nir_post_finalize(struct ir3_compiler *compiler, nir_shader *s)
{
- NIR_PASS_V(s, nir_lower_io, nir_var_all, ir3_glsl_type_size,
- (nir_lower_io_options)0);
+ NIR_PASS_V(s, nir_lower_io, nir_var_shader_in | nir_var_shader_out,
+ ir3_glsl_type_size, (nir_lower_io_options)0);
if (s->info.stage == MESA_SHADER_FRAGMENT) {
/* NOTE: lower load_barycentric_at_sample first, since it
diff --git a/src/gallium/drivers/freedreno/a2xx/fd2_program.c b/src/gallium/drivers/freedreno/a2xx/fd2_program.c
index 958b1f784b2..7d40e8c99b3 100644
--- a/src/gallium/drivers/freedreno/a2xx/fd2_program.c
+++ b/src/gallium/drivers/freedreno/a2xx/fd2_program.c
@@ -100,8 +100,9 @@ fd2_fp_state_create(struct pipe_context *pctx,
so->nir = (cso->type == PIPE_SHADER_IR_NIR) ? cso->ir.nir :
tgsi_to_nir(cso->tokens, pctx->screen, false);
- NIR_PASS_V(so->nir, nir_lower_io, nir_var_all, ir2_glsl_type_size,
- (nir_lower_io_options)0);
+ NIR_PASS_V(so->nir, nir_lower_io,
+ nir_var_shader_in | nir_var_shader_out,
+ ir2_glsl_type_size, (nir_lower_io_options)0);
if (ir2_optimize_nir(so->nir, true))
goto fail;
@@ -137,8 +138,9 @@ fd2_vp_state_create(struct pipe_context *pctx,
so->nir = (cso->type == PIPE_SHADER_IR_NIR) ? cso->ir.nir :
tgsi_to_nir(cso->tokens, pctx->screen, false);
- NIR_PASS_V(so->nir, nir_lower_io, nir_var_all, ir2_glsl_type_size,
- (nir_lower_io_options)0);
+ NIR_PASS_V(so->nir, nir_lower_io,
+ nir_var_shader_in | nir_var_shader_out,
+ ir2_glsl_type_size, (nir_lower_io_options)0);
if (ir2_optimize_nir(so->nir, true))
goto fail;
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c b/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c
index 0498c5828ad..81895a7aebe 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c
+++ b/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c
@@ -183,7 +183,9 @@ load_glsl(unsigned num_files, char* const* files, gl_shader_stage stage)
NIR_PASS_V(nir, nir_lower_system_values);
NIR_PASS_V(nir, nir_lower_frexp);
- NIR_PASS_V(nir, nir_lower_io, nir_var_all, ir3_glsl_type_size, 0);
+ NIR_PASS_V(nir, nir_lower_io,
+ nir_var_shader_in | nir_var_shader_out,
+ ir3_glsl_type_size, (nir_lower_io_options)0);
NIR_PASS_V(nir, gl_nir_lower_samplers, prog);
return nir;
@@ -475,8 +477,9 @@ int main(int argc, char **argv)
} else if (from_spirv) {
nir = load_spirv(filenames[0], entry, stage);
- NIR_PASS_V(nir, nir_lower_io, nir_var_all, ir3_glsl_type_size,
- (nir_lower_io_options)0);
+ NIR_PASS_V(nir, nir_lower_io,
+ nir_var_shader_in | nir_var_shader_out,
+ ir3_glsl_type_size, (nir_lower_io_options)0);
/* TODO do this somewhere else */
nir_lower_int64(nir, ~0);
More information about the mesa-commit
mailing list