[Mesa-dev] [PATCH 00/22] Add DSA support for vertex array objects

Fredrik Höglund fredrik at kde.org
Wed Mar 18 16:18:26 PDT 2015


This series implements the VAO portion of GL_ARB_direct_state_access.

I started working on this before the decision was made to only expose
the extension in the core profile, so this series implements both the
core and compatibility behavior.  The compatibility support actually
only amounts to a couple of lines of code in _mesa_lookup_vao_err().
Everything else was already implemented in the now refactored selector-
based entry points.

There are a couple of things worth noting. The first is that
VertexArrayElementBuffer requires that the buffer object exists, while
VertexArrayVertexBuffer only requires that the ID has been returned by
GenBuffers or CreateBuffers.  I'm not sure if this is a mistake or not,
because the specfication really is quite explicit about it.  The second
is that the specification can't agree with itself about which parameters
GetVertexArrayIndexediv accepts.  See the comments in patch 21 for the
details.  I made the interpretation that the intent is that it should
be possible to query all states that can be set with a DSA function.
The new piglit tests also depend on this.

This series is also available at:

git://people.freedesktop.org/~fredrik/mesa arb-direct-state-access

I plan on posting the piglit tests shortly.

Fredrik Höglund (22):
      mesa: Implement CreateVertexArrays
      mesa: Add _mesa_lookup_vao_err
      mesa: Keep track of the last looked-up VAO
      mesa: Implement DisableVertexArrayAttrib
      mesa: Implement EnableVertexArrayAttrib
      mesa: Implement VertexArrayElementBuffer
      mesa: Add a vao parameter to bind_vertex_buffer
      mesa: Implement VertexArrayVertexBuffer
      mesa: Implement VertexArrayVertexBuffers
      mesa: Refactor VertexAttrib[I|L]Format
      mesa: Add a vao parameter to update_array_format
      mesa: Implement VertexArrayAttrib[I|L]Format
      mesa: Add a vao parameter to vertex_attrib_binding
      mesa: Implement VertexArrayAttribBinding
      mesa: Add a vao parameter to vertex_binding_divisor
      mesa: Implement VertexArrayBindingDivisor
      mesa: Implement GetVertexArrayiv
      mesa: Add a vao parameter to get_vertex_array_attrib
      mesa: Add a Doubles field in gl_vertex_attrib_array
      mesa: Add support for quering GL_VERTEX_ATTRIB_ARRAY_LONG
      mesa: Implement GetVertexArrayIndexed[64]iv
      docs: Update the ARB_direct_state_access status

 docs/GL3.txt                                   |   2 +-
 src/mapi/glapi/gen/ARB_direct_state_access.xml |  96 +++
 src/mesa/main/arrayobj.c                       | 151 +++-
 src/mesa/main/arrayobj.h                       |   9 +
 src/mesa/main/mtypes.h                         |   5 +
 src/mesa/main/tests/dispatch_sanity.cpp        |  14 +
 src/mesa/main/varray.c                         | 757 ++++++++++++++------
 src/mesa/main/varray.h                         |  49 ++
 8 files changed, 876 insertions(+), 207 deletions(-)



More information about the mesa-dev mailing list