From c8806eeefc63e70e7c454f4c85d2a8b4426c34b9 Mon Sep 17 00:00:00 2001 From: Lionel Landwerlin Date: Fri, 14 Oct 2016 17:04:50 +0100 Subject: [PATCH] intel: aubinator: print boolean fields to true with colors Signed-off-by: Lionel Landwerlin Reviewed-by: Sirisha Gandikota --- src/intel/tools/aubinator.c | 6 ++++-- src/intel/tools/decoder.c | 12 +++++++++--- src/intel/tools/decoder.h | 5 ++++- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/intel/tools/aubinator.c b/src/intel/tools/aubinator.c index 4fee53c35d1..73df16b6dce 100644 --- a/src/intel/tools/aubinator.c +++ b/src/intel/tools/aubinator.c @@ -139,7 +139,8 @@ decode_structure(struct gen_spec *spec, struct gen_group *strct, else offset = 0; - gen_field_iterator_init(&iter, strct, p); + gen_field_iterator_init(&iter, strct, p, + option_color == COLOR_ALWAYS); while (gen_field_iterator_next(&iter)) { idx = 0; print_dword_val(&iter, offset, &dword_num); @@ -755,7 +756,8 @@ parse_commands(struct gen_spec *spec, uint32_t *cmds, int size, int engine) struct gen_field_iterator iter; char *token = NULL; int idx = 0, dword_num = 0; - gen_field_iterator_init(&iter, inst, p); + gen_field_iterator_init(&iter, inst, p, + option_color == COLOR_ALWAYS); while (gen_field_iterator_next(&iter)) { idx = 0; print_dword_val(&iter, offset, &dword_num); diff --git a/src/intel/tools/decoder.c b/src/intel/tools/decoder.c index 267b821404c..cab527143bc 100644 --- a/src/intel/tools/decoder.c +++ b/src/intel/tools/decoder.c @@ -594,11 +594,14 @@ gen_group_get_length(struct gen_group *group, const uint32_t *p) void gen_field_iterator_init(struct gen_field_iterator *iter, - struct gen_group *group, const uint32_t *p) + struct gen_group *group, + const uint32_t *p, + bool print_colors) { iter->group = group; iter->p = p; iter->i = 0; + iter->print_colors = print_colors; } bool @@ -632,10 +635,13 @@ gen_field_iterator_next(struct gen_field_iterator *iter) snprintf(iter->value, sizeof(iter->value), "%"PRIu64, field(v.qw, f->start, f->end)); break; - case GEN_TYPE_BOOL: + case GEN_TYPE_BOOL: { + const char *true_string = + iter->print_colors ? "\e[0;35mtrue\e[0m" : "true"; snprintf(iter->value, sizeof(iter->value), - "%s", field(v.qw, f->start, f->end) ? "true" : "false"); + "%s", field(v.qw, f->start, f->end) ? true_string : "false"); break; + } case GEN_TYPE_FLOAT: snprintf(iter->value, sizeof(iter->value), "%f", v.f); break; diff --git a/src/intel/tools/decoder.h b/src/intel/tools/decoder.h index bbeaa0ac831..9a677beab50 100644 --- a/src/intel/tools/decoder.h +++ b/src/intel/tools/decoder.h @@ -55,6 +55,7 @@ struct gen_field_iterator { char value[128]; const uint32_t *p; int i; + bool print_colors; }; struct gen_group { @@ -101,7 +102,9 @@ struct gen_field { }; void gen_field_iterator_init(struct gen_field_iterator *iter, - struct gen_group *group, const uint32_t *p); + struct gen_group *group, + const uint32_t *p, + bool print_colors); bool gen_field_iterator_next(struct gen_field_iterator *iter); -- 2.30.2