[Mesa-dev] [PATCH 06/22] mesa: Implement VertexArrayElementBuffer

Laura Ekstrand laura at jlekstrand.net
Fri Mar 20 15:35:10 PDT 2015


On Wed, Mar 18, 2015 at 4:18 PM, Fredrik Höglund <fredrik at kde.org> wrote:

> ---
>  src/mapi/glapi/gen/ARB_direct_state_access.xml |  5 ++++
>  src/mesa/main/arrayobj.c                       | 34
> ++++++++++++++++++++++++++
>  src/mesa/main/arrayobj.h                       |  2 ++
>  src/mesa/main/tests/dispatch_sanity.cpp        |  1 +
>  4 files changed, 42 insertions(+)
>
> diff --git a/src/mapi/glapi/gen/ARB_direct_state_access.xml
> b/src/mapi/glapi/gen/ARB_direct_state_access.xml
> index f92734d..a6ff206 100644
> --- a/src/mapi/glapi/gen/ARB_direct_state_access.xml
> +++ b/src/mapi/glapi/gen/ARB_direct_state_access.xml
> @@ -396,5 +396,10 @@
>        <param name="index" type="GLuint" />
>     </function>
>
> +   <function name="VertexArrayElementBuffer" offset="assign">
> +      <param name="vaobj" type="GLuint" />
> +      <param name="buffer" type="GLuint" />
> +   </function>
> +
>  </category>
>  </OpenGLAPI>
> diff --git a/src/mesa/main/arrayobj.c b/src/mesa/main/arrayobj.c
> index 862bbb7..decdc51 100644
> --- a/src/mesa/main/arrayobj.c
> +++ b/src/mesa/main/arrayobj.c
> @@ -637,3 +637,37 @@ _mesa_IsVertexArray( GLuint id )
>
>     return obj->EverBound;
>  }
> +
>
Since this looks like an entirely new function, it would be nice to have a
comment here saying something to the effect of "This is the
ARB_direct_state_access equivalent of
BindBuffer(GL_ELEMENT_ARRAY_BUFFER...)."  It took me a while to figure that
out.

> +void GLAPIENTRY
> +_mesa_VertexArrayElementBuffer(GLuint vaobj, GLuint buffer)
> +{
> +   GET_CURRENT_CONTEXT(ctx);
> +   struct gl_vertex_array_object *vao;
> +   struct gl_buffer_object *bufObj;
> +
> +   ASSERT_OUTSIDE_BEGIN_END(ctx);
> +
> +   /* The GL_ARB_direct_state_access specification says:
> +    *
> +    *    "An INVALID_OPERATION error is generated by
> VertexArrayElementBuffer
> +    *     if <vaobj> is not [compatibility profile: zero or] the name of
> an
> +    *     existing vertex array object."
> +    */
> +   vao =_mesa_lookup_vao_err(ctx, vaobj, "glVertexArrayElementBuffer");
> +   if (!vao)
> +      return;
> +
> +   /* The GL_ARB_direct_state_access specification says:
> +    *
> +    *    "An INVALID_OPERATION error is generated if <buffer> is not zero
> or
> +    *     the name of an existing buffer object."
> +    */
> +   if (buffer != 0)
> +      bufObj = _mesa_lookup_bufferobj_err(ctx, buffer,
> +                                          "glVertexArrayElementBuffer");
> +   else
> +      bufObj = ctx->Shared->NullBufferObj;
> +
> +   if (bufObj)
> +      _mesa_reference_buffer_object(ctx, &vao->IndexBufferObj, bufObj);
> +}
> diff --git a/src/mesa/main/arrayobj.h b/src/mesa/main/arrayobj.h
> index 1e7436b..748eaf5 100644
> --- a/src/mesa/main/arrayobj.h
> +++ b/src/mesa/main/arrayobj.h
> @@ -100,4 +100,6 @@ void GLAPIENTRY _mesa_CreateVertexArrays(GLsizei n,
> GLuint *arrays);
>
>  GLboolean GLAPIENTRY _mesa_IsVertexArray( GLuint id );
>
> +void GLAPIENTRY _mesa_VertexArrayElementBuffer(GLuint vaobj, GLuint
> buffer);
> +
>  #endif /* ARRAYOBJ_H */
> diff --git a/src/mesa/main/tests/dispatch_sanity.cpp
> b/src/mesa/main/tests/dispatch_sanity.cpp
> index 2b7d4cb..5926061 100644
> --- a/src/mesa/main/tests/dispatch_sanity.cpp
> +++ b/src/mesa/main/tests/dispatch_sanity.cpp
> @@ -973,6 +973,7 @@ const struct function gl_core_functions_possible[] = {
>     { "glCreateVertexArrays", 45, -1 },
>     { "glDisableVertexArrayAttrib", 45, -1 },
>     { "glEnableVertexArrayAttrib", 45, -1 },
> +   { "glVertexArrayElementBuffer", 45, -1 },
>
>     /* GL_EXT_polygon_offset_clamp */
>     { "glPolygonOffsetClampEXT", 11, -1 },
> --
> 1.8.5.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150320/64633cfe/attachment.html>


More information about the mesa-dev mailing list