Merge branch 'arb_vertex_array_object'
authorBrian Paul <brianp@vmware.com>
Fri, 26 Jun 2009 23:49:14 +0000 (17:49 -0600)
committerBrian Paul <brianp@vmware.com>
Fri, 26 Jun 2009 23:49:14 +0000 (17:49 -0600)
1  2 
src/mesa/main/context.c
src/mesa/main/enums.c
src/mesa/main/mtypes.h
src/mesa/state_tracker/st_extensions.c

diff --combined src/mesa/main/context.c
@@@ -1011,6 -1011,7 +1011,7 @@@ _mesa_free_context_data( GLcontext *ct
  #if FEATURE_ARB_occlusion_query
     _mesa_free_query_data(ctx);
  #endif
+    _mesa_free_varray_data(ctx);
  
     _mesa_delete_array_object(ctx, ctx->Array.DefaultArrayObj);
  
@@@ -1259,24 -1260,6 +1260,24 @@@ initialize_framebuffer_size(GLcontext *
  
  
  /**
 + * Check if the viewport/scissor size has not yet been initialized.
 + * Initialize the size if the given width and height are non-zero.
 + */
 +void
 +_mesa_check_init_viewport(GLcontext *ctx, GLuint width, GLuint height)
 +{
 +   if (!ctx->ViewportInitialized && width > 0 && height > 0) {
 +      /* Note: set flag here, before calling _mesa_set_viewport(), to prevent
 +       * potential infinite recursion.
 +       */
 +      ctx->ViewportInitialized = GL_TRUE;
 +      _mesa_set_viewport(ctx, 0, 0, width, height);
 +      _mesa_set_scissor(ctx, 0, 0, width, height);
 +   }
 +}
 +
 +
 +/**
   * Bind the given context to the given drawBuffer and readBuffer and
   * make it the current context for the calling thread.
   * We'll render into the drawBuffer and read pixels from the
@@@ -1393,24 -1376,25 +1394,24 @@@ _mesa_make_current( GLcontext *newCtx, 
           ASSERT(drawBuffer->Height > 0);
  #endif
  
 -         if (newCtx->FirstTimeCurrent) {
 -            /* set initial viewport and scissor size now */
 -            _mesa_set_viewport(newCtx, 0, 0,
 -                               drawBuffer->Width, drawBuffer->Height);
 -          _mesa_set_scissor(newCtx, 0, 0,
 -                            drawBuffer->Width, drawBuffer->Height );
 -            check_context_limits(newCtx);
 +         if (drawBuffer) {
 +            _mesa_check_init_viewport(newCtx,
 +                                      drawBuffer->Width, drawBuffer->Height);
           }
        }
  
 -      /* We can use this to help debug user's problems.  Tell them to set
 -       * the MESA_INFO env variable before running their app.  Then the
 -       * first time each context is made current we'll print some useful
 -       * information.
 -       */
        if (newCtx->FirstTimeCurrent) {
 +         check_context_limits(newCtx);
 +
 +         /* We can use this to help debug user's problems.  Tell them to set
 +          * the MESA_INFO env variable before running their app.  Then the
 +          * first time each context is made current we'll print some useful
 +          * information.
 +          */
         if (_mesa_getenv("MESA_INFO")) {
            _mesa_print_info();
         }
 +
         newCtx->FirstTimeCurrent = GL_FALSE;
        }
     }
diff --combined src/mesa/main/enums.c
@@@ -958,8 -958,8 +958,8 @@@ LONGSTRING static const char enum_strin
     "GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV\0"
     "GL_MAX_VARYING_FLOATS\0"
     "GL_MAX_VARYING_FLOATS_ARB\0"
 -   "GL_MAX_VERTEX_ATTRIBS\0"
 -   "GL_MAX_VERTEX_ATTRIBS_ARB\0"
 +   "GL_MAX_VERTEX_GENERIC_ATTRIBS\0"
 +   "GL_MAX_VERTEX_GENERIC_ATTRIBS_ARB\0"
     "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS\0"
     "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB\0"
     "GL_MAX_VERTEX_UNIFORM_COMPONENTS\0"
     "GL_VENDOR\0"
     "GL_VERSION\0"
     "GL_VERTEX_ARRAY\0"
+    "GL_VERTEX_ARRAY_BINDING\0"
     "GL_VERTEX_ARRAY_BINDING_APPLE\0"
     "GL_VERTEX_ARRAY_BUFFER_BINDING\0"
     "GL_VERTEX_ARRAY_BUFFER_BINDING_ARB\0"
     "GL_ZOOM_Y\0"
     ;
  
- static const enum_elt all_enums[1832] =
+ static const enum_elt all_enums[1833] =
  {
     {     0, 0x00000600 }, /* GL_2D */
     {     6, 0x00001407 }, /* GL_2_BYTES */
     { 37885, 0x00001F00 }, /* GL_VENDOR */
     { 37895, 0x00001F02 }, /* GL_VERSION */
     { 37906, 0x00008074 }, /* GL_VERTEX_ARRAY */
-    { 37922, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */
-    { 37952, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
-    { 37983, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */
-    { 38018, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */
-    { 38042, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */
-    { 38063, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */
-    { 38086, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */
-    { 38107, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
-    { 38134, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
-    { 38162, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
-    { 38190, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
-    { 38218, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
-    { 38246, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
-    { 38274, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
-    { 38302, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
-    { 38329, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
-    { 38356, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
-    { 38383, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
-    { 38410, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
-    { 38437, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
-    { 38464, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
-    { 38491, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
-    { 38518, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
-    { 38545, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
-    { 38583, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */
-    { 38625, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
-    { 38656, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */
-    { 38691, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
-    { 38725, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */
-    { 38763, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
-    { 38794, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */
-    { 38829, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
-    { 38857, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */
-    { 38889, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
-    { 38919, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */
-    { 38953, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
-    { 38981, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */
-    { 39013, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */
-    { 39033, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */
-    { 39055, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */
-    { 39084, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */
-    { 39105, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */
-    { 39134, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */
-    { 39167, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */
-    { 39199, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */
-    { 39226, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */
-    { 39257, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
-    { 39287, 0x00008B31 }, /* GL_VERTEX_SHADER */
-    { 39304, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */
-    { 39325, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */
-    { 39352, 0x00000BA2 }, /* GL_VIEWPORT */
-    { 39364, 0x00000800 }, /* GL_VIEWPORT_BIT */
-    { 39380, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */
-    { 39400, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
-    { 39431, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */
-    { 39466, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */
-    { 39494, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */
-    { 39519, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
-    { 39546, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */
-    { 39571, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */
-    { 39595, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */
-    { 39614, 0x000088B9 }, /* GL_WRITE_ONLY */
-    { 39628, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */
-    { 39646, 0x00001506 }, /* GL_XOR */
-    { 39653, 0x000085B9 }, /* GL_YCBCR_422_APPLE */
-    { 39672, 0x00008757 }, /* GL_YCBCR_MESA */
-    { 39686, 0x00000000 }, /* GL_ZERO */
-    { 39694, 0x00000D16 }, /* GL_ZOOM_X */
-    { 39704, 0x00000D17 }, /* GL_ZOOM_Y */
+    { 37922, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */
+    { 37946, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */
+    { 37976, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
+    { 38007, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */
+    { 38042, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */
+    { 38066, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */
+    { 38087, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */
+    { 38110, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */
+    { 38131, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
+    { 38158, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
+    { 38186, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
+    { 38214, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
+    { 38242, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
+    { 38270, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
+    { 38298, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
+    { 38326, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
+    { 38353, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
+    { 38380, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
+    { 38407, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
+    { 38434, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
+    { 38461, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
+    { 38488, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
+    { 38515, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
+    { 38542, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
+    { 38569, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
+    { 38607, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */
+    { 38649, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
+    { 38680, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */
+    { 38715, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
+    { 38749, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */
+    { 38787, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
+    { 38818, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */
+    { 38853, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
+    { 38881, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */
+    { 38913, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
+    { 38943, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */
+    { 38977, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
+    { 39005, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */
+    { 39037, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */
+    { 39057, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */
+    { 39079, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */
+    { 39108, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */
+    { 39129, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */
+    { 39158, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */
+    { 39191, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */
+    { 39223, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */
+    { 39250, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */
+    { 39281, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
+    { 39311, 0x00008B31 }, /* GL_VERTEX_SHADER */
+    { 39328, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */
+    { 39349, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */
+    { 39376, 0x00000BA2 }, /* GL_VIEWPORT */
+    { 39388, 0x00000800 }, /* GL_VIEWPORT_BIT */
+    { 39404, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */
+    { 39424, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
+    { 39455, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */
+    { 39490, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */
+    { 39518, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */
+    { 39543, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
+    { 39570, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */
+    { 39595, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */
+    { 39619, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */
+    { 39638, 0x000088B9 }, /* GL_WRITE_ONLY */
+    { 39652, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */
+    { 39670, 0x00001506 }, /* GL_XOR */
+    { 39677, 0x000085B9 }, /* GL_YCBCR_422_APPLE */
+    { 39696, 0x00008757 }, /* GL_YCBCR_MESA */
+    { 39710, 0x00000000 }, /* GL_ZERO */
+    { 39718, 0x00000D16 }, /* GL_ZOOM_X */
+    { 39728, 0x00000D17 }, /* GL_ZOOM_Y */
  };
  
  static const unsigned reduced_enums[1325] =
        1504, /* GL_STENCIL_WRITEMASK */
         839, /* GL_MATRIX_MODE */
        1007, /* GL_NORMALIZE */
-       1813, /* GL_VIEWPORT */
+       1814, /* GL_VIEWPORT */
         981, /* GL_MODELVIEW_STACK_DEPTH */
        1244, /* GL_PROJECTION_STACK_DEPTH */
        1699, /* GL_TEXTURE_STACK_DEPTH */
         628, /* GL_INDEX_OFFSET */
        1291, /* GL_RED_SCALE */
        1289, /* GL_RED_BIAS */
-       1830, /* GL_ZOOM_X */
-       1831, /* GL_ZOOM_Y */
+       1831, /* GL_ZOOM_X */
+       1832, /* GL_ZOOM_Y */
         590, /* GL_GREEN_SCALE */
         588, /* GL_GREEN_BIAS */
          92, /* GL_BLUE_SCALE */
         295, /* GL_COPY */
          50, /* GL_AND_INVERTED */
        1005, /* GL_NOOP */
-       1826, /* GL_XOR */
+       1827, /* GL_XOR */
        1067, /* GL_OR */
        1006, /* GL_NOR */
         462, /* GL_EQUIV */
         618, /* GL_INDEX_ARRAY */
        1634, /* GL_TEXTURE_COORD_ARRAY */
         451, /* GL_EDGE_FLAG_ARRAY */
-       1767, /* GL_VERTEX_ARRAY_SIZE */
-       1769, /* GL_VERTEX_ARRAY_TYPE */
-       1768, /* GL_VERTEX_ARRAY_STRIDE */
+       1768, /* GL_VERTEX_ARRAY_SIZE */
+       1770, /* GL_VERTEX_ARRAY_TYPE */
+       1769, /* GL_VERTEX_ARRAY_STRIDE */
        1013, /* GL_NORMAL_ARRAY_TYPE */
        1012, /* GL_NORMAL_ARRAY_STRIDE */
         149, /* GL_COLOR_ARRAY_SIZE */
        1640, /* GL_TEXTURE_COORD_ARRAY_TYPE */
        1639, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
         455, /* GL_EDGE_FLAG_ARRAY_STRIDE */
-       1766, /* GL_VERTEX_ARRAY_POINTER */
+       1767, /* GL_VERTEX_ARRAY_POINTER */
        1011, /* GL_NORMAL_ARRAY_POINTER */
         148, /* GL_COLOR_ARRAY_POINTER */
         621, /* GL_INDEX_ARRAY_POINTER */
         302, /* GL_CULL_VERTEX_EXT */
         304, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
         303, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
-       1823, /* GL_WRAP_BORDER_SUN */
+       1824, /* GL_WRAP_BORDER_SUN */
        1618, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
         676, /* GL_LIGHT_MODEL_COLOR_CONTROL */
        1415, /* GL_SINGLE_COLOR */
        1053, /* GL_OPERAND1_ALPHA */
        1059, /* GL_OPERAND2_ALPHA */
        1065, /* GL_OPERAND3_ALPHA_NV */
-       1763, /* GL_VERTEX_ARRAY_BINDING_APPLE */
-       1827, /* GL_YCBCR_422_APPLE */
+       1763, /* GL_VERTEX_ARRAY_BINDING */
+       1828, /* GL_YCBCR_422_APPLE */
        1752, /* GL_UNSIGNED_SHORT_8_8_APPLE */
        1754, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
        1417, /* GL_SLICE_ACCUM_SUN */
        1267, /* GL_QUAD_MESH_SUN */
        1723, /* GL_TRIANGLE_MESH_SUN */
-       1801, /* GL_VERTEX_PROGRAM_ARB */
-       1812, /* GL_VERTEX_STATE_PROGRAM_NV */
-       1788, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
-       1794, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
-       1796, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
-       1798, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
+       1802, /* GL_VERTEX_PROGRAM_ARB */
+       1813, /* GL_VERTEX_STATE_PROGRAM_NV */
+       1789, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
+       1795, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
+       1797, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
+       1799, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
         330, /* GL_CURRENT_VERTEX_ATTRIB */
        1221, /* GL_PROGRAM_LENGTH_ARB */
        1235, /* GL_PROGRAM_STRING_ARB */
         831, /* GL_MATRIX7_NV */
         314, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
         311, /* GL_CURRENT_MATRIX_ARB */
-       1804, /* GL_VERTEX_PROGRAM_POINT_SIZE */
-       1807, /* GL_VERTEX_PROGRAM_TWO_SIDE */
+       1805, /* GL_VERTEX_PROGRAM_POINT_SIZE */
+       1808, /* GL_VERTEX_PROGRAM_TWO_SIDE */
        1233, /* GL_PROGRAM_PARAMETER_NV */
-       1792, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
+       1793, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
        1237, /* GL_PROGRAM_TARGET_NV */
        1234, /* GL_PROGRAM_RESIDENT_NV */
        1708, /* GL_TRACK_MATRIX_NV */
        1709, /* GL_TRACK_MATRIX_TRANSFORM_NV */
-       1802, /* GL_VERTEX_PROGRAM_BINDING_NV */
+       1803, /* GL_VERTEX_PROGRAM_BINDING_NV */
        1215, /* GL_PROGRAM_ERROR_POSITION_ARB */
         351, /* GL_DEPTH_CLAMP_NV */
-       1770, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
-       1777, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
-       1778, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
-       1779, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
-       1780, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
-       1781, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
-       1782, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
-       1783, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
-       1784, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
-       1785, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
-       1771, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
-       1772, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
-       1773, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
-       1774, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
-       1775, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
-       1776, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
+       1771, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
+       1778, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
+       1779, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
+       1780, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
+       1781, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
+       1782, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
+       1783, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
+       1784, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
+       1785, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
+       1786, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
+       1772, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
+       1773, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
+       1774, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
+       1775, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
+       1776, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
+       1777, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
         743, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
         750, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
         751, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
         266, /* GL_COMPRESSED_TEXTURE_FORMATS */
         928, /* GL_MAX_VERTEX_UNITS_ARB */
          22, /* GL_ACTIVE_VERTEX_UNITS_ARB */
-       1822, /* GL_WEIGHT_SUM_UNITY_ARB */
-       1800, /* GL_VERTEX_BLEND_ARB */
+       1823, /* GL_WEIGHT_SUM_UNITY_ARB */
+       1801, /* GL_VERTEX_BLEND_ARB */
         332, /* GL_CURRENT_WEIGHT_ARB */
-       1821, /* GL_WEIGHT_ARRAY_TYPE_ARB */
-       1820, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
-       1819, /* GL_WEIGHT_ARRAY_SIZE_ARB */
-       1818, /* GL_WEIGHT_ARRAY_POINTER_ARB */
-       1815, /* GL_WEIGHT_ARRAY_ARB */
+       1822, /* GL_WEIGHT_ARRAY_TYPE_ARB */
+       1821, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
+       1820, /* GL_WEIGHT_ARRAY_SIZE_ARB */
+       1819, /* GL_WEIGHT_ARRAY_POINTER_ARB */
+       1816, /* GL_WEIGHT_ARRAY_ARB */
         379, /* GL_DOT3_RGB */
         380, /* GL_DOT3_RGBA */
         260, /* GL_COMPRESSED_RGB_FXT1_3DFX */
         983, /* GL_MODULATE_ADD_ATI */
         984, /* GL_MODULATE_SIGNED_ADD_ATI */
         985, /* GL_MODULATE_SUBTRACT_ATI */
-       1828, /* GL_YCBCR_MESA */
+       1829, /* GL_YCBCR_MESA */
        1074, /* GL_PACK_INVERT_MESA */
         335, /* GL_DEBUG_OBJECT_MESA */
         336, /* GL_DEBUG_PRINT_MESA */
        1271, /* GL_QUERY_RESULT */
        1273, /* GL_QUERY_RESULT_AVAILABLE */
         922, /* GL_MAX_VERTEX_ATTRIBS */
-       1790, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
+       1791, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
         370, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
         369, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
         908, /* GL_MAX_TEXTURE_COORDS */
         456, /* GL_ELEMENT_ARRAY_BUFFER */
          53, /* GL_ARRAY_BUFFER_BINDING */
         457, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
-       1764, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
+       1765, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
        1009, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
         146, /* GL_COLOR_ARRAY_BUFFER_BINDING */
         619, /* GL_INDEX_ARRAY_BUFFER_BINDING */
         452, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
        1392, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
         505, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
-       1816, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
-       1786, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
+       1817, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
+       1787, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
        1220, /* GL_PROGRAM_INSTRUCTIONS_ARB */
         883, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
        1226, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
        1241, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
        1713, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
        1282, /* GL_READ_ONLY */
-       1824, /* GL_WRITE_ONLY */
+       1825, /* GL_WRITE_ONLY */
        1284, /* GL_READ_WRITE */
         101, /* GL_BUFFER_ACCESS */
         103, /* GL_BUFFER_MAPPED */
         943, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
        1373, /* GL_SAMPLES_PASSED */
         528, /* GL_FRAGMENT_SHADER */
-       1810, /* GL_VERTEX_SHADER */
+       1811, /* GL_VERTEX_SHADER */
        1231, /* GL_PROGRAM_OBJECT_ARB */
        1405, /* GL_SHADER_OBJECT_ARB */
         867, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
diff --combined src/mesa/main/mtypes.h
@@@ -1563,6 -1563,7 +1563,7 @@@ struct gl_array_objec
  
     GLint RefCount;
     _glthread_Mutex Mutex;
+    GLboolean VBOonly;  /**< require all arrays to live in VBOs? */
  
     /** Conventional vertex arrays */
     /*@{*/
@@@ -1608,6 -1609,9 +1609,9 @@@ struct gl_array_attri
     /** The default vertex array object */
     struct gl_array_object *DefaultArrayObj;
  
+    /** Array objects (GL_ARB/APPLE_vertex_array_object) */
+    struct _mesa_HashTable *Objects;
     GLint ActiveTexture;               /**< Client Active Texture */
     GLuint LockFirst;            /**< GL_EXT_compiled_vertex_array */
     GLuint LockCount;            /**< GL_EXT_compiled_vertex_array */
@@@ -2049,7 -2053,6 +2053,7 @@@ struct gl_shader_stat
     struct gl_shader_program *CurrentProgram; /**< The user-bound program */
     /** Driver-selectable options: */
     GLboolean EmitHighLevelInstructions; /**< IF/ELSE/ENDIF vs. BRA, etc. */
 +   GLboolean EmitContReturn;            /**< Emit CONT/RET opcodes? */
     GLboolean EmitCondCodes;             /**< Use condition codes? */
     GLboolean EmitComments;              /**< Annotated instructions */
     void *MemPool;
@@@ -2120,9 -2123,6 +2124,6 @@@ struct gl_shared_stat
     struct _mesa_HashTable *FrameBuffers;
  #endif
  
-    /** Objects associated with the GL_APPLE_vertex_array_object extension. */
-    struct _mesa_HashTable *ArrayObjects;
     void *DriverData;  /**< Device driver shared state */
  };
  
@@@ -2468,6 -2468,7 +2469,7 @@@ struct gl_extension
     GLboolean ARB_texture_mirrored_repeat;
     GLboolean ARB_texture_non_power_of_two;
     GLboolean ARB_transpose_matrix;
+    GLboolean ARB_vertex_array_object;
     GLboolean ARB_vertex_buffer_object;
     GLboolean ARB_vertex_program;
     GLboolean ARB_vertex_shader;
@@@ -2980,8 -2981,6 +2982,8 @@@ struct __GLcontextRe
     GLenum RenderMode;        /**< either GL_RENDER, GL_SELECT, GL_FEEDBACK */
     GLbitfield NewState;      /**< bitwise-or of _NEW_* flags */
  
 +   GLboolean ViewportInitialized;  /**< has viewport size been initialized? */
 +
     GLbitfield varying_vp_inputs;  /**< mask of VERT_BIT_* flags */
  
     /** \name Derived state */
@@@ -120,11 -120,6 +120,11 @@@ void st_init_limits(struct st_context *
     c->MaxDrawBuffers
        = CLAMP(screen->get_param(screen, PIPE_CAP_MAX_RENDER_TARGETS),
                1, MAX_DRAW_BUFFERS);
 +
 +   /* Is TGSI_OPCODE_CONT supported? */
 +   /* XXX separate query for early function return? */
 +   st->ctx->Shader.EmitContReturn =
 +      screen->get_param(screen, PIPE_CAP_TGSI_CONT_SUPPORTED);
  }
  
  
@@@ -153,8 -148,9 +153,9 @@@ void st_init_extensions(struct st_conte
     ctx->Extensions.ARB_texture_env_combine = GL_TRUE;
     ctx->Extensions.ARB_texture_env_crossbar = GL_TRUE;
     ctx->Extensions.ARB_texture_env_dot3 = GL_TRUE;
-    ctx->Extensions.ARB_vertex_program = GL_TRUE;
+    ctx->Extensions.ARB_vertex_array_object = GL_TRUE;
     ctx->Extensions.ARB_vertex_buffer_object = GL_TRUE;
+    ctx->Extensions.ARB_vertex_program = GL_TRUE;
  
     ctx->Extensions.EXT_blend_color = GL_TRUE;
     ctx->Extensions.EXT_blend_equation_separate = GL_TRUE;