summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/r600/r600_pipe.h
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2012-02-23 23:22:35 +0100
committerMarek Olšák <[email protected]>2012-03-05 14:22:19 +0100
commit09ec30f02830b3cbf9d6ac04d9497634dca86846 (patch)
treeea21c8d6820e974954af149095b8027d77145be0 /src/gallium/drivers/r600/r600_pipe.h
parenteabcecc26baf225dc50f1d400a80ea4c78831390 (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.h20
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);