summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAxel Davy <axel.davy@ens.fr>2014-11-24 23:26:46 +0100
committerAxel Davy <axel.davy@ens.fr>2014-12-03 16:39:24 +0100
commiteac0b9b68a14719be01bbabd8d3807d81694685b (patch)
tree8ba1f7fcd8595334fcc6d8af16388fd725a6ccfa
parentca0588d1a1e61404687fb6a6bc4857819fa46e2e (diff)
st/nine: Queries: Fix D3DISSUE_END behaviour.
Issuing D3DISSUE_END should: . reset previous queries if possible . end the query Previous behaviour wasn't calling end_query for queries not needing D3DISSUE_BEGIN, nor resetting previous queries. This fixes several applications not launching properly. Cc: "10.4" <mesa-stable@lists.freedesktop.org> Tested-by: David Heidelberg <david@ixit.cz> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu> Signed-off-by: Axel Davy <axel.davy@ens.fr>
-rw-r--r--src/gallium/state_trackers/nine/query9.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/gallium/state_trackers/nine/query9.c b/src/gallium/state_trackers/nine/query9.c
index b74a707e3f3..1656ed31028 100644
--- a/src/gallium/state_trackers/nine/query9.c
+++ b/src/gallium/state_trackers/nine/query9.c
@@ -174,10 +174,12 @@ NineQuery9_Issue( struct NineQuery9 *This,
pipe->begin_query(pipe, This->pq);
This->state = NINE_QUERY_STATE_RUNNING;
} else {
- if (This->state == NINE_QUERY_STATE_RUNNING) {
- pipe->end_query(pipe, This->pq);
- This->state = NINE_QUERY_STATE_ENDED;
- }
+ if (This->state != NINE_QUERY_STATE_RUNNING &&
+ This->type != D3DQUERYTYPE_EVENT &&
+ This->type != D3DQUERYTYPE_TIMESTAMP)
+ pipe->begin_query(pipe, This->pq);
+ pipe->end_query(pipe, This->pq);
+ This->state = NINE_QUERY_STATE_ENDED;
}
return D3D_OK;
}