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:
parent
a415aa9489
commit
d282f4ea9b
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue