diff options
author | José Fonseca <[email protected]> | 2012-12-09 10:15:19 +0000 |
---|---|---|
committer | José Fonseca <[email protected]> | 2012-12-20 16:33:49 +0000 |
commit | ab2f573634d21cf5d2c0843960b98e890d495793 (patch) | |
tree | 03ebcde34434e1d1d3e7b5233d29856952d4f149 /src | |
parent | 3160b0b9fc2b49b0e9fe684b955eebf3691024ff (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.c | 7 | ||||
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_rast.c | 6 | ||||
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_screen.c | 1 |
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: |