i965: Use true AA line distance on G45/Ironlake.
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 26 Apr 2017 21:28:49 +0000 (14:28 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Sat, 29 Apr 2017 00:03:33 +0000 (17:03 -0700)
The original Broadwater and Crestline platforms computed antialiased
line distances using "manhattan" distance, aka a + b = c.  Eaglelake
and Cantiga added "true" distance, which apparently does something
like max(a, b) + min(a, b) / 4.  Not exactly "true", but at least
more accurate.

The G45 documentation indicates that the old manhattan distance setting
is "only for debug purposes" and should never be used.  The Ironlake
documentation no longer mentions AALINEDISTANCE_MANHATTAN, though it
does still contain the narrative about the feature.

At any rate, we should use the more accurate mode.

Reviewed-by: Plamena Manolova <plamena.manolova@intel.com>
Reviewed-by: Francisco Jerez <currojerez@riseup.net>
src/mesa/drivers/dri/i965/brw_sf_state.c

index e919f5d..d50ceb1 100644 (file)
@@ -265,7 +265,7 @@ static void upload_sf_unit( struct brw_context *brw )
    /* _NEW_PROGRAM | _NEW_POINT */
    sf->sf7.use_point_size_state = !(ctx->VertexProgram.PointSizeEnabled ||
                                    ctx->Point._Attenuated);
-   sf->sf7.aa_line_distance_mode = 0;
+   sf->sf7.aa_line_distance_mode = brw->is_g4x || brw->gen == 5;
 
    /* might be BRW_NEW_PRIMITIVE if we have to adjust pv for polygons:
     * _NEW_LIGHT