diff --git a/src/gallium/auxiliary/hud/hud_context.c b/src/gallium/auxiliary/hud/hud_context.c index 8172313605d..2deb48d18e7 100644 --- a/src/gallium/auxiliary/hud/hud_context.c +++ b/src/gallium/auxiliary/hud/hud_context.c @@ -204,7 +204,7 @@ hud_draw_string(struct hud_context *hud, unsigned x, unsigned y, } static void -number_to_human_readable(uint64_t num, enum pipe_driver_query_type type, +number_to_human_readable(double num, enum pipe_driver_query_type type, char *out) { static const char *byte_units[] = @@ -861,13 +861,19 @@ hud_pane_add_graph(struct hud_pane *pane, struct hud_graph *gr) } void -hud_graph_add_value(struct hud_graph *gr, uint64_t value) +hud_graph_add_value(struct hud_graph *gr, double value) { gr->current_value = value; value = value > gr->pane->ceiling ? gr->pane->ceiling : value; - if (gr->fd) - fprintf(gr->fd, "%" PRIu64 "\n", value); + if (gr->fd) { + if (fabs(value - lround(value)) > FLT_EPSILON) { + fprintf(gr->fd, "%f\n", value); + } + else { + fprintf(gr->fd, "%" PRIu64 "\n", (uint64_t) lround(value)); + } + } if (gr->index == gr->pane->max_num_vertices) { gr->vertices[0] = 0; diff --git a/src/gallium/auxiliary/hud/hud_fps.c b/src/gallium/auxiliary/hud/hud_fps.c index a360bc2ed04..8aa7a665a30 100644 --- a/src/gallium/auxiliary/hud/hud_fps.c +++ b/src/gallium/auxiliary/hud/hud_fps.c @@ -47,12 +47,12 @@ query_fps(struct hud_graph *gr) if (info->last_time) { if (info->last_time + gr->pane->period <= now) { - double fps = (uint64_t)info->frames * 1000000 / + double fps = ((uint64_t)info->frames) * 1000000 / (double)(now - info->last_time); info->frames = 0; info->last_time = now; - hud_graph_add_value(gr, (uint64_t) fps); + hud_graph_add_value(gr, fps); } } else { diff --git a/src/gallium/auxiliary/hud/hud_private.h b/src/gallium/auxiliary/hud/hud_private.h index 2b1717d2c4a..65baa8aa7e7 100644 --- a/src/gallium/auxiliary/hud/hud_private.h +++ b/src/gallium/auxiliary/hud/hud_private.h @@ -104,7 +104,7 @@ struct hud_graph { /* mutable variables */ unsigned num_vertices; unsigned index; /* vertex index being updated */ - uint64_t current_value; + double current_value; FILE *fd; }; @@ -139,7 +139,7 @@ struct hud_pane { /* core */ void hud_pane_add_graph(struct hud_pane *pane, struct hud_graph *gr); void hud_pane_set_max_value(struct hud_pane *pane, uint64_t value); -void hud_graph_add_value(struct hud_graph *gr, uint64_t value); +void hud_graph_add_value(struct hud_graph *gr, double value); /* graphs/queries */ struct hud_batch_query_context;