i965/gen4-5: Stop using bogus polygon_offset_scale field. 44/7144/1
authorEric Anholt <eric@anholt.net>
Wed, 12 Jun 2013 00:32:41 +0000 (17:32 -0700)
committerEric Anholt <eric@anholt.net>
Wed, 26 Jun 2013 08:07:11 +0000 (01:07 -0700)
commitc20f973c4f8fa2c275e445b5da8deefcba874d2e
tree37e6b92f85a5ae63541e381adeff83dae9cd6293
parentdba46831b0887a3f76ad011a9653ed9d2fff570e
i965/gen4-5: Stop using bogus polygon_offset_scale field.

The polygon offset math used for triangles by the WM is "OffsetUnits * 2 *
MRD + OffsetFactor * m" where 'MRD' is the minimum resolvable difference
for the depth buffer (~1/(1<<16) or ~1/(1<<24)), 'm' is the approximated
slope from the GL spec, and '2' is this magic number from the original
i965 code dump that we deviate from the GL spec by because "it makes glean
work" (except that it doesn't, because of some hilarity with 0.5 *
approximately 2.0 != 1.0.  go glean!).

This clipper code for unfilled polygons, on the other hand, was doing
"OffsetUnits * garbage + OffsetFactor * m", where garbage was MRD in the
case of 16-bit depth visual (regardless the FBO's depth resolution), or
128 * MRD for 24-bit depth visual.

This change just makes the unfilled polygons behavior match the WM's
filled polygons behavior.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_clip.c
src/mesa/drivers/dri/intel/intel_context.c
src/mesa/drivers/dri/intel/intel_context.h