Mesa (main): ir3: Pass shader to ir3_nir_post_finalize()

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jan 10 11:19:24 UTC 2022


Module: Mesa
Branch: main
Commit: 30237b3d9cbbe870921f9ac3abb7541f80904f76
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=30237b3d9cbbe870921f9ac3abb7541f80904f76

Author: Connor Abbott <cwabbott0 at gmail.com>
Date:   Thu Nov 25 15:16:36 2021 +0100

ir3: Pass shader to ir3_nir_post_finalize()

We'll need to add shader-specific lowering for gl_SubgroupSize.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13960>

---

 src/freedreno/ir3/ir3_nir.c                     | 5 ++++-
 src/freedreno/ir3/ir3_nir.h                     | 2 +-
 src/freedreno/ir3/ir3_shader.c                  | 2 +-
 src/gallium/drivers/freedreno/ir3/ir3_cmdline.c | 3 ++-
 4 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/freedreno/ir3/ir3_nir.c b/src/freedreno/ir3/ir3_nir.c
index 68ee063179b..a6c1b3a377e 100644
--- a/src/freedreno/ir3/ir3_nir.c
+++ b/src/freedreno/ir3/ir3_nir.c
@@ -507,8 +507,11 @@ ir3_nir_lower_subgroup_id_cs(nir_shader *shader)
  * Late passes that need to be done after pscreen->finalize_nir()
  */
 void
-ir3_nir_post_finalize(struct ir3_compiler *compiler, nir_shader *s)
+ir3_nir_post_finalize(struct ir3_shader *shader)
 {
+   struct nir_shader *s = shader->nir;
+   struct ir3_compiler *compiler = shader->compiler;
+
    NIR_PASS_V(s, nir_lower_io, nir_var_shader_in | nir_var_shader_out,
               ir3_glsl_type_size, (nir_lower_io_options)0);
 
diff --git a/src/freedreno/ir3/ir3_nir.h b/src/freedreno/ir3/ir3_nir.h
index dccd8bca871..aa236e77321 100644
--- a/src/freedreno/ir3/ir3_nir.h
+++ b/src/freedreno/ir3/ir3_nir.h
@@ -67,7 +67,7 @@ ir3_get_compiler_options(struct ir3_compiler *compiler);
 void ir3_optimize_loop(struct ir3_compiler *compiler, nir_shader *s);
 void ir3_nir_lower_io_to_temporaries(nir_shader *s);
 void ir3_finalize_nir(struct ir3_compiler *compiler, nir_shader *s);
-void ir3_nir_post_finalize(struct ir3_compiler *compiler, nir_shader *s);
+void ir3_nir_post_finalize(struct ir3_shader *shader);
 void ir3_nir_lower_variant(struct ir3_shader_variant *so, nir_shader *s);
 
 void ir3_setup_const_state(nir_shader *nir, struct ir3_shader_variant *v,
diff --git a/src/freedreno/ir3/ir3_shader.c b/src/freedreno/ir3/ir3_shader.c
index be4d6b4b13d..c22cae603ba 100644
--- a/src/freedreno/ir3/ir3_shader.c
+++ b/src/freedreno/ir3/ir3_shader.c
@@ -371,7 +371,7 @@ create_variant(struct ir3_shader *shader, const struct ir3_shader_key *key,
       return v;
 
    if (!shader->nir_finalized) {
-      ir3_nir_post_finalize(shader->compiler, shader->nir);
+      ir3_nir_post_finalize(shader);
 
       if (ir3_shader_debug & IR3_DBG_DISASM) {
          mesa_logi("dump nir%d: type=%d", shader->id, shader->type);
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c b/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c
index 051856b6022..2a681118e6f 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c
+++ b/src/gallium/drivers/freedreno/ir3/ir3_cmdline.c
@@ -414,13 +414,14 @@ main(int argc, char **argv)
 
    ir3_nir_lower_io_to_temporaries(nir);
    ir3_finalize_nir(compiler, nir);
-   ir3_nir_post_finalize(compiler, nir);
 
    struct ir3_shader *shader = rzalloc_size(NULL, sizeof(*shader));
    shader->compiler = compiler;
    shader->type = stage;
    shader->nir = nir;
 
+   ir3_nir_post_finalize(shader);
+
    struct ir3_shader_variant *v = rzalloc_size(shader, sizeof(*v));
    v->type = shader->type;
    v->shader = shader;



More information about the mesa-commit mailing list