llvmpipe: Fix queries when screen->num_threads == 0.
authorJosé Fonseca <jfonseca@vmware.com>
Mon, 29 Apr 2013 14:40:06 +0000 (15:40 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Mon, 29 Apr 2013 14:40:06 +0000 (15:40 +0100)
That is, when llvmpipe is run in single-threaded mode.

Trivial.

Tested with

  LP_NUM_THREADS=0 glean --run results --overwrite --quick --tests occluQry

src/gallium/drivers/llvmpipe/lp_query.c

index 6b1da8bf3ecfa1c74cd172d3f35c1710a57eb044..0fd91c044a88e8ca47be2ec46f0c0b905c8d156c 100644 (file)
@@ -94,6 +94,7 @@ llvmpipe_get_query_result(struct pipe_context *pipe,
                           union pipe_query_result *vresult)
 {
    struct llvmpipe_screen *screen = llvmpipe_screen(pipe->screen);
+   unsigned num_threads = MAX2(1, screen->num_threads);
    struct llvmpipe_query *pq = llvmpipe_query(q);
    uint64_t *result = (uint64_t *)vresult;
    int i;
@@ -120,12 +121,12 @@ llvmpipe_get_query_result(struct pipe_context *pipe,
 
    switch (pq->type) {
    case PIPE_QUERY_OCCLUSION_COUNTER:
-      for (i = 0; i < screen->num_threads; i++) {
+      for (i = 0; i < num_threads; i++) {
          *result += pq->count[i];
       }
       break;
    case PIPE_QUERY_TIMESTAMP:
-      for (i = 0; i < screen->num_threads; i++) {
+      for (i = 0; i < num_threads; i++) {
          if (pq->count[i] > *result) {
             *result = pq->count[i];
          }