mesa: choose GLSL vertex shader over ARB/internal vertex program in get_fp_input_mask()

This is a work-around the for the fact that we do fragment shader state
validation before vertex shader validation (see comments in state.c) so in
get_fp_input_mask() we can't rely on ctx->VertexProgram._Current being up to
date yet.

This fixes a glean glsl1 test failure.
This commit is contained in:
Brian Paul 2008-12-17 19:01:34 -07:00
parent 3ffd529ff1
commit 2389c055ed

View file

@ -270,7 +270,19 @@ static GLbitfield get_fp_input_mask( GLcontext *ctx )
}
else {
/* calculate from vp->outputs */
GLbitfield vp_outputs = ctx->VertexProgram._Current->Base.OutputsWritten;
struct gl_vertex_program *vprog;
GLbitfield vp_outputs;
/* Choose GLSL vertex shader over ARB vertex program. Need this
* since vertex shader state validation comes after fragment state
* validation (see additional comments in state.c).
*/
if (vertexShader)
vprog = ctx->Shader.CurrentProgram->VertexProgram;
else
vprog = ctx->VertexProgram._Current;
vp_outputs = vprog->Base.OutputsWritten;
/* These get generated in the setup routine regardless of the
* vertex program: