- BEGIN_RING(chan, kelvin, NV20TCL_FOG_MODE, 4);
- OUT_RING(chan, (source == GL_FOG_COORDINATE_EXT ?
- get_fog_mode_signed(f->Mode) :
- get_fog_mode_unsigned(f->Mode)));
- OUT_RING(chan, get_fog_source(source));
- OUT_RING(chan, f->Enabled ? 1 : 0);
- OUT_RING(chan, pack_rgba_f(MESA_FORMAT_RGBA8888_REV, f->Color));
-
- BEGIN_RING(chan, kelvin, NV20TCL_FOG_EQUATION_CONSTANT, 3);
- OUT_RINGp(chan, k, 3);
+ BEGIN_NV04(push, NV20_3D(FOG_MODE), 4);
+ PUSH_DATA (push, ((source == GL_FRAGMENT_DEPTH_EXT &&
+ f->FogDistanceMode == GL_EYE_PLANE_ABSOLUTE_NV) ?
+ get_fog_mode_unsigned(f->Mode) :
+ get_fog_mode_signed(f->Mode)));
+ PUSH_DATA (push, get_fog_source(source, f->FogDistanceMode));
+ PUSH_DATAb(push, f->Enabled);
+ PUSH_DATA (push, pack_rgba_f(MESA_FORMAT_R8G8B8A8_UNORM, f->Color));
+
+ BEGIN_NV04(push, NV20_3D(FOG_COEFF(0)), 3);
+ PUSH_DATAp(push, k, 3);