[Mesa-dev] [PATCH 2/2] mesa/es: Enable GL_OES_vertex_array_object

Ian Romanick idr at freedesktop.org
Fri Aug 24 08:50:12 PDT 2012


From: Ian Romanick <ian.d.romanick at intel.com>

Functionally the same as GL_ARB_vertex_array_object.

Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
---
 src/mapi/glapi/gen/es_EXT.xml  |   26 ++++++++++++++++++++++++++
 src/mapi/glapi/gen/gles_api.py |    5 +++++
 src/mesa/main/api_exec.c       |   16 ++++++----------
 src/mesa/main/extensions.c     |    1 +
 src/mesa/main/get.c            |    6 +++---
 5 files changed, 41 insertions(+), 13 deletions(-)

diff --git a/src/mapi/glapi/gen/es_EXT.xml b/src/mapi/glapi/gen/es_EXT.xml
index d012ccd..fc2ec62 100644
--- a/src/mapi/glapi/gen/es_EXT.xml
+++ b/src/mapi/glapi/gen/es_EXT.xml
@@ -619,6 +619,32 @@
 
 <!-- 69. GL_EXT_multi_draw_arrays -->
 
+<!-- 71. GL_OES_vertex_array_object -->
+<category name="GL_OES_vertex_array_object" number="71">
+    <function name="BindVertexArrayOES" alias="BindVertexArray">
+        <param name="array" type="GLuint"/>
+    </function>
+
+    <function name="DeleteVertexArraysOES" alias="DeleteVertexArraysAPPLE">
+        <param name="n" type="GLsizei"/>
+        <param name="arrays" type="const GLuint *" count="n"/>
+    </function>
+
+    <function name="GenVertexArraysOES" alias="GenVertexArrays">
+        <param name="n" type="GLsizei"/>
+        <param name="arrays" type="GLuint *" output="true" count="n"/>
+    </function>
+
+    <function name="IsVertexArrayOES" alias="IsVertexArrayAPPLE">
+        <param name="array" type="GLuint"/>
+        <return type="GLboolean"/>
+    </function>
+
+    <enum name="VERTEX_ARRAY_BINDING_OES"      count="1"  value="0x85B5">
+        <size name="Get" mode="get"/>
+    </enum>
+</category>
+
 <!-- 87. GL_OES_EGL_image_external -->
 <category name="GL_OES_EGL_image_external" number="87">
     <enum name="TEXTURE_EXTERNAL_OES"                     value="0x8D65"/>
diff --git a/src/mapi/glapi/gen/gles_api.py b/src/mapi/glapi/gen/gles_api.py
index 70ae2e3..8dfef65 100644
--- a/src/mapi/glapi/gen/gles_api.py
+++ b/src/mapi/glapi/gen/gles_api.py
@@ -449,6 +449,11 @@ es2_api = es2_core + (
         # GL_OES_get_program_binary
         'GetProgramBinaryOES',
         'ProgramBinaryOES',
+        # GL_OES_vertex_array_object
+        'BindVertexArrayOES',
+        'DeleteVertexArraysOES',
+        'GenVertexArraysOES',
+        'IsVertexArrayOES',
         # GL_NV_draw_buffers
         'DrawBuffersNV',
         # GL_NV_read_buffer
diff --git a/src/mesa/main/api_exec.c b/src/mesa/main/api_exec.c
index 167a942..c448189 100644
--- a/src/mesa/main/api_exec.c
+++ b/src/mesa/main/api_exec.c
@@ -521,11 +521,9 @@ _mesa_create_exec_table(struct gl_context *ctx)
       SET_BindVertexArrayAPPLE(exec, _mesa_BindVertexArrayAPPLE);
       SET_GenVertexArraysAPPLE(exec, _mesa_GenVertexArraysAPPLE);
    }
-   /* Reused by ARB_vertex_array_object */
-   if (ctx->API != API_OPENGLES2) {
-      SET_DeleteVertexArraysAPPLE(exec, _mesa_DeleteVertexArraysAPPLE);
-      SET_IsVertexArrayAPPLE(exec, _mesa_IsVertexArrayAPPLE);
-   }
+   /* Reused by ARB_vertex_array_object / OES_vertex_array_object */
+   SET_DeleteVertexArraysAPPLE(exec, _mesa_DeleteVertexArraysAPPLE);
+   SET_IsVertexArrayAPPLE(exec, _mesa_IsVertexArrayAPPLE);
 
    /* 282. GL_NV_fragment_program */
 #if FEATURE_NV_fragment_program
@@ -809,11 +807,9 @@ _mesa_create_exec_table(struct gl_context *ctx)
       SET_CopyBufferSubData(exec, _mesa_CopyBufferSubData);
    }
 
-   /* GL_ARB_vertex_array_object */
-   if (ctx->API != API_OPENGLES2) {
-      SET_BindVertexArray(exec, _mesa_BindVertexArray);
-      SET_GenVertexArrays(exec, _mesa_GenVertexArrays);
-   }
+   /* GL_ARB_vertex_array_object / GL_OES_vertex_array_object */
+   SET_BindVertexArray(exec, _mesa_BindVertexArray);
+   SET_GenVertexArrays(exec, _mesa_GenVertexArrays);
 
    /* GL_EXT_draw_buffers2 */
    if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) {
diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
index e5659b3..7e116bd 100644
--- a/src/mesa/main/extensions.c
+++ b/src/mesa/main/extensions.c
@@ -266,6 +266,7 @@ static const struct extension extension_table[] = {
    { "GL_OES_texture_env_crossbar",                o(ARB_texture_env_crossbar),                     ES1,       2005 },
    { "GL_OES_texture_mirrored_repeat",             o(dummy_true),                                   ES1,       2005 },
    { "GL_OES_texture_npot",                        o(ARB_texture_non_power_of_two),                       ES2, 2005 },
+   { "GL_OES_vertex_array_object",                 o(dummy_true),                                   ES1 | ES2, 2010 },
 
    /* Vendor extensions */
    { "GL_3DFX_texture_compression_FXT1",           o(TDFX_texture_compression_FXT1),           GL,             1999 },
diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
index 9672a92..fe1035b 100644
--- a/src/mesa/main/get.c
+++ b/src/mesa/main/get.c
@@ -535,6 +535,9 @@ static const struct value_desc values[] = {
     * GLSL: */
    { GL_MAX_CLIP_PLANES, CONTEXT_INT(Const.MaxClipPlanes), NO_EXTRA },
 
+   /* GL_{APPLE,ARB,OES}_vertex_array_object */
+   { GL_VERTEX_ARRAY_BINDING_APPLE, ARRAY_INT(Name), NO_EXTRA },
+
 #if FEATURE_GL || FEATURE_ES1
    /* Enums in OpenGL and GLES1 */
    { 0, 0, TYPE_API_MASK, API_OPENGL_BIT | API_OPENGLES_BIT | API_OPENGL_CORE_BIT, NO_EXTRA },
@@ -1212,9 +1215,6 @@ static const struct value_desc values[] = {
    { GL_MAX_SAMPLES, CONTEXT_INT(Const.MaxSamples),
      extra_ARB_framebuffer_object_EXT_framebuffer_multisample },
 
-   /* GL_APPLE_vertex_array_object */
-   { GL_VERTEX_ARRAY_BINDING_APPLE, ARRAY_INT(Name), NO_EXTRA },
-
    /* GL_ARB_seamless_cube_map */
    { GL_TEXTURE_CUBE_MAP_SEAMLESS,
      CONTEXT_BOOL(Texture.CubeMapSeamless), extra_ARB_seamless_cube_map },
-- 
1.7.6.5



More information about the mesa-dev mailing list