summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Paul <[email protected]>2015-07-07 09:13:02 -0600
committerBrian Paul <[email protected]>2015-07-07 12:36:48 -0600
commit86ebd31c672f389f354e11b7aef4513dc8b76f13 (patch)
treec0322a670db4e1b8d87b9be233f80e650b125fba
parentf025aec906fce0f2918b6f4acb15548dc957ba67 (diff)
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 <[email protected]>
-rw-r--r--src/gallium/auxiliary/hud/hud_context.c20
-rw-r--r--src/gallium/auxiliary/hud/hud_driver_query.c9
-rw-r--r--src/gallium/auxiliary/hud/hud_private.h5
3 files changed, 18 insertions, 16 deletions
diff --git a/src/gallium/auxiliary/hud/hud_context.c b/src/gallium/auxiliary/hud/hud_context.c
index 6a124f7d716..9f42da9c219 100644
--- a/src/gallium/auxiliary/hud/hud_context.c
+++ b/src/gallium/auxiliary/hud/hud_context.c
@@ -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;
}
}
diff --git a/src/gallium/auxiliary/hud/hud_driver_query.c b/src/gallium/auxiliary/hud/hud_driver_query.c
index ee71678e894..c47d232842f 100644
--- a/src/gallium/auxiliary/hud/hud_driver_query.c
+++ b/src/gallium/auxiliary/hud/hud_driver_query.c
@@ -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;
}
diff --git a/src/gallium/auxiliary/hud/hud_private.h b/src/gallium/auxiliary/hud/hud_private.h
index 632926b87f5..033be534a75 100644
--- a/src/gallium/auxiliary/hud/hud_private.h
+++ b/src/gallium/auxiliary/hud/hud_private.h
@@ -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);