Reviewed-by: Marek Olšák <marek.ol...@amd.com> Marek
On Sun, Jun 11, 2017 at 3:52 PM, Boyan Ding <boyan.j.d...@gmail.com> wrote: > Signed-off-by: Boyan Ding <boyan.j.d...@gmail.com> > --- > src/gallium/auxiliary/hud/hud_driver_query.c | 22 +++++++++++++++++++--- > 1 file changed, 19 insertions(+), 3 deletions(-) > > diff --git a/src/gallium/auxiliary/hud/hud_driver_query.c > b/src/gallium/auxiliary/hud/hud_driver_query.c > index 76104b5b49..7a469bd1bd 100644 > --- a/src/gallium/auxiliary/hud/hud_driver_query.c > +++ b/src/gallium/auxiliary/hud/hud_driver_query.c > @@ -202,6 +202,7 @@ struct query_info { > unsigned query_type; > unsigned result_index; /* unit depends on query_type */ > enum pipe_driver_query_result_type result_type; > + enum pipe_driver_query_type type; > > /* Ring of queries. If a query is busy, we use another slot. */ > struct pipe_query *query[NUM_QUERIES]; > @@ -229,6 +230,19 @@ query_new_value_batch(struct query_info *info) > } > } > > +static uint64_t > +query_result_to_u64(union pipe_query_result result, > + enum pipe_driver_query_type type) > +{ > + switch (type) { > + case PIPE_DRIVER_QUERY_TYPE_PERCENTAGE: > + case PIPE_DRIVER_QUERY_TYPE_FLOAT: > + return result.f; > + default: > + return result.u64; > + } > +} > + > static void > query_new_value_normal(struct query_info *info) > { > @@ -242,10 +256,11 @@ query_new_value_normal(struct query_info *info) > while (1) { > struct pipe_query *query = info->query[info->tail]; > union pipe_query_result result; > - uint64_t *res64 = (uint64_t *)&result; > + union pipe_query_result *presult = &result; > > - if (query && pipe->get_query_result(pipe, query, FALSE, &result)) { > - info->results_cumulative += res64[info->result_index]; > + if (query && pipe->get_query_result(pipe, query, FALSE, presult)) { > + info->results_cumulative += > + query_result_to_u64(presult[info->result_index], info->type); > info->num_results++; > > if (info->tail == info->head) > @@ -383,6 +398,7 @@ hud_pipe_query_install(struct hud_batch_query_context > **pbq, > info = gr->query_data; > info->pipe = pipe; > info->result_type = result_type; > + info->type = type; > > if (flags & PIPE_DRIVER_QUERY_FLAG_BATCH) { > if (!batch_query_add(pbq, pipe, query_type, &info->result_index)) > -- > 2.13.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev