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