vbo: mark vertex arrays as dirty when re-binding

This fixes:
https://bugs.freedesktop.org/show_bug.cgi?id=34378
This commit is contained in:
Marek Olšák 2011-03-07 19:34:34 +01:00
parent ff8baec5bc
commit ef58598c1c
1 changed files with 12 additions and 1 deletions

View File

@ -461,6 +461,14 @@ recalculate_input_bindings(struct gl_context *ctx)
inputs[VERT_ATTRIB_GENERIC0 + i] = &vbo->generic_currval[i];
const_inputs |= 1 << (VERT_ATTRIB_GENERIC0 + i);
}
/* There is no need to make _NEW_ARRAY dirty here for the TnL program,
* because it already takes care of invalidating the state necessary
* to revalidate vertex arrays. Not marking the state as dirty also
* improves performance (quite significantly in some apps).
*/
if (!ctx->VertexProgram._MaintainTnlProgram)
ctx->NewState |= _NEW_ARRAY;
break;
case VP_NV:
@ -486,6 +494,8 @@ recalculate_input_bindings(struct gl_context *ctx)
inputs[i] = &vbo->generic_currval[i - VERT_ATTRIB_GENERIC0];
const_inputs |= 1 << i;
}
ctx->NewState |= _NEW_ARRAY;
break;
case VP_ARB:
@ -521,8 +531,9 @@ recalculate_input_bindings(struct gl_context *ctx)
inputs[VERT_ATTRIB_GENERIC0 + i] = &vbo->generic_currval[i];
const_inputs |= 1 << (VERT_ATTRIB_GENERIC0 + i);
}
}
ctx->NewState |= _NEW_ARRAY;
break;
}