[Mesa-dev] [PATCH 00/18] Implement GL_ARB_multi_bind

Fredrik Höglund fredrik at kde.org
Tue Jan 21 15:35:38 PST 2014


So here is my take on GL_ARB_multi_bind.

I tried to come up with names for the new hash table functions that
don't suggest that they should be used to do unlocked insertions/lookups.
I'm not entirely happy with the ones I came up with though, so I'm
hoping someone will have better suggestions.

When binding 32 textures glBindTextures() seems to be about three times
faster than calling glActiveTexture() + glBindTexture() in a loop.
When binding 4 textures it's about twice as fast.

I hope to land this series this week if there are no major issues.

Note that I haven't been able to test the glBindImageTextures()
implementation.

This series is also available at:

git://people.freedesktop.org/~fredrik/mesa arb-multi-bind

Fredrik Höglund (18):
      mesa: Store the target index in gl_texture_object
      mesa: Add a _BoundTextures field in gl_texture_unit
      mesa: Optimize unbind_texobj_from_texunits()
      mesa: Add functions for doing unlocked hash table lookups
      glapi: Add infrastructure for ARB_multi_bind
      mesa: Implement glBindSamplers()
      mesa: Add helper functions for looking up multiple textures
      mesa: Implement glBindTextures()
      mesa: Refactor set_atomic_buffer_binding()
      mesa: Add helper functions for looking up multiple buffers
      mesa: Refactor set_ubo_binding()
      mesa: Add _mesa_set_transform_feedback_binding()
      mesa: Implement glBindBuffersBase()
      mesa: Implement glBindBuffersRange()
      mesa: Implement glBindVertexBuffers()
      mesa: Implement glBindImageTextures()
      mesa: Enable ARB_multi_bind
      docs: Mark ARB_multi_bind as done

 docs/GL3.txt                            |    2 +-
 docs/relnotes/10.1.html                 |    1 +
 src/mapi/glapi/gen/ARB_multi_bind.xml   |   53 ++
 src/mapi/glapi/gen/Makefile.am          |    1 +
 src/mapi/glapi/gen/gl_API.xml           |    4 +
 src/mesa/main/bufferobj.c               |  914 +++++++++++++++++++++++++-
 src/mesa/main/bufferobj.h               |   21 +
 src/mesa/main/extensions.c              |    1 +
 src/mesa/main/hash.c                    |   90 ++-
 src/mesa/main/hash.h                    |    9 +
 src/mesa/main/mtypes.h                  |    4 +
 src/mesa/main/samplerobj.c              |  121 ++++
 src/mesa/main/samplerobj.h              |    2 +
 src/mesa/main/shaderimage.c             |  169 +++++
 src/mesa/main/shaderimage.h             |    3 +
 src/mesa/main/tests/dispatch_sanity.cpp |    8 +
 src/mesa/main/texobj.c                  |  174 ++++-
 src/mesa/main/texobj.h                  |   13 +
 src/mesa/main/texstate.c                |    3 +
 src/mesa/main/transformfeedback.c       |   10 +-
 src/mesa/main/transformfeedback.h       |   14 +
 src/mesa/main/varray.c                  |  121 ++++
 src/mesa/main/varray.h                  |    4 +
 23 files changed, 1680 insertions(+), 62 deletions(-)



More information about the mesa-dev mailing list