i965/fs: Add Gen < 6 runtime checks for line antialiasing.
authorIago Toral Quiroga <itoral@igalia.com>
Thu, 5 Jun 2014 13:03:08 +0000 (15:03 +0200)
committerIago Toral Quiroga <itoral@igalia.com>
Mon, 9 Jun 2014 09:48:49 +0000 (11:48 +0200)
commitdc2d3a7f5c217a7cee92380fbf503924a9591bea
tree4b01b01529e1b113f2a265fbf556b1c3cc1c5172
parent6e61892aea542593875ebb8ae209af18bbad84bd
i965/fs: Add Gen < 6 runtime checks for line antialiasing.

In Gen < 6 the hardware generates a runtime bit that indicates whether AA data
has to be sent as part of the framebuffer write SEND message. This affects the
specific case where we have setup antialiased line rendering and we render
polygons which have one face setup in GL_LINE mode (line antialiasing
will be used) and the other one in GL_FILL mode (no line antialiasing needed).

Currently we are not doing this runtime test and instead we always send AA
data, which produces incorrect rendering of the GL_FILL face of the polygon in
in the aforementioned scenario (verified in ironlake and gm45).

In Gen4 this is, likely, a regression introduced with commit 098acf6c843. In
Gen5 this has never worked properly. Gen > 5 are not affected by this.

The patch fixes the problem by adding the appropriate runtime check and
adjusting the framebuffer write message accordingly in the conflictive
scenario.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=78679

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_fs.h
src/mesa/drivers/dri/i965/brw_fs_generator.cpp