diff options
author | Marek Olšák <[email protected]> | 2012-02-23 23:22:35 +0100 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2012-03-05 14:22:19 +0100 |
commit | 09ec30f02830b3cbf9d6ac04d9497634dca86846 (patch) | |
tree | ea21c8d6820e974954af149095b8027d77145be0 /src/gallium/drivers/r600/r600_pipe.h | |
parent | eabcecc26baf225dc50f1d400a80ea4c78831390 (diff) |
r600g: don't suspend timer queries for u_blitter
Timer queries should be able to measure the time spent in u_blitter as well.
Queries are split into two groups: the timer ones and the others (streamout,
occlusion), because we should only suspend non-timer queries for u_blitter,
and later if the non-timer queries are suspended, the context flush should
only suspend and resume the timer queries.
Reviewed-by: Alex Deucher <[email protected]>
Reviewed-by: Christian König <[email protected]>
Diffstat (limited to 'src/gallium/drivers/r600/r600_pipe.h')
-rw-r--r-- | src/gallium/drivers/r600/r600_pipe.h | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/gallium/drivers/r600/r600_pipe.h b/src/gallium/drivers/r600/r600_pipe.h index bc0ffc03852..62d831086fc 100644 --- a/src/gallium/drivers/r600/r600_pipe.h +++ b/src/gallium/drivers/r600/r600_pipe.h @@ -309,8 +309,18 @@ struct r600_context { /* The list of active queries. Only one query of each type can be active. */ int num_occlusion_queries; - struct list_head active_query_list; - unsigned num_cs_dw_queries_suspend; + + /* Manage queries in two separate groups: + * The timer ones and the others (streamout, occlusion). + * + * We do this because we should only suspend non-timer queries for u_blitter, + * and later if the non-timer queries are suspended, the context flush should + * only suspend and resume the timer queries. */ + struct list_head active_timer_queries; + unsigned num_cs_dw_timer_queries_suspend; + struct list_head active_nontimer_queries; + unsigned num_cs_dw_nontimer_queries_suspend; + unsigned num_cs_dw_streamout_end; unsigned backend_mask; @@ -395,8 +405,10 @@ void r600_flush(struct pipe_context *ctx, struct pipe_fence_handle **fence, /* r600_query.c */ void r600_init_query_functions(struct r600_context *rctx); -void r600_suspend_queries(struct r600_context *ctx); -void r600_resume_queries(struct r600_context *ctx); +void r600_suspend_nontimer_queries(struct r600_context *ctx); +void r600_resume_nontimer_queries(struct r600_context *ctx); +void r600_suspend_timer_queries(struct r600_context *ctx); +void r600_resume_timer_queries(struct r600_context *ctx); /* r600_resource.c */ void r600_init_context_resource_functions(struct r600_context *r600); |