From: Roland Scheidegger Date: Thu, 20 Jun 2013 18:31:18 +0000 (+0200) Subject: llvmpipe: fix wrong results for queries not in a scene X-Git-Tag: mesa-9.2.1~686 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F92%2F7092%2F1;p=platform%2Fupstream%2Fmesa.git 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 --- diff --git a/src/gallium/drivers/llvmpipe/lp_query.c b/src/gallium/drivers/llvmpipe/lp_query.c index 386639e..1d3edff 100644 --- a/src/gallium/drivers/llvmpipe/lp_query.c +++ b/src/gallium/drivers/llvmpipe/lp_query.c @@ -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 (!lp_fence_signalled(pq->fence)) { - if (!lp_fence_issued(pq->fence)) - llvmpipe_flush(pipe, NULL, __FUNCTION__); + 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 (!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: