Mesa (10.4): st/nine: Queries: Fix D3DISSUE_END behaviour.

Emil Velikov evelikov at kemper.freedesktop.org
Wed Dec 3 23:44:47 UTC 2014


Module: Mesa
Branch: 10.4
Commit: fd2852fe5b504c91ff0d42fef1dc90715e798114
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fd2852fe5b504c91ff0d42fef1dc90715e798114

Author: Axel Davy <axel.davy at ens.fr>
Date:   Mon Nov 24 23:26:46 2014 +0100

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 at lists.freedesktop.org>
Tested-by: David Heidelberg <david at ixit.cz>
Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
Signed-off-by: Axel Davy <axel.davy at ens.fr>
(cherry picked from commit eac0b9b68a14719be01bbabd8d3807d81694685b)

Conflicts:
	src/gallium/state_trackers/nine/query9.c

---

 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 908420c..e7b67c8 100644
--- a/src/gallium/state_trackers/nine/query9.c
+++ b/src/gallium/state_trackers/nine/query9.c
@@ -190,10 +190,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;
 }




More information about the mesa-commit mailing list