From: Axel Davy Date: Mon, 24 Nov 2014 22:26:46 +0000 (+0100) Subject: st/nine: Queries: Fix D3DISSUE_END behaviour. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=eac0b9b68a14719be01bbabd8d3807d81694685b;p=mesa.git 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 --- 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; }