Module: Mesa Branch: main Commit: 719678f891ef7bd521134620557954802c3b08ef URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=719678f891ef7bd521134620557954802c3b08ef
Author: Timur Kristóf <[email protected]> Date: Wed Sep 29 18:25:03 2021 +0200 ac/nir: Add ac_nir_load_arg helper for shader arguments. Signed-off-by: Timur Kristóf <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13155> --- src/amd/common/ac_nir.c | 12 ++++++++++++ src/amd/common/ac_nir.h | 3 +++ 2 files changed, 15 insertions(+) diff --git a/src/amd/common/ac_nir.c b/src/amd/common/ac_nir.c index 8a8e2020008..9fd21d080c1 100644 --- a/src/amd/common/ac_nir.c +++ b/src/amd/common/ac_nir.c @@ -22,6 +22,18 @@ */ #include "ac_nir.h" +#include "nir_builder.h" + +nir_ssa_def * +ac_nir_load_arg(nir_builder *b, const struct ac_shader_args *ac_args, struct ac_arg arg) +{ + unsigned num_components = ac_args->args[arg.arg_index].size; + + if (ac_args->args[arg.arg_index].file == AC_ARG_SGPR) + return nir_load_scalar_arg_amd(b, num_components, .base = arg.arg_index); + else + return nir_load_vector_arg_amd(b, num_components, .base = arg.arg_index); +} bool ac_nir_lower_indirect_derefs(nir_shader *shader, diff --git a/src/amd/common/ac_nir.h b/src/amd/common/ac_nir.h index 78b22116fee..a68b8e7f24e 100644 --- a/src/amd/common/ac_nir.h +++ b/src/amd/common/ac_nir.h @@ -52,6 +52,9 @@ enum struct nir_builder; typedef struct nir_builder nir_builder; +nir_ssa_def * +ac_nir_load_arg(nir_builder *b, const struct ac_shader_args *ac_args, struct ac_arg arg); + bool ac_nir_optimize_outputs(nir_shader *nir, bool sprite_tex_disallowed, int8_t slot_remap[NUM_TOTAL_VARYING_SLOTS], uint8_t param_export_index[NUM_TOTAL_VARYING_SLOTS]);
