mesa: replace _mesa_index_buffer::type with index_size
authorMarek Olšák <marek.olsak@amd.com>
Sun, 2 Apr 2017 17:07:49 +0000 (19:07 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Sat, 22 Apr 2017 20:51:15 +0000 (22:51 +0200)
This avoids repeated translations of the enum.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
20 files changed:
src/mesa/drivers/dri/i965/brw_context.h
src/mesa/drivers/dri/i965/brw_draw_upload.c
src/mesa/drivers/dri/i965/brw_primitive_restart.c
src/mesa/drivers/dri/i965/gen8_draw_upload.c
src/mesa/drivers/dri/i965/genX_blorp_exec.c
src/mesa/drivers/dri/i965/intel_batchbuffer.c
src/mesa/drivers/dri/nouveau/nouveau_render_t.c
src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c
src/mesa/main/varray.c
src/mesa/main/varray.h
src/mesa/state_tracker/st_draw.c
src/mesa/state_tracker/st_draw_feedback.c
src/mesa/tnl/t_draw.c
src/mesa/vbo/vbo.h
src/mesa/vbo/vbo_exec_array.c
src/mesa/vbo/vbo_minmax_index.c
src/mesa/vbo/vbo_primitive_restart.c
src/mesa/vbo/vbo_rebase.c
src/mesa/vbo/vbo_split_copy.c
src/mesa/vbo/vbo_split_inplace.c

index 7b354c4f7eacba5beb0f00b0deb70f9dda0c41de..c7d6e49dd67c9d2c406ab2369b9731375831c1dc 100644 (file)
@@ -885,7 +885,7 @@ struct brw_context
       /* Updates are signaled by BRW_NEW_INDEX_BUFFER. */
       struct brw_bo *bo;
       uint32_t size;
-      GLuint type;
+      unsigned index_size;
 
       /* Offset to index buffer index to use in CMD_3D_PRIM so that we can
        * avoid re-uploading the IB packet over and over if we're actually
@@ -1401,23 +1401,12 @@ unsigned brw_get_vertex_surface_type(struct brw_context *brw,
                                      const struct gl_vertex_array *glarray);
 
 static inline unsigned
-brw_get_index_type(GLenum type)
+brw_get_index_type(unsigned index_size)
 {
-   assert((type == GL_UNSIGNED_BYTE)
-          || (type == GL_UNSIGNED_SHORT)
-          || (type == GL_UNSIGNED_INT));
-
-   /* The possible values for type are GL_UNSIGNED_BYTE (0x1401),
-    * GL_UNSIGNED_SHORT (0x1403), and GL_UNSIGNED_INT (0x1405) which we want
-    * to map to scale factors of 0, 1, and 2, respectively.  These scale
-    * factors are then left-shfited by 8 to be in the correct position in the
-    * CMD_INDEX_BUFFER packet.
-    *
-    * Subtracting 0x1401 gives 0, 2, and 4.  Shifting left by 7 afterwards
-    * gives 0x00000000, 0x00000100, and 0x00000200.  These just happen to be
-    * the values the need to be written in the CMD_INDEX_BUFFER packet.
+   /* The hw needs 0x00000000, 0x00000100, and 0x00000200 for ubyte, ushort,
+    * and uint, respectively.
     */
-   return (type - 0x1401) << 7;
+   return (index_size >> 1) << 8;
 }
 
 void brw_prepare_vertices(struct brw_context *brw);
index 14b60a9abc2c2da4fc2b85d5449508b33e555ee7..7846293cb1b6ff4f5ec7a6fa3a716495d2570520 100644 (file)
@@ -1174,7 +1174,7 @@ brw_upload_indices(struct brw_context *brw)
    if (index_buffer == NULL)
       return;
 
-   ib_type_size = _mesa_sizeof_type(index_buffer->type);
+   ib_type_size = index_buffer->index_size;
    ib_size = index_buffer->count ? ib_type_size * index_buffer->count :
                                    index_buffer->obj->Size;
    bufferobj = index_buffer->obj;
@@ -1231,8 +1231,8 @@ brw_upload_indices(struct brw_context *brw)
    if (brw->ib.bo != old_bo)
       brw->ctx.NewDriverState |= BRW_NEW_INDEX_BUFFER;
 
-   if (index_buffer->type != brw->ib.type) {
-      brw->ib.type = index_buffer->type;
+   if (index_buffer->index_size != brw->ib.index_size) {
+      brw->ib.index_size = index_buffer->index_size;
       brw->ctx.NewDriverState |= BRW_NEW_INDEX_BUFFER;
    }
 }
@@ -1264,7 +1264,7 @@ brw_emit_index_buffer(struct brw_context *brw)
    BEGIN_BATCH(3);
    OUT_BATCH(CMD_INDEX_BUFFER << 16 |
              cut_index_setting |
-             brw_get_index_type(index_buffer->type) |
+             brw_get_index_type(index_buffer->index_size) |
              1);
    OUT_RELOC(brw->ib.bo,
              I915_GEM_DOMAIN_VERTEX, 0,
index e329cc73b7a7efa763afe42bf91426902c23427e..8e5a58af4046fa5c29ddec5363db5683b7bb91c8 100644 (file)
@@ -52,14 +52,14 @@ can_cut_index_handle_restart_index(struct gl_context *ctx,
 
    bool cut_index_will_work;
 
-   switch (ib->type) {
-   case GL_UNSIGNED_BYTE:
+   switch (ib->index_size) {
+   case 1:
       cut_index_will_work = ctx->Array.RestartIndex == 0xff;
       break;
-   case GL_UNSIGNED_SHORT:
+   case 2:
       cut_index_will_work = ctx->Array.RestartIndex == 0xffff;
       break;
-   case GL_UNSIGNED_INT:
+   case 4:
       cut_index_will_work = ctx->Array.RestartIndex == 0xffffffff;
       break;
    default:
@@ -193,7 +193,7 @@ haswell_upload_cut_index(struct brw_context *brw)
    /* BRW_NEW_INDEX_BUFFER */
    unsigned cut_index;
    if (brw->ib.ib) {
-      cut_index = _mesa_primitive_restart_index(ctx, brw->ib.type);
+      cut_index = _mesa_primitive_restart_index(ctx, brw->ib.index_size);
    } else {
       /* There's no index buffer, but primitive restart may still apply
        * to glDrawArrays and such.  FIXED_INDEX mode only applies to drawing
index 32e144741a0b586ab6e34353f6209919713d9916..e81cca96749ade946c0c152dbd4a2e4909a2f13f 100644 (file)
@@ -375,7 +375,7 @@ gen8_emit_index_buffer(struct brw_context *brw)
 
    BEGIN_BATCH(5);
    OUT_BATCH(CMD_INDEX_BUFFER << 16 | (5 - 2));
-   OUT_BATCH(brw_get_index_type(index_buffer->type) | mocs_wb);
+   OUT_BATCH(brw_get_index_type(index_buffer->index_size) | mocs_wb);
    OUT_RELOC64(brw->ib.bo, I915_GEM_DOMAIN_VERTEX, 0, 0);
    OUT_BATCH(brw->ib.size);
    ADVANCE_BATCH();
index 3931b8ceee0565032d724456c39b35efd89ecdd0..7157420328fbfb3b0d0ba905c831e13e688903e7 100644 (file)
@@ -264,7 +264,7 @@ retry:
     */
    brw->ctx.NewDriverState |= BRW_NEW_BLORP;
    brw->no_depth_or_stencil = false;
-   brw->ib.type = -1;
+   brw->ib.index_size = -1;
 
    if (params->dst.enabled)
       brw_render_cache_set_add_bo(brw, params->dst.addr.buffer);
index 6e4b55cf9ec17b8376b0f42e8458d37a94c8a3a8..154c095aa9f11fb4f48cc96a61a82125170d860b 100644 (file)
@@ -389,7 +389,7 @@ brw_new_batch(struct brw_context *brw)
 
    brw->ctx.NewDriverState |= BRW_NEW_BATCH;
 
-   brw->ib.type = -1;
+   brw->ib.index_size = -1;
 
    /* We need to periodically reap the shader time results, because rollover
     * happens every few seconds.  We also want to see results every once in a
index 1625a87223ff2bcd60c22b8e2d6eb8bd39ab3c31..db60b59c8fcf0a4bc670917505d9209bf32c5d98 100644 (file)
@@ -158,16 +158,16 @@ get_max_vertices(struct gl_context *ctx, const struct _mesa_index_buffer *ib,
                unsigned max_out;
 
                if (ib) {
-                       switch (ib->type) {
-                       case GL_UNSIGNED_INT:
+                       switch (ib->index_size) {
+                       case 4:
                                max_out = MAX_OUT_I32;
                                break;
 
-                       case GL_UNSIGNED_SHORT:
+                       case 2:
                                max_out = MAX_OUT_I16;
                                break;
 
-                       case GL_UNSIGNED_BYTE:
+                       case 1:
                                max_out = MAX_OUT_I16;
                                break;
 
index 51ffd5aef547edba3ec8dee0fecdaaf0cc0a6046..fdd135c5d7d1894b2ac98b0e7992f907a45aea0b 100644 (file)
@@ -59,9 +59,19 @@ vbo_init_arrays(struct gl_context *ctx, const struct _mesa_index_buffer *ib,
        GLboolean imm = (render->mode == IMM);
        int i, attr;
 
-       if (ib)
-               nouveau_init_array(&render->ib, 0, 0, ib->count, ib->type,
+       if (ib) {
+               GLenum ib_type;
+
+               if (ib->index_size == 4)
+                       ib_type = GL_UNSIGNED_INT;
+               else if (ib->index_size == 2)
+                       ib_type = GL_UNSIGNED_SHORT;
+               else
+                       ib_type = GL_UNSIGNED_BYTE;
+
+               nouveau_init_array(&render->ib, 0, 0, ib->count, ib_type,
                                   ib->obj, ib->ptr, GL_TRUE, ctx);
+       }
 
        FOR_EACH_BOUND_ATTR(render, i, attr) {
                const struct gl_vertex_array *array = arrays[attr];
index e1d6bc677f510e106ee93af280432a32a3c4f157..78dc004637f7dd6b242d9773415432d2e2a4bf60 100644 (file)
@@ -1804,7 +1804,8 @@ _mesa_VertexAttribDivisor(GLuint index, GLuint divisor)
 
 
 unsigned
-_mesa_primitive_restart_index(const struct gl_context *ctx, GLenum ib_type)
+_mesa_primitive_restart_index(const struct gl_context *ctx,
+                              unsigned index_size)
 {
    /* From the OpenGL 4.3 core specification, page 302:
     * "If both PRIMITIVE_RESTART and PRIMITIVE_RESTART_FIXED_INDEX are
@@ -1812,15 +1813,15 @@ _mesa_primitive_restart_index(const struct gl_context *ctx, GLenum ib_type)
     *  is used."
     */
    if (ctx->Array.PrimitiveRestartFixedIndex) {
-      switch (ib_type) {
-      case GL_UNSIGNED_BYTE:
+      switch (index_size) {
+      case 1:
          return 0xff;
-      case GL_UNSIGNED_SHORT:
+      case 2:
          return 0xffff;
-      case GL_UNSIGNED_INT:
+      case 4:
          return 0xffffffff;
       default:
-         assert(!"_mesa_primitive_restart_index: Invalid index buffer type.");
+         assert(!"_mesa_primitive_restart_index: Invalid index size.");
       }
    }
 
index 92165710d8ee05e9b357c27d4091df7bb420947c..d274ec55fe7be68b016127383b4059440b064e8c 100644 (file)
@@ -312,7 +312,8 @@ extern void GLAPIENTRY
 _mesa_VertexAttribDivisor(GLuint index, GLuint divisor);
 
 extern unsigned
-_mesa_primitive_restart_index(const struct gl_context *ctx, GLenum ib_type);
+_mesa_primitive_restart_index(const struct gl_context *ctx,
+                              unsigned index_size);
 
 extern void GLAPIENTRY
 _mesa_BindVertexBuffer(GLuint bindingIndex, GLuint buffer, GLintptr offset,
index d16160b656b67bc3b34dcd8db3db9cc12cd5909e..d710284b11c45e0891a3b211ba2f16ed3ea66f1e 100644 (file)
@@ -96,7 +96,7 @@ setup_index_buffer(struct st_context *st,
    struct pipe_index_buffer ibuffer;
    struct gl_buffer_object *bufobj = ib->obj;
 
-   ibuffer.index_size = vbo_sizeof_ib_type(ib->type);
+   ibuffer.index_size = ib->index_size;
 
    /* get/create the index buffer object */
    if (_mesa_is_bufferobj(bufobj)) {
@@ -120,21 +120,19 @@ setup_index_buffer(struct st_context *st,
  * Set the restart index.
  */
 static void
-setup_primitive_restart(struct gl_context *ctx,
-                        const struct _mesa_index_buffer *ib,
-                        struct pipe_draw_info *info)
+setup_primitive_restart(struct gl_context *ctx, struct pipe_draw_info *info,
+                        unsigned index_size)
 {
    if (ctx->Array._PrimitiveRestart) {
-      info->restart_index = _mesa_primitive_restart_index(ctx, ib->type);
+      info->restart_index =
+         _mesa_primitive_restart_index(ctx, index_size);
 
       /* Enable primitive restart only when the restart index can have an
        * effect. This is required for correctness in radeonsi VI support.
        * Other hardware may also benefit from taking a faster, non-restart path
        * when possible.
        */
-      if ((ib->type == GL_UNSIGNED_INT) ||
-          (ib->type == GL_UNSIGNED_SHORT && info->restart_index <= 0xffff) ||
-          (ib->type == GL_UNSIGNED_BYTE && info->restart_index <= 0xff))
+      if (index_size == 4 || info->restart_index < (1 << (index_size * 8)))
          info->primitive_restart = true;
    }
 }
@@ -217,7 +215,7 @@ st_draw_vbo(struct gl_context *ctx,
       /* The VBO module handles restart for the non-indexed GLDrawArrays
        * so we only set these fields for indexed drawing:
        */
-      setup_primitive_restart(ctx, ib, &info);
+      setup_primitive_restart(ctx, &info, ib->index_size);
    }
    else {
       /* Transform feedback drawing is always non-indexed. */
@@ -296,7 +294,7 @@ st_indirect_draw_vbo(struct gl_context *ctx,
       info.indexed = TRUE;
 
       /* Primitive restart is not handled by the VBO module in this case. */
-      setup_primitive_restart(ctx, ib, &info);
+      setup_primitive_restart(ctx, &info, ib->index_size);
    }
 
    info.mode = translate_prim(ctx, mode);
index fac83b97d9ce99794b6f103fae5c348ddebc3a79..9d68777cfe72bf7f7f5f6afd956b7f97296f3833 100644 (file)
@@ -242,7 +242,7 @@ st_feedback_draw_vbo(struct gl_context *ctx,
    if (ib) {
       struct gl_buffer_object *bufobj = ib->obj;
 
-      ibuffer.index_size = vbo_sizeof_ib_type(ib->type);
+      ibuffer.index_size = ib->index_size;
       if (ibuffer.index_size == 0)
          goto out_unref_vertex;
 
index 24d74c0e1f1dff946a2a29bee6b9d2bccc56e99a..9fca4da1f4d6e2e1d9cc65b9316437b3937f6f9a 100644 (file)
@@ -358,7 +358,7 @@ static void bind_indices( struct gl_context *ctx,
       bo[*nr_bo] = ib->obj;
       (*nr_bo)++;
       ptr = ctx->Driver.MapBufferRange(ctx, (GLsizeiptr) ib->ptr,
-                                       ib->count * vbo_sizeof_ib_type(ib->type),
+                                       ib->count * ib->index_size,
                                       GL_MAP_READ_BIT, ib->obj,
                                        MAP_INTERNAL);
       assert(ib->obj->Mappings[MAP_INTERNAL].Pointer);
@@ -367,19 +367,19 @@ static void bind_indices( struct gl_context *ctx,
       ptr = ADD_POINTERS(ib->obj->Mappings[MAP_INTERNAL].Pointer, ib->ptr);
    }
 
-   if (ib->type == GL_UNSIGNED_INT && VB->Primitive[0].basevertex == 0) {
+   if (ib->index_size == 4 && VB->Primitive[0].basevertex == 0) {
       VB->Elts = (GLuint *) ptr;
    }
    else {
       GLuint *elts = (GLuint *)get_space(ctx, ib->count * sizeof(GLuint));
       VB->Elts = elts;
 
-      if (ib->type == GL_UNSIGNED_INT) {
+      if (ib->index_size == 4) {
         const GLuint *in = (GLuint *)ptr;
         for (i = 0; i < ib->count; i++)
            *elts++ = (GLuint)(*in++) + VB->Primitive[0].basevertex;
       }
-      else if (ib->type == GL_UNSIGNED_SHORT) {
+      else if (ib->index_size == 2) {
         const GLushort *in = (GLushort *)ptr;
         for (i = 0; i < ib->count; i++) 
            *elts++ = (GLuint)(*in++) + VB->Primitive[0].basevertex;
index d62ab4e674b1ae173c65bdabb30cc97977b5187f..79f75386f72ce3e6e497d849ed6367d9fd4bbede 100644 (file)
@@ -69,7 +69,7 @@ struct _mesa_prim {
  */
 struct _mesa_index_buffer {
    GLuint count;
-   GLenum type;
+   unsigned index_size;
    struct gl_buffer_object *obj;
    const void *ptr;
 };
index 1bf4b11da2e374d1f1a069968bfcb463c0f8a414..aecfad02b7b0bcffb9b043698ff68cba9875e61b 100644 (file)
@@ -861,7 +861,7 @@ vbo_validated_drawrangeelements(struct gl_context *ctx, GLenum mode,
    vbo_bind_arrays(ctx);
 
    ib.count = count;
-   ib.type = type;
+   ib.index_size = vbo_sizeof_ib_type(type);
    ib.obj = ctx->Array.VAO->IndexBufferObj;
    ib.ptr = indices;
 
@@ -1297,7 +1297,7 @@ vbo_validated_multidrawelements(struct gl_context *ctx, GLenum mode,
 
    if (!fallback) {
       ib.count = (max_index_ptr - min_index_ptr) / index_type_size;
-      ib.type = type;
+      ib.index_size = vbo_sizeof_ib_type(type);
       ib.obj = ctx->Array.VAO->IndexBufferObj;
       ib.ptr = (void *) min_index_ptr;
 
@@ -1330,7 +1330,7 @@ vbo_validated_multidrawelements(struct gl_context *ctx, GLenum mode,
          if (count[i] == 0)
             continue;
          ib.count = count[i];
-         ib.type = type;
+         ib.index_size = vbo_sizeof_ib_type(type);
          ib.obj = ctx->Array.VAO->IndexBufferObj;
          ib.ptr = indices[i];
 
@@ -1574,7 +1574,7 @@ vbo_validated_drawelementsindirect(struct gl_context *ctx,
    vbo_bind_arrays(ctx);
 
    ib.count = 0;                /* unknown */
-   ib.type = type;
+   ib.index_size = vbo_sizeof_ib_type(type);
    ib.obj = ctx->Array.VAO->IndexBufferObj;
    ib.ptr = NULL;
 
@@ -1606,7 +1606,7 @@ vbo_validated_multidrawelementsindirect(struct gl_context *ctx,
    /* NOTE: IndexBufferObj is guaranteed to be a VBO. */
 
    ib.count = 0;                /* unknown */
-   ib.type = type;
+   ib.index_size = vbo_sizeof_ib_type(type);
    ib.obj = ctx->Array.VAO->IndexBufferObj;
    ib.ptr = NULL;
 
@@ -1776,7 +1776,7 @@ vbo_validated_multidrawelementsindirectcount(struct gl_context *ctx,
    /* NOTE: IndexBufferObj is guaranteed to be a VBO. */
 
    ib.count = 0;                /* unknown */
-   ib.type = type;
+   ib.index_size = vbo_sizeof_ib_type(type);
    ib.obj = ctx->Array.VAO->IndexBufferObj;
    ib.ptr = NULL;
 
index 0f75a87f3f344700b29949715d09fa8c9aafee32..4c17a0866287dafdef1bd7f80606a4f546e8b128 100644 (file)
@@ -38,7 +38,7 @@
 struct minmax_cache_key {
    GLintptr offset;
    GLuint count;
-   GLenum type;
+   unsigned index_size;
 };
 
 
@@ -60,7 +60,8 @@ static bool
 vbo_minmax_cache_key_equal(const struct minmax_cache_key *a,
                            const struct minmax_cache_key *b)
 {
-   return (a->offset == b->offset) && (a->count == b->count) && (a->type == b->type);
+   return (a->offset == b->offset) && (a->count == b->count) &&
+          (a->index_size == b->index_size);
 }
 
 
@@ -101,7 +102,7 @@ vbo_delete_minmax_cache(struct gl_buffer_object *bufferObj)
 
 static GLboolean
 vbo_get_minmax_cached(struct gl_buffer_object *bufferObj,
-                      GLenum type, GLintptr offset, GLuint count,
+                      unsigned index_size, GLintptr offset, GLuint count,
                       GLuint *min_index, GLuint *max_index)
 {
    GLboolean found = GL_FALSE;
@@ -137,7 +138,7 @@ vbo_get_minmax_cached(struct gl_buffer_object *bufferObj,
       goto out_invalidate;
    }
 
-   key.type = type;
+   key.index_size = index_size;
    key.offset = offset;
    key.count = count;
    hash = vbo_minmax_cache_hash(&key);
@@ -173,7 +174,7 @@ out_disable:
 static void
 vbo_minmax_cache_store(struct gl_context *ctx,
                        struct gl_buffer_object *bufferObj,
-                       GLenum type, GLintptr offset, GLuint count,
+                       unsigned index_size, GLintptr offset, GLuint count,
                        GLuint min, GLuint max)
 {
    struct minmax_cache_entry *entry;
@@ -200,7 +201,7 @@ vbo_minmax_cache_store(struct gl_context *ctx,
 
    entry->key.offset = offset;
    entry->key.count = count;
-   entry->key.type = type;
+   entry->key.index_size = index_size;
    entry->min = min;
    entry->max = max;
    hash = vbo_minmax_cache_hash(&entry->key);
@@ -240,17 +241,17 @@ vbo_get_minmax_index(struct gl_context *ctx,
                      const GLuint count)
 {
    const GLboolean restart = ctx->Array._PrimitiveRestart;
-   const GLuint restartIndex = _mesa_primitive_restart_index(ctx, ib->type);
-   const int index_size = vbo_sizeof_ib_type(ib->type);
+   const GLuint restartIndex =
+      _mesa_primitive_restart_index(ctx, ib->index_size);
    const char *indices;
    GLuint i;
 
-   indices = (char *) ib->ptr + prim->start * index_size;
+   indices = (char *) ib->ptr + prim->start * ib->index_size;
    if (_mesa_is_bufferobj(ib->obj)) {
-      GLsizeiptr size = MIN2(count * index_size, ib->obj->Size);
+      GLsizeiptr size = MIN2(count * ib->index_size, ib->obj->Size);
 
-      if (vbo_get_minmax_cached(ib->obj, ib->type, (GLintptr) indices, count,
-                                min_index, max_index))
+      if (vbo_get_minmax_cached(ib->obj, ib->index_size, (GLintptr) indices,
+                                count, min_index, max_index))
          return;
 
       indices = ctx->Driver.MapBufferRange(ctx, (GLintptr) indices, size,
@@ -258,8 +259,8 @@ vbo_get_minmax_index(struct gl_context *ctx,
                                            MAP_INTERNAL);
    }
 
-   switch (ib->type) {
-   case GL_UNSIGNED_INT: {
+   switch (ib->index_size) {
+   case 4: {
       const GLuint *ui_indices = (const GLuint *)indices;
       GLuint max_ui = 0;
       GLuint min_ui = ~0U;
@@ -287,7 +288,7 @@ vbo_get_minmax_index(struct gl_context *ctx,
       *max_index = max_ui;
       break;
    }
-   case GL_UNSIGNED_SHORT: {
+   case 2: {
       const GLushort *us_indices = (const GLushort *)indices;
       GLuint max_us = 0;
       GLuint min_us = ~0U;
@@ -309,7 +310,7 @@ vbo_get_minmax_index(struct gl_context *ctx,
       *max_index = max_us;
       break;
    }
-   case GL_UNSIGNED_BYTE: {
+   case 1: {
       const GLubyte *ub_indices = (const GLubyte *)indices;
       GLuint max_ub = 0;
       GLuint min_ub = ~0U;
@@ -336,7 +337,7 @@ vbo_get_minmax_index(struct gl_context *ctx,
    }
 
    if (_mesa_is_bufferobj(ib->obj)) {
-      vbo_minmax_cache_store(ctx, ib->obj, ib->type, prim->start, count,
+      vbo_minmax_cache_store(ctx, ib->obj, ib->index_size, prim->start, count,
                              *min_index, *max_index);
       ctx->Driver.UnmapBuffer(ctx, ib->obj, MAP_INTERNAL);
    }
index 0662c5cd4ef47c5039a42882114f8247860d5949..8f04def377c26a5f652b367a18f56dc113ba883b 100644 (file)
@@ -175,7 +175,7 @@ vbo_sw_primitive_restart(struct gl_context *ctx,
    GLuint sub_prim_num;
    GLuint end_index;
    GLuint sub_end_index;
-   GLuint restart_index = _mesa_primitive_restart_index(ctx, ib->type);
+   GLuint restart_index = _mesa_primitive_restart_index(ctx, ib->index_size);
    struct _mesa_prim temp_prim;
    struct vbo_context *vbo = vbo_context(ctx);
    vbo_draw_func draw_prims_func = vbo->draw_prims;
@@ -226,7 +226,7 @@ vbo_sw_primitive_restart(struct gl_context *ctx,
 
    ptr = ADD_POINTERS(ib->obj->Mappings[MAP_INTERNAL].Pointer, ib->ptr);
 
-   sub_prims = find_sub_primitives(ptr, vbo_sizeof_ib_type(ib->type),
+   sub_prims = find_sub_primitives(ptr, ib->index_size,
                                    0, ib->count, restart_index,
                                    &num_sub_prims);
 
index f40c59fdf357bbbaf32890e55eb88540795a87d6..9f5dc4678f8d59187c82bb568aaed8591d1fcdbc 100644 (file)
@@ -182,14 +182,14 @@ void vbo_rebase_prims( struct gl_context *ctx,
       /* Some users might prefer it if we translated elements to
        * GLuints here.  Others wouldn't...
        */
-      switch (ib->type) {
-      case GL_UNSIGNED_INT: 
+      switch (ib->index_size) {
+      case 4:
         tmp_indices = rebase_GLuint( ptr, ib->count, min_index );
         break;
-      case GL_UNSIGNED_SHORT: 
+      case 2:
         tmp_indices = rebase_GLushort( ptr, ib->count, min_index );
         break;
-      case GL_UNSIGNED_BYTE: 
+      case 1:
         tmp_indices = rebase_GLubyte( ptr, ib->count, min_index );
         break;
       }      
@@ -204,7 +204,7 @@ void vbo_rebase_prims( struct gl_context *ctx,
       tmp_ib.obj = ctx->Shared->NullBufferObj;
       tmp_ib.ptr = tmp_indices;
       tmp_ib.count = ib->count;
-      tmp_ib.type = ib->type;
+      tmp_ib.index_size = ib->index_size;
 
       ib = &tmp_ib;
    }
index ce8831dbb0ca52d30e459e9f0365d70b3bd2822f..8e35e44a2fb3027b808dd0b072e8aefa8a78cade 100644 (file)
@@ -479,8 +479,8 @@ replay_init( struct copy_context *copy )
             ADD_POINTERS(copy->ib->obj->Mappings[MAP_INTERNAL].Pointer,
                          copy->ib->ptr);
 
-   switch (copy->ib->type) {
-   case GL_UNSIGNED_BYTE:
+   switch (copy->ib->index_size) {
+   case 1:
       copy->translated_elt_buf = malloc(sizeof(GLuint) * copy->ib->count);
       copy->srcelt = copy->translated_elt_buf;
 
@@ -488,7 +488,7 @@ replay_init( struct copy_context *copy )
         copy->translated_elt_buf[i] = ((const GLubyte *)srcptr)[i];
       break;
 
-   case GL_UNSIGNED_SHORT:
+   case 2:
       copy->translated_elt_buf = malloc(sizeof(GLuint) * copy->ib->count);
       copy->srcelt = copy->translated_elt_buf;
 
@@ -496,7 +496,7 @@ replay_init( struct copy_context *copy )
         copy->translated_elt_buf[i] = ((const GLushort *)srcptr)[i];
       break;
 
-   case GL_UNSIGNED_INT:
+   case 4:
       copy->translated_elt_buf = NULL;
       copy->srcelt = (const GLuint *)srcptr;
       break;
@@ -551,7 +551,7 @@ replay_init( struct copy_context *copy )
     * list:
     */
    copy->dstib.count = 0;      /* duplicates dstelt_nr */
-   copy->dstib.type = GL_UNSIGNED_INT;
+   copy->dstib.index_size = 4;
    copy->dstib.obj = ctx->Shared->NullBufferObj;
    copy->dstib.ptr = copy->dstelt;
 }
index 1430ac98960958488e554e922f612143d2f6795b..9c5c288700f1e351284338734c38d6e30c94fc02 100644 (file)
@@ -75,7 +75,7 @@ static void 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 * _mesa_sizeof_type(ib.type));
+                              split->min_index * ib.index_size);
 
       /* Rebase the primitives to save index buffer entries. */
       for (i = 0; i < split->dstprim_nr; i++)
@@ -223,7 +223,7 @@ static void split_prims( struct split_context *split)
            elts[j] = prim->start + j;
 
         ib.count = count;
-        ib.type = GL_UNSIGNED_INT;
+        ib.index_size = 4;
         ib.obj = split->ctx->Shared->NullBufferObj;
         ib.ptr = elts;