<div dir="ltr">On 7 June 2013 17:42, Chris Wilson <span dir="ltr"><<a href="mailto:chris@chris-wilson.co.uk" target="_blank">chris@chris-wilson.co.uk</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class=""><div class="h5">On Wed, Jun 05, 2013 at 12:34:24PM -0700, Eric Anholt wrote:<br>
> This reverts commit 3209b094a3b1466b579e8020e12a4f3fa78a5f3f.  After a<br>
> long debug session by Paul Berry, it appears that this was the commit<br>
> that has been producing sporadic failures in piglit front buffer<br>
> rendering tests for the last several years.<br>
><br>
> GetBuffers may return fresh buffers with invalid contents at a couple<br>
> reasonable times:<br>
><br>
> - When first asked for a non-fake-front buffer.<br>
> - When the drawable size is changed, an Invalidate has been sent, and<br>
>   obviously the app needs to redraw the whole buffer.<br>
> - After a glXSwapBuffers(), GL allows the backbuffer to be undefined,<br>
>   and an Invalidate was sent to tell the GL that it should grab these<br>
>   appropriate new buffers to avoid stalling.<br>
><br>
> But with the patch being reverted, GetBuffers would also return fresh<br>
> invalid buffers when the drawable serial number changed, which is<br>
> approximately "whenever, for any reason".  The app is not expecting<br>
> invalid buffer contents "whenever", nor is it valid.  Because the GL<br>
> usually only GetBuffers after an Invalidate is sent, and the new<br>
> buffer allocation only happened during a GetBuffers, most apps saw no<br>
> problems.  But apps that do (fake-)frontbuffer rendering do frequently<br>
> ask the server for the front buffer (since we drop the fake front<br>
> allocation when we're not doing front buffer rendering), and if the<br>
> drawable serial got bumped midway through a draw, the server would<br>
> pointlessly ditch the front *and* backbuffer full of important<br>
> drawing, resulting in bad rendering.<br>
><br>
> The patch was originally to fix bugzilla:<br>
> <a href="https://bugs.freedesktop.org/show_bug.cgi?id=28365" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=28365</a><br>
> Specifically:<br>
><br>
>     To reproduce, start with a large-ish display (i.e. 1680x1050 on my<br>
>     laptop), use the patched glxgears from bug 28252 to add the<br>
>     -override option.  Then run glxgears -override -geometry 640x480<br>
>     to create a 640x480 window in the top left corner, which will work<br>
>     fine.  Next, run xrandr -s 640x480 and watch the fireworks.<br>
><br>
> I've tested with an override-redirect glxgears, both with vblank sync<br>
> enabled and disabled, both with gnome-shell and no window manager at<br>
> all, before and after this patch.  The only problem observed was that<br>
> before and after the revert, sometimes when alt-tabbing to kill my<br>
> gears after completing the test gnome-shell would get confused about<br>
> override-redirectness of the glxgears window (according to a log<br>
> message) and apparently not bother doing any further compositing.<br>
<br>
</div></div>The fix for <a href="https://bugs.freedesktop.org/show_bug.cgi?id=28365" target="_blank">https://bugs.freedesktop.org/show_bug.cgi?id=28365</a> is now<br>
provided by 6f916ffec7767eeab62132eb6575043969104c81, and so all<br>
3209b09 does is randomly recreate all the other buffers after a<br>
Pixmap change. We still miss sending InvalidateNotify for those, but<br>
that is an orthogonal issue.<br>
<br>
Reviewed-by: Chris Wilson <<a href="mailto:chris@chris-wilson.co.uk">chris@chris-wilson.co.uk</a>><br>
Tested-by: Chris Wilson <<a href="mailto:chris@chris-wilson.co.uk">chris@chris-wilson.co.uk</a>><br>
<span class=""><font color="#888888">-Chris<br>
<br>
--<br>
Chris Wilson, Intel Open Source Technology Centre<br>
</font></span></blockquote></div><br></div><div class="gmail_extra">Can this patch get pushed upstream now?  I'd like to rule it out as a possible cause for <a href="https://bugs.freedesktop.org/show_bug.cgi?id=65744">https://bugs.freedesktop.org/show_bug.cgi?id=65744</a>.<br>
</div></div>