Mesa (gallium-0.2): mesa: choose GLSL vertex shader over ARB/ internal vertex program in get_fp_input_mask()
Brian Paul
brianp at kemper.freedesktop.org
Thu Dec 18 02:04:53 UTC 2008
Module: Mesa
Branch: gallium-0.2
Commit: 2389c055ed4c26ba5f3979c4a7871a333725dd88
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=2389c055ed4c26ba5f3979c4a7871a333725dd88
Author: Brian Paul <brian.paul at tungstengraphics.com>
Date: Wed Dec 17 19:01:34 2008 -0700
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.
---
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 865ef8f..2f90a34 100644
--- a/src/mesa/main/texenvprogram.c
+++ b/src/mesa/main/texenvprogram.c
@@ -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:
More information about the mesa-commit
mailing list