From 4a50096ab47681e95c1700fcee83a9418e5300ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Fri, 4 Dec 2020 11:19:16 -0500 Subject: [PATCH] ac: add shader return values into ac_shader_args Reviewed-by: Pierre-Eric Pelloux-Prayer Reviewed-by: Connor Abbott Part-of: --- src/amd/common/ac_shader_args.c | 16 ++++++++++++++++ src/amd/common/ac_shader_args.h | 5 +++++ 2 files changed, 21 insertions(+) diff --git a/src/amd/common/ac_shader_args.c b/src/amd/common/ac_shader_args.c index d3816e1c0fc..2025cc75f82 100644 --- a/src/amd/common/ac_shader_args.c +++ b/src/amd/common/ac_shader_args.c @@ -52,3 +52,19 @@ void ac_add_arg(struct ac_shader_args *info, enum ac_arg_regfile regfile, unsign info->arg_count++; } + +void ac_add_return(struct ac_shader_args *info, enum ac_arg_regfile regfile) +{ + assert(info->return_count < AC_MAX_ARGS); + + if (regfile == AC_ARG_SGPR) { + /* SGPRs must be inserted before VGPRs. */ + assert(info->num_vgprs_returned == 0); + info->num_sgprs_returned++;; + } else { + assert(regfile == AC_ARG_VGPR); + info->num_vgprs_returned++; + } + + info->return_count++; +} diff --git a/src/amd/common/ac_shader_args.h b/src/amd/common/ac_shader_args.h index 80274374fe6..020e8b46ba8 100644 --- a/src/amd/common/ac_shader_args.h +++ b/src/amd/common/ac_shader_args.h @@ -67,6 +67,10 @@ struct ac_shader_args { uint16_t num_sgprs_used; uint16_t num_vgprs_used; + uint16_t return_count; + uint16_t num_sgprs_returned; + uint16_t num_vgprs_returned; + struct ac_arg base_vertex; struct ac_arg start_instance; struct ac_arg draw_id; @@ -108,5 +112,6 @@ 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); #endif