[Mesa-dev] [PATCH 1/4] i965: Remove fixed-function texture projection avoidance optimization.
Eric Anholt
eric at anholt.net
Thu Apr 4 08:52:54 PDT 2013
Kenneth Graunke <kenneth at whitecape.org> writes:
> On 03/13/2013 09:17 AM, Eric Anholt wrote:
>> 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.
>
> I finally rebased this patch series ("proj_attrib" in my tree). On
> Ironlake, OpenArena at 1024x768 (n = 37) shows no statistically
> significant difference.
>
> So, can we just scrap it altogether?
Sweet. Let's do it.
-------------- 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/20130404/f7706df3/attachment-0001.pgp>
More information about the mesa-dev
mailing list