mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 05:08:08 +02:00
gallium/hud: disable queries during HUD draw calls
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
parent
5b2eddc40f
commit
1fe7c8d3c9
3 changed files with 29 additions and 1 deletions
|
|
@ -662,6 +662,16 @@ hud_draw(struct hud_context *hud, struct pipe_resource *tex)
|
|||
cso_restore_constant_buffer_slot0(cso, PIPE_SHADER_VERTEX);
|
||||
|
||||
pipe_surface_reference(&surf, NULL);
|
||||
|
||||
/* Start queries. */
|
||||
hud_batch_query_begin(hud->batch_query);
|
||||
|
||||
LIST_FOR_EACH_ENTRY(pane, &hud->pane_list, head) {
|
||||
LIST_FOR_EACH_ENTRY(gr, &pane->graph_list, head) {
|
||||
if (gr->begin_query)
|
||||
gr->begin_query(gr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
|||
|
|
@ -116,8 +116,15 @@ hud_batch_query_update(struct hud_batch_query_context *bq)
|
|||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!pipe->begin_query(pipe, bq->query[bq->head])) {
|
||||
void
|
||||
hud_batch_query_begin(struct hud_batch_query_context *bq)
|
||||
{
|
||||
if (!bq || bq->failed || !bq->query[bq->head])
|
||||
return;
|
||||
|
||||
if (!bq->pipe->begin_query(bq->pipe, bq->query[bq->head])) {
|
||||
fprintf(stderr,
|
||||
"gallium_hud: could not begin batch query. You may have "
|
||||
"selected too many or incompatible queries.\n");
|
||||
|
|
@ -277,7 +284,15 @@ query_new_value_normal(struct query_info *info)
|
|||
/* initialize */
|
||||
info->query[info->head] = pipe->create_query(pipe, info->query_type, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
begin_query(struct hud_graph *gr)
|
||||
{
|
||||
struct query_info *info = gr->query_data;
|
||||
struct pipe_context *pipe = info->pipe;
|
||||
|
||||
assert(!info->batch);
|
||||
if (info->query[info->head])
|
||||
pipe->begin_query(pipe, info->query[info->head]);
|
||||
}
|
||||
|
|
@ -374,6 +389,7 @@ hud_pipe_query_install(struct hud_batch_query_context **pbq,
|
|||
goto fail_info;
|
||||
info->batch = *pbq;
|
||||
} else {
|
||||
gr->begin_query = begin_query;
|
||||
info->query_type = query_type;
|
||||
info->result_index = result_index;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ struct hud_graph {
|
|||
/* name and query */
|
||||
char name[128];
|
||||
void *query_data;
|
||||
void (*begin_query)(struct hud_graph *gr);
|
||||
void (*query_new_value)(struct hud_graph *gr);
|
||||
void (*free_query_data)(void *ptr); /**< do not use ordinary free() */
|
||||
|
||||
|
|
@ -103,6 +104,7 @@ void hud_pipe_query_install(struct hud_batch_query_context **pbq,
|
|||
boolean hud_driver_query_install(struct hud_batch_query_context **pbq,
|
||||
struct hud_pane *pane,
|
||||
struct pipe_context *pipe, const char *name);
|
||||
void hud_batch_query_begin(struct hud_batch_query_context *bq);
|
||||
void hud_batch_query_update(struct hud_batch_query_context *bq);
|
||||
void hud_batch_query_cleanup(struct hud_batch_query_context **pbq);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue