Thanks for the patch, it looks good. Reviewed-by: Edmondo Tommasina <[email protected]>
On Thu, Feb 16, 2017 at 1:52 PM, Marek Olšák <[email protected]> wrote: > From: Marek Olšák <[email protected]> > > --- > src/gallium/auxiliary/hud/hud_context.c | 25 +++++++++++++++++++++++-- > src/gallium/auxiliary/hud/hud_cpu.c | 4 ---- > src/gallium/auxiliary/hud/hud_driver_query.c | 2 -- > src/gallium/auxiliary/hud/hud_fps.c | 2 -- > src/gallium/auxiliary/hud/hud_private.h | 2 -- > 5 files changed, 23 insertions(+), 12 deletions(-) > > diff --git a/src/gallium/auxiliary/hud/hud_context.c > b/src/gallium/auxiliary/hud/hud_context.c > index 9de260c..aaa52d5 100644 > --- a/src/gallium/auxiliary/hud/hud_context.c > +++ b/src/gallium/auxiliary/hud/hud_context.c > @@ -932,33 +932,46 @@ static void > hud_graph_destroy(struct hud_graph *graph) > { > FREE(graph->vertices); > if (graph->free_query_data) > graph->free_query_data(graph->query_data); > if (graph->fd) > fclose(graph->fd); > FREE(graph); > } > > -void > +static void strcat_without_spaces(char *dst, const char *src) > +{ > + dst += strlen(dst); > + while (*src) { > + if (*src == ' ') > + *dst++ = '_'; > + else > + *dst++ = *src; > + src++; > + } > + *dst = 0; > +} > + > +static void > hud_graph_set_dump_file(struct hud_graph *gr) > { > #ifndef PIPE_OS_WINDOWS > const char *hud_dump_dir = getenv("GALLIUM_HUD_DUMP_DIR"); > char *dump_file; > > if (hud_dump_dir && access(hud_dump_dir, W_OK) == 0) { > dump_file = malloc(strlen(hud_dump_dir) + sizeof("/") + > sizeof(gr->name)); > if (dump_file) { > strcpy(dump_file, hud_dump_dir); > strcat(dump_file, "/"); > - strcat(dump_file, gr->name); > + strcat_without_spaces(dump_file, gr->name); > gr->fd = fopen(dump_file, "w+"); > free(dump_file); > } > } > #endif > } > > /** > * Read a string from the environment variable. > * The separators "+", ",", ":", and ";" terminate the string. > @@ -1369,20 +1382,28 @@ hud_parse_env_var(struct hud_context *hud, const char > *env) > } > > if (pane) { > if (pane->num_graphs) { > LIST_ADDTAIL(&pane->head, &hud->pane_list); > } > else { > FREE(pane); > } > } > + > + LIST_FOR_EACH_ENTRY(pane, &hud->pane_list, head) { > + struct hud_graph *gr; > + > + LIST_FOR_EACH_ENTRY(gr, &pane->graph_list, head) { > + hud_graph_set_dump_file(gr); > + } > + } > } > > static void > print_help(struct pipe_screen *screen) > { > int i, num_queries, num_cpus = hud_get_num_cpus(); > > puts("Syntax: > GALLIUM_HUD=name1[+name2][...][:value1][,nameI...][;nameJ...]"); > puts(""); > puts(" Names are identifiers of data sources which will be drawn as > graphs"); > diff --git a/src/gallium/auxiliary/hud/hud_cpu.c > b/src/gallium/auxiliary/hud/hud_cpu.c > index a8d97b8..1cba353 100644 > --- a/src/gallium/auxiliary/hud/hud_cpu.c > +++ b/src/gallium/auxiliary/hud/hud_cpu.c > @@ -207,22 +207,20 @@ hud_cpu_graph_install(struct hud_pane *pane, unsigned > cpu_index) > gr->query_new_value = query_cpu_load; > > /* Don't use free() as our callback as that messes up Gallium's > * memory debugger. Use simple free_query_data() wrapper. > */ > gr->free_query_data = free_query_data; > > info = gr->query_data; > info->cpu_index = cpu_index; > > - hud_graph_set_dump_file(gr); > - > hud_pane_add_graph(pane, gr); > hud_pane_set_max_value(pane, 100); > } > > int > hud_get_num_cpus(void) > { > uint64_t busy, total; > int i = 0; > > @@ -278,15 +276,13 @@ hud_api_thread_busy_install(struct hud_pane *pane) > return; > } > > gr->query_new_value = query_api_thread_busy_status; > > /* Don't use free() as our callback as that messes up Gallium's > * memory debugger. Use simple free_query_data() wrapper. > */ > gr->free_query_data = free_query_data; > > - hud_graph_set_dump_file(gr); > - > hud_pane_add_graph(pane, gr); > hud_pane_set_max_value(pane, 100); > } > diff --git a/src/gallium/auxiliary/hud/hud_driver_query.c > b/src/gallium/auxiliary/hud/hud_driver_query.c > index 6a97dbd..76104b5 100644 > --- a/src/gallium/auxiliary/hud/hud_driver_query.c > +++ b/src/gallium/auxiliary/hud/hud_driver_query.c > @@ -387,22 +387,20 @@ hud_pipe_query_install(struct hud_batch_query_context > **pbq, > if (flags & PIPE_DRIVER_QUERY_FLAG_BATCH) { > if (!batch_query_add(pbq, pipe, query_type, &info->result_index)) > goto fail_info; > info->batch = *pbq; > } else { > gr->begin_query = begin_query; > info->query_type = query_type; > info->result_index = result_index; > } > > - hud_graph_set_dump_file(gr); > - > hud_pane_add_graph(pane, gr); > pane->type = type; /* must be set before updating the max_value */ > > if (pane->max_value < max_value) > hud_pane_set_max_value(pane, max_value); > return; > > fail_info: > FREE(info); > fail_gr: > diff --git a/src/gallium/auxiliary/hud/hud_fps.c > b/src/gallium/auxiliary/hud/hud_fps.c > index ddf30e4..a360bc2 100644 > --- a/src/gallium/auxiliary/hud/hud_fps.c > +++ b/src/gallium/auxiliary/hud/hud_fps.c > @@ -81,14 +81,12 @@ hud_fps_graph_install(struct hud_pane *pane) > return; > } > > gr->query_new_value = query_fps; > > /* Don't use free() as our callback as that messes up Gallium's > * memory debugger. Use simple free_query_data() wrapper. > */ > gr->free_query_data = free_query_data; > > - hud_graph_set_dump_file(gr); > - > hud_pane_add_graph(pane, gr); > } > diff --git a/src/gallium/auxiliary/hud/hud_private.h > b/src/gallium/auxiliary/hud/hud_private.h > index 1d06e03..bbc5ec7 100644 > --- a/src/gallium/auxiliary/hud/hud_private.h > +++ b/src/gallium/auxiliary/hud/hud_private.h > @@ -102,22 +102,20 @@ void hud_pipe_query_install(struct > hud_batch_query_context **pbq, > enum pipe_driver_query_type type, > enum pipe_driver_query_result_type result_type, > unsigned flags); > boolean hud_driver_query_install(struct hud_batch_query_context **pbq, > struct hud_pane *pane, > struct pipe_context *pipe, const char > *name); > void hud_batch_query_begin(struct hud_batch_query_context *bq); > void hud_batch_query_update(struct hud_batch_query_context *bq); > void hud_batch_query_cleanup(struct hud_batch_query_context **pbq); > > -void hud_graph_set_dump_file(struct hud_graph *gr); > - > #if HAVE_GALLIUM_EXTRA_HUD > int hud_get_num_nics(bool displayhelp); > #define NIC_DIRECTION_RX 1 > #define NIC_DIRECTION_TX 2 > #define NIC_RSSI_DBM 3 > void hud_nic_graph_install(struct hud_pane *pane, const char *nic_index, > unsigned int mode); > > int hud_get_num_disks(bool displayhelp); > #define DISKSTAT_RD 1 > -- > 2.7.4 > > _______________________________________________ > mesa-dev mailing list > [email protected] > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
