mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 16:08:04 +02:00
gallium/hud: replace byte units flag with pipe_driver_query_type
Instead of using a boolean 'is bytes' value, use the pipe_driver_query_type enum type. This will let is add support for time values in the next patch. Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
parent
f025aec906
commit
86ebd31c67
3 changed files with 18 additions and 16 deletions
|
|
@ -231,14 +231,16 @@ hud_draw_string(struct hud_context *hud, unsigned x, unsigned y,
|
|||
}
|
||||
|
||||
static void
|
||||
number_to_human_readable(uint64_t num, boolean is_in_bytes, char *out)
|
||||
number_to_human_readable(uint64_t num, enum pipe_driver_query_type type,
|
||||
char *out)
|
||||
{
|
||||
static const char *byte_units[] =
|
||||
{"", " KB", " MB", " GB", " TB", " PB", " EB"};
|
||||
static const char *metric_units[] =
|
||||
{"", " k", " M", " G", " T", " P", " E"};
|
||||
const char **units = is_in_bytes ? byte_units : metric_units;
|
||||
double divisor = is_in_bytes ? 1024 : 1000;
|
||||
const char **units =
|
||||
(type == PIPE_DRIVER_QUERY_TYPE_BYTES) ? byte_units : metric_units;
|
||||
double divisor = (type == PIPE_DRIVER_QUERY_TYPE_BYTES) ? 1024 : 1000;
|
||||
int unit = 0;
|
||||
double d = num;
|
||||
|
||||
|
|
@ -301,7 +303,7 @@ hud_pane_accumulate_vertices(struct hud_context *hud,
|
|||
hud->font.glyph_height / 2;
|
||||
|
||||
number_to_human_readable(pane->max_value * i / 5,
|
||||
pane->uses_byte_units, str);
|
||||
pane->type, str);
|
||||
hud_draw_string(hud, x, y, str);
|
||||
}
|
||||
|
||||
|
|
@ -312,7 +314,7 @@ hud_pane_accumulate_vertices(struct hud_context *hud,
|
|||
unsigned y = pane->y2 + 2 + i*hud->font.glyph_height;
|
||||
|
||||
number_to_human_readable(gr->current_value,
|
||||
pane->uses_byte_units, str);
|
||||
pane->type, str);
|
||||
hud_draw_string(hud, x, y, " %s: %s", gr->name, str);
|
||||
i++;
|
||||
}
|
||||
|
|
@ -869,12 +871,14 @@ hud_parse_env_var(struct hud_context *hud, const char *env)
|
|||
else if (strcmp(name, "samples-passed") == 0 &&
|
||||
has_occlusion_query(hud->pipe->screen)) {
|
||||
hud_pipe_query_install(pane, hud->pipe, "samples-passed",
|
||||
PIPE_QUERY_OCCLUSION_COUNTER, 0, 0, FALSE);
|
||||
PIPE_QUERY_OCCLUSION_COUNTER, 0, 0,
|
||||
PIPE_DRIVER_QUERY_TYPE_UINT64);
|
||||
}
|
||||
else if (strcmp(name, "primitives-generated") == 0 &&
|
||||
has_streamout(hud->pipe->screen)) {
|
||||
hud_pipe_query_install(pane, hud->pipe, "primitives-generated",
|
||||
PIPE_QUERY_PRIMITIVES_GENERATED, 0, 0, FALSE);
|
||||
PIPE_QUERY_PRIMITIVES_GENERATED, 0, 0,
|
||||
PIPE_DRIVER_QUERY_TYPE_UINT64);
|
||||
}
|
||||
else {
|
||||
boolean processed = FALSE;
|
||||
|
|
@ -901,7 +905,7 @@ hud_parse_env_var(struct hud_context *hud, const char *env)
|
|||
if (i < Elements(pipeline_statistics_names)) {
|
||||
hud_pipe_query_install(pane, hud->pipe, name,
|
||||
PIPE_QUERY_PIPELINE_STATISTICS, i,
|
||||
0, FALSE);
|
||||
0, PIPE_DRIVER_QUERY_TYPE_UINT64);
|
||||
processed = TRUE;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -150,7 +150,7 @@ void
|
|||
hud_pipe_query_install(struct hud_pane *pane, struct pipe_context *pipe,
|
||||
const char *name, unsigned query_type,
|
||||
unsigned result_index,
|
||||
uint64_t max_value, boolean uses_byte_units)
|
||||
uint64_t max_value, enum pipe_driver_query_type type)
|
||||
{
|
||||
struct hud_graph *gr;
|
||||
struct query_info *info;
|
||||
|
|
@ -178,8 +178,7 @@ hud_pipe_query_install(struct hud_pane *pane, struct pipe_context *pipe,
|
|||
hud_pane_add_graph(pane, gr);
|
||||
if (pane->max_value < max_value)
|
||||
hud_pane_set_max_value(pane, max_value);
|
||||
if (uses_byte_units)
|
||||
pane->uses_byte_units = TRUE;
|
||||
pane->type = type;
|
||||
}
|
||||
|
||||
boolean
|
||||
|
|
@ -189,7 +188,6 @@ hud_driver_query_install(struct hud_pane *pane, struct pipe_context *pipe,
|
|||
struct pipe_screen *screen = pipe->screen;
|
||||
struct pipe_driver_query_info query;
|
||||
unsigned num_queries, i;
|
||||
boolean uses_byte_units;
|
||||
boolean found = FALSE;
|
||||
|
||||
if (!screen->get_driver_query_info)
|
||||
|
|
@ -208,9 +206,8 @@ hud_driver_query_install(struct hud_pane *pane, struct pipe_context *pipe,
|
|||
if (!found)
|
||||
return FALSE;
|
||||
|
||||
uses_byte_units = query.type == PIPE_DRIVER_QUERY_TYPE_BYTES;
|
||||
hud_pipe_query_install(pane, pipe, query.name, query.query_type, 0,
|
||||
query.max_value.u64, uses_byte_units);
|
||||
query.max_value.u64, query.type);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ struct hud_pane {
|
|||
uint64_t ceiling;
|
||||
unsigned dyn_ceil_last_ran;
|
||||
boolean dyn_ceiling;
|
||||
boolean uses_byte_units;
|
||||
enum pipe_driver_query_type type;
|
||||
uint64_t period; /* in microseconds */
|
||||
|
||||
struct list_head graph_list;
|
||||
|
|
@ -89,7 +89,8 @@ void hud_cpu_graph_install(struct hud_pane *pane, unsigned cpu_index);
|
|||
void hud_pipe_query_install(struct hud_pane *pane, struct pipe_context *pipe,
|
||||
const char *name, unsigned query_type,
|
||||
unsigned result_index,
|
||||
uint64_t max_value, boolean uses_byte_units);
|
||||
uint64_t max_value,
|
||||
enum pipe_driver_query_type type);
|
||||
boolean hud_driver_query_install(struct hud_pane *pane,
|
||||
struct pipe_context *pipe, const char *name);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue