summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChia-I Wu <olvaffe@gmail.com>2014-09-21 23:02:55 +0800
committerChia-I Wu <olvaffe@gmail.com>2014-09-21 23:36:00 +0800
commit41f072a4f8fd3f3347789ee4186af0d4fcf69622 (patch)
tree4fc63b07dacc4d8070d0097c54e41460ea201551
parent6b79d894d7c22523ee1ccdee73f4bab79c0cf76d (diff)
ilo: use a single list for queries
We used different lists for different types of queries because we wanted to update software queries quickly. Now that there is no software queries, we are fine with a single list. Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
-rw-r--r--src/gallium/drivers/ilo/ilo_3d.c71
-rw-r--r--src/gallium/drivers/ilo/ilo_3d.h6
2 files changed, 8 insertions, 69 deletions
diff --git a/src/gallium/drivers/ilo/ilo_3d.c b/src/gallium/drivers/ilo/ilo_3d.c
index ded5c6ce464..4be4ce4fc0d 100644
--- a/src/gallium/drivers/ilo/ilo_3d.c
+++ b/src/gallium/drivers/ilo/ilo_3d.c
@@ -217,29 +217,8 @@ ilo_3d_begin_query(struct pipe_context *pipe, struct ilo_query *q)
query_begin_bo(hw3d, q);
- switch (q->type) {
- case PIPE_QUERY_OCCLUSION_COUNTER:
- list_add(&q->list, &hw3d->occlusion_queries);
- break;
- case PIPE_QUERY_TIMESTAMP:
- /* no-op */
- break;
- case PIPE_QUERY_TIME_ELAPSED:
- list_add(&q->list, &hw3d->time_elapsed_queries);
- break;
- case PIPE_QUERY_PRIMITIVES_GENERATED:
- list_add(&q->list, &hw3d->prim_generated_queries);
- break;
- case PIPE_QUERY_PRIMITIVES_EMITTED:
- list_add(&q->list, &hw3d->prim_emitted_queries);
- break;
- case PIPE_QUERY_PIPELINE_STATISTICS:
- list_add(&q->list, &hw3d->pipeline_statistics_queries);
- break;
- default:
- assert(!"unknown query type");
- break;
- }
+ if (q->in_pairs)
+ list_add(&q->list, &hw3d->queries);
}
void
@@ -286,24 +265,8 @@ ilo_3d_own_cp(struct ilo_cp *cp, void *data)
ilo_builder_batch_snapshot(&hw3d->cp->builder, &snapshot);
- /* resume occlusion queries */
- LIST_FOR_EACH_ENTRY(q, &hw3d->occlusion_queries, list)
- query_begin_bo(hw3d, q);
-
- /* resume timer queries */
- LIST_FOR_EACH_ENTRY(q, &hw3d->time_elapsed_queries, list)
- query_begin_bo(hw3d, q);
-
- /* resume prim generated queries */
- LIST_FOR_EACH_ENTRY(q, &hw3d->prim_generated_queries, list)
- query_begin_bo(hw3d, q);
-
- /* resume prim emitted queries */
- LIST_FOR_EACH_ENTRY(q, &hw3d->prim_emitted_queries, list)
- query_begin_bo(hw3d, q);
-
- /* resume pipeline statistics queries */
- LIST_FOR_EACH_ENTRY(q, &hw3d->pipeline_statistics_queries, list)
+ /* resume queries */
+ LIST_FOR_EACH_ENTRY(q, &hw3d->queries, list)
query_begin_bo(hw3d, q);
if (!ilo_builder_validate(&hw3d->cp->builder, 0, NULL)) {
@@ -329,24 +292,8 @@ ilo_3d_release_cp(struct ilo_cp *cp, void *data)
assert(ilo_cp_space(hw3d->cp) >= hw3d->owner.reserve);
- /* pause occlusion queries */
- LIST_FOR_EACH_ENTRY(q, &hw3d->occlusion_queries, list)
- query_end_bo(hw3d, q);
-
- /* pause timer queries */
- LIST_FOR_EACH_ENTRY(q, &hw3d->time_elapsed_queries, list)
- query_end_bo(hw3d, q);
-
- /* pause prim generated queries */
- LIST_FOR_EACH_ENTRY(q, &hw3d->prim_generated_queries, list)
- query_end_bo(hw3d, q);
-
- /* pause prim emitted queries */
- LIST_FOR_EACH_ENTRY(q, &hw3d->prim_emitted_queries, list)
- query_end_bo(hw3d, q);
-
- /* pause pipeline statistics queries */
- LIST_FOR_EACH_ENTRY(q, &hw3d->pipeline_statistics_queries, list)
+ /* pause queries */
+ LIST_FOR_EACH_ENTRY(q, &hw3d->queries, list)
query_end_bo(hw3d, q);
}
@@ -385,11 +332,7 @@ ilo_3d_create(struct ilo_cp *cp, const struct ilo_dev_info *dev)
hw3d->new_batch = true;
- list_inithead(&hw3d->occlusion_queries);
- list_inithead(&hw3d->time_elapsed_queries);
- list_inithead(&hw3d->prim_generated_queries);
- list_inithead(&hw3d->prim_emitted_queries);
- list_inithead(&hw3d->pipeline_statistics_queries);
+ list_inithead(&hw3d->queries);
hw3d->pipeline = ilo_3d_pipeline_create(cp, dev);
if (!hw3d->pipeline) {
diff --git a/src/gallium/drivers/ilo/ilo_3d.h b/src/gallium/drivers/ilo/ilo_3d.h
index 9053dcdcc99..e4a805627b0 100644
--- a/src/gallium/drivers/ilo/ilo_3d.h
+++ b/src/gallium/drivers/ilo/ilo_3d.h
@@ -51,11 +51,7 @@ struct ilo_3d {
bool cond;
} render_condition;
- struct list_head occlusion_queries;
- struct list_head time_elapsed_queries;
- struct list_head prim_generated_queries;
- struct list_head prim_emitted_queries;
- struct list_head pipeline_statistics_queries;
+ struct list_head queries;
struct ilo_3d_pipeline *pipeline;
};