Mesa (master): mesa: Optimize rebinding the same VBO

Fredrik Höglund fredrik at kemper.freedesktop.org
Thu Nov 7 17:20:58 UTC 2013


Module: Mesa
Branch: master
Commit: 193e8b4b93d1f77d7d55d5fafd0713f0d6d95667
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=193e8b4b93d1f77d7d55d5fafd0713f0d6d95667

Author: Fredrik Höglund <fredrik at kde.org>
Date:   Thu Apr 11 16:49:44 2013 +0200

mesa: Optimize rebinding the same VBO

Check if the new buffer object has the same name as the current
buffer object before looking it up.

Reviewed-by: Eric Anholt <eric at anholt.net>

---

 src/mesa/main/varray.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c
index 39e5ad3..1025d67 100644
--- a/src/mesa/main/varray.c
+++ b/src/mesa/main/varray.c
@@ -1351,9 +1351,10 @@ void GLAPIENTRY
 _mesa_BindVertexBuffer(GLuint bindingIndex, GLuint buffer, GLintptr offset,
                        GLsizei stride)
 {
+   GET_CURRENT_CONTEXT(ctx);
+   const struct gl_array_object *arrayObj = ctx->Array.ArrayObj;
    struct gl_buffer_object *vbo;
 
-   GET_CURRENT_CONTEXT(ctx);
    ASSERT_OUTSIDE_BEGIN_END(ctx);
 
    /* The ARB_vertex_attrib_binding spec says:
@@ -1398,7 +1399,9 @@ _mesa_BindVertexBuffer(GLuint bindingIndex, GLuint buffer, GLintptr offset,
       return;
    }
 
-   if (buffer != 0) {
+   if (buffer == arrayObj->VertexBinding[VERT_ATTRIB_GENERIC(bindingIndex)].BufferObj->Name) {
+      vbo = arrayObj->VertexBinding[VERT_ATTRIB_GENERIC(bindingIndex)].BufferObj;
+   } else if (buffer != 0) {
       vbo = _mesa_lookup_bufferobj(ctx, buffer);
 
       /* From the GL_ARB_vertex_attrib_array spec:




More information about the mesa-commit mailing list