i965: Remove the half-baked code for multiple OQs at the same time.
authorEric Anholt <eric@anholt.net>
Sun, 16 May 2010 22:08:56 +0000 (15:08 -0700)
committerEric Anholt <eric@anholt.net>
Sun, 16 May 2010 22:34:37 +0000 (15:34 -0700)
GL doesn't actually let you begin an OQ while one is active, so the
extra work was pointless.

src/mesa/drivers/dri/i965/brw_context.c
src/mesa/drivers/dri/i965/brw_context.h
src/mesa/drivers/dri/i965/brw_queryobj.c

index 6b04ad9ec6ab21cef3d2a03fa7c95a7952cec8e7..dc4bd5802d4ccd126cc4a69552c3a9dc380726ac 100644 (file)
@@ -192,8 +192,6 @@ GLboolean brwCreateContext( int api,
    ctx->VertexProgram._MaintainTnlProgram = GL_TRUE;
    ctx->FragmentProgram._MaintainTexEnvProgram = GL_TRUE;
 
-   make_empty_list(&brw->query.active_head);
-
    brw_draw_init( brw );
 
    return GL_TRUE;
index 116ab2726587c502afd669f17b16ad3d28c3f1e0..a97fcb0f4db8d84808be202940c81bf7f518c50a 100644 (file)
@@ -418,9 +418,6 @@ struct brw_vertex_info {
 struct brw_query_object {
    struct gl_query_object Base;
 
-   /** Doubly linked list of active query objects in the context. */
-   struct brw_query_object *prev, *next;
-
    /** Last query BO associated with this query. */
    dri_bo *bo;
    /** First index in bo with query data for this object. */
@@ -661,7 +658,7 @@ struct brw_context
    } cc;
 
    struct {
-      struct brw_query_object active_head;
+      struct brw_query_object *obj;
       dri_bo *bo;
       int index;
       GLboolean active;
index 6cce7e50890b0af6ed1adbb7f79a3788b7f37d81..3f47a68049fd299d04bbe7db78e152c2c04b8de8 100644 (file)
@@ -38,7 +38,6 @@
  * required for handling queries, so that we can be sure that we won't
  * have to emit a batchbuffer without getting the ending PS_DEPTH_COUNT.
  */
-#include "main/simple_list.h"
 #include "main/imports.h"
 
 #include "brw_context.h"
@@ -105,7 +104,7 @@ brw_begin_query(GLcontext *ctx, struct gl_query_object *q)
    query->first_index = -1;
    query->last_index = -1;
 
-   insert_at_head(&brw->query.active_head, query);
+   brw->query.obj = query;
    intel->stats_wm++;
 }
 
@@ -131,7 +130,7 @@ brw_end_query(GLcontext *ctx, struct gl_query_object *q)
       brw->query.bo = NULL;
    }
 
-   remove_from_list(query);
+   brw->query.obj = NULL;
 
    intel->stats_wm--;
 }
@@ -161,7 +160,7 @@ brw_prepare_query_begin(struct brw_context *brw)
    struct intel_context *intel = &brw->intel;
 
    /* Skip if we're not doing any queries. */
-   if (is_empty_list(&brw->query.active_head))
+   if (!brw->query.obj)
       return;
 
    /* Get a new query BO if we're going to need it. */
@@ -182,10 +181,10 @@ void
 brw_emit_query_begin(struct brw_context *brw)
 {
    struct intel_context *intel = &brw->intel;
-   struct brw_query_object *query;
+   struct brw_query_object *query = brw->query.obj;
 
    /* Skip if we're not doing any queries, or we've emitted the start. */
-   if (brw->query.active || is_empty_list(&brw->query.active_head))
+   if (!query || brw->query.active)
       return;
 
    BEGIN_BATCH(4);
@@ -205,16 +204,14 @@ brw_emit_query_begin(struct brw_context *brw)
    OUT_BATCH(0);
    ADVANCE_BATCH();
 
-   foreach(query, &brw->query.active_head) {
-      if (query->bo != brw->query.bo) {
-        if (query->bo != NULL)
-           brw_queryobj_get_results(query);
-        dri_bo_reference(brw->query.bo);
-        query->bo = brw->query.bo;
-        query->first_index = brw->query.index;
-      }
-      query->last_index = brw->query.index;
+   if (query->bo != brw->query.bo) {
+      if (query->bo != NULL)
+        brw_queryobj_get_results(query);
+      dri_bo_reference(brw->query.bo);
+      query->bo = brw->query.bo;
+      query->first_index = brw->query.index;
    }
+   query->last_index = brw->query.index;
    brw->query.active = GL_TRUE;
 }