summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenneth Graunke <[email protected]>2014-12-11 01:40:28 -0800
committerKenneth Graunke <[email protected]>2014-12-16 15:39:53 -0800
commit12c16f4f27f7d57b036493826eacc1cab0584d45 (patch)
tree39f075e3785e70293c861450e531d5644f932caa
parented8edd71759043ec433bcde599bb9cd28a477273 (diff)
i965/query: Add query->bo == NULL early return in CheckQuery hook.
If query->bo == NULL, this is a redundant CheckQuery call, and we should simply return. We didn't do anything anyway - we skipped the batch flushing block, and although we called get_results(), it has an early return and does nothing. Why bother? Signed-off-by: Kenneth Graunke <[email protected]> Reviewed-by: Ben Widawsky <[email protected]> Reviewed-by: Ian Romanick <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/gen6_queryobj.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/i965/gen6_queryobj.c b/src/mesa/drivers/dri/i965/gen6_queryobj.c
index 3013513b9c2..537c1d992cc 100644
--- a/src/mesa/drivers/dri/i965/gen6_queryobj.c
+++ b/src/mesa/drivers/dri/i965/gen6_queryobj.c
@@ -320,6 +320,12 @@ static void gen6_check_query(struct gl_context *ctx, struct gl_query_object *q)
struct brw_context *brw = brw_context(ctx);
struct brw_query_object *query = (struct brw_query_object *)q;
+ /* If query->bo is NULL, we've already gathered the results - this is a
+ * redundant CheckQuery call. Ignore it.
+ */
+ if (query->bo == NULL)
+ return;
+
/* From the GL_ARB_occlusion_query spec:
*
* "Instead of allowing for an infinite loop, performing a
@@ -327,10 +333,10 @@ static void gen6_check_query(struct gl_context *ctx, struct gl_query_object *q)
* not ready yet on the first time it is queried. This ensures that
* the async query will return true in finite time.
*/
- if (query->bo && drm_intel_bo_references(brw->batch.bo, query->bo))
+ if (drm_intel_bo_references(brw->batch.bo, query->bo))
intel_batchbuffer_flush(brw);
- if (query->bo == NULL || !drm_intel_bo_busy(query->bo)) {
+ if (!drm_intel_bo_busy(query->bo)) {
gen6_queryobj_get_results(ctx, query);
}
}