Fix minor logic error in get_queued_prim() which caused flushing when there was still...
authorBrian <brian.paul@tungstengraphics.com>
Thu, 8 Nov 2007 23:36:00 +0000 (16:36 -0700)
committerBrian <brian.paul@tungstengraphics.com>
Thu, 8 Nov 2007 23:36:00 +0000 (16:36 -0700)
src/mesa/pipe/draw/draw_prim.c

index 94f6df56df6131449f2ca4612830eb379a9498f8..baae6e98c54db632a1190e1461ba47f37fd082f8 100644 (file)
@@ -60,6 +60,10 @@ static void draw_prim_queue_flush( struct draw_context *draw )
    struct draw_stage *first = draw->pipeline.first;
    unsigned i;
 
+   if (0)
+      printf("Flushing with %d prims, %d verts\n",
+             draw->pq.queue_nr, draw->vs.queue_nr);
+
    /* Make sure all vertices are available:
     */
    if (draw->vs.queue_nr)
@@ -137,11 +141,13 @@ static struct prim_header *get_queued_prim( struct draw_context *draw,
 //      fprintf(stderr, "v");
       draw_do_flush( draw, DRAW_FLUSH_VERTEX_CACHE_INVALIDATE );
    }
-   else if (draw->pq.queue_nr + 1 >= PRIM_QUEUE_LENGTH) {
+   else if (draw->pq.queue_nr == PRIM_QUEUE_LENGTH) {
 //      fprintf(stderr, "p");
       draw_do_flush( draw, DRAW_FLUSH_PRIM_QUEUE );
    }
 
+   assert(draw->pq.queue_nr < PRIM_QUEUE_LENGTH);
+
    return &draw->pq.queue[draw->pq.queue_nr++];
 }