mesa/vbo: Treat attribute 0 and vertex as the same
authorIan Romanick <ian.d.romanick@intel.com>
Thu, 13 Oct 2011 23:13:51 +0000 (16:13 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Fri, 14 Oct 2011 16:40:31 +0000 (09:40 -0700)
commitc19f8ab2796a68d5e0c3c6334e7597f7f1c4c757
tree8b36ce246a2dc4820c8d5e30b0f2bf4c4dda1cc0
parentae272a92a17510493392d7d7dd4937786af415ec
mesa/vbo: Treat attribute 0 and vertex as the same

This is supported by the pseudo-code on pages 27 and 28 (pages 41 and
42 of the PDF) of the OpenGL 2.1 spec.  The last part of the
implementation of ArrayElement is:

    if (generic attribute array 0 enabled) {
      if (generic vertex attribute 0 array normalization flag is set, and
  type is not FLOAT or DOUBLE)
VertexAttrib[size]N[type]v(0, generic vertex attribute 0 array element i);
      else
VertexAttrib[size][type]v(0, generic vertex attribute 0 array element i);
    } else if (vertex array enabled) {
      Vertex[size][type]v(vertex array element i);
    }

Page 23 (page 37 of the PDF) of the same spec says:

    "Setting generic vertex attribute zero specifies a vertex; the
    four vertex coordinates are taken from the values of attribute
    zero. A Vertex2, Vertex3, or Vertex4 command is completely
    equivalent to the corresponding VertexAttrib* command with an
    index of zero."

Fixes piglit test attribute0.

NOTE: This is a candidate for stable branches.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
src/mesa/vbo/vbo_exec_array.c