Merge branch '7.8'
[mesa.git] / src / gallium / auxiliary / draw / draw_pt_varray.c
index 4479963db177198162ca11ed5c2e8c0df344ad2f..d0e16c9bc3c7a4ba769e33447c482aadb9a689da 100644 (file)
@@ -25,7 +25,9 @@
  *
  **************************************************************************/
 
-#include "pipe/p_util.h"
+#include "util/u_math.h"
+#include "util/u_memory.h"
+
 #include "draw/draw_context.h"
 #include "draw/draw_private.h"
 #include "draw/draw_pt.h"
@@ -65,7 +67,7 @@ static void varray_line_loop_segment(struct varray_frontend *varray,
                                      unsigned segment_count,
                                      boolean end )
 {
-   assert(segment_count+1 < varray->fetch_max);
+   assert(segment_count < varray->fetch_max);
    if (segment_count >= 1) {
       unsigned nr = 0, i;
 
@@ -75,7 +77,7 @@ static void varray_line_loop_segment(struct varray_frontend *varray,
       if (end) 
          varray->fetch_elts[nr++] = start;
 
-      assert(nr < FETCH_MAX);
+      assert(nr <= FETCH_MAX);
 
       varray->middle->run(varray->middle, 
                           varray->fetch_elts,
@@ -92,7 +94,7 @@ static void varray_fan_segment(struct varray_frontend *varray,
                                unsigned segment_start,
                                unsigned segment_count )
 {
-   assert(segment_count+1 < varray->fetch_max);
+   assert(segment_count < varray->fetch_max);
    if (segment_count >= 2) {
       unsigned nr = 0, i;
 
@@ -102,7 +104,7 @@ static void varray_fan_segment(struct varray_frontend *varray,
       for (i = 0 ; i < segment_count; i++) 
          varray->fetch_elts[nr++] = start + segment_start + i;
 
-      assert(nr < FETCH_MAX);
+      assert(nr <= FETCH_MAX);
 
       varray->middle->run(varray->middle, 
                           varray->fetch_elts,
@@ -147,6 +149,10 @@ static void varray_prepare(struct draw_pt_front_end *frontend,
 
    varray->middle = middle;
    middle->prepare(middle, varray->output_prim, opt, &varray->driver_fetch_max );
+
+   /* check that the max is even */
+   assert((varray->driver_fetch_max & 1) == 0);
+
    varray->fetch_max = MIN2(FETCH_MAX, varray->driver_fetch_max);
 }
 
@@ -168,7 +174,7 @@ static void varray_destroy(struct draw_pt_front_end *frontend)
 
 struct draw_pt_front_end *draw_pt_varray(struct draw_context *draw)
 {
-   unsigned i;
+   ushort i;
    struct varray_frontend *varray = CALLOC_STRUCT(varray_frontend);
    if (varray == NULL)
       return NULL;