swr: Fix active_queries count
authorBruce Cherniak <bruce.cherniak@intel.com>
Fri, 2 Dec 2016 01:08:12 +0000 (19:08 -0600)
committerTim Rowley <timothy.o.rowley@intel.com>
Fri, 2 Dec 2016 20:36:28 +0000 (14:36 -0600)
The active_query count was incorrect for query types that don't require
a begin_query.  Removed the unnecessary assert.

Reviewed-by: Tim Rowley <timothy.o.rowley@intel.com>
src/gallium/drivers/swr/swr_query.cpp

index a95e0d8d81605889ce9ca15dce512217ca8d32ba..6eb07810c0257c4646e6b4c1b97c1c09434c33e5 100644 (file)
@@ -165,8 +165,9 @@ swr_begin_query(struct pipe_context *pipe, struct pipe_query *q)
    /* Initialize Results */
    memset(&pq->result, 0, sizeof(pq->result));
    switch (pq->type) {
+   case PIPE_QUERY_GPU_FINISHED:
    case PIPE_QUERY_TIMESTAMP:
-      /* nothing to do */
+      /* nothing to do, but don't want the default */
       break;
    case PIPE_QUERY_TIME_ELAPSED:
       pq->result.timestamp_start = swr_get_timestamp(pipe->screen);
@@ -181,10 +182,10 @@ swr_begin_query(struct pipe_context *pipe, struct pipe_query *q)
          SwrEnableStatsFE(ctx->swrContext, TRUE);
          SwrEnableStatsBE(ctx->swrContext, TRUE);
       }
+      ctx->active_queries++;
       break;
    }
 
-   ctx->active_queries++;
 
    return true;
 }
@@ -195,11 +196,10 @@ swr_end_query(struct pipe_context *pipe, struct pipe_query *q)
    struct swr_context *ctx = swr_context(pipe);
    struct swr_query *pq = swr_query(q);
 
-   assert(ctx->active_queries
-          && "swr_end_query, there are no active queries!");
-   ctx->active_queries--;
-
    switch (pq->type) {
+   case PIPE_QUERY_GPU_FINISHED:
+      /* nothing to do, but don't want the default */
+      break;
    case PIPE_QUERY_TIMESTAMP:
    case PIPE_QUERY_TIME_ELAPSED:
       pq->result.timestamp_end = swr_get_timestamp(pipe->screen);
@@ -214,6 +214,7 @@ swr_end_query(struct pipe_context *pipe, struct pipe_query *q)
       swr_fence_submit(ctx, pq->fence);
 
       /* Only change stat collection if there are no active queries */
+      ctx->active_queries--;
       if (ctx->active_queries == 0) {
          SwrEnableStatsFE(ctx->swrContext, FALSE);
          SwrEnableStatsBE(ctx->swrContext, FALSE);