Mesa (main): radeonsi: add si_get_tcs_epilog_key

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri May 13 09:40:56 UTC 2022


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

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Tue May  3 09:09:51 2022 -0400

radeonsi: add si_get_tcs_epilog_key

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16304>

---

 src/gallium/drivers/radeonsi/si_shader.c          | 11 ++++++++---
 src/gallium/drivers/radeonsi/si_shader_internal.h |  1 +
 src/gallium/drivers/radeonsi/si_shader_llvm.c     |  3 +--
 3 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
index a96042737d2..127c1e3228d 100644
--- a/src/gallium/drivers/radeonsi/si_shader.c
+++ b/src/gallium/drivers/radeonsi/si_shader.c
@@ -1966,6 +1966,13 @@ static bool si_shader_select_vs_parts(struct si_screen *sscreen, struct ac_llvm_
    return si_get_vs_prolog(sscreen, compiler, shader, debug, shader, &shader->key.ge.part.vs.prolog);
 }
 
+void si_get_tcs_epilog_key(struct si_shader *shader, union si_shader_part_key *key)
+{
+   memset(key, 0, sizeof(*key));
+   key->tcs_epilog.wave32 = shader->wave_size == 32;
+   key->tcs_epilog.states = shader->key.ge.part.tcs.epilog;
+}
+
 /**
  * Select and compile (or reuse) TCS parts (epilog).
  */
@@ -1984,9 +1991,7 @@ static bool si_shader_select_tcs_parts(struct si_screen *sscreen, struct ac_llvm
 
    /* Get the epilog. */
    union si_shader_part_key epilog_key;
-   memset(&epilog_key, 0, sizeof(epilog_key));
-   epilog_key.tcs_epilog.wave32 = shader->wave_size == 32;
-   epilog_key.tcs_epilog.states = shader->key.ge.part.tcs.epilog;
+   si_get_tcs_epilog_key(shader, &epilog_key);
 
    shader->epilog = si_get_shader_part(sscreen, &sscreen->tcs_epilogs, MESA_SHADER_TESS_CTRL, false,
                                        &epilog_key, compiler, debug, si_llvm_build_tcs_epilog,
diff --git a/src/gallium/drivers/radeonsi/si_shader_internal.h b/src/gallium/drivers/radeonsi/si_shader_internal.h
index 432f41308f1..fa120e8322a 100644
--- a/src/gallium/drivers/radeonsi/si_shader_internal.h
+++ b/src/gallium/drivers/radeonsi/si_shader_internal.h
@@ -177,6 +177,7 @@ void si_get_vs_prolog_key(const struct si_shader_info *info, unsigned num_input_
 struct nir_shader *si_get_nir_shader(struct si_shader_selector *sel,
                                      const union si_shader_key *key,
                                      bool *free_nir);
+void si_get_tcs_epilog_key(struct si_shader *shader, union si_shader_part_key *key);
 bool si_need_ps_prolog(const union si_shader_part_key *key);
 void si_get_ps_prolog_key(struct si_shader *shader, union si_shader_part_key *key,
                           bool separate_prolog);
diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm.c b/src/gallium/drivers/radeonsi/si_shader_llvm.c
index 4229d90f2b2..ebf31ddbdd4 100644
--- a/src/gallium/drivers/radeonsi/si_shader_llvm.c
+++ b/src/gallium/drivers/radeonsi/si_shader_llvm.c
@@ -1141,8 +1141,7 @@ bool si_llvm_compile_shader(struct si_screen *sscreen, struct ac_llvm_compiler *
 
          /* TCS epilog */
          union si_shader_part_key tcs_epilog_key;
-         memset(&tcs_epilog_key, 0, sizeof(tcs_epilog_key));
-         tcs_epilog_key.tcs_epilog.states = shader->key.ge.part.tcs.epilog;
+         si_get_tcs_epilog_key(shader, &tcs_epilog_key);
          si_llvm_build_tcs_epilog(&ctx, &tcs_epilog_key);
          parts[3] = ctx.main_fn;
 



More information about the mesa-commit mailing list