llvmpipe: fix wrong results for queries not in a scene

The result isn't always 0 in this case (depends on query type),
so instead of special casing this just use the ordinary path (should result
in correct values thanks to initialization in query_begin/end), just
skipping the fence wait.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
This commit is contained in:
Roland Scheidegger 2013-06-20 20:31:18 +02:00
parent a415aa9489
commit d282f4ea9b
1 changed files with 9 additions and 12 deletions

View File

@ -100,20 +100,17 @@ llvmpipe_get_query_result(struct pipe_context *pipe,
uint64_t *result = (uint64_t *)vresult;
int i;
if (!pq->fence) {
/* no fence because there was no scene, so results is zero */
*result = 0;
return TRUE;
}
if (pq->fence) {
/* only have a fence if there was a scene */
if (!lp_fence_signalled(pq->fence)) {
if (!lp_fence_issued(pq->fence))
llvmpipe_flush(pipe, NULL, __FUNCTION__);
if (!lp_fence_signalled(pq->fence)) {
if (!lp_fence_issued(pq->fence))
llvmpipe_flush(pipe, NULL, __FUNCTION__);
if (!wait)
return FALSE;
if (!wait)
return FALSE;
lp_fence_wait(pq->fence);
lp_fence_wait(pq->fence);
}
}
/* Sum the results from each of the threads: