<html>
<head>
<base href="https://bugs.freedesktop.org/">
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW - BioShock Infinite graphical glitches on radeonsi"
href="https://bugs.freedesktop.org/show_bug.cgi?id=95528#c14">Comment # 14</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW - BioShock Infinite graphical glitches on radeonsi"
href="https://bugs.freedesktop.org/show_bug.cgi?id=95528">bug 95528</a>
from <span class="vcard"><a class="email" href="mailto:daniel@constexpr.org" title="Daniel Scharrer <daniel@constexpr.org>"> <span class="fn">Daniel Scharrer</span></a>
</span></b>
<pre>Created <span class=""><a href="attachment.cgi?id=124721" name="attach_124721" title="Trimmed R600_DEBUG=vs,ps output & shader GL calls with LLVM r273782">attachment 124721</a> <a href="attachment.cgi?id=124721&action=edit" title="Trimmed R600_DEBUG=vs,ps output & shader GL calls with LLVM r273782">[details]</a></span>
Trimmed R600_DEBUG=vs,ps output & shader GL calls with LLVM r273782
I could not record an apitrace (game hangs before getting to the main menu,
possibly performance related), but I was able to dump the shaders and narrow
down (some of) the affected ones.
The game uses two passes to render the flags and banners: The first pass
(possibly a z prepass?) uses pipeline=20 in the attached logs (vertex
shader=73, program=74; fragment shader=89, program=90).
The second pass is depth-tested against the results of the first, but uses
different shaders - pipeline=105 (vertex shader=383 program=384; fragment
shader=381, program=382).
With LLVM r266378 reverted, the results of the two passes line up, with current
LLVM they do not causing the z-fighting visible in the video linked in the bug
description. Even when disabling the depth test in the second pass, there are
still visible parts of "white" background so this is a) most likely an issue
with one of the vertex shaders and b) not just a depth precision issue. You can
also see this by looking closely at the flags in the video - the while (holes
punched by the z-prepass) and textured parts sway differently.
Since the game compiles an enormous amount of shaders on startup, the full
R600_DEBUG=cs,vs,tcs,tes,gs,ps output is quite large - I have attached a
trimmed output that only contains the two vertex/fragment shader pairs used for
the banners. The full logs are available at:
<a href="http://constexpr.org/tmp/bioshockinfinite-bad.log">http://constexpr.org/tmp/bioshockinfinite-bad.log</a> (20 MiB)
<a href="http://constexpr.org/tmp/bioshockinfinite-good.log">http://constexpr.org/tmp/bioshockinfinite-good.log</a> (21 MiB)</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>