diff options
author | Brian Paul <brian.paul@tungstengraphics.com> | 2008-12-17 19:01:34 -0700 |
---|---|---|
committer | Brian Paul <brian.paul@tungstengraphics.com> | 2008-12-17 19:05:26 -0700 |
commit | f9c76750a7687e9902f2efd91d5551ae0128003c (patch) | |
tree | 3befe541b2835792d2cc4e6c837881e11326b2f2 | |
parent | b890fffbf4ad435ef533988d288e98b0bfe4d17b (diff) |
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.
-rw-r--r-- | src/mesa/main/texenvprogram.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/mesa/main/texenvprogram.c b/src/mesa/main/texenvprogram.c index 75f5baa3e1..64b2ab6c13 100644 --- a/src/mesa/main/texenvprogram.c +++ b/src/mesa/main/texenvprogram.c @@ -258,7 +258,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: |