Don't know if it's actually correct, but after looking at endgame with gdb it looked like some likely necessary state updates were omitted. Reversing the condition when to call the update material function fixes this. Maybe someone could take a look at it?
Roland
btw the same code is also in the radeon driver. If endgame doesn't work there correctly, it's likely for the same reason I guess.
Index: r200_state.c =================================================================== RCS file: /cvs/mesa/Mesa/src/mesa/drivers/dri/r200/r200_state.c,v retrieving revision 1.9 diff -u -r1.9 r200_state.c --- r200_state.c 21 Jan 2004 16:08:43 -0000 1.9 +++ r200_state.c 21 Jan 2004 22:30:21 -0000 @@ -1695,7 +1734,7 @@
case GL_COLOR_MATERIAL: r200ColorMaterial( ctx, 0, 0 ); - if (!state) + if ( state ) r200UpdateMaterial( ctx ); break;