[Mesa-dev] [PATCH 1/4] i965: Remove fixed-function texture projection avoidance optimization.

Eric Anholt eric at anholt.net
Wed Mar 13 09:17:46 PDT 2013

Kenneth Graunke <kenneth at whitecape.org> writes:

> This optimization attempts to avoid extra attribute interpolation
> instructions for texture coordinates where the W-component is 1.0.
> Unfortunately, it requires a lot of complexity: the brw_wm_input_sizes
> state atom (all the brw_vs_constval.c code) needs to run on each draw.
> It computes the input_size_masks array, then uses that to compute
> proj_attrib_mask.  Differences in proj_attrib_mask can cause
> state-dependent fragment shader recompiles.  We also often fail to guess
> proj_attrib_mask for the fragment shader precompile, causing us to
> needlessly compile it twice.
> Furthermore, this optimization only applies to fixed-function programs;
> it does not help modern GLSL-based programs at all.  Generally, older
> fixed-function programs run fine on modern hardware anyway.
> The optimization has existed in some form since the initial commit.  When
> we rewrote the fragment shader backend, we dropped it for a while.  Eric
> readded it in commit eb30820f268608cf451da32de69723036dddbc62 as part of
> an attempt to cure a ~1% performance regression caused by converting the
> fixed-function fragment shader generation code from Mesa IR to GLSL IR.
> However, no performance data was included in the commit message, so it's
> unclear whether or not it was successful.
> Time has passed, so I decided to re-measure this.  Surprisingly,
> Eric's OpenArena timedemo actually runs /faster/ after removing this and
> the brw_wm_input_sizes atom.  On Ivybridge at 1024x768, I measured a
> 1.39532% +/- 0.91833% increase in FPS (n = 55).

Removing it on SNB+ makes sense to me.  But given the higher cost of
math pre-gen6, I think we should test on one of those too.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20130313/d4a667d2/attachment.pgp>

More information about the mesa-dev mailing list