From c161337029f648cf2c0cc9d809cb984b66c2a167 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 23 Aug 2023 18:10:25 +0200 Subject: [PATCH] ac: allow to mark shader arguments as preserved These arguments would be used by ACO to generate a function signature for merged shaders automatically. Signed-off-by: Samuel Pitoiset Part-of: --- src/amd/common/ac_shader_args.c | 5 +++++ src/amd/common/ac_shader_args.h | 2 ++ 2 files changed, 7 insertions(+) diff --git a/src/amd/common/ac_shader_args.c b/src/amd/common/ac_shader_args.c index d90f14e2177..9c86b80cfa8 100644 --- a/src/amd/common/ac_shader_args.c +++ b/src/amd/common/ac_shader_args.c @@ -52,6 +52,11 @@ void ac_add_return(struct ac_shader_args *info, enum ac_arg_regfile regfile) info->return_count++; } +void ac_add_preserved(struct ac_shader_args *info, const struct ac_arg *arg) +{ + info->args[arg->arg_index].preserved = true; +} + void ac_compact_ps_vgpr_args(struct ac_shader_args *info, uint32_t spi_ps_input) { /* LLVM optimizes away unused FS inputs and computes spi_ps_input_addr itself and then diff --git a/src/amd/common/ac_shader_args.h b/src/amd/common/ac_shader_args.h index 5882e8506b0..3c4ae916dfc 100644 --- a/src/amd/common/ac_shader_args.h +++ b/src/amd/common/ac_shader_args.h @@ -49,6 +49,7 @@ struct ac_shader_args { uint8_t size; bool skip : 1; bool pending_vmem : 1; /* Loaded from VMEM and needs waitcnt before use. */ + bool preserved : 1; } args[AC_MAX_ARGS]; uint16_t arg_count; @@ -189,6 +190,7 @@ struct ac_shader_args { void ac_add_arg(struct ac_shader_args *info, enum ac_arg_regfile regfile, unsigned registers, enum ac_arg_type type, struct ac_arg *arg); void ac_add_return(struct ac_shader_args *info, enum ac_arg_regfile regfile); +void ac_add_preserved(struct ac_shader_args *info, const struct ac_arg *arg); void ac_compact_ps_vgpr_args(struct ac_shader_args *info, uint32_t spi_ps_input); #endif