mesa: fix GLSL issue preventing use of all 16 generic vertex attributes
authorBrian Paul <brianp@vmware.com>
Mon, 2 Feb 2009 23:33:08 +0000 (16:33 -0700)
committerBrian Paul <brianp@vmware.com>
Mon, 2 Feb 2009 23:51:45 +0000 (16:51 -0700)
commitdea0d4d56326f148a42c766bdbaf1b5bb247cc59
tree001cb5e05a1a279cf00e4fd993d1d8cb8222df91
parent1cb7cd1292dc8592d4912194d91355eb61361be5
mesa: fix GLSL issue preventing use of all 16 generic vertex attributes

Only 15 actually worked before since we always reserved generic[0] as an
alias for vertex position.

The case of vertex attribute 0 is tricky.  The spec says that there is no
aliasing between generic vertex attributes 0..MAX_VERTEX_ATTRIBS-1 and the
conventional attributes.  But it also says that calls to glVertexAttrib(0, v)
are equivalent to glVertex(v).  The distinction seems to be in glVertex-mode
versus vertex array mode.

So update the VBO code so that if the shader uses generic[0] but not gl_Vertex,
route the attribute data set with glVertex() to go to shader input generic[0].

No change needed for the glDrawArrays/Elements() path.

This is a potentially risky change so regressions are possible.  All the usual
tests seem OK though.
src/mesa/shader/slang/slang_link.c
src/mesa/vbo/vbo_exec_api.c
src/mesa/vbo/vbo_exec_draw.c
src/mesa/vbo/vbo_save_draw.c