Pushed, thanks! Marek
On Tue, May 15, 2018 at 5:09 PM, Matthias Groß <[email protected]> wrote: > Thanks for your comment. This version has an additional boolean in the > fps_info struct to distinguish between fps and frame time calculation. > The struct is initialised in the respecting install functions for this > purpose. > --- > src/gallium/auxiliary/hud/hud_context.c | 4 +++ > src/gallium/auxiliary/hud/hud_fps.c | 34 ++++++++++++++++++++++++- > src/gallium/auxiliary/hud/hud_private.h | 1 + > 3 files changed, 38 insertions(+), 1 deletion(-) > > diff --git a/src/gallium/auxiliary/hud/hud_context.c > b/src/gallium/auxiliary/hud/hud_context.c > index 6ed9ccffdb..61db98b4b0 100644 > --- a/src/gallium/auxiliary/hud/hud_context.c > +++ b/src/gallium/auxiliary/hud/hud_context.c > @@ -1247,6 +1247,9 @@ hud_parse_env_var(struct hud_context *hud, struct > pipe_screen *screen, > if (strcmp(name, "fps") == 0) { > hud_fps_graph_install(pane); > } > + else if (strcmp(name, "frametime") == 0) { > + hud_frametime_graph_install(pane); > + } > else if (strcmp(name, "cpu") == 0) { > hud_cpu_graph_install(pane, ALL_CPUS); > } > @@ -1557,6 +1560,7 @@ print_help(struct pipe_screen *screen) > puts(""); > puts(" Available names:"); > puts(" fps"); > + puts(" frametime"); > puts(" cpu"); > > for (i = 0; i < num_cpus; i++) > diff --git a/src/gallium/auxiliary/hud/hud_fps.c > b/src/gallium/auxiliary/hud/hud_fps.c > index c8438d0f5e..29110f5575 100644 > --- a/src/gallium/auxiliary/hud/hud_fps.c > +++ b/src/gallium/auxiliary/hud/hud_fps.c > @@ -33,6 +33,7 @@ > #include "util/u_memory.h" > > struct fps_info { > + boolean frametime; > int frames; > uint64_t last_time; > }; > @@ -46,7 +47,12 @@ query_fps(struct hud_graph *gr, struct pipe_context > *pipe) > info->frames++; > > if (info->last_time) { > - if (info->last_time + gr->pane->period <= now) { > + if (info->frametime) { > + double frametime = ((double)now - (double)info->last_time) / > 1000.0; > + hud_graph_add_value(gr, frametime); > + info->last_time = now; > + } > + else if (info->last_time + gr->pane->period <= now) { > double fps = ((uint64_t)info->frames) * 1000000 / > (double)(now - info->last_time); > info->frames = 0; > @@ -80,6 +86,8 @@ hud_fps_graph_install(struct hud_pane *pane) > FREE(gr); > return; > } > + struct fps_info *info = gr->query_data; > + info->frametime = false; > > gr->query_new_value = query_fps; > > @@ -90,3 +98,27 @@ hud_fps_graph_install(struct hud_pane *pane) > > hud_pane_add_graph(pane, gr); > } > + > +void > +hud_frametime_graph_install(struct hud_pane *pane) > +{ > + struct hud_graph *gr = CALLOC_STRUCT(hud_graph); > + > + if (!gr) > + return; > + > + strcpy(gr->name, "frametime (ms)"); > + gr->query_data = CALLOC_STRUCT(fps_info); > + if (!gr->query_data) { > + FREE(gr); > + return; > + } > + struct fps_info *info = gr->query_data; > + info->frametime = true; > + > + gr->query_new_value = query_fps; > + > + gr->free_query_data = free_query_data; > + > + 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 b64e29e93e..deed329a8a 100644 > --- a/src/gallium/auxiliary/hud/hud_private.h > +++ b/src/gallium/auxiliary/hud/hud_private.h > @@ -157,6 +157,7 @@ struct hud_batch_query_context; > int hud_get_num_cpus(void); > > void hud_fps_graph_install(struct hud_pane *pane); > +void hud_frametime_graph_install(struct hud_pane *pane); > void hud_cpu_graph_install(struct hud_pane *pane, unsigned cpu_index); > void hud_thread_busy_install(struct hud_pane *pane, const char *name, > bool main); > void hud_thread_counter_install(struct hud_pane *pane, const char *name, > -- > 2.17.0 > > _______________________________________________ > 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
