[Mesa-dev] [PATCH 00/15] i965/gen7: Begin implementing MSAA.

Paul Berry stereotype441 at gmail.com
Fri May 11 11:03:43 PDT 2012


This patch series provides preliminary support for MSAA (multisample
antialiasing) in i965/gen7. It depends on my previous MSAA patch
series "[PATCH v2 0/5] i965/gen6: Begin implementing MSAA."

The patches can be grouped into 3 sets:

Patch 01 fixes a small bug in the Gen6 MSAA implementation: when
allocating an MSAA surface, we weren't accounting for the fact that
the pattern in which MSAA samples are interleaved repeats for every
2x2 block of pixels.  As a result, if the surface width or height was
an odd number, the data in the last row or column of pixels would be
corrupted.

Patches 02-15 make the necessary modifications to allow the blorp
engine to work on Gen7.  First (patches 02-05) we add the ability to
dispatch the WM program in MSDISPMODE_PERSAMPLE mode (one dispatch per
sample rather than one dispatch per pixel), which reduces the amount
of coordinate swizzling the WM program needs to do.  Then (patches
06-07) we make adjustments to the rendering pipeline configuration
when running blorp programs on Gen7.  Then (patch 08) we add support
for the Gen7 texel fetch messages (which differ from those in Gen6),
and finally in patch 09 we enable the blorp engine on Gen7.

Patches 10-15 adapt the MSAA code to work on Gen7, which lays out MSAA
color buffers differently from Gen6.  First (patch 10) we add the
necessary defines to allow the rendering pipeline to be configured
properly.  Then (patches 11-12), we modify the surface allocation and
rendering pipeline setup code to account for the new layout.  Then
(patches 13-14) we make the necessary modifications to the blorp
engine to support MSAA on Gen7.  Finally (patch 15) we enable MSAA on
Gen7.

As with Gen6, MSAA support is still preliminary; however since the
driver *claims* to support GL 3.0 (and MSAA is a required part of GL
3.0), I think it is reasonable to turn it on now and address the
remaining limitations as future "bug fix" patches.  The work left to
do is the same as for Gen6, with one additional item: 8x MSAA is not
yet implemented for Gen7 hardware.

[PATCH 01/15] i965/msaa: Expand odd-sized MSAA surfaces to account for interleaving pattern.
[PATCH 02/15] i965/blorp: Generalize sampling code in preparation for Gen7
[PATCH 03/15] i965/blorp: Emit sample index in SAMPLE_LD message when necessary
[PATCH 04/15] i965/blorp: Use MSDISPMODE_PERSAMPLE rendering when necessary
[PATCH 05/15] i965/blorp: Factor gen6_blorp_emit_batch_head into separate functions.
[PATCH 06/15] i965/blorp: Allocate space for push constants on Gen7.
[PATCH 07/15] i965/blorp: Use 16 pixel dispatch on Gen7 when there is a WM program.
[PATCH 08/15] i965/blorp: Implement proper texel fetch messages for Gen7.
[PATCH 09/15] i965/blorp: Enable blorp blits on Gen7.
[PATCH 10/15] i965/msaa: Add defines for Gen7.
[PATCH 11/15] i965/msaa: Properly handle sliced layout for Gen7.
[PATCH 12/15] i965/msaa: Validate Gen7 surface state constraints.
[PATCH 13/15] i965/msaa: Modify blorp code to account for Gen7 MSAA layouts.
[PATCH 14/15] i965/msaa: Implement manual blending operation for Gen7.
[PATCH 15/15] i965/msaa: Enable 4x MSAA on Gen7.


More information about the mesa-dev mailing list