From 43873b53c4d15f10f0321c770b1b8bd537cc226d Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Tue, 12 Oct 2010 14:39:12 -0700 Subject: i965: Don't rebase the index buffer to min 0 if any arrays are in VBOs. There was a check to only do the rebase if we didn't have everything in VBOs, but nexuiz apparently hands us a mix of VBOs and arrays, resulting in blocking on the GPU to do a rebase. Improves nexuiz 800x600, high-settings performance on my Ironlake 41% (+/- 1.3%), from 14.0fps to 19.7fps. --- src/mesa/vbo/vbo_rebase.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/mesa/vbo/vbo_rebase.c') diff --git a/src/mesa/vbo/vbo_rebase.c b/src/mesa/vbo/vbo_rebase.c index ff7c7a6b0d..e75253f862 100644 --- a/src/mesa/vbo/vbo_rebase.c +++ b/src/mesa/vbo/vbo_rebase.c @@ -85,6 +85,18 @@ GLboolean vbo_all_varyings_in_vbos( const struct gl_client_array *arrays[] ) return GL_TRUE; } +GLboolean vbo_any_varyings_in_vbos( const struct gl_client_array *arrays[] ) +{ + GLuint i; + + for (i = 0; i < VERT_ATTRIB_MAX; i++) + if (arrays[i]->StrideB && + arrays[i]->BufferObj->Name != 0) + return GL_TRUE; + + return GL_FALSE; +} + /* Adjust primitives, indices and vertex definitions so that min_index * becomes zero. There are lots of reasons for wanting to do this, eg: * -- cgit v1.2.3