From ebd4883a0c53a3584f6da78042dbc38da779291b Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Wed, 17 Oct 2012 13:07:33 -0700 Subject: [PATCH] i965: Actually add support for GL_ANY_SAMPLES_PASSED from GL_ARB_oq2. v2: Fix mangled sentence in the comment, and make the loop exit early. Fixes assertion failures in Piglit's spec/ARB_occlusion_query2/render test as well as the game PlaneShift. Reviewed-by: Ian Romanick (v1) (cherry picked from commit e755c1a36b27d6e45f0ae81729908342b8775c74) --- src/mesa/drivers/dri/i965/brw_queryobj.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/mesa/drivers/dri/i965/brw_queryobj.c b/src/mesa/drivers/dri/i965/brw_queryobj.c index d5c4fdf..e63c528 100644 --- a/src/mesa/drivers/dri/i965/brw_queryobj.c +++ b/src/mesa/drivers/dri/i965/brw_queryobj.c @@ -191,6 +191,16 @@ brw_queryobj_get_results(struct gl_context *ctx, } break; + case GL_ANY_SAMPLES_PASSED: + /* Set true if any of the sub-queries passed. */ + for (i = query->first_index; i <= query->last_index; i++) { + if (results[i * 2 + 1] != results[i * 2]) { + query->Base.Result = GL_TRUE; + break; + } + } + break; + case GL_PRIMITIVES_GENERATED: case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN: /* We don't actually query the hardware for this value, so query->bo @@ -247,6 +257,7 @@ brw_begin_query(struct gl_context *ctx, struct gl_query_object *q) write_timestamp(intel, query->bo, 0); break; + case GL_ANY_SAMPLES_PASSED: case GL_SAMPLES_PASSED_ARB: /* Reset our driver's tracking of query state. */ drm_intel_bo_unreference(query->bo); @@ -302,6 +313,7 @@ brw_end_query(struct gl_context *ctx, struct gl_query_object *q) intel_batchbuffer_flush(intel); break; + case GL_ANY_SAMPLES_PASSED: case GL_SAMPLES_PASSED_ARB: /* Flush the batchbuffer in case it has writes to our query BO. * Have later queries write to a new query BO so that further rendering -- 2.7.4