[Mesa-dev] [PATCH 0/6] i965/msaa: Implement centroid interpolation.

Paul Berry stereotype441 at gmail.com
Fri Jun 22 11:47:56 PDT 2012


This patch series implements centroid interpolation on i965.  Patch
1 is the only one of interest to non-intel folks--it modifies the
GLSL front-end to record (in struct gl_fragment_program) which
fragment shader inputs need to be centroid interpolated.

The remaining patches implement the i965 back-end.  Patch 2 ensures
that centroid interpolation won't cause problems with our
configuration of the clipper.  Patches 3-4 are the actual
implementation.  Patches 5-6 work around a hardware limitation which
causes centroid values to be computed incorrectly for unlit pixels
(making derivatives wildly inaccurate)--we work around this problem by
replacing unlit pixels' centroid values with non-centroid values
(which gives derivatives the amount of accuracy one would expect when
centroid interpolation is in use).

I believe we are now entering the home stretch for the i965 MSAA
implementation.  If I'm not mistaken, all that's left to do before
we're compliant with the spec is:

- A few bug fixes with integer formats on Ivy Bridge
- Implement sample coverage features (glSampleCoverage() etc)
- Verify that there are no interactions with legacy smoothing features
- Address some corner cases with very large render targets

[PATCH 1/6] glsl: Add IsCentroid bitfield to gl_fragment_program.
[PATCH 2/6] i965/msaa: Adapt clip setup for centroid noperspective interpolation.
[PATCH 3/6] i965/fs: Refactor interpolation code to prepare for adding centroid support.
[PATCH 4/6] i965/msaa: Add backend support for centroid interpolation.
[PATCH 5/6] i965/fs: Add FS_OPCODE_GET_MASK to fragment shader backend.
[PATCH 6/6] i965/msaa: Fix centroid interpolation of unlit pixels.


More information about the mesa-dev mailing list