Mesa (master): i965: Remove the half-baked code for multiple OQs at the same time.

Eric Anholt anholt at kemper.freedesktop.org
Sun May 16 22:35:24 UTC 2010


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

Author: Eric Anholt <eric at anholt.net>
Date:   Sun May 16 15:08:56 2010 -0700

i965: Remove the half-baked code for multiple OQs at the same time.

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  |    2 --
 src/mesa/drivers/dri/i965/brw_context.h  |    5 +----
 src/mesa/drivers/dri/i965/brw_queryobj.c |   27 ++++++++++++---------------
 3 files changed, 13 insertions(+), 21 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c
index 6b04ad9..dc4bd58 100644
--- a/src/mesa/drivers/dri/i965/brw_context.c
+++ b/src/mesa/drivers/dri/i965/brw_context.c
@@ -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;
diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
index 116ab27..a97fcb0 100644
--- a/src/mesa/drivers/dri/i965/brw_context.h
+++ b/src/mesa/drivers/dri/i965/brw_context.h
@@ -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;
diff --git a/src/mesa/drivers/dri/i965/brw_queryobj.c b/src/mesa/drivers/dri/i965/brw_queryobj.c
index 6cce7e5..3f47a68 100644
--- a/src/mesa/drivers/dri/i965/brw_queryobj.c
+++ b/src/mesa/drivers/dri/i965/brw_queryobj.c
@@ -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;
 }
 




More information about the mesa-commit mailing list