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