diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mesa/drivers/dri/i915/i915_fragprog.c | 13 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/i915tex/i915_fragprog.c | 13 | 
2 files changed, 24 insertions, 2 deletions
diff --git a/src/mesa/drivers/dri/i915/i915_fragprog.c b/src/mesa/drivers/dri/i915/i915_fragprog.c index 7160234bce..ef14f3eef7 100644 --- a/src/mesa/drivers/dri/i915/i915_fragprog.c +++ b/src/mesa/drivers/dri/i915/i915_fragprog.c @@ -39,6 +39,7 @@  #include "program_instruction.h"  #include "program.h" +#include "programopt.h" @@ -123,6 +124,7 @@ static GLuint src_vector( struct i915_fragment_program *p,  	    p, p->ctx->FragmentProgram.Parameters[source->Index]);  	 break; +      case PROGRAM_CONSTANT:        case PROGRAM_STATE_VAR:        case PROGRAM_NAMED_PARAM:           src = i915_emit_param4fv(  @@ -937,6 +939,12 @@ static void i915ProgramStringNotify( GLcontext *ctx,         */        ctx->Driver.Enable( ctx, GL_FRAGMENT_PROGRAM_ARB,   			  ctx->FragmentProgram.Enabled ); + +      if (p->FragProg.FogOption) { +         /* add extra instructions to do fog, then turn off FogOption field */ +         _mesa_append_fog_code(ctx, &p->FragProg); +         p->FragProg.FogOption = GL_NONE; +      }     }     _tnl_program_string(ctx, target, prog); @@ -1010,7 +1018,10 @@ void i915ValidateFragmentProgram( i915ContextPtr i915 )  	 EMIT_PAD( 1 );     } -#if 0 +   /* XXX this was disabled, but enabling this code helped fix the Glean +    * tfragprog1 fog tests. +    */ +#if 1     if ((inputsRead & FRAG_BIT_FOGC) || i915->vertex_fog != I915_FOG_NONE) {        EMIT_ATTR( _TNL_ATTRIB_FOG, EMIT_1F, S4_VFMT_FOG_PARAM, 4 );     } diff --git a/src/mesa/drivers/dri/i915tex/i915_fragprog.c b/src/mesa/drivers/dri/i915tex/i915_fragprog.c index 2ddcbc4325..8772e70230 100644 --- a/src/mesa/drivers/dri/i915tex/i915_fragprog.c +++ b/src/mesa/drivers/dri/i915tex/i915_fragprog.c @@ -39,6 +39,7 @@  #include "program_instruction.h"  #include "program.h" +#include "programopt.h" @@ -127,6 +128,7 @@ src_vector(struct i915_fragment_program *p,                                                                 Index]);        break; +   case PROGRAM_CONSTANT:     case PROGRAM_STATE_VAR:     case PROGRAM_NAMED_PARAM:        src = @@ -928,6 +930,12 @@ i915ProgramStringNotify(GLcontext * ctx,         */        ctx->Driver.Enable(ctx, GL_FRAGMENT_PROGRAM_ARB,                           ctx->FragmentProgram.Enabled); + +      if (p->FragProg.FogOption) { +         /* add extra instructions to do fog, then turn off FogOption field */ +         _mesa_append_fog_code(ctx, &p->FragProg); +         p->FragProg.FogOption = GL_NONE; +      }     }     _tnl_program_string(ctx, target, prog); @@ -1001,7 +1009,10 @@ i915ValidateFragmentProgram(struct i915_context *i915)           EMIT_PAD(1);     } -#if 0 +   /* XXX this was disabled, but enabling this code helped fix the Glean +    * tfragprog1 fog tests. +    */ +#if 1     if ((inputsRead & FRAG_BIT_FOGC) || i915->vertex_fog != I915_FOG_NONE) {        EMIT_ATTR(_TNL_ATTRIB_FOG, EMIT_1F, S4_VFMT_FOG_PARAM, 4);     }  | 
