i965: Use query->last_index instead of the global brw->query.index.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 26 Feb 2013 06:30:21 +0000 (22:30 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Sat, 2 Mar 2013 06:09:04 +0000 (22:09 -0800)
Since we already have an index in the brw_query_object, there's no need
to also keep a global variable that shadows it.

Plus, if we ever add support for more types of queries that still need
the per-batch before/after treatment we do for occlusion queries, we
won't be able to use a single global variable.  In contrast, per-query
object variables will work fine.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_context.h
src/mesa/drivers/dri/i965/brw_queryobj.c

index d6746bf2302316e93f73996b780f235f18f5aad6..9f386255b9e3d9da534c5f07c85ace166855b455 100644 (file)
@@ -1044,7 +1044,6 @@ struct brw_context
    struct {
       struct brw_query_object *obj;
       drm_intel_bo *bo;
-      int index;
       bool begin_emitted;
    } query;
 
index 8893dd7799498888804323af7183fb9a52f5789f..d218631aaf28332c5f50262584a5c686f10e1e9a 100644 (file)
@@ -531,7 +531,7 @@ brw_emit_query_begin(struct brw_context *brw)
     * buffer's results momentarily.
     */
    if (brw->query.bo == NULL ||
-       brw->query.index * 2 + 1 >= 4096 / sizeof(uint64_t)) {
+       query->last_index * 2 + 1 >= 4096 / sizeof(uint64_t)) {
       drm_intel_bo_unreference(brw->query.bo);
       brw->query.bo = NULL;
 
@@ -542,10 +542,10 @@ brw_emit_query_begin(struct brw_context *brw)
       memset((char *)brw->query.bo->virtual, 0, 4096);
       drm_intel_bo_unmap(brw->query.bo);
 
-      brw->query.index = 0;
+      query->last_index = 0;
    }
 
-   write_depth_count(intel, brw->query.bo, brw->query.index * 2);
+   write_depth_count(intel, brw->query.bo, query->last_index * 2);
 
    if (query->bo != brw->query.bo) {
       if (query->bo != NULL) {
@@ -558,7 +558,6 @@ brw_emit_query_begin(struct brw_context *brw)
       drm_intel_bo_reference(brw->query.bo);
       query->bo = brw->query.bo;
    }
-   query->last_index = brw->query.index;
    brw->query.begin_emitted = true;
 }
 
@@ -571,14 +570,15 @@ void
 brw_emit_query_end(struct brw_context *brw)
 {
    struct intel_context *intel = &brw->intel;
+   struct brw_query_object *query = brw->query.obj;
 
    if (!brw->query.begin_emitted)
       return;
 
-   write_depth_count(intel, brw->query.bo, brw->query.index * 2 + 1);
+   write_depth_count(intel, brw->query.bo, query->last_index * 2 + 1);
 
    brw->query.begin_emitted = false;
-   brw->query.index++;
+   query->last_index++;
 }
 
 /**