nv50: fix build-predicate function
[mesa.git] / src / gallium / auxiliary / draw / draw_pt_varray_tmp_linear.h
index 55a8e6521dc4e3709a441a43b236c5f877dc0d8c..55e43b2a714e86e65a697b1394c0ffef0e54150c 100644 (file)
@@ -1,19 +1,27 @@
 static unsigned trim( unsigned count, unsigned first, unsigned incr )
 {
-   return count - (count - first) % incr; 
+   /*
+    * count either has been trimmed in draw_pt_arrays or is set to
+    * (driver)_fetch_max which is hopefully always larger than first.
+    */
+   assert(count >= first);
+   return count - (count - first) % incr;
 }
 
 static void FUNC(struct draw_pt_front_end *frontend,
                  pt_elt_func get_elt,
                  const void *elts,
+                 int elt_bias,
                  unsigned count)
 {
    struct varray_frontend *varray = (struct varray_frontend *)frontend;
-   unsigned start = (unsigned)elts;
+   unsigned start = (unsigned) ((char *) elts - (char *) NULL);
 
    unsigned j;
    unsigned first, incr;
 
+   assert(elt_bias == 0);
+
    draw_pt_split_prim(varray->input_prim, &first, &incr);
    
    /* Sanitize primitive length:
@@ -36,6 +44,10 @@ static void FUNC(struct draw_pt_front_end *frontend,
    case PIPE_PRIM_TRIANGLE_STRIP:
    case PIPE_PRIM_QUADS:
    case PIPE_PRIM_QUAD_STRIP:
+   case PIPE_PRIM_LINES_ADJACENCY:
+   case PIPE_PRIM_LINE_STRIP_ADJACENCY:
+   case PIPE_PRIM_TRIANGLES_ADJACENCY:
+   case PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY:
       for (j = 0; j < count;) {
          unsigned remaining = count - j;
          unsigned nr = trim( MIN2(varray->driver_fetch_max, remaining), first, incr );