- if (ctx->API == API_OPENGL_COMPAT) {
- if (array[VERT_ATTRIB_GENERIC0].Enabled)
- inputs[0] = &vertexAttrib[VERT_ATTRIB_GENERIC0];
- else if (array[VERT_ATTRIB_POS].Enabled)
- inputs[0] = &vertexAttrib[VERT_ATTRIB_POS];
- else {
- inputs[0] = &vbo->currval[VBO_ATTRIB_POS];
- const_inputs |= VERT_BIT_POS;
- }
-
- for (i = 1; i < VERT_ATTRIB_FF_MAX; i++) {
- if (array[VERT_ATTRIB_FF(i)].Enabled)
- inputs[i] = &vertexAttrib[VERT_ATTRIB_FF(i)];
- else {
- inputs[i] = &vbo->currval[VBO_ATTRIB_POS + i];
- const_inputs |= VERT_BIT_FF(i);
- }
- }
-
- for (i = 1; i < VERT_ATTRIB_GENERIC_MAX; i++) {
- if (array[VERT_ATTRIB_GENERIC(i)].Enabled)
- inputs[VERT_ATTRIB_GENERIC(i)] =
- &vertexAttrib[VERT_ATTRIB_GENERIC(i)];
- else {
- inputs[VERT_ATTRIB_GENERIC(i)] =
- &vbo->currval[VBO_ATTRIB_GENERIC0 + i];
- const_inputs |= VERT_BIT_GENERIC(i);
- }
- }
-
- inputs[VERT_ATTRIB_GENERIC0] = inputs[0];
- } else {
- /* Other parts of the code assume that inputs[0] through
- * inputs[VERT_ATTRIB_FF_MAX] will be non-NULL. However, in OpenGL
- * ES 2.0+ or OpenGL core profile, none of these arrays should ever
- * be enabled.
- */
- for (i = 0; i < VERT_ATTRIB_FF_MAX; i++) {
- assert(!array[VERT_ATTRIB_FF(i)].Enabled);
-
- inputs[i] = &vbo->currval[VBO_ATTRIB_POS + i];
- const_inputs |= VERT_BIT_FF(i);
- }
-
- for (i = 0; i < VERT_ATTRIB_GENERIC_MAX; i++) {
- if (array[VERT_ATTRIB_GENERIC(i)].Enabled)
- inputs[VERT_ATTRIB_GENERIC(i)] =
- &vertexAttrib[VERT_ATTRIB_GENERIC(i)];
- else {
- inputs[VERT_ATTRIB_GENERIC(i)] =
- &vbo->currval[VBO_ATTRIB_GENERIC0 + i];
- const_inputs |= VERT_BIT_GENERIC(i);
- }
- }
- }
-
- break;
- }
-
- _mesa_set_varying_vp_inputs(ctx, VERT_BIT_ALL & (~const_inputs));
- ctx->NewDriverState |= ctx->DriverFlags.NewArray;
-}