freedreno/query: some queries don't have ->begin_query()

Signed-off-by: Rob Clark <robclark@freedesktop.org>
This commit is contained in:
Rob Clark 2016-02-14 10:02:13 -05:00
parent 9d23d7b7cb
commit 0e91dccf9c
2 changed files with 18 additions and 0 deletions

View File

@ -65,4 +65,16 @@ fd_query(struct pipe_query *pq)
void fd_query_screen_init(struct pipe_screen *pscreen);
void fd_query_context_init(struct pipe_context *pctx);
static inline bool
skip_begin_query(int type)
{
switch (type) {
case PIPE_QUERY_TIMESTAMP:
case PIPE_QUERY_GPU_FINISHED:
return true;
default:
return false;
}
}
#endif /* FREEDRENO_QUERY_H_ */

View File

@ -160,6 +160,12 @@ static void
fd_hw_end_query(struct fd_context *ctx, struct fd_query *q)
{
struct fd_hw_query *hq = fd_hw_query(q);
/* there are a couple special cases, which don't have
* a matching ->begin_query():
*/
if (skip_begin_query(q->type) && !q->active) {
fd_hw_begin_query(ctx, q);
}
if (!q->active)
return;
if (is_active(hq, ctx->stage))