<html>
<head>
<base href="https://bugs.freedesktop.org/">
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW - Launch options window renders black in Feral Games in current Mesa trunk"
href="https://bugs.freedesktop.org/show_bug.cgi?id=101867#c1">Comment # 1</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW - Launch options window renders black in Feral Games in current Mesa trunk"
href="https://bugs.freedesktop.org/show_bug.cgi?id=101867">bug 101867</a>
from <span class="vcard"><a class="email" href="mailto:jlegg@feralinteractive.com" title="James Legg <jlegg@feralinteractive.com>"> <span class="fn">James Legg</span></a>
</span></b>
<pre>In loader_dri3_swap_buffers_msc, dri3_find_back increments the index used for
selecting the back buffer (draw->cur_back) to the second (index 1) out of two
buffer slots because the buffer in the first slot (index 0) is busy. When there
is no buffer in the now selected slot, loader_dri3_swap_buffers_msc fails
without swapping. This was introduced in
81fb1547772d42c527318837d4207ecdb6899e5d, previously it would have reused the
busy buffer and swapped something, even if it resulted in tearing.
When a clear occurs, dri3_get_buffer is used to create a buffer, which also
uses dri3_find_back, but this stays on the slot index for the not yet created
buffer. However, the options window is not using glClear. It does exactly one
draw, with glDrawElementsBaseVertex, that covers the whole window.
glDrawElementsBaseVertex doesn't seem to validate the framebuffer in the same
way as glClear, so it is stuck on the index with uncreated back buffer despite
repeatedly drawing and swapping.</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>