Module: Mesa Branch: main Commit: 59673001c8f8ccbca8790ee76c1cded22d104ed2 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=59673001c8f8ccbca8790ee76c1cded22d104ed2
Author: Marek Olšák <[email protected]> Date: Tue May 3 09:09:51 2022 -0400 radeonsi: add si_get_tcs_epilog_key Reviewed-by: Pierre-Eric Pelloux-Prayer <[email protected]> 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;
