[Mesa-dev] [PATCH 6/7] gallium/hud: create files after graphs are created to get final names

Edmondo Tommasina edmondo.tommasina at gmail.com
Thu Feb 16 16:21:54 UTC 2017


Thanks for the patch, it looks good.

Reviewed-by: Edmondo Tommasina <edmondo.tommasina at gmail.com>



On Thu, Feb 16, 2017 at 1:52 PM, Marek Olšák <maraeo at gmail.com> wrote:
> From: Marek Olšák <marek.olsak at amd.com>
>
> ---
>  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
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list