make use of Parameters->StateFlags in _swrast_update_fragment_program()
This commit is contained in:
@@ -223,15 +223,12 @@ _swrast_update_fog_state( GLcontext *ctx )
|
||||
* program parameters with current state values.
|
||||
*/
|
||||
static void
|
||||
_swrast_update_fragment_program( GLcontext *ctx )
|
||||
_swrast_update_fragment_program(GLcontext *ctx, GLbitfield newState)
|
||||
{
|
||||
if (ctx->FragmentProgram._Enabled) {
|
||||
/* XXX it would be nice to have a per-program bitmask indicating
|
||||
* what global state vars are used (lighting, point, fog, etc) to
|
||||
* avoid doing this when not needed.
|
||||
*/
|
||||
const struct gl_fragment_program *fp = ctx->FragmentProgram._Current;
|
||||
_mesa_load_state_parameters(ctx, fp->Base.Parameters);
|
||||
if (fp->Base.Parameters->StateFlags & newState)
|
||||
_mesa_load_state_parameters(ctx, fp->Base.Parameters);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -536,7 +533,7 @@ _swrast_validate_derived( GLcontext *ctx )
|
||||
_NEW_POINT |
|
||||
_NEW_VIEWPORT |
|
||||
_NEW_PROGRAM))
|
||||
_swrast_update_fragment_program( ctx );
|
||||
_swrast_update_fragment_program( ctx, swrast->NewState );
|
||||
|
||||
if (swrast->NewState & _NEW_TEXTURE)
|
||||
_swrast_update_texture_samplers( ctx );
|
||||
|
||||
Reference in New Issue
Block a user