diff options
author | Alyssa Rosenzweig <alyssa@collabora.com> | 2021-12-23 11:09:15 -0500 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2022-02-22 16:57:30 +0000 |
commit | 8f25d88d907d8f767975600184b51d2754d71364 (patch) | |
tree | 85e38032a5fe1ea816b5907d837237f234b2f535 | |
parent | 6ad9a7f650176f3db94546ef765b45bfbe919bb4 (diff) |
pan/bi: Print scoreboarding state
Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14298>
-rw-r--r-- | src/panfrost/bifrost/bi_print.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/panfrost/bifrost/bi_print.c b/src/panfrost/bifrost/bi_print.c index c242a939dc3..801ea67b917 100644 --- a/src/panfrost/bifrost/bi_print.c +++ b/src/panfrost/bifrost/bi_print.c @@ -127,9 +127,37 @@ bi_print_clause(bi_clause *clause, FILE *fp) fprintf(fp, "\n"); } +static void +bi_print_scoreboard_line(unsigned slot, const char *name, uint64_t mask, FILE *fp) +{ + if (!mask) + return; + + fprintf(fp, "slot %u %s:", slot, name); + + u_foreach_bit64(reg, mask) + fprintf(fp, " r%" PRId64, reg); + + fprintf(fp, "\n"); +} + +static void +bi_print_scoreboard(struct bi_scoreboard_state *state, FILE *fp) +{ + for (unsigned i = 0; i < BI_NUM_SLOTS; ++i) { + bi_print_scoreboard_line(i, "reads", state->read[i], fp); + bi_print_scoreboard_line(i, "writes", state->write[i], fp); + } +} + void bi_print_block(bi_block *block, FILE *fp) { + if (block->scheduled) { + bi_print_scoreboard(&block->scoreboard_in, fp); + fprintf(fp, "\n"); + } + fprintf(fp, "block%u {\n", block->name); if (block->scheduled) { @@ -156,6 +184,11 @@ bi_print_block(bi_block *block, FILE *fp) fprintf(fp, " block%u", pred->name); } + if (block->scheduled) { + fprintf(fp, "\n"); + bi_print_scoreboard(&block->scoreboard_out, fp); + } + fprintf(fp, "\n\n"); } |