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>
This commit is contained in:
@@ -538,7 +538,7 @@ recalculate_input_bindings(struct gl_context *ctx)
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < MAX_VERTEX_GENERIC_ATTRIBS; i++) {
|
||||
for (i = 1; i < MAX_VERTEX_GENERIC_ATTRIBS; i++) {
|
||||
if (exec->array.generic_array[i]->Enabled)
|
||||
inputs[VERT_ATTRIB_GENERIC0 + i] = exec->array.generic_array[i];
|
||||
else {
|
||||
@@ -547,6 +547,7 @@ recalculate_input_bindings(struct gl_context *ctx)
|
||||
}
|
||||
}
|
||||
|
||||
inputs[VERT_ATTRIB_GENERIC0] = inputs[0];
|
||||
ctx->NewState |= _NEW_ARRAY;
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user