mesa: remove dead vertex fog code from ffvertex_prog.c
authorKeith Whitwell <keithw@vmware.com>
Mon, 1 Jun 2009 02:03:02 +0000 (19:03 -0700)
committerKeith Whitwell <keithw@vmware.com>
Tue, 30 Jun 2009 15:13:53 +0000 (16:13 +0100)
src/mesa/main/ffvertex_prog.c

index b939401de1023929ca5187b2621f4f0ad557acca..a8e48253a5d228c7991180d4d8f71e5b224c62e2 100644 (file)
@@ -57,9 +57,7 @@ struct state_key {
    unsigned rescale_normals:1;
 
    unsigned fog_source_is_depth:1;
-   unsigned tnl_do_vertex_fog:1;
    unsigned separate_specular:1;
-   unsigned fog_mode:2;
    unsigned point_attenuated:1;
    unsigned point_array:1;
    unsigned texture_enabled_global:1;
@@ -83,23 +81,6 @@ struct state_key {
 };
 
 
-
-#define FOG_NONE   0
-#define FOG_LINEAR 1
-#define FOG_EXP    2
-#define FOG_EXP2   3
-
-static GLuint translate_fog_mode( GLenum mode )
-{
-   switch (mode) {
-   case GL_LINEAR: return FOG_LINEAR;
-   case GL_EXP: return FOG_EXP;
-   case GL_EXP2: return FOG_EXP2;
-   default: return FOG_NONE;
-   }
-}
-
-
 #define TXG_NONE           0
 #define TXG_OBJ_LINEAR     1
 #define TXG_EYE_LINEAR     2
@@ -124,21 +105,6 @@ static GLuint translate_texgen( GLboolean enabled, GLenum mode )
 
 
 
-/**
- * Should fog be computed per-vertex?
- */
-static GLboolean
-tnl_get_per_vertex_fog(GLcontext *ctx)
-{
-#if 0
-   TNLcontext *tnl = TNL_CONTEXT(ctx);
-   return tnl->_DoVertexFog;
-#else
-   return GL_FALSE;
-#endif
-}
-
-
 static GLboolean check_active_shininess( GLcontext *ctx,
                                          const struct state_key *key,
                                          GLuint side )
@@ -234,12 +200,8 @@ static void make_state_key( GLcontext *ctx, struct state_key *key )
    if (ctx->Transform.RescaleNormals)
       key->rescale_normals = 1;
 
-   key->fog_mode = translate_fog_mode(fp->FogOption);
-   
    if (ctx->Fog.FogCoordinateSource == GL_FRAGMENT_DEPTH_EXT)
       key->fog_source_is_depth = 1;
-   
-   key->tnl_do_vertex_fog = tnl_get_per_vertex_fog(ctx);
 
    if (ctx->Point._Attenuated)
       key->point_attenuated = 1;
@@ -1344,52 +1306,10 @@ static void build_fog( struct tnl_program *p )
       input = swizzle1(register_input(p, VERT_ATTRIB_FOG), X);
    }
 
-   if (p->state->fog_mode && p->state->tnl_do_vertex_fog) {
-      struct ureg params = register_param2(p, STATE_INTERNAL,
-                                          STATE_FOG_PARAMS_OPTIMIZED);
-      struct ureg tmp = get_temp(p);
-      GLboolean useabs = (p->state->fog_mode != FOG_EXP2);
-
-      if (useabs) {
-        emit_op1(p, OPCODE_ABS, tmp, 0, input);
-      }
-
-      switch (p->state->fog_mode) {
-      case FOG_LINEAR: {
-        struct ureg id = get_identity_param(p);
-        emit_op3(p, OPCODE_MAD, tmp, 0, useabs ? tmp : input,
-                       swizzle1(params,X), swizzle1(params,Y));
-        emit_op2(p, OPCODE_MAX, tmp, 0, tmp, swizzle1(id,X)); /* saturate */
-        emit_op2(p, OPCODE_MIN, fog, WRITEMASK_X, tmp, swizzle1(id,W));
-        break;
-      }
-      case FOG_EXP:
-        emit_op2(p, OPCODE_MUL, tmp, 0, useabs ? tmp : input,
-                       swizzle1(params,Z));
-        emit_op1(p, OPCODE_EX2, fog, WRITEMASK_X, negate(tmp));
-        break;
-      case FOG_EXP2:
-        emit_op2(p, OPCODE_MUL, tmp, 0, input, swizzle1(params,W));
-        emit_op2(p, OPCODE_MUL, tmp, 0, tmp, tmp);
-        emit_op1(p, OPCODE_EX2, fog, WRITEMASK_X, negate(tmp));
-        break;
-      }
-
-      release_temp(p, tmp);
-   }
-   else {
-      /* results = incoming fog coords (compute fog per-fragment later) 
-       *
-       * KW:  Is it really necessary to do anything in this case?
-       * BP: Yes, we always need to compute the absolute value, unless
-       * we want to push that down into the fragment program...
-       */
-      GLboolean useabs = GL_TRUE;
-      emit_op1(p, useabs ? OPCODE_ABS : OPCODE_MOV, fog, WRITEMASK_X, input);
-   }
+   emit_op1(p, OPCODE_ABS, fog, WRITEMASK_X, input);
 }
 
+
 static void build_reflect_texgen( struct tnl_program *p,
                                  struct ureg dest,
                                  GLuint writemask )
@@ -1646,8 +1566,7 @@ static void build_tnl_program( struct tnl_program *p )
       }
    }
 
-   if ((p->state->fragprog_inputs_read & FRAG_BIT_FOGC) ||
-       p->state->fog_mode != FOG_NONE)
+   if (p->state->fragprog_inputs_read & FRAG_BIT_FOGC)
       build_fog(p);
 
    if (p->state->fragprog_inputs_read & FRAG_BITS_TEX_ANY)