diff options
author | Lionel Landwerlin <[email protected]> | 2016-10-15 00:27:06 +0100 |
---|---|---|
committer | Lionel Landwerlin <[email protected]> | 2016-11-01 22:37:56 +0000 |
commit | a28db12e214df94d601fcbbf09c776403c8d9384 (patch) | |
tree | c43a055a5f7dbf3ebd4accdb6ffef35fd4c759c6 | |
parent | 74c4c84482b9659805ef3d796fba81815e70ed28 (diff) |
intel: aubinator: print field values if available
Turning this :
sampler state 0
Sampler Disable: false
Texture Border Color Mode: 0
LOD PreClamp Enable: 1
Base Mip Level: 0.000000
Mip Mode Filter: 0
Mag Mode Filter: 1
Min Mode Filter: 1
Texture LOD Bias: foo
Anisotropic Algorithm: 0
into this :
sampler state 0
Sampler Disable: false
Texture Border Color Mode: 0 (DX10/OGL)
LOD PreClamp Enable: 1 (OGL)
Base Mip Level: 0.000000
Mip Mode Filter: 0 (NONE)
Mag Mode Filter: 1 (LINEAR)
Min Mode Filter: 1 (LINEAR)
Texture LOD Bias: foo
Anisotropic Algorithm: 0 (LEGACY)
Signed-off-by: Lionel Landwerlin <[email protected]>
Reviewed-by: Sirisha Gandikota<[email protected]>
-rw-r--r-- | src/intel/tools/aubinator.c | 7 | ||||
-rw-r--r-- | src/intel/tools/decoder.c | 31 | ||||
-rw-r--r-- | src/intel/tools/decoder.h | 1 |
3 files changed, 34 insertions, 5 deletions
diff --git a/src/intel/tools/aubinator.c b/src/intel/tools/aubinator.c index 73df16b6dce..0d4b3f944f4 100644 --- a/src/intel/tools/aubinator.c +++ b/src/intel/tools/aubinator.c @@ -111,7 +111,12 @@ print_iterator_values(struct gen_field_iterator *iter, int *idx) { char *token = NULL; if (strstr(iter->value, "struct") == NULL) { - printf(" %s: %s\n", iter->name, iter->value); + if (strlen(iter->description) > 0) { + printf(" %s: %s (%s)\n", + iter->name, iter->value, iter->description); + } else { + printf(" %s: %s\n", iter->name, iter->value); + } } else { token = strtok(iter->value, " "); if (token != NULL) { diff --git a/src/intel/tools/decoder.c b/src/intel/tools/decoder.c index 88ba5c0f5fc..6bd02bf9053 100644 --- a/src/intel/tools/decoder.c +++ b/src/intel/tools/decoder.c @@ -635,6 +635,19 @@ gen_field_iterator_init(struct gen_field_iterator *iter, iter->print_colors = print_colors; } +static void +gen_field_write_value(char *str, size_t max_length, + struct gen_field *field, + uint64_t value) +{ + for (int i = 0; i < field->n_values; i++) { + if (field->values[i]->value == value) { + strncpy(str, field->values[i]->name, max_length); + return; + } + } +} + bool gen_field_iterator_next(struct gen_field_iterator *iter) { @@ -656,16 +669,26 @@ gen_field_iterator_next(struct gen_field_iterator *iter) else v.qw = iter->p[index]; + iter->description[0] = '\0'; + switch (f->type.kind) { case GEN_TYPE_UNKNOWN: - case GEN_TYPE_INT: + case GEN_TYPE_INT: { + uint64_t value = field(v.qw, f->start, f->end); snprintf(iter->value, sizeof(iter->value), - "%"PRId64, field(v.qw, f->start, f->end)); + "%"PRId64, value); + gen_field_write_value(iter->description, sizeof(iter->description), + f, value); break; - case GEN_TYPE_UINT: + } + case GEN_TYPE_UINT: { + uint64_t value = field(v.qw, f->start, f->end); snprintf(iter->value, sizeof(iter->value), - "%"PRIu64, field(v.qw, f->start, f->end)); + "%"PRIu64, value); + gen_field_write_value(iter->description, sizeof(iter->description), + f, value); break; + } case GEN_TYPE_BOOL: { const char *true_string = iter->print_colors ? "\e[0;35mtrue\e[0m" : "true"; diff --git a/src/intel/tools/decoder.h b/src/intel/tools/decoder.h index ecc9ff116b7..b28e6031249 100644 --- a/src/intel/tools/decoder.h +++ b/src/intel/tools/decoder.h @@ -53,6 +53,7 @@ struct gen_field_iterator { struct gen_group *group; const char *name; char value[128]; + char description[128]; const uint32_t *p; int i; bool print_colors; |