i965: verify format width in blorp_get_client_bo
[mesa.git] / src / mesa / tnl / t_split_inplace.c
index 8e9ecb70468834acf8f841b0ceb2f8deb54da712..126f6fddfdfe15cf384b94dfb191bd752cac83cd 100644 (file)
@@ -49,6 +49,8 @@ struct split_context {
    const struct _mesa_index_buffer *ib;
    GLuint min_index;
    GLuint max_index;
+   GLuint num_instances;
+   GLuint base_instance;
    tnl_draw_func draw;
 
    const struct split_limits *limits;
@@ -76,7 +78,7 @@ flush_vertex( struct split_context *split)
 
       ib.count = split->max_index - split->min_index + 1;
       ib.ptr = (const void *)((const char *)ib.ptr +
-                              split->min_index * ib.index_size);
+                              (split->min_index << ib.index_size_shift));
 
       /* Rebase the primitives to save index buffer entries. */
       for (i = 0; i < split->dstprim_nr; i++)
@@ -93,7 +95,8 @@ flush_vertex( struct split_context *split)
                !split->ib,
                split->min_index,
                split->max_index,
-               NULL, 0, NULL);
+               split->num_instances,
+               split->base_instance);
 
    split->dstprim_nr = 0;
    split->min_index = ~0;
@@ -190,8 +193,6 @@ split_prims(struct split_context *split)
             outprim->end = (nr == remaining && prim->end);
             outprim->start = prim->start + j;
             outprim->count = nr;
-            outprim->num_instances = prim->num_instances;
-            outprim->base_instance = prim->base_instance;
 
             update_index_bounds(split, outprim);
 
@@ -225,16 +226,13 @@ split_prims(struct split_context *split)
             elts[j] = prim->start + j;
 
          ib.count = count;
-         ib.index_size = 4;
-         ib.obj = split->ctx->Shared->NullBufferObj;
+         ib.index_size_shift = 2;
+         ib.obj = NULL;
          ib.ptr = elts;
 
          tmpprim = *prim;
-         tmpprim.indexed = 1;
          tmpprim.start = 0;
          tmpprim.count = count;
-         tmpprim.num_instances = 1;
-         tmpprim.base_instance = 0;
 
          flush_vertex(split);
 
@@ -269,8 +267,8 @@ _tnl_split_inplace(struct gl_context *ctx,
                    const struct _mesa_prim *prim,
                    GLuint nr_prims,
                    const struct _mesa_index_buffer *ib,
-                   GLuint min_index,
-                   GLuint max_index,
+                   GLuint num_instances,
+                   GLuint base_instance,
                    tnl_draw_func draw,
                    const struct split_limits *limits)
 {
@@ -287,6 +285,8 @@ _tnl_split_inplace(struct gl_context *ctx,
    /* Empty interval, makes calculations simpler. */
    split.min_index = ~0;
    split.max_index = 0;
+   split.num_instances = num_instances;
+   split.base_instance = base_instance;
 
    split.draw = draw;
    split.limits = limits;
@@ -294,5 +294,3 @@ _tnl_split_inplace(struct gl_context *ctx,
 
    split_prims(&split);
 }
-
-