i915 will use _TexEnvProgram (if active)
authorKeith Whitwell <keith@tungstengraphics.com>
Mon, 9 May 2005 17:59:13 +0000 (17:59 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Mon, 9 May 2005 17:59:13 +0000 (17:59 +0000)
src/mesa/drivers/dri/i915/i915_context.c
src/mesa/drivers/dri/i915/i915_context.h
src/mesa/drivers/dri/i915/i915_fragprog.c
src/mesa/drivers/dri/i915/i915_state.c
src/mesa/drivers/dri/i915/i915_vtbl.c
src/mesa/drivers/dri/i915/intel_tris.c

index fc4dade21e44848304c704b5d9cda36b6b9f7c25..eb33b1f1c38a5ccc41f30b3a5004da3ef00c9272 100644 (file)
@@ -72,11 +72,13 @@ static void i915InvalidateState( GLcontext *ctx, GLuint new_state )
     */
    {
       struct i915_fragment_program *p = 
-        (struct i915_fragment_program *)ctx->FragmentProgram.Current;
-      if (p->nr_params)
+        (struct i915_fragment_program *)ctx->FragmentProgram._Current;
+      if (p && p->nr_params)
         p->params_uptodate = 0;
    }
 
+   if (new_state & (_NEW_FOG|_NEW_HINT|_NEW_PROGRAM))
+      i915_update_fog(ctx);
 }
 
 
index 94262d0d9e819b8c200761ef0c41e25ba44bc789..80462776431b13e06892d9ec218244b533d218bd 100644 (file)
@@ -309,6 +309,7 @@ extern void i915_print_ureg( const char *msg, GLuint ureg );
  */
 extern void i915InitStateFunctions( struct dd_function_table *functions );
 extern void i915InitState( i915ContextPtr i915 );
+extern void i915_update_fog( GLcontext *ctx );
 
 
 /*======================================================================
index 962ff45e89a00f74593898db46d8d6826927de1a..43f03ccb85438745c94a94ccc6d520694c9ceb6c 100644 (file)
@@ -245,7 +245,7 @@ do {                                                                        \
  */
 static void upload_program( struct i915_fragment_program *p )
 {
-   const struct fragment_program *program = p->ctx->FragmentProgram.Current;
+   const struct fragment_program *program = p->ctx->FragmentProgram._Current;
    const struct fp_instruction *inst = program->Instructions;
 
 /*    _mesa_debug_fp_inst(program->Base.NumInstructions, inst); */
@@ -949,7 +949,7 @@ void i915ValidateFragmentProgram( i915ContextPtr i915 )
    struct vertex_buffer *VB = &tnl->vb;
 
    struct i915_fragment_program *p = 
-      (struct i915_fragment_program *)ctx->FragmentProgram.Current;
+      (struct i915_fragment_program *)ctx->FragmentProgram._Current;
 
    GLuint inputsRead = p->FragProg.InputsRead;
    GLuint s4 = i915->state.Ctx[I915_CTXREG_LIS4] & ~S4_VFMT_MASK;
index da8e1ed81e259d754797b451c7a74cd7dfbf44c1..00b8a12627e7ee223c739aeacdb857bf793e10c2 100644 (file)
@@ -521,17 +521,17 @@ static void i915ShadeModel(GLcontext *ctx, GLenum mode)
 /* =============================================================
  * Fog
  */
-static void update_fog( GLcontext *ctx )
+void i915_update_fog( GLcontext *ctx )
 {
    i915ContextPtr i915 = I915_CONTEXT(ctx);
    GLenum mode;
    GLboolean enabled;
    GLboolean try_pixel_fog;
    
-   if (ctx->FragmentProgram.Enabled && ctx->FragmentProgram.Current) {
+   if (ctx->FragmentProgram._Active) {
       /* Pull in static fog state from program */
       
-      mode = ctx->FragmentProgram.Current->FogOption;
+      mode = ctx->FragmentProgram._Current->FogOption;
       enabled = (mode != GL_NONE);
       try_pixel_fog = 1;
    }
@@ -623,7 +623,6 @@ static void i915Fogfv(GLcontext *ctx, GLenum pname, const GLfloat *param)
    case GL_FOG_MODE:
    case GL_FOG_START:
    case GL_FOG_END: 
-      update_fog( ctx );
       break;
 
    case GL_FOG_DENSITY:
@@ -658,7 +657,6 @@ static void i915Hint(GLcontext *ctx, GLenum target, GLenum state)
 {
    switch (target) {
    case GL_FOG_HINT:
-      update_fog( ctx );
       break;
    default:
       break;
@@ -703,7 +701,6 @@ static void i915Enable(GLcontext *ctx, GLenum cap, GLboolean state)
       break;
 
    case GL_FRAGMENT_PROGRAM_ARB:
-      update_fog( ctx );
       break;
 
    case GL_DITHER:
@@ -743,7 +740,6 @@ static void i915Enable(GLcontext *ctx, GLenum cap, GLboolean state)
       break;
 
    case GL_FOG:
-      update_fog( ctx );
       break;
 
    case GL_CULL_FACE:
index 203e1a459098a06c28e2e8fd1ff4f3bc176c94f8..dc3342d0d5423b4c8cd9a00b827563a9a559f28c 100644 (file)
@@ -46,7 +46,7 @@ static void i915_render_start( intelContextPtr intel )
    GLcontext *ctx = &intel->ctx;
    i915ContextPtr i915 = I915_CONTEXT(intel);
 
-   if (ctx->FragmentProgram.Enabled && ctx->FragmentProgram.Current
+   if (ctx->FragmentProgram._Active
       i915ValidateFragmentProgram( i915 );
    else 
       i915ValidateTextureProgram( i915 );
index a9c814a48c6306faaba07fe0bf7a8eca281be4ea..efdc3153d6caae373ed8819b48276e1f13369248 100644 (file)
@@ -642,7 +642,7 @@ void intelChooseRenderState(GLcontext *ctx)
    TNLcontext *tnl = TNL_CONTEXT(ctx);
    intelContextPtr intel = INTEL_CONTEXT(ctx);
    GLuint flags = ctx->_TriangleCaps;
-   struct fragment_program *program = ctx->FragmentProgram.Current;
+   struct fragment_program *program = ctx->FragmentProgram._Current;
    GLboolean have_wpos = (program && (program->InputsRead & FRAG_BIT_WPOS));
    GLuint index = 0;