On 09/30/2011 12:51 AM, Eric Anholt wrote:
On Thu, 29 Sep 2011 20:44:14 -0600, Brian Paul<brian.e.p...@gmail.com>  wrote:
From: Brian Paul<bri...@vmware.com>

If color material mode is enabled, constant buffer entries related
to the material coefficients will depend on glColor.  So add
_NEW_CURRENT_ATTRIB to the bitset returned for material-related
constants in _mesa_program_state_flags().

This fixes a bug exercised by the new piglit draw-arrays-colormaterial
test.
---
  src/mesa/program/prog_statevars.c |    5 ++++-
  1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/src/mesa/program/prog_statevars.c 
b/src/mesa/program/prog_statevars.c
index 6aa2409..504944c 100644
--- a/src/mesa/program/prog_statevars.c
+++ b/src/mesa/program/prog_statevars.c
@@ -664,10 +664,13 @@ _mesa_program_state_flags(const gl_state_index 
state[STATE_LENGTH])
  {
     switch (state[0]) {
     case STATE_MATERIAL:
+   case STATE_LIGHTPROD:
+      /* these can be effected by glColor when colormaterial mode is used */
+      return _NEW_LIGHT | _NEW_CURRENT_ATTRIB;
+
     case STATE_LIGHT:
     case STATE_LIGHTMODEL_AMBIENT:
     case STATE_LIGHTMODEL_SCENECOLOR:
-   case STATE_LIGHTPROD:
        return _NEW_LIGHT;

Don't SCENECOLOR and AMBIENT, and PROD rely on it, since they also hit
ctx->Light.Material.Attrib[]?  I think STATE_LIGHT is the only
exception.

Yes, SCENECOLOR depends on material coefficients, but LIGHTMODEL_AMBIENT does not. I'll fix that and commit.

-Brian
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to