From: Brian Paul Date: Fri, 27 Feb 2004 02:13:29 +0000 (+0000) Subject: move _mesa_load_state_parameters() to state validation stage X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=db79b5683cfc3f2ea3f9b0aca8c4d149bf9a63f7;p=mesa.git move _mesa_load_state_parameters() to state validation stage --- diff --git a/src/mesa/swrast/s_context.c b/src/mesa/swrast/s_context.c index 800f79080f8..0a81048e6f5 100644 --- a/src/mesa/swrast/s_context.c +++ b/src/mesa/swrast/s_context.c @@ -30,6 +30,7 @@ #include "context.h" #include "colormac.h" #include "mtypes.h" +#include "program.h" #include "texobj.h" #include "nvfragprog.h" @@ -201,6 +202,16 @@ _swrast_update_fog_state( GLcontext *ctx ) } +static void +_swrast_update_fragment_program( GLcontext *ctx ) +{ + if (ctx->FragmentProgram.Enabled) { + struct fragment_program *program = ctx->FragmentProgram.Current; + _mesa_load_state_parameters(ctx, program->Parameters); + } +} + + #define _SWRAST_NEW_DERIVED (_SWRAST_NEW_RASTERMASK | \ _NEW_TEXTURE | \ @@ -432,9 +443,11 @@ _swrast_validate_derived( GLcontext *ctx ) if (swrast->NewState & _SWRAST_NEW_TEXTURE_ENV_MODE) _swrast_update_texture_env( ctx ); - if (swrast->NewState & _NEW_FOG) { + if (swrast->NewState & _NEW_FOG) _swrast_update_fog_state( ctx ); - } + + if (swrast->NewState & _NEW_PROGRAM) + _swrast_update_fragment_program( ctx ); swrast->NewState = 0; swrast->StateChanges = 0; diff --git a/src/mesa/swrast/s_nvfragprog.c b/src/mesa/swrast/s_nvfragprog.c index 62f95706d9a..ace531e0e2a 100644 --- a/src/mesa/swrast/s_nvfragprog.c +++ b/src/mesa/swrast/s_nvfragprog.c @@ -1,6 +1,6 @@ /* * Mesa 3-D graphics library - * Version: 6.0 + * Version: 6.1 * * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. * @@ -586,11 +586,6 @@ execute_program( GLcontext *ctx, printf("execute fragment program --------------------\n"); #endif - /* XXX: This should go someplace else, but it is safe here (and slow!) - * - karl - */ - _mesa_load_state_parameters(ctx, program->Parameters); - for (pc = 0; pc < maxInst; pc++) { const struct fp_instruction *inst = program->Instructions + pc;