<html>
<head>
<base href="https://bugs.freedesktop.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - 2-3% performance drop in GpuTest v0.7 FurMark with "nir/copy_prop: Respect the source's number of components""
href="https://bugs.freedesktop.org/show_bug.cgi?id=101064">101064</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>2-3% performance drop in GpuTest v0.7 FurMark with "nir/copy_prop: Respect the source's number of components"
</td>
</tr>
<tr>
<th>Product</th>
<td>Mesa
</td>
</tr>
<tr>
<th>Version</th>
<td>git
</td>
</tr>
<tr>
<th>Hardware</th>
<td>Other
</td>
</tr>
<tr>
<th>OS</th>
<td>All
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>normal
</td>
</tr>
<tr>
<th>Priority</th>
<td>medium
</td>
</tr>
<tr>
<th>Component</th>
<td>Drivers/DRI/i965
</td>
</tr>
<tr>
<th>Assignee</th>
<td>intel-3d-bugs@lists.freedesktop.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>eero.t.tamminen@intel.com
</td>
</tr>
<tr>
<th>QA Contact</th>
<td>intel-3d-bugs@lists.freedesktop.org
</td>
</tr></table>
<p>
<div>
<pre>This commit regressed GpuTest v0.7 FurMark performance by 2-3% on GEN9+:
--------------------------------------------------------------------
commit 3c312be7b3e95ec7540e98abed1b6f3cc8d31b2a
Author: Jason Ekstrand <<a href="mailto:jason.ekstrand@intel.com">jason.ekstrand@intel.com</a>>
AuthorDate: Thu Mar 2 17:10:24 2017 -0800
Commit: Jason Ekstrand <<a href="mailto:jason.ekstrand@intel.com">jason.ekstrand@intel.com</a>>
CommitDate: Tue Mar 14 07:36:20 2017 -0700
nir/copy_prop: Respect the source's number of components
In the near future we are going to require that the num_components in a
src dereference match the num_components of the SSA value being
dereferenced. To do that, we need copy_prop to not remove our MOVs from
a larger SSA value into an instruction that uses fewer channels.
Because we suddenly have to know how many components each source has,
this makes the pass a bit more complicated. Fortunately, copy
propagation is the only pass that cares about the number of components
are read by any given source so it's fairly contained.
Shader-db results on Sky Lake:
total instructions in shared programs: 13318947 -> 13320265 (0.01%)
instructions in affected programs: 260633 -> 261951 (0.51%)
helped: 324
HURT: 1027
--------------------------------------------------------------------
On few of the GEN8+ platforms, that commit also:
* Regressed SynMark v7 PSBump2 performance by ~1%
* Increased SynMark v7 PSBump8 performance by ~1%
Timothy's commits 2 months later:
* i965: remove GLSL IR optimisation loop
* nir: shuffle constants to the top
Compensated for the FurMark drop (SynMark tests were not affected by them).
If those commits fixed what this regressed, this bug should be closed. If they
improved something else, it may be better to keep this open.
(Sorry that it took so long to bisect this, the change was too small to be
bisected on devices with slightly larger variance.)</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
<li>You are the QA Contact for the bug.</li>
</ul>
</body>
</html>