<html>
<head>
<base href="https://bugs.freedesktop.org/" />
</head>
<body><span class="vcard"><a class="email" href="mailto:kenneth@whitecape.org" title="Kenneth Graunke <kenneth@whitecape.org>"> <span class="fn">Kenneth Graunke</span></a>
</span> changed
<a class="bz_bug_link
bz_status_ASSIGNED "
title="ASSIGNED - GLBenchmark 2.7 TRex renders with artifacts on Gen8 with !UXA"
href="https://bugs.freedesktop.org/show_bug.cgi?id=88521">bug 88521</a>
<br>
<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>What</th>
<th>Removed</th>
<th>Added</th>
</tr>
<tr>
<td style="text-align:right;">Status</td>
<td>NEW
</td>
<td>ASSIGNED
</td>
</tr>
<tr>
<td style="text-align:right;">Assignee</td>
<td>idr@freedesktop.org
</td>
<td>kenneth@whitecape.org
</td>
</tr></table>
<p>
<div>
<b><a class="bz_bug_link
bz_status_ASSIGNED "
title="ASSIGNED - GLBenchmark 2.7 TRex renders with artifacts on Gen8 with !UXA"
href="https://bugs.freedesktop.org/show_bug.cgi?id=88521#c14">Comment # 14</a>
on <a class="bz_bug_link
bz_status_ASSIGNED "
title="ASSIGNED - GLBenchmark 2.7 TRex renders with artifacts on Gen8 with !UXA"
href="https://bugs.freedesktop.org/show_bug.cgi?id=88521">bug 88521</a>
from <span class="vcard"><a class="email" href="mailto:kenneth@whitecape.org" title="Kenneth Graunke <kenneth@whitecape.org>"> <span class="fn">Kenneth Graunke</span></a>
</span></b>
<pre>Created <span class=""><a href="attachment.cgi?id=115082" name="attach_115082" title="Fix the blitter code; fixes the bug.">attachment 115082</a> <a href="attachment.cgi?id=115082&action=edit" title="Fix the blitter code; fixes the bug.">[details]</a></span> <a href='page.cgi?id=splinter.html&bug=88521&attachment=115082'>[review]</a>
Fix the blitter code; fixes the bug.
When trying to figure out why synchronization mattered, I started playing
around with stalling vs. blitting in brw_buffer_subdata(). It turned out
stalling always worked, but blitting failed.
INTEL_DEBUG=sync means that the buffer is never busy, so we can simply map it
and edit the data, rather than having to do a stall-avoidance BLT.
Broadwell changed the blitter. Looking at the XY_SRC_COPY_BLT command, it now
requires that the source and destination addresses have to be cacheline
aligned. Our BufferSubData calls were performing linear blits with unaligned
addresses. I suspect the unaligned portion was just...not copied...leading to
entirely bunk vertex data.
Fixing this in intel_emit_linear_blit() is pretty easy. We can just use offset
% 64 as the X coordinate, and round the address down. This fixes the bug.
We almost certainly need to alter intelEmitCopyBlit() as well, as untiled
images will likely suffer from a similar bug. Maybe the other intel_blit.c
functions, too. Given that intelEmitCopyBlit() is allowed to fail, we can
always just do that when not cacheline aligned. We may also want to actually
adjust the parameters to make it work in some cases. Not sure.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the QA Contact for the bug.</li>
</ul>
</body>
</html>