mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 02:38:04 +02:00
Call UpdateMaterial() unconditionally on GL_COLOR_MATERIAL state change
(Roland Scheidegger), and update lighting state unconditionally there. Fixes lighting oddities in the xscreensaver endgame hack, bzflag and possibly elsewhere.
This commit is contained in:
parent
5d00e131d8
commit
a2c97eb2ff
2 changed files with 14 additions and 20 deletions
|
|
@ -959,15 +959,13 @@ void r200UpdateMaterial( GLcontext *ctx )
|
|||
fcmd[MTL_SHININESS] = mat[MAT_ATTRIB_FRONT_SHININESS][0];
|
||||
}
|
||||
|
||||
if (R200_DB_STATECHANGE( rmesa, &rmesa->hw.mtl[0] )) {
|
||||
for (p = 0 ; p < MAX_LIGHTS; p++)
|
||||
update_light_colors( ctx, p );
|
||||
R200_DB_STATECHANGE( rmesa, &rmesa->hw.mtl[0] );
|
||||
|
||||
check_twoside_fallback( ctx );
|
||||
update_global_ambient( ctx );
|
||||
}
|
||||
else if (R200_DEBUG & (DEBUG_PRIMS|DEBUG_STATE))
|
||||
fprintf(stderr, "%s: Elided noop material call\n", __FUNCTION__);
|
||||
for (p = 0 ; p < MAX_LIGHTS; p++)
|
||||
update_light_colors( ctx, p );
|
||||
|
||||
check_twoside_fallback( ctx );
|
||||
update_global_ambient( ctx );
|
||||
}
|
||||
|
||||
/* _NEW_LIGHT
|
||||
|
|
@ -1734,8 +1732,7 @@ static void r200Enable( GLcontext *ctx, GLenum cap, GLboolean state )
|
|||
|
||||
case GL_COLOR_MATERIAL:
|
||||
r200ColorMaterial( ctx, 0, 0 );
|
||||
if (!state)
|
||||
r200UpdateMaterial( ctx );
|
||||
r200UpdateMaterial( ctx );
|
||||
break;
|
||||
|
||||
case GL_CULL_FACE:
|
||||
|
|
|
|||
|
|
@ -946,15 +946,13 @@ void radeonUpdateMaterial( GLcontext *ctx )
|
|||
fcmd[MTL_SHININESS] = mat[MAT_ATTRIB_FRONT_SHININESS][0];
|
||||
}
|
||||
|
||||
if (RADEON_DB_STATECHANGE( rmesa, &rmesa->hw.mtl )) {
|
||||
for (p = 0 ; p < MAX_LIGHTS; p++)
|
||||
update_light_colors( ctx, p );
|
||||
RADEON_DB_STATECHANGE( rmesa, &rmesa->hw.mtl );
|
||||
|
||||
check_twoside_fallback( ctx );
|
||||
update_global_ambient( ctx );
|
||||
}
|
||||
else if (RADEON_DEBUG & (DEBUG_PRIMS|DEBUG_STATE))
|
||||
fprintf(stderr, "%s: Elided noop material call\n", __FUNCTION__);
|
||||
for (p = 0 ; p < MAX_LIGHTS; p++)
|
||||
update_light_colors( ctx, p );
|
||||
|
||||
check_twoside_fallback( ctx );
|
||||
update_global_ambient( ctx );
|
||||
}
|
||||
|
||||
/* _NEW_LIGHT
|
||||
|
|
@ -1726,8 +1724,7 @@ static void radeonEnable( GLcontext *ctx, GLenum cap, GLboolean state )
|
|||
|
||||
case GL_COLOR_MATERIAL:
|
||||
radeonColorMaterial( ctx, 0, 0 );
|
||||
if (!state)
|
||||
radeonUpdateMaterial( ctx );
|
||||
radeonUpdateMaterial( ctx );
|
||||
break;
|
||||
|
||||
case GL_CULL_FACE:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue