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(-) _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev