gallium: fix two-sided lighting test in state tracker
authorBrian Paul <brian.paul@tungstengraphics.com>
Thu, 18 Dec 2008 23:00:20 +0000 (16:00 -0700)
committerBrian Paul <brian.paul@tungstengraphics.com>
Thu, 18 Dec 2008 23:12:08 +0000 (16:12 -0700)
This fixes two-sided lighting for vertex shaders.

src/mesa/state_tracker/st_atom_rasterizer.c

index 5eef4ebe92e58caa21b63927c70f6914531f8994..ea76487bcfc885f0a7dbfa9e05d931ba6177d5b5 100644 (file)
@@ -107,12 +107,15 @@ static void update_raster_state( struct st_context *st )
    /* _NEW_LIGHT | _NEW_PROGRAM
     *
     * Back-face colors can come from traditional lighting (when
-    * GL_LIGHT_MODEL_TWO_SIDE is set) or from vertex programs (when
+    * GL_LIGHT_MODEL_TWO_SIDE is set) or from vertex programs/shaders (when
     * GL_VERTEX_PROGRAM_TWO_SIDE is set).  Note the logic here.
     */
    if (ctx->VertexProgram._Current) {
-      if (ctx->VertexProgram._Enabled) {
-         /* user-defined program */
+      if (ctx->VertexProgram._Enabled ||
+          (ctx->Shader.CurrentProgram &&
+           ctx->Shader.CurrentProgram->VertexProgram &&
+           ctx->Shader.CurrentProgram->LinkStatus)) {
+         /* user-defined vertex program or shader */
          raster->light_twoside = ctx->VertexProgram.TwoSideEnabled;
       }
       else {