Mesa (master): ac: add shader return values into ac_shader_args
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Dec 9 20:29:54 UTC 2020
Module: Mesa
Branch: master
Commit: 4a50096ab47681e95c1700fcee83a9418e5300ce
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4a50096ab47681e95c1700fcee83a9418e5300ce
Author: Marek Olšák <marek.olsak at amd.com>
Date: Fri Dec 4 11:19:16 2020 -0500
ac: add shader return values into ac_shader_args
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Reviewed-by: Connor Abbott <cwabbott0 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7939>
---
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
More information about the mesa-commit
mailing list