mesa: Fix ff fragment shader inputs calculation when enabling a VS.
authorEric Anholt <eric@anholt.net>
Wed, 13 Jul 2011 21:24:41 +0000 (14:24 -0700)
committerEric Anholt <eric@anholt.net>
Fri, 29 Jul 2011 03:51:53 +0000 (20:51 -0700)
commitef1854d09021b6601e59e39fcb71a88fb5e5efb2
tree673a6d0b29381ead02e6e4c92087af813be4062f
parent96ca6a6262293ce4ed460edf0aadd0ddb1470e79
mesa: Fix ff fragment shader inputs calculation when enabling a VS.

The FF VS generation happens just after the FF FS generation in
state.c, so the ctx->VP._Current value is for the previous state
update's vertex shader, not the one that will be chosen as a result of
this state update.  The vertexShader and vertexProgram variables
should be accurately telling us whether there's going to be a
ctx->VP._Current (except on _MaintainTnlProgram drivers, where it's
always true).

The glsl-vs-statechange-1 test was created to test for this, but it
turns out that the bug is hidden by the fact that we call
_mesa_update_state() twice per draw call -- once from
_mesa_valid_to_render() and once from vbo_draw_arrays(), and the
second one was fixing up the first one.

Reviewed-by: Brian Paul <brianp@vmware.com>
src/mesa/main/ff_fragment_shader.cpp