On Sun, Nov 1, 2015 at 10:24 PM, Ryan Houdek <sonicadvan...@gmail.com> wrote: > This has been tested with the piglits in the mailing list and > on the Dolphin emulator. > --- > docs/GL3.txt | 2 +- > docs/relnotes/11.1.0.html | 2 + > .../glapi/gen/ARB_draw_elements_base_vertex.xml | 6 +- > src/mapi/glapi/gen/es_EXT.xml | 88 > ++++++++++++++++++++++ > src/mesa/main/extensions.c | 2 + > src/mesa/vbo/vbo_exec_array.c | 12 ++- > 6 files changed, 105 insertions(+), 7 deletions(-) > > diff --git a/docs/GL3.txt b/docs/GL3.txt > index 7964a5e..7f6b8c9 100644 > --- a/docs/GL3.txt > +++ b/docs/GL3.txt > @@ -243,7 +243,7 @@ GLES3.2, GLSL ES 3.2 > GL_KHR_texture_compression_astc_ldr DONE (i965/gen9+) > GL_OES_copy_image not started (based on > GL_ARB_copy_image, which is done for some drivers) > GL_OES_draw_buffers_indexed not started > - GL_OES_draw_elements_base_vertex not started (based on > GL_ARB_draw_elements_base_vertex, which is done for all drivers) > + GL_OES_draw_elements_base_vertex DONE (all drivers) > GL_OES_geometry_shader not started (based on > GL_ARB_geometry_shader4, which is done for all drivers) > GL_OES_gpu_shader5 not started (based on > parts of GL_ARB_gpu_shader5, which is done for some drivers) > GL_OES_primitive_bounding box not started > diff --git a/docs/relnotes/11.1.0.html b/docs/relnotes/11.1.0.html > index 972361f..7160244 100644 > --- a/docs/relnotes/11.1.0.html > +++ b/docs/relnotes/11.1.0.html > @@ -55,6 +55,8 @@ Note: some of the new features are only available with > certain drivers. > <li>GL_ARB_texture_barrier / GL_NV_texture_barrier on i965</li> > <li>GL_ARB_texture_query_lod on softpipe</li> > <li>GL_ARB_texture_view on radeonsi</li> > +<li>GL_EXT_draw_elements_base_vertex on all drivers</li> > +<li>GL_OES_draw_elements_base_vertex on all drivers</li> > <li>EGL_KHR_create_context on softpipe, llvmpipe</li> > <li>EGL_KHR_gl_colorspace on softpipe, llvmpipe</li> > <li>new virgl gallium driver for qemu virtio-gpu</li> > diff --git a/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml > b/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml > index 120bda1..72aa62c 100644 > --- a/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml > +++ b/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml > @@ -8,7 +8,7 @@ > > <category name="GL_ARB_draw_elements_base_vertex" number="62"> > > - <function name="DrawElementsBaseVertex" exec="dynamic"> > + <function name="DrawElementsBaseVertex" es2="3.2" exec="dynamic"> > <param name="mode" type="GLenum"/> > <param name="count" type="GLsizei"/> > <param name="type" type="GLenum"/> > @@ -16,7 +16,7 @@ > <param name="basevertex" type="GLint"/> > </function> > > - <function name="DrawRangeElementsBaseVertex" exec="dynamic"> > + <function name="DrawRangeElementsBaseVertex" es2="3.2" exec="dynamic"> > <param name="mode" type="GLenum"/> > <param name="start" type="GLuint"/> > <param name="end" type="GLuint"/> > @@ -35,7 +35,7 @@ > <param name="basevertex" type="const GLint *"/> > </function> > > - <function name="DrawElementsInstancedBaseVertex" exec="dynamic"> > + <function name="DrawElementsInstancedBaseVertex" es2="3.2" > exec="dynamic"> > <param name="mode" type="GLenum"/> > <param name="count" type="GLsizei"/> > <param name="type" type="GLenum"/> > diff --git a/src/mapi/glapi/gen/es_EXT.xml b/src/mapi/glapi/gen/es_EXT.xml > index cfca5a9..9277285 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"
indentation fail > + 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" indentation fail. actually perhaps it's the rest of the files that are fail... will check what the other bits of it look like. > + 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" > + es2="3.0" 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" > + es2="3.0" 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> > + > </OpenGLAPI> > diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c > index 64972fa..d964f03 100644 > --- a/src/mesa/main/extensions.c > +++ b/src/mesa/main/extensions.c > @@ -230,6 +230,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 }, > @@ -306,6 +307,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..af22f0a 100644 > --- a/src/mesa/vbo/vbo_exec_array.c > +++ b/src/mesa/vbo/vbo_exec_array.c > @@ -1807,13 +1807,19 @@ vbo_initialize_exec_dispatch(const struct gl_context > *ctx, > SET_EvalMesh2(exec, vbo_exec_EvalMesh2); > } > > - if (_mesa_is_desktop_gl(ctx)) { > + if (ctx->API != API_OPENGLES2 && > ctx->Extensions.ARB_draw_elements_base_vertex) { != OPENGLES :) > SET_DrawElementsBaseVertex(exec, vbo_exec_DrawElementsBaseVertex); > - SET_DrawRangeElementsBaseVertex(exec, > vbo_exec_DrawRangeElementsBaseVertex); > SET_MultiDrawElementsBaseVertex(exec, > vbo_exec_MultiDrawElementsBaseVertex); > + > + if (_mesa_is_desktop_gl(ctx) || _mesa_is_gles3(ctx)) { indentation still fail. I'll fix these up myself before pushing, I guess... it's getting trivial enough. But in the future, please pay attention to such details. Reviewed-by: Ilia Mirkin <imir...@alum.mit.edu> > + SET_DrawRangeElementsBaseVertex(exec, > vbo_exec_DrawRangeElementsBaseVertex); > + SET_DrawElementsInstancedBaseVertex(exec, > vbo_exec_DrawElementsInstancedBaseVertex); > + } > + } > + > + if (_mesa_is_desktop_gl(ctx)) { > SET_DrawArraysInstancedBaseInstance(exec, > vbo_exec_DrawArraysInstancedBaseInstance); > SET_DrawElementsInstancedBaseInstance(exec, > vbo_exec_DrawElementsInstancedBaseInstance); > - SET_DrawElementsInstancedBaseVertex(exec, > vbo_exec_DrawElementsInstancedBaseVertex); > SET_DrawElementsInstancedBaseVertexBaseInstance(exec, > vbo_exec_DrawElementsInstancedBaseVertexBaseInstance); > } > > -- > 2.5.0 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev