On Sun, Nov 1, 2015 at 8:00 PM, Ilia Mirkin <imir...@alum.mit.edu> wrote:
> On Fri, Oct 30, 2015 at 3:57 PM, Ryan Houdek <sonicadvan...@gmail.com> wrote:
>> ---
>>  src/mapi/glapi/gen/es_EXT.xml | 88 
>> +++++++++++++++++++++++++++++++++++++++++++
>>  src/mesa/main/extensions.c    |  2 +
>>  src/mesa/vbo/vbo_exec_array.c | 19 ++++++++--
>>  3 files changed, 105 insertions(+), 4 deletions(-)
>>
>> diff --git a/src/mapi/glapi/gen/es_EXT.xml b/src/mapi/glapi/gen/es_EXT.xml
>> index cfca5a9..1bc82d3 100644
>> --- a/src/mapi/glapi/gen/es_EXT.xml
>> +++ b/src/mapi/glapi/gen/es_EXT.xml
>> @@ -817,4 +817,92 @@
>>      </function>
>>  </category>
>>
>> +<category name="GL_EXT_draw_elements_base_vertex" number="204">
>> +
>> +       <function name="DrawElementsBaseVertexEXT" 
>> alias="DrawElementsBaseVertex"
>> +            exec="dynamic">
>> +        <param name="mode" type="GLenum"/>
>> +        <param name="count" type="GLsizei"/>
>> +        <param name="type" type="GLenum"/>
>> +        <param name="indices" type="const GLvoid *"/>
>> +        <param name="basevertex" type="GLint"/>
>> +    </function>
>> +
>> +    <function name="DrawRangeElementsBaseVertexEXT" 
>> alias="DrawRangeElementsBaseVertex"
>> +            exec="dynamic">
>> +        <param name="mode" type="GLenum"/>
>> +        <param name="start" type="GLuint"/>
>> +        <param name="end" type="GLuint"/>
>> +        <param name="count" type="GLsizei"/>
>> +        <param name="type" type="GLenum"/>
>> +        <param name="indices" type="const GLvoid *"/>
>> +        <param name="basevertex" type="GLint"/>
>> +    </function>
>> +
>> +    <function name="MultiDrawElementsBaseVertexEXT" 
>> alias="MultiDrawElementsBaseVertex"
>> +            exec="dynamic">
>> +        <param name="mode" type="GLenum"/>
>> +        <param name="count" type="const GLsizei *"/>
>> +        <param name="type" type="GLenum"/>
>> +        <param name="indices" type="const GLvoid * const *"/>
>> +        <param name="primcount" type="GLsizei"/>
>> +        <param name="basevertex" type="const GLint *"/>
>> +    </function>
>> +
>> +    <function name="DrawElementsInstancedBaseVertexEXT" 
>> alias="DrawElementsInstancedBaseVertex"
>> +            exec="dynamic">
>> +        <param name="mode" type="GLenum"/>
>> +        <param name="count" type="GLsizei"/>
>> +        <param name="type" type="GLenum"/>
>> +        <param name="indices" type="const GLvoid *"/>
>> +        <param name="primcount" type="GLsizei"/>
>> +        <param name="basevertex" type="GLint"/>
>> +    </function>
>> +
>> +</category>
>> +
>> +<category name="GL_OES_draw_elements_base_vertex" number="219">
>> +
>> +       <function name="DrawElementsBaseVertexOES" 
>> alias="DrawElementsBaseVertex"
>> +            exec="dynamic">
>> +        <param name="mode" type="GLenum"/>
>> +        <param name="count" type="GLsizei"/>
>> +        <param name="type" type="GLenum"/>
>> +        <param name="indices" type="const GLvoid *"/>
>> +        <param name="basevertex" type="GLint"/>
>> +    </function>
>> +
>> +    <function name="DrawRangeElementsBaseVertexOES" 
>> alias="DrawRangeElementsBaseVertex"
>> +            exec="dynamic">
>> +        <param name="mode" type="GLenum"/>
>> +        <param name="start" type="GLuint"/>
>> +        <param name="end" type="GLuint"/>
>> +        <param name="count" type="GLsizei"/>
>> +        <param name="type" type="GLenum"/>
>> +        <param name="indices" type="const GLvoid *"/>
>> +        <param name="basevertex" type="GLint"/>
>> +    </function>
>> +
>> +    <function name="MultiDrawElementsBaseVertexOES" 
>> alias="MultiDrawElementsBaseVertex"
>> +            exec="dynamic">
>> +        <param name="mode" type="GLenum"/>
>> +        <param name="count" type="const GLsizei *"/>
>> +        <param name="type" type="GLenum"/>
>> +        <param name="indices" type="const GLvoid * const *"/>
>> +        <param name="primcount" type="GLsizei"/>
>> +        <param name="basevertex" type="const GLint *"/>
>> +    </function>
>> +
>> +    <function name="DrawElementsInstancedBaseVertexOES" 
>> alias="DrawElementsInstancedBaseVertex"
>> +            exec="dynamic">
>> +        <param name="mode" type="GLenum"/>
>> +        <param name="count" type="GLsizei"/>
>> +        <param name="type" type="GLenum"/>
>> +        <param name="indices" type="const GLvoid *"/>
>> +        <param name="primcount" type="GLsizei"/>
>> +        <param name="basevertex" type="GLint"/>
>> +    </function>
>> +
>> +</category>
>
> Please confirm that "make check" doesn't start failing in
> dispatch_tests. I don't think it will due to the fact that you use
> alias, but... good to check.
>
>> +
>>  </OpenGLAPI>
>> diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
>> index b2c88c3..e968104 100644
>> --- a/src/mesa/main/extensions.c
>> +++ b/src/mesa/main/extensions.c
>> @@ -229,6 +229,7 @@ static const struct extension extension_table[] = {
>>     { "GL_EXT_depth_bounds_test",                   
>> o(EXT_depth_bounds_test),                   GL,             2002 },
>>     { "GL_EXT_draw_buffers",                        o(dummy_true),           
>>                               ES2, 2012 },
>>     { "GL_EXT_draw_buffers2",                       o(EXT_draw_buffers2),    
>>                    GL,             2006 },
>> +   { "GL_EXT_draw_elements_base_vertex",           
>> o(ARB_draw_elements_base_vertex),                      ES2, 2014 },
>>     { "GL_EXT_draw_instanced",                      o(ARB_draw_instanced),   
>>                    GL,             2006 },
>>     { "GL_EXT_draw_range_elements",                 o(dummy_true),           
>>                    GLL,            1997 },
>>     { "GL_EXT_fog_coord",                           o(dummy_true),           
>>                    GLL,            1999 },
>> @@ -305,6 +306,7 @@ static const struct extension extension_table[] = {
>>     { "GL_OES_depth32",                             o(dummy_false),          
>>            DISABLE,                2005 },
>>     { "GL_OES_depth_texture",                       o(ARB_depth_texture),    
>>                               ES2, 2006 },
>>     { "GL_OES_depth_texture_cube_map",              
>> o(OES_depth_texture_cube_map),                         ES2, 2012 },
>> +   { "GL_OES_draw_elements_base_vertex",           
>> o(ARB_draw_elements_base_vertex),                      ES2, 2014 },
>>     { "GL_OES_draw_texture",                        o(OES_draw_texture),     
>>                         ES1,       2004 },
>>     { "GL_OES_EGL_sync",                            o(dummy_true),           
>>                         ES1 | ES2, 2010 },
>>     /*  FIXME: Mesa expects GL_OES_EGL_image to be available in OpenGL 
>> contexts. */
>> diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c
>> index 34d2c1d..620d350 100644
>> --- a/src/mesa/vbo/vbo_exec_array.c
>> +++ b/src/mesa/vbo/vbo_exec_array.c
>> @@ -1807,13 +1807,24 @@ vbo_initialize_exec_dispatch(const struct gl_context 
>> *ctx,
>>        SET_EvalMesh2(exec, vbo_exec_EvalMesh2);
>>     }
>>
>> +   if (_mesa_is_desktop_gl(ctx) ||
>> +        (_mesa_is_gles(ctx) && 
>> ctx->Extensions.ARB_draw_elements_base_vertex)) {
>
> Actually that'll catch GLES 1 contexts too; the ext says it requires
> GLES 2.0. You want ctx->API == API_OPENGLES2 (which covers GLES3/3.1
> as well)
>
>> +       SET_DrawElementsBaseVertex(exec, vbo_exec_DrawElementsBaseVertex);
>> +
>> +       if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) {
>> +               SET_DrawRangeElementsBaseVertex(exec, 
>> vbo_exec_DrawRangeElementsBaseVertex);
>> +               SET_DrawElementsInstancedBaseVertex(exec, 
>> vbo_exec_DrawElementsInstancedBaseVertex);
>> +       }
>> +
>> +       if (_mesa_is_desktop_gl(ctx) ||
>> +          (_mesa_is_gles(ctx) && ctx->Extensions.ARB_draw_indirect)) {
>> +               SET_MultiDrawElementsBaseVertex(exec, 
>> vbo_exec_MultiDrawElementsBaseVertex);
>
> What does this have to do with indirect? The ext talks about
> EXT_multi_draw_arrays, which is always enabled in mesa.
>
>> +       }
>> +   }
>> +
>>     if (_mesa_is_desktop_gl(ctx)) {
>> -      SET_DrawElementsBaseVertex(exec, vbo_exec_DrawElementsBaseVertex);
>> -      SET_DrawRangeElementsBaseVertex(exec, 
>> vbo_exec_DrawRangeElementsBaseVertex);
>> -      SET_MultiDrawElementsBaseVertex(exec, 
>> vbo_exec_MultiDrawElementsBaseVertex);
>>        SET_DrawArraysInstancedBaseInstance(exec, 
>> vbo_exec_DrawArraysInstancedBaseInstance);
>>        SET_DrawElementsInstancedBaseInstance(exec, 
>> vbo_exec_DrawElementsInstancedBaseInstance);
>> -      SET_DrawElementsInstancedBaseVertex(exec, 
>> vbo_exec_DrawElementsInstancedBaseVertex);
>>        SET_DrawElementsInstancedBaseVertexBaseInstance(exec, 
>> vbo_exec_DrawElementsInstancedBaseVertexBaseInstance);
>>     }

Oh, and lastly, please update GL3.txt (the GLES 3.2 section) as well
as the release notes for 11.1 saying that these two exts were added.

  -ilia
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to