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. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev