From e8bb97ce30051b999a4a69c9b27884daeb8d71e6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Sat, 24 Dec 2016 20:36:56 +0100 Subject: [PATCH] gallium/hud: add an option to rename each data source MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit useful for radeonsi performance counters v2: allow specifying both : and = Reviewed-by: Nicolai Hähnle --- src/gallium/auxiliary/hud/hud_context.c | 37 +++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/src/gallium/auxiliary/hud/hud_context.c b/src/gallium/auxiliary/hud/hud_context.c index 44f14762a63..9b00591bd84 100644 --- a/src/gallium/auxiliary/hud/hud_context.c +++ b/src/gallium/auxiliary/hud/hud_context.c @@ -789,6 +789,17 @@ hud_pane_create(unsigned x1, unsigned y1, unsigned x2, unsigned y2, return pane; } +/* replace '-' with a space */ +static void +strip_hyphens(char *s) +{ + while (*s) { + if (*s == '-') + *s = ' '; + s++; + } +} + /** * Add a graph to an existing pane. * One pane can contain multiple graphs over each other. @@ -895,7 +906,7 @@ parse_string(const char *s, char *out) { int i; - for (i = 0; *s && *s != '+' && *s != ',' && *s != ':' && *s != ';'; + for (i = 0; *s && *s != '+' && *s != ',' && *s != ':' && *s != ';' && *s != '='; s++, out++, i++) *out = *s; @@ -1193,11 +1204,31 @@ hud_parse_env_var(struct hud_context *hud, const char *env) } else { fprintf(stderr, "gallium_hud: syntax error: unexpected '%c' (%i) " - "after ':'\n", *env, *env); + "after ':'\n", *env, *env); fflush(stderr); } } + if (*env == '=') { + env++; + + if (!pane) { + fprintf(stderr, "gallium_hud: syntax error: unexpected '=', " + "expected a name\n"); + fflush(stderr); + break; + } + + num = parse_string(env, s); + env += num; + + strip_hyphens(s); + if (!LIST_IS_EMPTY(&pane->graph_list)) { + strcpy(LIST_ENTRY(struct hud_graph, + pane->graph_list.prev, head)->name, s); + } + } + if (*env == 0) break; @@ -1274,6 +1305,8 @@ print_help(struct pipe_screen *screen) puts(" for the given pane."); puts(" ',' creates a new pane below the last one."); puts(" ';' creates a new pane at the top of the next column."); + puts(" '=' followed by a string, changes the name of the last data source"); + puts(" to that string"); puts(""); puts(" Example: GALLIUM_HUD=\"cpu,fps;primitives-generated\""); puts(""); -- 2.30.2