From: Brian Date: Fri, 13 Jul 2007 20:28:15 +0000 (-0600) Subject: Fix setup.light_twoside determination. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f0636d9653d142bdf71475d2d2066f5c7c436978;p=mesa.git Fix setup.light_twoside determination. When a vertex program is used, use value of GL_VERTEX_PROGRAM_TWO_SIDE. Otherwise, if FF lighting, use value of GL_LIGHT_MODEL_TWO_SIDE. --- diff --git a/src/mesa/state_tracker/st_atom_setup.c b/src/mesa/state_tracker/st_atom_setup.c index 08f7a8a7325..6ee96f61784 100644 --- a/src/mesa/state_tracker/st_atom_setup.c +++ b/src/mesa/state_tracker/st_atom_setup.c @@ -98,14 +98,18 @@ static void update_setup_state( struct st_context *st ) if (ctx->Light.ShadeModel == GL_FLAT) setup.flatshade = 1; - /* _NEW_LIGHT + /* _NEW_LIGHT | _NEW_PROGRAM * - * Not sure about the light->enabled requirement - does this still - * apply?? + * Back-face colors can come from traditional lighting (when + * GL_LIGHT_MODEL_TWO_SIDE is set) or from vertex programs (when + * GL_VERTEX_PROGRAM_TWO_SIDE is set). Note the logic here. */ - if (ctx->Light.Enabled && - ctx->Light.Model.TwoSide) + if (ctx->VertexProgram._Enabled) { + setup.light_twoside = ctx->VertexProgram.TwoSideEnabled; + } + else if (ctx->Light.Enabled && ctx->Light.Model.TwoSide) { setup.light_twoside = 1; + } /* _NEW_POLYGON */