Mesa (gallium-0.1): 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:05:57 UTC 2008


Module: Mesa
Branch: gallium-0.1
Commit: f9c76750a7687e9902f2efd91d5551ae0128003c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f9c76750a7687e9902f2efd91d5551ae0128003c

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 75f5baa..64b2ab6 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:




More information about the mesa-commit mailing list