From eac0b9b68a14719be01bbabd8d3807d81694685b Mon Sep 17 00:00:00 2001 From: Axel Davy Date: Mon, 24 Nov 2014 23:26:46 +0100 Subject: 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" Tested-by: David Heidelberg Reviewed-by: Ilia Mirkin Signed-off-by: Axel Davy --- src/gallium/state_trackers/nine/query9.c | 10 ++++++---- 1 file 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; } -- cgit v1.2.3