summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJosé Fonseca <[email protected]>2012-12-09 10:15:19 +0000
committerJosé Fonseca <[email protected]>2012-12-20 16:33:49 +0000
commitab2f573634d21cf5d2c0843960b98e890d495793 (patch)
tree03ebcde34434e1d1d3e7b5233d29856952d4f149 /src
parent3160b0b9fc2b49b0e9fe684b955eebf3691024ff (diff)
llvmpipe: Drop PIPE_QUERY_TIME_ELAPSED support.
It was slightly wrong: we were computing the longest duration of the query among all the rasterizer tasks. Regardless, for tile-based implementations such as llvmpipe, time differences will never be very useful, because rendering before/during/after the query is all interleaved. And this is expected, see ARB_timer_query spec, issue 10. In particular, piglit ext_timer_query-time-elapsed still fails, because it makes assumptions that don't hold true in in tiled architectures. Not sure how to fix that though. Reviewed-by: Dave Airlie <[email protected]> Reviewed-by: Marek Olšák <[email protected]> Reviewed-by: Brian Paul <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/llvmpipe/lp_query.c7
-rw-r--r--src/gallium/drivers/llvmpipe/lp_rast.c6
-rw-r--r--src/gallium/drivers/llvmpipe/lp_screen.c1
3 files changed, 1 insertions, 13 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_query.c b/src/gallium/drivers/llvmpipe/lp_query.c
index 7a62a809d58..01d5201a100 100644
--- a/src/gallium/drivers/llvmpipe/lp_query.c
+++ b/src/gallium/drivers/llvmpipe/lp_query.c
@@ -122,13 +122,6 @@ llvmpipe_get_query_result(struct pipe_context *pipe,
*result += pq->count[i];
}
break;
- case PIPE_QUERY_TIME_ELAPSED:
- for (i = 0; i < LP_MAX_THREADS; i++) {
- if (pq->count[i] > *result) {
- *result = pq->count[i];
- }
- }
- break;
case PIPE_QUERY_TIMESTAMP:
for (i = 0; i < LP_MAX_THREADS; i++) {
if (pq->count[i] > *result) {
diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c b/src/gallium/drivers/llvmpipe/lp_rast.c
index 37be6ad571d..44e8324b2b1 100644
--- a/src/gallium/drivers/llvmpipe/lp_rast.c
+++ b/src/gallium/drivers/llvmpipe/lp_rast.c
@@ -437,9 +437,6 @@ lp_rast_begin_query(struct lp_rasterizer_task *task,
case PIPE_QUERY_OCCLUSION_COUNTER:
task->vis_counter = 0;
break;
- case PIPE_QUERY_TIME_ELAPSED:
- task->query_start = os_time_get_nano();
- break;
case PIPE_QUERY_PRIMITIVES_GENERATED:
case PIPE_QUERY_PRIMITIVES_EMITTED:
break;
@@ -468,9 +465,6 @@ lp_rast_end_query(struct lp_rasterizer_task *task,
case PIPE_QUERY_OCCLUSION_COUNTER:
pq->count[task->thread_index] += task->vis_counter;
break;
- case PIPE_QUERY_TIME_ELAPSED:
- pq->count[task->thread_index] = os_time_get_nano() - task->query_start;
- break;
case PIPE_QUERY_TIMESTAMP:
pq->count[task->thread_index] = os_time_get_nano();
break;
diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c
index 5ca73554de7..b99e617e98c 100644
--- a/src/gallium/drivers/llvmpipe/lp_screen.c
+++ b/src/gallium/drivers/llvmpipe/lp_screen.c
@@ -127,6 +127,7 @@ llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
case PIPE_CAP_OCCLUSION_QUERY:
return 1;
case PIPE_CAP_QUERY_TIME_ELAPSED:
+ return 0;
case PIPE_CAP_QUERY_TIMESTAMP:
return 1;
case PIPE_CAP_TEXTURE_MIRROR_CLAMP: