[Mesa-dev] [PATCH 1/9] mesa: Rename ArrayObj to VAO and DefaultArrayObj to DefaultVAO.

Ian Romanick idr at freedesktop.org
Sun Feb 2 07:57:18 PST 2014


Assumming you verified that everything builds at each commit, this series is

Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

On 02/02/2014 07:30 AM, Kenneth Graunke wrote:
> When reading through the Mesa drawing code, it's not immediately obvious
> to me that "ArrayObj" (gl_array_object) is the Vertex Array Object (VAO)
> state.  The comment above the structure explains this, but readers still
> have to remember this and translate accordingly.
> 
> Out of context, "array object" is a fairly vague.  Even in context,
> "array" has a lot of meanings: glDrawArrays, vertex data stored in user
> arrays, gl_client_arrays, gl_vertex_attrib_arrays, and so on.
> 
> Using the term "VAO" immediately associates these fields with the OpenGL
> concept, clarifying the situation and aiding programmer sanity.
> 
> Completely generated by:
> $ find . -type f -print0 | xargs -0 sed -i \
>   -e 's/ArrayObj;/VAO;/g'                  \
>   -e 's/->ArrayObj/->VAO/g'                \
>   -e 's/Array\.ArrayObj/Array.VAO/g'       \
>   -e 's/Array\.DefaultArrayObj/Array.DefaultVAO/g'
> 
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/mesa/drivers/common/meta.c | 128 ++++++++++++++++++++---------------------
>  src/mesa/main/api_arrayelt.c   |   4 +-
>  src/mesa/main/api_validate.c   |  36 ++++++------
>  src/mesa/main/arrayobj.c       |   8 +--
>  src/mesa/main/attrib.c         |  32 +++++------
>  src/mesa/main/bufferobj.c      |   8 +--
>  src/mesa/main/context.c        |   4 +-
>  src/mesa/main/enable.c         |  20 +++----
>  src/mesa/main/ffvertex_prog.c  |   2 +-
>  src/mesa/main/get.c            |  18 +++---
>  src/mesa/main/getstring.c      |  18 +++---
>  src/mesa/main/mtypes.h         |   4 +-
>  src/mesa/main/state.c          |   6 +-
>  src/mesa/main/varray.c         |  54 ++++++++---------
>  src/mesa/vbo/vbo_exec_array.c  |  42 +++++++-------
>  src/mesa/vbo/vbo_save_api.c    |   4 +-
>  16 files changed, 194 insertions(+), 194 deletions(-)
> 
> diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
> index eb94deb..f0178f7 100644
> --- a/src/mesa/drivers/common/meta.c
> +++ b/src/mesa/drivers/common/meta.c
> @@ -164,7 +164,7 @@ struct save_state
>     GLuint EnvMode;  /* unit[0] only */
>  
>     /** MESA_META_VERTEX */
> -   struct gl_array_object *ArrayObj;
> +   struct gl_array_object *VAO;
>     struct gl_buffer_object *ArrayBufferObj;
>  
>     /** MESA_META_VIEWPORT */
> @@ -221,7 +221,7 @@ struct temp_texture
>   */
>  struct blit_state
>  {
> -   GLuint ArrayObj;
> +   GLuint VAO;
>     GLuint VBO;
>     GLuint DepthFP;
>     GLuint ShaderProg;
> @@ -235,7 +235,7 @@ struct blit_state
>   */
>  struct clear_state
>  {
> -   GLuint ArrayObj;
> +   GLuint VAO;
>     GLuint VBO;
>     GLuint ShaderProg;
>     GLint ColorLocation;
> @@ -252,7 +252,7 @@ struct clear_state
>   */
>  struct copypix_state
>  {
> -   GLuint ArrayObj;
> +   GLuint VAO;
>     GLuint VBO;
>  };
>  
> @@ -262,7 +262,7 @@ struct copypix_state
>   */
>  struct drawpix_state
>  {
> -   GLuint ArrayObj;
> +   GLuint VAO;
>  
>     GLuint StencilFP;  /**< Fragment program for drawing stencil images */
>     GLuint DepthFP;  /**< Fragment program for drawing depth images */
> @@ -274,7 +274,7 @@ struct drawpix_state
>   */
>  struct bitmap_state
>  {
> -   GLuint ArrayObj;
> +   GLuint VAO;
>     GLuint VBO;
>     struct temp_texture Tex;  /**< separate texture from other meta ops */
>  };
> @@ -295,7 +295,7 @@ struct glsl_sampler {
>   */
>  struct gen_mipmap_state
>  {
> -   GLuint ArrayObj;
> +   GLuint VAO;
>     GLuint VBO;
>     GLuint FBO;
>     GLuint Sampler;
> @@ -313,7 +313,7 @@ struct gen_mipmap_state
>   */
>  struct decompress_state
>  {
> -   GLuint ArrayObj;
> +   GLuint VAO;
>     GLuint VBO, FBO, RBO, Sampler;
>     GLint Width, Height;
>  };
> @@ -323,7 +323,7 @@ struct decompress_state
>   */
>  struct drawtex_state
>  {
> -   GLuint ArrayObj;
> +   GLuint VAO;
>     GLuint VBO;
>  };
>  
> @@ -726,8 +726,8 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
>  
>     if (state & MESA_META_VERTEX) {
>        /* save vertex array object state */
> -      _mesa_reference_array_object(ctx, &save->ArrayObj,
> -                                   ctx->Array.ArrayObj);
> +      _mesa_reference_array_object(ctx, &save->VAO,
> +                                   ctx->Array.VAO);
>        _mesa_reference_buffer_object(ctx, &save->ArrayBufferObj,
>                                      ctx->Array.ArrayBufferObj);
>        /* set some default state? */
> @@ -1092,8 +1092,8 @@ _mesa_meta_end(struct gl_context *ctx)
>        _mesa_reference_buffer_object(ctx, &save->ArrayBufferObj, NULL);
>  
>        /* restore vertex array object */
> -      _mesa_BindVertexArray(save->ArrayObj->Name);
> -      _mesa_reference_array_object(ctx, &save->ArrayObj, NULL);
> +      _mesa_BindVertexArray(save->VAO->Name);
> +      _mesa_reference_array_object(ctx, &save->VAO, NULL);
>     }
>  
>     if (state & MESA_META_VIEWPORT) {
> @@ -1461,12 +1461,12 @@ setup_ff_blit_framebuffer(struct gl_context *ctx,
>     };
>     struct vertex verts[4];
>  
> -   if (blit->ArrayObj == 0) {
> +   if (blit->VAO == 0) {
>        /* one-time setup */
>  
>        /* create vertex array object */
> -      _mesa_GenVertexArrays(1, &blit->ArrayObj);
> -      _mesa_BindVertexArray(blit->ArrayObj);
> +      _mesa_GenVertexArrays(1, &blit->VAO);
> +      _mesa_BindVertexArray(blit->VAO);
>  
>        /* create vertex array buffer */
>        _mesa_GenBuffers(1, &blit->VBO);
> @@ -1508,11 +1508,11 @@ setup_glsl_blit_framebuffer(struct gl_context *ctx,
>     assert(_mesa_is_desktop_gl(ctx) || texture_2d);
>  
>     /* Check if already initialized */
> -   if (blit->ArrayObj == 0) {
> +   if (blit->VAO == 0) {
>  
>        /* create vertex array object */
> -      _mesa_GenVertexArrays(1, &blit->ArrayObj);
> -      _mesa_BindVertexArray(blit->ArrayObj);
> +      _mesa_GenVertexArrays(1, &blit->VAO);
> +      _mesa_BindVertexArray(blit->VAO);
>  
>        /* create vertex array buffer */
>        _mesa_GenBuffers(1, &blit->VBO);
> @@ -1685,7 +1685,7 @@ blitframebuffer_texture(struct gl_context *ctx,
>              setup_ff_blit_framebuffer(ctx, &ctx->Meta->Blit);
>           }
>  
> -         _mesa_BindVertexArray(blit->ArrayObj);
> +         _mesa_BindVertexArray(blit->VAO);
>           _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, blit->VBO);
>  
>           _mesa_GenSamplers(1, &sampler);
> @@ -1870,7 +1870,7 @@ _mesa_meta_BlitFramebuffer(struct gl_context *ctx,
>        setup_ff_blit_framebuffer(ctx, blit);
>     }
>  
> -   _mesa_BindVertexArray(blit->ArrayObj);
> +   _mesa_BindVertexArray(blit->VAO);
>     _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, blit->VBO);
>  
>     /* Continue with "normal" approach which involves copying the src rect
> @@ -2000,9 +2000,9 @@ _mesa_meta_BlitFramebuffer(struct gl_context *ctx,
>  static void
>  meta_glsl_blit_cleanup(struct gl_context *ctx, struct blit_state *blit)
>  {
> -   if (blit->ArrayObj) {
> -      _mesa_DeleteVertexArrays(1, &blit->ArrayObj);
> -      blit->ArrayObj = 0;
> +   if (blit->VAO) {
> +      _mesa_DeleteVertexArrays(1, &blit->VAO);
> +      blit->VAO = 0;
>        _mesa_DeleteBuffers(1, &blit->VBO);
>        blit->VBO = 0;
>     }
> @@ -2047,12 +2047,12 @@ _mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers)
>  
>     _mesa_meta_begin(ctx, metaSave);
>  
> -   if (clear->ArrayObj == 0) {
> +   if (clear->VAO == 0) {
>        /* one-time setup */
>  
>        /* create vertex array object */
> -      _mesa_GenVertexArrays(1, &clear->ArrayObj);
> -      _mesa_BindVertexArray(clear->ArrayObj);
> +      _mesa_GenVertexArrays(1, &clear->VAO);
> +      _mesa_BindVertexArray(clear->VAO);
>  
>        /* create vertex array buffer */
>        _mesa_GenBuffers(1, &clear->VBO);
> @@ -2065,7 +2065,7 @@ _mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers)
>        _mesa_EnableClientState(GL_COLOR_ARRAY);
>     }
>     else {
> -      _mesa_BindVertexArray(clear->ArrayObj);
> +      _mesa_BindVertexArray(clear->VAO);
>        _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, clear->VBO);
>     }
>  
> @@ -2180,12 +2180,12 @@ meta_glsl_clear_init(struct gl_context *ctx, struct clear_state *clear)
>     GLuint vs, gs = 0, fs;
>     bool has_integer_textures;
>  
> -   if (clear->ArrayObj != 0)
> +   if (clear->VAO != 0)
>        return;
>  
>     /* create vertex array object */
> -   _mesa_GenVertexArrays(1, &clear->ArrayObj);
> -   _mesa_BindVertexArray(clear->ArrayObj);
> +   _mesa_GenVertexArrays(1, &clear->VAO);
> +   _mesa_BindVertexArray(clear->VAO);
>  
>     /* create vertex array buffer */
>     _mesa_GenBuffers(1, &clear->VBO);
> @@ -2289,10 +2289,10 @@ meta_glsl_clear_init(struct gl_context *ctx, struct clear_state *clear)
>  static void
>  meta_glsl_clear_cleanup(struct gl_context *ctx, struct clear_state *clear)
>  {
> -   if (clear->ArrayObj == 0)
> +   if (clear->VAO == 0)
>        return;
> -   _mesa_DeleteVertexArrays(1, &clear->ArrayObj);
> -   clear->ArrayObj = 0;
> +   _mesa_DeleteVertexArrays(1, &clear->VAO);
> +   clear->VAO = 0;
>     _mesa_DeleteBuffers(1, &clear->VBO);
>     clear->VBO = 0;
>     _mesa_DeleteObjectARB(clear->ShaderProg);
> @@ -2357,7 +2357,7 @@ _mesa_meta_glsl_Clear(struct gl_context *ctx, GLbitfield buffers)
>  			  ctx->Color.ClearColor.f);
>     }
>  
> -   _mesa_BindVertexArray(clear->ArrayObj);
> +   _mesa_BindVertexArray(clear->VAO);
>     _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, clear->VBO);
>  
>     /* GL_COLOR_BUFFER_BIT */
> @@ -2470,12 +2470,12 @@ _mesa_meta_CopyPixels(struct gl_context *ctx, GLint srcX, GLint srcY,
>                            MESA_META_VERTEX |
>                            MESA_META_VIEWPORT));
>  
> -   if (copypix->ArrayObj == 0) {
> +   if (copypix->VAO == 0) {
>        /* one-time setup */
>  
>        /* create vertex array object */
> -      _mesa_GenVertexArrays(1, &copypix->ArrayObj);
> -      _mesa_BindVertexArray(copypix->ArrayObj);
> +      _mesa_GenVertexArrays(1, &copypix->VAO);
> +      _mesa_BindVertexArray(copypix->VAO);
>  
>        /* create vertex array buffer */
>        _mesa_GenBuffers(1, &copypix->VBO);
> @@ -2490,7 +2490,7 @@ _mesa_meta_CopyPixels(struct gl_context *ctx, GLint srcX, GLint srcY,
>        _mesa_EnableClientState(GL_TEXTURE_COORD_ARRAY);
>     }
>     else {
> -      _mesa_BindVertexArray(copypix->ArrayObj);
> +      _mesa_BindVertexArray(copypix->VAO);
>        _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, copypix->VBO);
>     }
>  
> @@ -2825,11 +2825,11 @@ _mesa_meta_DrawPixels(struct gl_context *ctx,
>        verts[3].t = tex->Ttop;
>     }
>  
> -   if (drawpix->ArrayObj == 0) {
> +   if (drawpix->VAO == 0) {
>        /* one-time setup: create vertex array object */
> -      _mesa_GenVertexArrays(1, &drawpix->ArrayObj);
> +      _mesa_GenVertexArrays(1, &drawpix->VAO);
>     }
> -   _mesa_BindVertexArray(drawpix->ArrayObj);
> +   _mesa_BindVertexArray(drawpix->VAO);
>  
>     /* create vertex array buffer */
>     _mesa_GenBuffers(1, &vbo);
> @@ -3001,12 +3001,12 @@ _mesa_meta_Bitmap(struct gl_context *ctx,
>                            MESA_META_VERTEX |
>                            MESA_META_VIEWPORT));
>  
> -   if (bitmap->ArrayObj == 0) {
> +   if (bitmap->VAO == 0) {
>        /* one-time setup */
>  
>        /* create vertex array object */
> -      _mesa_GenVertexArraysAPPLE(1, &bitmap->ArrayObj);
> -      _mesa_BindVertexArrayAPPLE(bitmap->ArrayObj);
> +      _mesa_GenVertexArraysAPPLE(1, &bitmap->VAO);
> +      _mesa_BindVertexArrayAPPLE(bitmap->VAO);
>  
>        /* create vertex array buffer */
>        _mesa_GenBuffers(1, &bitmap->VBO);
> @@ -3023,7 +3023,7 @@ _mesa_meta_Bitmap(struct gl_context *ctx,
>        _mesa_EnableClientState(GL_COLOR_ARRAY);
>     }
>     else {
> -      _mesa_BindVertexArray(bitmap->ArrayObj);
> +      _mesa_BindVertexArray(bitmap->VAO);
>        _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, bitmap->VBO);
>     }
>  
> @@ -3368,11 +3368,11 @@ setup_ff_generate_mipmap(struct gl_context *ctx,
>        GLfloat x, y, tex[3];
>     };
>  
> -   if (mipmap->ArrayObj == 0) {
> +   if (mipmap->VAO == 0) {
>        /* one-time setup */
>        /* create vertex array object */
> -      _mesa_GenVertexArraysAPPLE(1, &mipmap->ArrayObj);
> -      _mesa_BindVertexArrayAPPLE(mipmap->ArrayObj);
> +      _mesa_GenVertexArraysAPPLE(1, &mipmap->VAO);
> +      _mesa_BindVertexArrayAPPLE(mipmap->VAO);
>  
>        /* create vertex array buffer */
>        _mesa_GenBuffers(1, &mipmap->VBO);
> @@ -3451,11 +3451,11 @@ setup_glsl_generate_mipmap(struct gl_context *ctx,
>     void *mem_ctx;
>  
>     /* Check if already initialized */
> -   if (mipmap->ArrayObj == 0) {
> +   if (mipmap->VAO == 0) {
>  
>        /* create vertex array object */
> -      _mesa_GenVertexArrays(1, &mipmap->ArrayObj);
> -      _mesa_BindVertexArray(mipmap->ArrayObj);
> +      _mesa_GenVertexArrays(1, &mipmap->VAO);
> +      _mesa_BindVertexArray(mipmap->VAO);
>  
>        /* create vertex array buffer */
>        _mesa_GenBuffers(1, &mipmap->VBO);
> @@ -3555,10 +3555,10 @@ static void
>  meta_glsl_generate_mipmap_cleanup(struct gl_context *ctx,
>                                   struct gen_mipmap_state *mipmap)
>  {
> -   if (mipmap->ArrayObj == 0)
> +   if (mipmap->VAO == 0)
>        return;
> -   _mesa_DeleteVertexArrays(1, &mipmap->ArrayObj);
> -   mipmap->ArrayObj = 0;
> +   _mesa_DeleteVertexArrays(1, &mipmap->VAO);
> +   mipmap->VAO = 0;
>     _mesa_DeleteBuffers(1, &mipmap->VBO);
>     mipmap->VBO = 0;
>  
> @@ -3634,7 +3634,7 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target,
>        _mesa_set_enable(ctx, target, GL_TRUE);
>     }
>  
> -   _mesa_BindVertexArray(mipmap->ArrayObj);
> +   _mesa_BindVertexArray(mipmap->VAO);
>     _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, mipmap->VBO);
>  
>     samplerSave = ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler ?
> @@ -4023,10 +4023,10 @@ decompress_texture_image(struct gl_context *ctx,
>     }
>  
>     /* setup VBO data */
> -   if (decompress->ArrayObj == 0) {
> +   if (decompress->VAO == 0) {
>        /* create vertex array object */
> -      _mesa_GenVertexArrays(1, &decompress->ArrayObj);
> -      _mesa_BindVertexArray(decompress->ArrayObj);
> +      _mesa_GenVertexArrays(1, &decompress->VAO);
> +      _mesa_BindVertexArray(decompress->VAO);
>  
>        /* create vertex array buffer */
>        _mesa_GenBuffers(1, &decompress->VBO);
> @@ -4041,7 +4041,7 @@ decompress_texture_image(struct gl_context *ctx,
>        _mesa_EnableClientState(GL_TEXTURE_COORD_ARRAY);
>     }
>     else {
> -      _mesa_BindVertexArray(decompress->ArrayObj);
> +      _mesa_BindVertexArray(decompress->VAO);
>        _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, decompress->VBO);
>     }
>  
> @@ -4236,13 +4236,13 @@ _mesa_meta_DrawTex(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z,
>                            MESA_META_VERTEX |
>                            MESA_META_VIEWPORT));
>  
> -   if (drawtex->ArrayObj == 0) {
> +   if (drawtex->VAO == 0) {
>        /* one-time setup */
>        GLint active_texture;
>  
>        /* create vertex array object */
> -      _mesa_GenVertexArrays(1, &drawtex->ArrayObj);
> -      _mesa_BindVertexArray(drawtex->ArrayObj);
> +      _mesa_GenVertexArrays(1, &drawtex->VAO);
> +      _mesa_BindVertexArray(drawtex->VAO);
>  
>        /* create vertex array buffer */
>        _mesa_GenBuffers(1, &drawtex->VBO);
> @@ -4266,7 +4266,7 @@ _mesa_meta_DrawTex(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z,
>        _mesa_ClientActiveTexture(GL_TEXTURE0 + active_texture);
>     }
>     else {
> -      _mesa_BindVertexArray(drawtex->ArrayObj);
> +      _mesa_BindVertexArray(drawtex->VAO);
>        _mesa_BindBuffer(GL_ARRAY_BUFFER_ARB, drawtex->VBO);
>     }
>  
> diff --git a/src/mesa/main/api_arrayelt.c b/src/mesa/main/api_arrayelt.c
> index f439b70..09f314b 100644
> --- a/src/mesa/main/api_arrayelt.c
> +++ b/src/mesa/main/api_arrayelt.c
> @@ -1472,7 +1472,7 @@ check_vbo(AEcontext *actx, struct gl_buffer_object *vbo)
>  static inline void
>  update_derived_client_arrays(struct gl_context *ctx)
>  {
> -   struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
> +   struct gl_array_object *arrayObj = ctx->Array.VAO;
>  
>     if (arrayObj->NewArrays) {
>        _mesa_update_array_object_client_arrays(ctx, arrayObj);
> @@ -1494,7 +1494,7 @@ _ae_update_state(struct gl_context *ctx)
>     AEarray *aa = actx->arrays;  /* non-indexed arrays (ex: glNormal) */
>     AEattrib *at = actx->attribs;  /* indexed arrays (ex: glMultiTexCoord) */
>     GLuint i;
> -   struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
> +   struct gl_array_object *arrayObj = ctx->Array.VAO;
>  
>     actx->nr_vbos = 0;
>  
> diff --git a/src/mesa/main/api_validate.c b/src/mesa/main/api_validate.c
> index 6945584..41dfc38 100644
> --- a/src/mesa/main/api_validate.c
> +++ b/src/mesa/main/api_validate.c
> @@ -113,14 +113,14 @@ check_valid_to_render(struct gl_context *ctx, const char *function)
>     case API_OPENGLES2:
>        /* For ES2, we can draw if any vertex array is enabled (and we
>         * should always have a vertex program/shader). */
> -      if (ctx->Array.ArrayObj->_Enabled == 0x0 || !ctx->VertexProgram._Current)
> +      if (ctx->Array.VAO->_Enabled == 0x0 || !ctx->VertexProgram._Current)
>  	 return GL_FALSE;
>        break;
>  
>     case API_OPENGLES:
>        /* For OpenGL ES, only draw if we have vertex positions
>         */
> -      if (!ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_POS].Enabled)
> +      if (!ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_POS].Enabled)
>  	 return GL_FALSE;
>        break;
>  
> @@ -141,8 +141,8 @@ check_valid_to_render(struct gl_context *ctx, const char *function)
>              /* Draw if we have vertex positions (GL_VERTEX_ARRAY or generic
>               * array [0]).
>               */
> -            return (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_POS].Enabled ||
> -                    ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_GENERIC0].Enabled);
> +            return (ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_POS].Enabled ||
> +                    ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_GENERIC0].Enabled);
>           }
>        }
>        break;
> @@ -180,15 +180,15 @@ check_index_bounds(struct gl_context *ctx, GLsizei count, GLenum type,
>     memset(&ib, 0, sizeof(ib));
>     ib.type = type;
>     ib.ptr = indices;
> -   ib.obj = ctx->Array.ArrayObj->ElementArrayBufferObj;
> +   ib.obj = ctx->Array.VAO->ElementArrayBufferObj;
>  
>     vbo_get_minmax_indices(ctx, &prim, &ib, &min, &max, 1);
>  
>     if ((int)(min + basevertex) < 0 ||
> -       max + basevertex >= ctx->Array.ArrayObj->_MaxElement) {
> +       max + basevertex >= ctx->Array.VAO->_MaxElement) {
>        /* the max element is out of bounds of one or more enabled arrays */
>        _mesa_warning(ctx, "glDrawElements() index=%u is out of bounds (max=%u)",
> -                    max, ctx->Array.ArrayObj->_MaxElement);
> +                    max, ctx->Array.VAO->_MaxElement);
>        return GL_FALSE;
>     }
>  
> @@ -435,10 +435,10 @@ _mesa_validate_DrawElements(struct gl_context *ctx,
>        return GL_FALSE;
>  
>     /* Vertex buffer object tests */
> -   if (_mesa_is_bufferobj(ctx->Array.ArrayObj->ElementArrayBufferObj)) {
> +   if (_mesa_is_bufferobj(ctx->Array.VAO->ElementArrayBufferObj)) {
>        /* use indices in the buffer object */
>        /* make sure count doesn't go outside buffer bounds */
> -      if (index_bytes(type, count) > ctx->Array.ArrayObj->ElementArrayBufferObj->Size) {
> +      if (index_bytes(type, count) > ctx->Array.VAO->ElementArrayBufferObj->Size) {
>           _mesa_warning(ctx, "glDrawElements index out of buffer bounds");
>           return GL_FALSE;
>        }
> @@ -493,12 +493,12 @@ _mesa_validate_MultiDrawElements(struct gl_context *ctx,
>        return GL_FALSE;
>  
>     /* Vertex buffer object tests */
> -   if (_mesa_is_bufferobj(ctx->Array.ArrayObj->ElementArrayBufferObj)) {
> +   if (_mesa_is_bufferobj(ctx->Array.VAO->ElementArrayBufferObj)) {
>        /* use indices in the buffer object */
>        /* make sure count doesn't go outside buffer bounds */
>        for (i = 0; i < primcount; i++) {
>           if (index_bytes(type, count[i]) >
> -             ctx->Array.ArrayObj->ElementArrayBufferObj->Size) {
> +             ctx->Array.VAO->ElementArrayBufferObj->Size) {
>              _mesa_warning(ctx,
>                            "glMultiDrawElements index out of buffer bounds");
>              return GL_FALSE;
> @@ -570,10 +570,10 @@ _mesa_validate_DrawRangeElements(struct gl_context *ctx, GLenum mode,
>        return GL_FALSE;
>  
>     /* Vertex buffer object tests */
> -   if (_mesa_is_bufferobj(ctx->Array.ArrayObj->ElementArrayBufferObj)) {
> +   if (_mesa_is_bufferobj(ctx->Array.VAO->ElementArrayBufferObj)) {
>        /* use indices in the buffer object */
>        /* make sure count doesn't go outside buffer bounds */
> -      if (index_bytes(type, count) > ctx->Array.ArrayObj->ElementArrayBufferObj->Size) {
> +      if (index_bytes(type, count) > ctx->Array.VAO->ElementArrayBufferObj->Size) {
>           _mesa_warning(ctx, "glDrawRangeElements index out of buffer bounds");
>           return GL_FALSE;
>        }
> @@ -620,7 +620,7 @@ _mesa_validate_DrawArrays(struct gl_context *ctx,
>        return GL_FALSE;
>  
>     if (ctx->Const.CheckArrayBounds) {
> -      if (start + count > (GLint) ctx->Array.ArrayObj->_MaxElement)
> +      if (start + count > (GLint) ctx->Array.VAO->_MaxElement)
>           return GL_FALSE;
>     }
>  
> @@ -689,7 +689,7 @@ _mesa_validate_DrawArraysInstanced(struct gl_context *ctx, GLenum mode, GLint fi
>        return GL_FALSE;
>  
>     if (ctx->Const.CheckArrayBounds) {
> -      if (first + count > (GLint) ctx->Array.ArrayObj->_MaxElement)
> +      if (first + count > (GLint) ctx->Array.VAO->_MaxElement)
>           return GL_FALSE;
>     }
>  
> @@ -769,10 +769,10 @@ _mesa_validate_DrawElementsInstanced(struct gl_context *ctx,
>        return GL_FALSE;
>  
>     /* Vertex buffer object tests */
> -   if (_mesa_is_bufferobj(ctx->Array.ArrayObj->ElementArrayBufferObj)) {
> +   if (_mesa_is_bufferobj(ctx->Array.VAO->ElementArrayBufferObj)) {
>        /* use indices in the buffer object */
>        /* make sure count doesn't go outside buffer bounds */
> -      if (index_bytes(type, count) > ctx->Array.ArrayObj->ElementArrayBufferObj->Size) {
> +      if (index_bytes(type, count) > ctx->Array.VAO->ElementArrayBufferObj->Size) {
>           _mesa_warning(ctx,
>                         "glDrawElementsInstanced index out of buffer bounds");
>           return GL_FALSE;
> @@ -901,7 +901,7 @@ valid_draw_indirect_elements(struct gl_context *ctx,
>      * If no element array buffer is bound, an INVALID_OPERATION error is
>      * generated.
>      */
> -   if (!_mesa_is_bufferobj(ctx->Array.ArrayObj->ElementArrayBufferObj)) {
> +   if (!_mesa_is_bufferobj(ctx->Array.VAO->ElementArrayBufferObj)) {
>        _mesa_error(ctx, GL_INVALID_OPERATION,
>                    "%s(no buffer bound to GL_ELEMENT_ARRAY_BUFFER)", name);
>        return GL_FALSE;
> diff --git a/src/mesa/main/arrayobj.c b/src/mesa/main/arrayobj.c
> index fdcf172..9b4e7dd 100644
> --- a/src/mesa/main/arrayobj.c
> +++ b/src/mesa/main/arrayobj.c
> @@ -376,7 +376,7 @@ _mesa_update_array_object_client_arrays(struct gl_context *ctx,
>  static void
>  bind_vertex_array(struct gl_context *ctx, GLuint id, GLboolean genRequired)
>  {
> -   struct gl_array_object * const oldObj = ctx->Array.ArrayObj;
> +   struct gl_array_object * const oldObj = ctx->Array.VAO;
>     struct gl_array_object *newObj = NULL;
>  
>     ASSERT(oldObj != NULL);
> @@ -391,7 +391,7 @@ bind_vertex_array(struct gl_context *ctx, GLuint id, GLboolean genRequired)
>        /* The spec says there is no array object named 0, but we use
>         * one internally because it simplifies things.
>         */
> -      newObj = ctx->Array.DefaultArrayObj;
> +      newObj = ctx->Array.DefaultVAO;
>     }
>     else {
>        /* non-default array object */
> @@ -426,7 +426,7 @@ bind_vertex_array(struct gl_context *ctx, GLuint id, GLboolean genRequired)
>     }
>  
>     ctx->NewState |= _NEW_ARRAY;
> -   _mesa_reference_array_object(ctx, &ctx->Array.ArrayObj, newObj);
> +   _mesa_reference_array_object(ctx, &ctx->Array.VAO, newObj);
>  
>     /* Pass BindVertexArray call to device driver */
>     if (ctx->Driver.BindArrayObject && newObj)
> @@ -491,7 +491,7 @@ _mesa_DeleteVertexArrays(GLsizei n, const GLuint *ids)
>  	  * for that object reverts to zero and the default vertex array
>  	  * becomes current."
>  	  */
> -	 if ( obj == ctx->Array.ArrayObj ) {
> +	 if ( obj == ctx->Array.VAO ) {
>  	    _mesa_BindVertexArray(0);
>  	 }
>  
> diff --git a/src/mesa/main/attrib.c b/src/mesa/main/attrib.c
> index 7b7cf0e..53528cf 100644
> --- a/src/mesa/main/attrib.c
> +++ b/src/mesa/main/attrib.c
> @@ -1483,7 +1483,7 @@ copy_array_attrib(struct gl_context *ctx,
>     /* skip RebindArrays */
>  
>     if (!vbo_deleted)
> -      copy_array_object(ctx, dest->ArrayObj, src->ArrayObj);
> +      copy_array_object(ctx, dest->VAO, src->VAO);
>  
>     /* skip ArrayBufferObj */
>     /* skip ElementArrayBufferObj */
> @@ -1499,15 +1499,15 @@ save_array_attrib(struct gl_context *ctx,
>  {
>     /* Set the Name, needed for restore, but do never overwrite.
>      * Needs to match value in the object hash. */
> -   dest->ArrayObj->Name = src->ArrayObj->Name;
> +   dest->VAO->Name = src->VAO->Name;
>     /* And copy all of the rest. */
>     copy_array_attrib(ctx, dest, src, false);
>  
>     /* Just reference them here */
>     _mesa_reference_buffer_object(ctx, &dest->ArrayBufferObj,
>                                   src->ArrayBufferObj);
> -   _mesa_reference_buffer_object(ctx, &dest->ArrayObj->ElementArrayBufferObj,
> -                                 src->ArrayObj->ElementArrayBufferObj);
> +   _mesa_reference_buffer_object(ctx, &dest->VAO->ElementArrayBufferObj,
> +                                 src->VAO->ElementArrayBufferObj);
>  }
>  
>  /**
> @@ -1530,13 +1530,13 @@ restore_array_attrib(struct gl_context *ctx,
>      * The semantics of objects created using APPLE_vertex_array_objects behave
>      * differently.  These objects expect to be recreated by pop.  Alas.
>      */
> -   const bool arb_vao = (src->ArrayObj->Name != 0
> -			 && src->ArrayObj->ARBsemantics);
> +   const bool arb_vao = (src->VAO->Name != 0
> +			 && src->VAO->ARBsemantics);
>  
> -   if (arb_vao && !_mesa_IsVertexArray(src->ArrayObj->Name))
> +   if (arb_vao && !_mesa_IsVertexArray(src->VAO->Name))
>        return;
>  
> -   _mesa_BindVertexArrayAPPLE(src->ArrayObj->Name);
> +   _mesa_BindVertexArrayAPPLE(src->VAO->Name);
>  
>     /* Restore or recreate the buffer objects by the names ... */
>     if (!arb_vao
> @@ -1552,10 +1552,10 @@ restore_array_attrib(struct gl_context *ctx,
>     }
>  
>     if (!arb_vao
> -       || src->ArrayObj->ElementArrayBufferObj->Name == 0
> -       || _mesa_IsBuffer(src->ArrayObj->ElementArrayBufferObj->Name))
> +       || src->VAO->ElementArrayBufferObj->Name == 0
> +       || _mesa_IsBuffer(src->VAO->ElementArrayBufferObj->Name))
>        _mesa_BindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB,
> -			  src->ArrayObj->ElementArrayBufferObj->Name);
> +			  src->VAO->ElementArrayBufferObj->Name);
>  }
>  
>  /**
> @@ -1567,14 +1567,14 @@ init_array_attrib_data(struct gl_context *ctx,
>                         struct gl_array_attrib *attrib)
>  {
>     /* Get a non driver gl_array_object. */
> -   attrib->ArrayObj = CALLOC_STRUCT( gl_array_object );
> +   attrib->VAO = CALLOC_STRUCT( gl_array_object );
>  
> -   if (attrib->ArrayObj == NULL) {
> +   if (attrib->VAO == NULL) {
>        _mesa_error(ctx, GL_OUT_OF_MEMORY, "glPushClientAttrib");
>        return false;
>     }
>  
> -   _mesa_initialize_array_object(ctx, attrib->ArrayObj, 0);
> +   _mesa_initialize_array_object(ctx, attrib->VAO, 0);
>     return true;
>  }
>  
> @@ -1589,8 +1589,8 @@ free_array_attrib_data(struct gl_context *ctx,
>  {
>     /* We use a non driver array object, so don't just unref since we would
>      * end up using the drivers DeleteArrayObject function for deletion. */
> -   _mesa_delete_array_object(ctx, attrib->ArrayObj);
> -   attrib->ArrayObj = 0;
> +   _mesa_delete_array_object(ctx, attrib->VAO);
> +   attrib->VAO = 0;
>     _mesa_reference_buffer_object(ctx, &attrib->ArrayBufferObj, NULL);
>  }
>  
> diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c
> index 1f0c683..eb2fd68 100644
> --- a/src/mesa/main/bufferobj.c
> +++ b/src/mesa/main/bufferobj.c
> @@ -80,7 +80,7 @@ get_buffer_target(struct gl_context *ctx, GLenum target)
>     case GL_ARRAY_BUFFER_ARB:
>        return &ctx->Array.ArrayBufferObj;
>     case GL_ELEMENT_ARRAY_BUFFER_ARB:
> -      return &ctx->Array.ArrayObj->ElementArrayBufferObj;
> +      return &ctx->Array.VAO->ElementArrayBufferObj;
>     case GL_PIXEL_PACK_BUFFER_EXT:
>        return &ctx->Pack.BufferObj;
>     case GL_PIXEL_UNPACK_BUFFER_EXT:
> @@ -451,8 +451,8 @@ _mesa_reference_buffer_object_(struct gl_context *ctx,
>  #if 0
>           /* unfortunately, these tests are invalid during context tear-down */
>  	 ASSERT(ctx->Array.ArrayBufferObj != bufObj);
> -	 ASSERT(ctx->Array.ArrayObj->ElementArrayBufferObj != bufObj);
> -	 ASSERT(ctx->Array.ArrayObj->Vertex.BufferObj != bufObj);
> +	 ASSERT(ctx->Array.VAO->ElementArrayBufferObj != bufObj);
> +	 ASSERT(ctx->Array.VAO->Vertex.BufferObj != bufObj);
>  #endif
>  
>  	 ASSERT(ctx->Driver.DeleteBuffer);
> @@ -1082,7 +1082,7 @@ _mesa_DeleteBuffers(GLsizei n, const GLuint *ids)
>     for (i = 0; i < n; i++) {
>        struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, ids[i]);
>        if (bufObj) {
> -         struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
> +         struct gl_array_object *arrayObj = ctx->Array.VAO;
>           GLuint j;
>  
>           ASSERT(bufObj->Name == ids[i] || bufObj == &DummyBufferObject);
> diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
> index b818ab4..b8c02d0 100644
> --- a/src/mesa/main/context.c
> +++ b/src/mesa/main/context.c
> @@ -1188,8 +1188,8 @@ _mesa_free_context_data( struct gl_context *ctx )
>     _mesa_reference_fragprog(ctx, &ctx->FragmentProgram._Current, NULL);
>     _mesa_reference_fragprog(ctx, &ctx->FragmentProgram._TexEnvProgram, NULL);
>  
> -   _mesa_reference_array_object(ctx, &ctx->Array.ArrayObj, NULL);
> -   _mesa_reference_array_object(ctx, &ctx->Array.DefaultArrayObj, NULL);
> +   _mesa_reference_array_object(ctx, &ctx->Array.VAO, NULL);
> +   _mesa_reference_array_object(ctx, &ctx->Array.DefaultVAO, NULL);
>  
>     _mesa_free_attrib_data(ctx);
>     _mesa_free_buffer_objects(ctx);
> diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c
> index 640db84..04552f7 100644
> --- a/src/mesa/main/enable.c
> +++ b/src/mesa/main/enable.c
> @@ -63,7 +63,7 @@ update_derived_primitive_restart_state(struct gl_context *ctx)
>  static void
>  client_state(struct gl_context *ctx, GLenum cap, GLboolean state)
>  {
> -   struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
> +   struct gl_array_object *arrayObj = ctx->Array.VAO;
>     GLbitfield64 flag;
>     GLboolean *var;
>  
> @@ -1423,41 +1423,41 @@ _mesa_IsEnabled( GLenum cap )
>        case GL_VERTEX_ARRAY:
>           if (ctx->API != API_OPENGL_COMPAT && ctx->API != API_OPENGLES)
>              goto invalid_enum_error;
> -         return ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_POS].Enabled;
> +         return ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_POS].Enabled;
>        case GL_NORMAL_ARRAY:
>           if (ctx->API != API_OPENGL_COMPAT && ctx->API != API_OPENGLES)
>              goto invalid_enum_error;
> -         return ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_NORMAL].Enabled;
> +         return ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_NORMAL].Enabled;
>        case GL_COLOR_ARRAY:
>           if (ctx->API != API_OPENGL_COMPAT && ctx->API != API_OPENGLES)
>              goto invalid_enum_error;
> -         return ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_COLOR0].Enabled;
> +         return ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_COLOR0].Enabled;
>        case GL_INDEX_ARRAY:
>           if (ctx->API != API_OPENGL_COMPAT)
>              goto invalid_enum_error;
> -         return ctx->Array.ArrayObj->
> +         return ctx->Array.VAO->
>              VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Enabled;
>        case GL_TEXTURE_COORD_ARRAY:
>           if (ctx->API != API_OPENGL_COMPAT && ctx->API != API_OPENGLES)
>              goto invalid_enum_error;
> -         return ctx->Array.ArrayObj->
> +         return ctx->Array.VAO->
>              VertexAttrib[VERT_ATTRIB_TEX(ctx->Array.ActiveTexture)].Enabled;
>        case GL_EDGE_FLAG_ARRAY:
>           if (ctx->API != API_OPENGL_COMPAT)
>              goto invalid_enum_error;
> -         return ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_EDGEFLAG].Enabled;
> +         return ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_EDGEFLAG].Enabled;
>        case GL_FOG_COORDINATE_ARRAY_EXT:
>           if (ctx->API != API_OPENGL_COMPAT)
>              goto invalid_enum_error;
> -         return ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_FOG].Enabled;
> +         return ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_FOG].Enabled;
>        case GL_SECONDARY_COLOR_ARRAY_EXT:
>           if (ctx->API != API_OPENGL_COMPAT)
>              goto invalid_enum_error;
> -         return ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_COLOR1].Enabled;
> +         return ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_COLOR1].Enabled;
>        case GL_POINT_SIZE_ARRAY_OES:
>           if (ctx->API != API_OPENGLES)
>              goto invalid_enum_error;
> -         return ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_POINT_SIZE].Enabled;
> +         return ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_POINT_SIZE].Enabled;
>  
>        /* GL_ARB_texture_cube_map */
>        case GL_TEXTURE_CUBE_MAP_ARB:
> diff --git a/src/mesa/main/ffvertex_prog.c b/src/mesa/main/ffvertex_prog.c
> index 4d71c55..c5583c9 100644
> --- a/src/mesa/main/ffvertex_prog.c
> +++ b/src/mesa/main/ffvertex_prog.c
> @@ -228,7 +228,7 @@ static void make_state_key( struct gl_context *ctx, struct state_key *key )
>     if (ctx->Point._Attenuated)
>        key->point_attenuated = 1;
>  
> -   if (ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_POINT_SIZE].Enabled)
> +   if (ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_POINT_SIZE].Enabled)
>        key->point_array = 1;
>  
>     if (ctx->Texture._TexGenEnabled ||
> diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
> index 3016f41..a74e13d 100644
> --- a/src/mesa/main/get.c
> +++ b/src/mesa/main/get.c
> @@ -642,7 +642,7 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
>     case GL_TEXTURE_COORD_ARRAY_SIZE:
>     case GL_TEXTURE_COORD_ARRAY_TYPE:
>     case GL_TEXTURE_COORD_ARRAY_STRIDE:
> -      array = &ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_TEX(ctx->Array.ActiveTexture)];
> +      array = &ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_TEX(ctx->Array.ActiveTexture)];
>        v->value_int = *(GLuint *) ((char *) array + d->offset);
>        break;
>  
> @@ -828,7 +828,7 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
>     case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
>     case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
>        buffer_obj = (struct gl_buffer_object **)
> -	 ((char *) ctx->Array.ArrayObj + d->offset);
> +	 ((char *) ctx->Array.VAO + d->offset);
>        v->value_int = (*buffer_obj)->Name;
>        break;
>     case GL_ARRAY_BUFFER_BINDING_ARB:
> @@ -836,10 +836,10 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
>        break;
>     case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
>        v->value_int =
> -	 ctx->Array.ArrayObj->VertexBinding[VERT_ATTRIB_TEX(ctx->Array.ActiveTexture)].BufferObj->Name;
> +	 ctx->Array.VAO->VertexBinding[VERT_ATTRIB_TEX(ctx->Array.ActiveTexture)].BufferObj->Name;
>        break;
>     case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
> -      v->value_int = ctx->Array.ArrayObj->ElementArrayBufferObj->Name;
> +      v->value_int = ctx->Array.VAO->ElementArrayBufferObj->Name;
>        break;
>  
>     /* ARB_copy_buffer */
> @@ -880,7 +880,7 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu
>  	 ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0;
>        break;
>     case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
> -      v->value_int = ctx->Array.ArrayObj->VertexBinding[VERT_ATTRIB_POINT_SIZE].BufferObj->Name;
> +      v->value_int = ctx->Array.VAO->VertexBinding[VERT_ATTRIB_POINT_SIZE].BufferObj->Name;
>        break;
>  
>     case GL_FOG_COLOR:
> @@ -1188,7 +1188,7 @@ find_value(const char *func, GLenum pname, void **p, union value *v)
>        *p = ((char *) ctx + d->offset);
>        return d;
>     case LOC_ARRAY:
> -      *p = ((char *) ctx->Array.ArrayObj + d->offset);
> +      *p = ((char *) ctx->Array.VAO + d->offset);
>        return d;
>     case LOC_TEXUNIT:
>        unit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
> @@ -1851,7 +1851,7 @@ find_value_indexed(const char *func, GLenum pname, GLuint index, union value *v)
>            goto invalid_enum;
>        if (index >= ctx->Const.Program[MESA_SHADER_VERTEX].MaxAttribs)
>            goto invalid_value;
> -      v->value_int = ctx->Array.ArrayObj->VertexBinding[VERT_ATTRIB_GENERIC(index)].InstanceDivisor;
> +      v->value_int = ctx->Array.VAO->VertexBinding[VERT_ATTRIB_GENERIC(index)].InstanceDivisor;
>        return TYPE_INT;
>  
>     case GL_VERTEX_BINDING_OFFSET:
> @@ -1859,7 +1859,7 @@ find_value_indexed(const char *func, GLenum pname, GLuint index, union value *v)
>            goto invalid_enum;
>        if (index >= ctx->Const.Program[MESA_SHADER_VERTEX].MaxAttribs)
>            goto invalid_value;
> -      v->value_int = ctx->Array.ArrayObj->VertexBinding[VERT_ATTRIB_GENERIC(index)].Offset;
> +      v->value_int = ctx->Array.VAO->VertexBinding[VERT_ATTRIB_GENERIC(index)].Offset;
>        return TYPE_INT;
>  
>     case GL_VERTEX_BINDING_STRIDE:
> @@ -1867,7 +1867,7 @@ find_value_indexed(const char *func, GLenum pname, GLuint index, union value *v)
>            goto invalid_enum;
>        if (index >= ctx->Const.Program[MESA_SHADER_VERTEX].MaxAttribs)
>            goto invalid_value;
> -      v->value_int = ctx->Array.ArrayObj->VertexBinding[VERT_ATTRIB_GENERIC(index)].Stride;
> +      v->value_int = ctx->Array.VAO->VertexBinding[VERT_ATTRIB_GENERIC(index)].Stride;
>  
>     /* ARB_shader_image_load_store */
>     case GL_IMAGE_BINDING_NAME: {
> diff --git a/src/mesa/main/getstring.c b/src/mesa/main/getstring.c
> index b66e247..6741267 100644
> --- a/src/mesa/main/getstring.c
> +++ b/src/mesa/main/getstring.c
> @@ -200,42 +200,42 @@ _mesa_GetPointerv( GLenum pname, GLvoid **params )
>        case GL_VERTEX_ARRAY_POINTER:
>           if (ctx->API != API_OPENGL_COMPAT && ctx->API != API_OPENGLES)
>              goto invalid_pname;
> -         *params = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_POS].Ptr;
> +         *params = (GLvoid *) ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_POS].Ptr;
>           break;
>        case GL_NORMAL_ARRAY_POINTER:
>           if (ctx->API != API_OPENGL_COMPAT && ctx->API != API_OPENGLES)
>              goto invalid_pname;
> -         *params = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_NORMAL].Ptr;
> +         *params = (GLvoid *) ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_NORMAL].Ptr;
>           break;
>        case GL_COLOR_ARRAY_POINTER:
>           if (ctx->API != API_OPENGL_COMPAT && ctx->API != API_OPENGLES)
>              goto invalid_pname;
> -         *params = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_COLOR0].Ptr;
> +         *params = (GLvoid *) ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_COLOR0].Ptr;
>           break;
>        case GL_SECONDARY_COLOR_ARRAY_POINTER_EXT:
>           if (ctx->API != API_OPENGL_COMPAT)
>              goto invalid_pname;
> -         *params = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_COLOR1].Ptr;
> +         *params = (GLvoid *) ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_COLOR1].Ptr;
>           break;
>        case GL_FOG_COORDINATE_ARRAY_POINTER_EXT:
>           if (ctx->API != API_OPENGL_COMPAT)
>              goto invalid_pname;
> -         *params = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_FOG].Ptr;
> +         *params = (GLvoid *) ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_FOG].Ptr;
>           break;
>        case GL_INDEX_ARRAY_POINTER:
>           if (ctx->API != API_OPENGL_COMPAT)
>              goto invalid_pname;
> -         *params = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Ptr;
> +         *params = (GLvoid *) ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_COLOR_INDEX].Ptr;
>           break;
>        case GL_TEXTURE_COORD_ARRAY_POINTER:
>           if (ctx->API != API_OPENGL_COMPAT && ctx->API != API_OPENGLES)
>              goto invalid_pname;
> -         *params = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_TEX(clientUnit)].Ptr;
> +         *params = (GLvoid *) ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_TEX(clientUnit)].Ptr;
>           break;
>        case GL_EDGE_FLAG_ARRAY_POINTER:
>           if (ctx->API != API_OPENGL_COMPAT)
>              goto invalid_pname;
> -         *params = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_EDGEFLAG].Ptr;
> +         *params = (GLvoid *) ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_EDGEFLAG].Ptr;
>           break;
>        case GL_FEEDBACK_BUFFER_POINTER:
>           if (ctx->API != API_OPENGL_COMPAT)
> @@ -250,7 +250,7 @@ _mesa_GetPointerv( GLenum pname, GLvoid **params )
>        case GL_POINT_SIZE_ARRAY_POINTER_OES:
>           if (ctx->API != API_OPENGLES)
>              goto invalid_pname;
> -         *params = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_POINT_SIZE].Ptr;
> +         *params = (GLvoid *) ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_POINT_SIZE].Ptr;
>           break;
>        case GL_DEBUG_CALLBACK_FUNCTION_ARB:
>           if (!_mesa_is_desktop_gl(ctx))
> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
> index 925d204..f97cfc2 100644
> --- a/src/mesa/main/mtypes.h
> +++ b/src/mesa/main/mtypes.h
> @@ -1615,10 +1615,10 @@ struct gl_array_object
>  struct gl_array_attrib
>  {
>     /** Currently bound array object. See _mesa_BindVertexArrayAPPLE() */
> -   struct gl_array_object *ArrayObj;
> +   struct gl_array_object *VAO;
>  
>     /** The default vertex array object */
> -   struct gl_array_object *DefaultArrayObj;
> +   struct gl_array_object *DefaultVAO;
>  
>     /** Array objects (GL_ARB/APPLE_vertex_array_object) */
>     struct _mesa_HashTable *Objects;
> diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c
> index bdebbc1..b6593dd 100644
> --- a/src/mesa/main/state.c
> +++ b/src/mesa/main/state.c
> @@ -417,11 +417,11 @@ _mesa_update_state_locked( struct gl_context *ctx )
>     }
>  
>     if (new_state & _NEW_ARRAY)
> -      _mesa_update_array_object_client_arrays(ctx, ctx->Array.ArrayObj);
> +      _mesa_update_array_object_client_arrays(ctx, ctx->Array.VAO);
>  
>     if (ctx->Const.CheckArrayBounds &&
>         new_state & (_NEW_ARRAY | _NEW_PROGRAM | _NEW_BUFFER_OBJECT)) {
> -      _mesa_update_array_object_max_element(ctx, ctx->Array.ArrayObj);
> +      _mesa_update_array_object_max_element(ctx, ctx->Array.VAO);
>     }
>  
>   out:
> @@ -439,7 +439,7 @@ _mesa_update_state_locked( struct gl_context *ctx )
>     new_state = ctx->NewState | new_prog_state;
>     ctx->NewState = 0;
>     ctx->Driver.UpdateState(ctx, new_state);
> -   ctx->Array.ArrayObj->NewArrays = 0x0;
> +   ctx->Array.VAO->NewArrays = 0x0;
>  }
>  
>  
> diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c
> index b73a396..d4e50c3 100644
> --- a/src/mesa/main/varray.c
> +++ b/src/mesa/main/varray.c
> @@ -112,7 +112,7 @@ static void
>  vertex_attrib_binding(struct gl_context *ctx, GLuint attribIndex,
>                        GLuint bindingIndex)
>  {
> -   struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
> +   struct gl_array_object *arrayObj = ctx->Array.VAO;
>     struct gl_vertex_attrib_array *array = &arrayObj->VertexAttrib[attribIndex];
>  
>     if (array->VertexBinding != bindingIndex) {
> @@ -139,7 +139,7 @@ bind_vertex_buffer(struct gl_context *ctx, GLuint index,
>                     struct gl_buffer_object *vbo,
>                     GLintptr offset, GLsizei stride)
>  {
> -   struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
> +   struct gl_array_object *arrayObj = ctx->Array.VAO;
>     struct gl_vertex_buffer_binding *binding = &arrayObj->VertexBinding[index];
>  
>     if (binding->BufferObj != vbo ||
> @@ -166,7 +166,7 @@ static void
>  vertex_binding_divisor(struct gl_context *ctx, GLuint bindingIndex,
>                         GLuint divisor)
>  {
> -   struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
> +   struct gl_array_object *arrayObj = ctx->Array.VAO;
>     struct gl_vertex_buffer_binding *binding =
>        &arrayObj->VertexBinding[bindingIndex];
>  
> @@ -329,7 +329,7 @@ update_array_format(struct gl_context *ctx,
>     elementSize = _mesa_bytes_per_vertex_attrib(size, type);
>     assert(elementSize != -1);
>  
> -   array = &ctx->Array.ArrayObj->VertexAttrib[attrib];
> +   array = &ctx->Array.VAO->VertexAttrib[attrib];
>     array->Size = size;
>     array->Type = type;
>     array->Format = format;
> @@ -338,7 +338,7 @@ update_array_format(struct gl_context *ctx,
>     array->RelativeOffset = relativeOffset;
>     array->_ElementSize = elementSize;
>  
> -   ctx->Array.ArrayObj->NewArrays |= VERT_BIT(attrib);
> +   ctx->Array.VAO->NewArrays |= VERT_BIT(attrib);
>     ctx->NewState |= _NEW_ARRAY;
>  
>     return true;
> @@ -384,7 +384,7 @@ update_array(struct gl_context *ctx,
>      * The check for VBOs is handled below.
>      */
>     if (ctx->API == API_OPENGL_CORE
> -       && (ctx->Array.ArrayObj == ctx->Array.DefaultArrayObj)) {
> +       && (ctx->Array.VAO == ctx->Array.DefaultVAO)) {
>        _mesa_error(ctx, GL_INVALID_OPERATION, "%s(no array object bound)",
>                    func);
>        return;
> @@ -407,7 +407,7 @@ update_array(struct gl_context *ctx,
>      *       to the ARRAY_BUFFER buffer object binding point (see section
>      *       2.9.6), and the pointer argument is not NULL."
>      */
> -   if (ptr != NULL && ctx->Array.ArrayObj->ARBsemantics &&
> +   if (ptr != NULL && ctx->Array.VAO->ARBsemantics &&
>         !_mesa_is_bufferobj(ctx->Array.ArrayBufferObj)) {
>        _mesa_error(ctx, GL_INVALID_OPERATION, "%s(non-VBO array)", func);
>        return;
> @@ -422,7 +422,7 @@ update_array(struct gl_context *ctx,
>     vertex_attrib_binding(ctx, attrib, attrib);
>  
>     /* The Stride and Ptr fields are not set by update_array_format() */
> -   array = &ctx->Array.ArrayObj->VertexAttrib[attrib];
> +   array = &ctx->Array.VAO->VertexAttrib[attrib];
>     array->Stride = stride;
>     array->Ptr = (const GLvoid *) ptr;
>  
> @@ -673,7 +673,7 @@ _mesa_EnableVertexAttribArray(GLuint index)
>        return;
>     }
>  
> -   arrayObj = ctx->Array.ArrayObj;
> +   arrayObj = ctx->Array.VAO;
>  
>     ASSERT(VERT_ATTRIB_GENERIC(index) < Elements(arrayObj->_VertexAttrib));
>  
> @@ -699,7 +699,7 @@ _mesa_DisableVertexAttribArray(GLuint index)
>        return;
>     }
>  
> -   arrayObj = ctx->Array.ArrayObj;
> +   arrayObj = ctx->Array.VAO;
>  
>     ASSERT(VERT_ATTRIB_GENERIC(index) < Elements(arrayObj->_VertexAttrib));
>  
> @@ -722,7 +722,7 @@ static GLuint
>  get_vertex_array_attrib(struct gl_context *ctx, GLuint index, GLenum pname,
>                    const char *caller)
>  {
> -   const struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
> +   const struct gl_array_object *arrayObj = ctx->Array.VAO;
>     const struct gl_vertex_attrib_array *array;
>  
>     if (index >= ctx->Const.Program[MESA_SHADER_VERTEX].MaxAttribs) {
> @@ -801,7 +801,7 @@ get_current_attrib(struct gl_context *ctx, GLuint index, const char *function)
>        return NULL;
>     }
>  
> -   ASSERT(VERT_ATTRIB_GENERIC(index) < Elements(ctx->Array.ArrayObj->_VertexAttrib));
> +   ASSERT(VERT_ATTRIB_GENERIC(index) < Elements(ctx->Array.VAO->_VertexAttrib));
>  
>     FLUSH_CURRENT(ctx, 0);
>     return ctx->Current.Attrib[VERT_ATTRIB_GENERIC(index)];
> @@ -923,9 +923,9 @@ _mesa_GetVertexAttribPointerv(GLuint index, GLenum pname, GLvoid **pointer)
>        return;
>     }
>  
> -   ASSERT(VERT_ATTRIB_GENERIC(index) < Elements(ctx->Array.ArrayObj->_VertexAttrib));
> +   ASSERT(VERT_ATTRIB_GENERIC(index) < Elements(ctx->Array.VAO->_VertexAttrib));
>  
> -   *pointer = (GLvoid *) ctx->Array.ArrayObj->VertexAttrib[VERT_ATTRIB_GENERIC(index)].Ptr;
> +   *pointer = (GLvoid *) ctx->Array.VAO->VertexAttrib[VERT_ATTRIB_GENERIC(index)].Ptr;
>  }
>  
>  
> @@ -1314,7 +1314,7 @@ _mesa_VertexAttribDivisor(GLuint index, GLuint divisor)
>        return;
>     }
>  
> -   ASSERT(genericIndex < Elements(ctx->Array.ArrayObj->VertexAttrib));
> +   ASSERT(genericIndex < Elements(ctx->Array.VAO->VertexAttrib));
>  
>     /* The ARB_vertex_attrib_binding spec says:
>      *
> @@ -1365,7 +1365,7 @@ _mesa_BindVertexBuffer(GLuint bindingIndex, GLuint buffer, GLintptr offset,
>                         GLsizei stride)
>  {
>     GET_CURRENT_CONTEXT(ctx);
> -   const struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
> +   const struct gl_array_object *arrayObj = ctx->Array.VAO;
>     struct gl_buffer_object *vbo;
>  
>     ASSERT_OUTSIDE_BEGIN_END(ctx);
> @@ -1376,7 +1376,7 @@ _mesa_BindVertexBuffer(GLuint bindingIndex, GLuint buffer, GLintptr offset,
>      *     is bound."
>      */
>     if (ctx->API == API_OPENGL_CORE &&
> -       ctx->Array.ArrayObj == ctx->Array.DefaultArrayObj) {
> +       ctx->Array.VAO == ctx->Array.DefaultVAO) {
>        _mesa_error(ctx, GL_INVALID_OPERATION,
>                    "glBindVertexBuffer(No array object bound)");
>        return;
> @@ -1468,7 +1468,7 @@ _mesa_VertexAttribFormat(GLuint attribIndex, GLint size, GLenum type,
>      *     - ..."
>      */
>     if (ctx->API == API_OPENGL_CORE &&
> -       ctx->Array.ArrayObj == ctx->Array.DefaultArrayObj) {
> +       ctx->Array.VAO == ctx->Array.DefaultVAO) {
>        _mesa_error(ctx, GL_INVALID_OPERATION,
>                    "glVertexAttribFormat(No array object bound)");
>        return;
> @@ -1515,7 +1515,7 @@ _mesa_VertexAttribIFormat(GLuint attribIndex, GLint size, GLenum type,
>      *     - ..."
>      */
>     if (ctx->API == API_OPENGL_CORE &&
> -       ctx->Array.ArrayObj == ctx->Array.DefaultArrayObj) {
> +       ctx->Array.VAO == ctx->Array.DefaultVAO) {
>        _mesa_error(ctx, GL_INVALID_OPERATION,
>                    "glVertexAttribIFormat(No array object bound)");
>        return;
> @@ -1563,7 +1563,7 @@ _mesa_VertexAttribLFormat(GLuint attribIndex, GLint size, GLenum type,
>      * that this is an oversight.
>      */
>     if (ctx->API == API_OPENGL_CORE &&
> -       ctx->Array.ArrayObj == ctx->Array.DefaultArrayObj) {
> +       ctx->Array.VAO == ctx->Array.DefaultVAO) {
>        _mesa_error(ctx, GL_INVALID_OPERATION,
>                    "glVertexAttribLFormat(No array object bound)");
>        return;
> @@ -1603,7 +1603,7 @@ _mesa_VertexAttribBinding(GLuint attribIndex, GLuint bindingIndex)
>      *     is bound."
>      */
>     if (ctx->API == API_OPENGL_CORE &&
> -       ctx->Array.ArrayObj == ctx->Array.DefaultArrayObj) {
> +       ctx->Array.VAO == ctx->Array.DefaultVAO) {
>        _mesa_error(ctx, GL_INVALID_OPERATION,
>                    "glVertexAttribBinding(No array object bound)");
>        return;
> @@ -1633,7 +1633,7 @@ _mesa_VertexAttribBinding(GLuint attribIndex, GLuint bindingIndex)
>     }
>  
>     ASSERT(VERT_ATTRIB_GENERIC(attribIndex) <
> -          Elements(ctx->Array.ArrayObj->VertexAttrib));
> +          Elements(ctx->Array.VAO->VertexAttrib));
>  
>     vertex_attrib_binding(ctx, VERT_ATTRIB_GENERIC(attribIndex),
>                           VERT_ATTRIB_GENERIC(bindingIndex));
> @@ -1657,7 +1657,7 @@ _mesa_VertexBindingDivisor(GLuint bindingIndex, GLuint divisor)
>      *     is bound."
>      */
>     if (ctx->API == API_OPENGL_CORE &&
> -       ctx->Array.ArrayObj == ctx->Array.DefaultArrayObj) {
> +       ctx->Array.VAO == ctx->Array.DefaultVAO) {
>        _mesa_error(ctx, GL_INVALID_OPERATION,
>                    "glVertexBindingDivisor(No array object bound)");
>        return;
> @@ -1758,7 +1758,7 @@ print_array(const char *name, GLint index, const struct gl_client_array *array)
>  void
>  _mesa_print_arrays(struct gl_context *ctx)
>  {
> -   struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
> +   struct gl_array_object *arrayObj = ctx->Array.VAO;
>     GLuint i;
>  
>     _mesa_update_array_object_max_element(ctx, arrayObj);
> @@ -1786,9 +1786,9 @@ _mesa_print_arrays(struct gl_context *ctx)
>  void 
>  _mesa_init_varray(struct gl_context *ctx)
>  {
> -   ctx->Array.DefaultArrayObj = ctx->Driver.NewArrayObject(ctx, 0);
> -   _mesa_reference_array_object(ctx, &ctx->Array.ArrayObj,
> -                                ctx->Array.DefaultArrayObj);
> +   ctx->Array.DefaultVAO = ctx->Driver.NewArrayObject(ctx, 0);
> +   _mesa_reference_array_object(ctx, &ctx->Array.VAO,
> +                                ctx->Array.DefaultVAO);
>     ctx->Array.ActiveTexture = 0;   /* GL_ARB_multitexture */
>  
>     ctx->Array.Objects = _mesa_NewHashTable();
> diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c
> index 16aee3b..fd27f4b 100644
> --- a/src/mesa/vbo/vbo_exec_array.c
> +++ b/src/mesa/vbo/vbo_exec_array.c
> @@ -287,15 +287,15 @@ static void
>  check_draw_elements_data(struct gl_context *ctx, GLsizei count, GLenum elemType,
>                           const void *elements, GLint basevertex)
>  {
> -   struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
> +   struct gl_array_object *arrayObj = ctx->Array.VAO;
>     const void *elemMap;
>     GLint i, k;
>  
> -   if (_mesa_is_bufferobj(ctx->Array.ArrayObj->ElementArrayBufferObj)) {
> +   if (_mesa_is_bufferobj(ctx->Array.VAO->ElementArrayBufferObj)) {
>        elemMap = ctx->Driver.MapBufferRange(ctx, 0,
> -					   ctx->Array.ArrayObj->ElementArrayBufferObj->Size,
> +					   ctx->Array.VAO->ElementArrayBufferObj->Size,
>  					   GL_MAP_READ_BIT,
> -					   ctx->Array.ArrayObj->ElementArrayBufferObj);
> +					   ctx->Array.VAO->ElementArrayBufferObj);
>        elements = ADD_POINTERS(elements, elemMap);
>     }
>  
> @@ -324,7 +324,7 @@ check_draw_elements_data(struct gl_context *ctx, GLsizei count, GLenum elemType,
>     }
>  
>     if (_mesa_is_bufferobj(arrayObj->ElementArrayBufferObj)) {
> -      ctx->Driver.UnmapBuffer(ctx, ctx->Array.ArrayObj->ElementArrayBufferObj);
> +      ctx->Driver.UnmapBuffer(ctx, ctx->Array.VAO->ElementArrayBufferObj);
>     }
>  
>     for (k = 0; k < Elements(arrayObj->_VertexAttrib); k++) {
> @@ -352,7 +352,7 @@ print_draw_arrays(struct gl_context *ctx,
>  {
>     struct vbo_context *vbo = vbo_context(ctx);
>     struct vbo_exec_context *exec = &vbo->exec;
> -   struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
> +   struct gl_array_object *arrayObj = ctx->Array.VAO;
>     int i;
>  
>     printf("vbo_exec_DrawArrays(mode 0x%x, start %d, count %d):\n",
> @@ -405,7 +405,7 @@ recalculate_input_bindings(struct gl_context *ctx)
>  {
>     struct vbo_context *vbo = vbo_context(ctx);
>     struct vbo_exec_context *exec = &vbo->exec;
> -   struct gl_client_array *vertexAttrib = ctx->Array.ArrayObj->_VertexAttrib;
> +   struct gl_client_array *vertexAttrib = ctx->Array.VAO->_VertexAttrib;
>     const struct gl_client_array **inputs = &exec->array.inputs[0];
>     GLbitfield64 const_inputs = 0x0;
>     GLuint i;
> @@ -883,15 +883,15 @@ dump_element_buffer(struct gl_context *ctx, GLenum type)
>  {
>     const GLvoid *map =
>        ctx->Driver.MapBufferRange(ctx, 0,
> -				 ctx->Array.ArrayObj->ElementArrayBufferObj->Size,
> +				 ctx->Array.VAO->ElementArrayBufferObj->Size,
>  				 GL_MAP_READ_BIT,
> -				 ctx->Array.ArrayObj->ElementArrayBufferObj);
> +				 ctx->Array.VAO->ElementArrayBufferObj);
>     switch (type) {
>     case GL_UNSIGNED_BYTE:
>        {
>           const GLubyte *us = (const GLubyte *) map;
>           GLint i;
> -         for (i = 0; i < ctx->Array.ArrayObj->ElementArrayBufferObj->Size; i++) {
> +         for (i = 0; i < ctx->Array.VAO->ElementArrayBufferObj->Size; i++) {
>              printf("%02x ", us[i]);
>              if (i % 32 == 31)
>                 printf("\n");
> @@ -903,7 +903,7 @@ dump_element_buffer(struct gl_context *ctx, GLenum type)
>        {
>           const GLushort *us = (const GLushort *) map;
>           GLint i;
> -         for (i = 0; i < ctx->Array.ArrayObj->ElementArrayBufferObj->Size / 2; i++) {
> +         for (i = 0; i < ctx->Array.VAO->ElementArrayBufferObj->Size / 2; i++) {
>              printf("%04x ", us[i]);
>              if (i % 16 == 15)
>                 printf("\n");
> @@ -915,7 +915,7 @@ dump_element_buffer(struct gl_context *ctx, GLenum type)
>        {
>           const GLuint *us = (const GLuint *) map;
>           GLint i;
> -         for (i = 0; i < ctx->Array.ArrayObj->ElementArrayBufferObj->Size / 4; i++) {
> +         for (i = 0; i < ctx->Array.VAO->ElementArrayBufferObj->Size / 4; i++) {
>              printf("%08x ", us[i]);
>              if (i % 8 == 7)
>                 printf("\n");
> @@ -927,7 +927,7 @@ dump_element_buffer(struct gl_context *ctx, GLenum type)
>        ;
>     }
>  
> -   ctx->Driver.UnmapBuffer(ctx, ctx->Array.ArrayObj->ElementArrayBufferObj);
> +   ctx->Driver.UnmapBuffer(ctx, ctx->Array.VAO->ElementArrayBufferObj);
>  }
>  #endif
>  
> @@ -955,7 +955,7 @@ vbo_validated_drawrangeelements(struct gl_context *ctx, GLenum mode,
>  
>     ib.count = count;
>     ib.type = type;
> -   ib.obj = ctx->Array.ArrayObj->ElementArrayBufferObj;
> +   ib.obj = ctx->Array.VAO->ElementArrayBufferObj;
>     ib.ptr = indices;
>  
>     prim[0].begin = 1;
> @@ -1041,7 +1041,7 @@ vbo_exec_DrawRangeElementsBaseVertex(GLenum mode,
>        /* _MaxElement was computed, so we can use it.
>         * This path is used for drivers which need strict bounds checking.
>         */
> -      max_element = ctx->Array.ArrayObj->_MaxElement;
> +      max_element = ctx->Array.VAO->_MaxElement;
>     }
>     else {
>        /* Generally, hardware drivers don't need to know the buffer bounds
> @@ -1097,7 +1097,7 @@ vbo_exec_DrawRangeElementsBaseVertex(GLenum mode,
>  	     "(start %u, end %u, type 0x%x, count %d) ElemBuf %u, "
>  	     "base %d\n",
>  	     start, end, type, count,
> -	     ctx->Array.ArrayObj->ElementArrayBufferObj->Name,
> +	     ctx->Array.VAO->ElementArrayBufferObj->Name,
>  	     basevertex);
>     }
>  
> @@ -1350,13 +1350,13 @@ vbo_validated_multidrawelements(struct gl_context *ctx, GLenum mode,
>      * subranges of the index buffer as one large index buffer may lead to
>      * us reading unmapped memory.
>      */
> -   if (!_mesa_is_bufferobj(ctx->Array.ArrayObj->ElementArrayBufferObj))
> +   if (!_mesa_is_bufferobj(ctx->Array.VAO->ElementArrayBufferObj))
>        fallback = GL_TRUE;
>  
>     if (!fallback) {
>        ib.count = (max_index_ptr - min_index_ptr) / index_type_size;
>        ib.type = type;
> -      ib.obj = ctx->Array.ArrayObj->ElementArrayBufferObj;
> +      ib.obj = ctx->Array.VAO->ElementArrayBufferObj;
>        ib.ptr = (void *)min_index_ptr;
>  
>        for (i = 0; i < primcount; i++) {
> @@ -1387,7 +1387,7 @@ vbo_validated_multidrawelements(struct gl_context *ctx, GLenum mode,
>  	    continue;
>  	 ib.count = count[i];
>  	 ib.type = type;
> -	 ib.obj = ctx->Array.ArrayObj->ElementArrayBufferObj;
> +	 ib.obj = ctx->Array.VAO->ElementArrayBufferObj;
>  	 ib.ptr = indices[i];
>  
>  	 prim[0].begin = 1;
> @@ -1657,7 +1657,7 @@ vbo_validated_drawelementsindirect(struct gl_context *ctx,
>  
>     ib.count = 0; /* unknown */
>     ib.type = type;
> -   ib.obj = ctx->Array.ArrayObj->ElementArrayBufferObj;
> +   ib.obj = ctx->Array.VAO->ElementArrayBufferObj;
>     ib.ptr = NULL;
>  
>     memset(prim, 0, sizeof(prim));
> @@ -1705,7 +1705,7 @@ vbo_validated_multidrawelementsindirect(struct gl_context *ctx,
>  
>     ib.count = 0; /* unknown */
>     ib.type = type;
> -   ib.obj = ctx->Array.ArrayObj->ElementArrayBufferObj;
> +   ib.obj = ctx->Array.VAO->ElementArrayBufferObj;
>     ib.ptr = NULL;
>  
>     prim[0].begin = 1;
> diff --git a/src/mesa/vbo/vbo_save_api.c b/src/mesa/vbo/vbo_save_api.c
> index 43243e6..01c4c0e 100644
> --- a/src/mesa/vbo/vbo_save_api.c
> +++ b/src/mesa/vbo/vbo_save_api.c
> @@ -1138,9 +1138,9 @@ _save_OBE_DrawElements(GLenum mode, GLsizei count, GLenum type,
>  
>     _ae_map_vbos(ctx);
>  
> -   if (_mesa_is_bufferobj(ctx->Array.ArrayObj->ElementArrayBufferObj))
> +   if (_mesa_is_bufferobj(ctx->Array.VAO->ElementArrayBufferObj))
>        indices =
> -         ADD_POINTERS(ctx->Array.ArrayObj->ElementArrayBufferObj->Pointer, indices);
> +         ADD_POINTERS(ctx->Array.VAO->ElementArrayBufferObj->Pointer, indices);
>  
>     vbo_save_NotifyBegin(ctx, (mode | VBO_SAVE_PRIM_WEAK |
>                                VBO_SAVE_PRIM_NO_CURRENT_UPDATE));
> 



More information about the mesa-dev mailing list