mesa: add _NEW_CURRENT_ATTRIB in _mesa_program_state_flags()
authorBrian Paul <brianp@vmware.com>
Fri, 30 Sep 2011 14:15:30 +0000 (08:15 -0600)
committerBrian Paul <brianp@vmware.com>
Fri, 30 Sep 2011 14:16:21 +0000 (08:16 -0600)
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.

Note: This is a candidate for the 7.11 branch.

src/mesa/program/prog_statevars.c

index 6aa2409e85eed0e8d731a4da0e7a5eaff32a1c18..f34a6d3609d2c4cb687e9c93b1a1f8359a4f4fab 100644 (file)
@@ -664,10 +664,13 @@ _mesa_program_state_flags(const gl_state_index state[STATE_LENGTH])
 {
    switch (state[0]) {
    case STATE_MATERIAL:
+   case STATE_LIGHTPROD:
+   case STATE_LIGHTMODEL_SCENECOLOR:
+      /* 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;
 
    case STATE_TEXGEN: