[Mesa-dev] [PATCH 0/7] i965/blorp: Improvements to the blorp engine for Gen7.

Paul Berry stereotype441 at gmail.com
Thu Jul 12 10:43:38 PDT 2012

This patch series makes three improvements to the blorp engine (which
does MSAA resolves and other blits) for Gen7:

Patches 1-3 fix downsampling of integer format framebuffers on Gen7,
by using the "AVG" instruction to average the samples, rather than
adding the samples and performing a division.  This is necessary to
avoid overflow with 32-bit integer buffers.  In the process, we
rearrange the order of adds/averages to reduce the accumulation of
numerical errors (patch 2).

Patch 4 adds an optimization to the MSAA resolve when using Gen7's CMS
MSAA layout: when the MCS buffer indicates that all samples
corresponding to a given pixel contain the same color value, we don't
have to load all the samples and average them; we just load the first
sample and use its value.

Patches 5-7 make blorp take advantage of the 3D pipeline's ability to
decode the IMS MSAA layout when reading from depth and stencil
textures.  Previously blorp would emit extra shader instructions to
account for the IMS MSAA layout.  This change should make blits from
multisampled depth and stencil buffers more efficient.

[PATCH 1/7] i965: Add support for AVG instruction.
[PATCH 2/7] i965/blorp: Modify manual_blend() to avoid unnecessary loss of precision.
[PATCH 3/7] i965/blorp: Fix integer downsampling on Gen7.
[PATCH 4/7] i965/blorp: Optimize manual_blend() for compressed multisampled surfaces.
[PATCH 5/7] i965/blorp: Configure SURFACE_STATE correctly for IMS surfaces.
[PATCH 6/7] i965/blorp: Loosen assertions in compute_msaa_layout_for_pipeline.
[PATCH 7/7] i965/blorp: Use IMS layout when texturing from depth/stencil surfaces.

More information about the mesa-dev mailing list