i965: Actually add support for GL_ANY_SAMPLES_PASSED from GL_ARB_oq2.
authorEric Anholt <eric@anholt.net>
Wed, 17 Oct 2012 20:07:33 +0000 (13:07 -0700)
committerEric Anholt <eric@anholt.net>
Tue, 23 Oct 2012 00:35:59 +0000 (17:35 -0700)
v2: Fix mangled sentence in the comment, and make the loop exit early.

Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> (v1)
src/mesa/drivers/dri/i965/brw_queryobj.c

index 1aa497439d7eb325da15ae39a41b4b58e8f8420d..84da9e0e30acfd0d0a47ba47117a9347ce8daf21 100644 (file)
@@ -194,6 +194,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
@@ -250,6 +260,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);
@@ -304,6 +315,7 @@ brw_end_query(struct gl_context *ctx, struct gl_query_object *q)
       write_timestamp(intel, query->bo, 1);
       break;
 
+   case GL_ANY_SAMPLES_PASSED:
    case GL_SAMPLES_PASSED_ARB:
       if (query->bo) {
         brw_emit_query_end(brw);