Mesa (master): llvmpipe: fix wrong results for queries not in a scene
Roland Scheidegger
sroland at kemper.freedesktop.org
Sat Jun 22 15:10:11 UTC 2013
Module: Mesa
Branch: master
Commit: d282f4ea9b99e4eefec8ce0664cdf49d53d7b052
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=d282f4ea9b99e4eefec8ce0664cdf49d53d7b052
Author: Roland Scheidegger <sroland at vmware.com>
Date: Thu Jun 20 20:31:18 2013 +0200
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 at vmware.com>
---
src/gallium/drivers/llvmpipe/lp_query.c | 21 +++++++++------------
1 files changed, 9 insertions(+), 12 deletions(-)
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:
More information about the mesa-commit
mailing list