ac: add shader return values into ac_shader_args

Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7939>
This commit is contained in:
Marek Olšák 2020-12-04 11:19:16 -05:00 committed by Marge Bot
parent 2cf44ad30a
commit 4a50096ab4
2 changed files with 21 additions and 0 deletions

View File

@ -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++;
}

View File

@ -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