<html>
<head>
<base href="https://bugs.freedesktop.org/">
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW - screen corruption using SNA and TearFree on Intel GeminiLake"
href="https://bugs.freedesktop.org/show_bug.cgi?id=105720#c12">Comment # 12</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW - screen corruption using SNA and TearFree on Intel GeminiLake"
href="https://bugs.freedesktop.org/show_bug.cgi?id=105720">bug 105720</a>
from <span class="vcard"><a class="email" href="mailto:chris@chris-wilson.co.uk" title="Chris Wilson <chris@chris-wilson.co.uk>"> <span class="fn">Chris Wilson</span></a>
</span></b>
<pre>Created <span class=""><a href="attachment.cgi?id=138363" name="attach_138363" title="Ratelimit per-CRTC updates without TearFree">attachment 138363</a> <a href="attachment.cgi?id=138363&action=edit" title="Ratelimit per-CRTC updates without TearFree">[details]</a></span> <a href='page.cgi?id=splinter.html&bug=105720&attachment=138363'>[review]</a>
Ratelimit per-CRTC updates without TearFree
So looking at the code, the easiest way to buffer output onto the CRTC is via
Option "PerCRTCPixmap". We can replace Option "TearFree" (or force Option
"NoTearFree") with the attached as a rough approximation to scheduling the
screen update via vblank (v.rough, it definitely does not prevent tearing!),
and it definitely feels heavier than TearFree (presumably due to the
synchronisation on the extra forced copy).
Testing on bdw/skl showed no sign of the "blank screen", but there's a fishy
!rr_active() in the middle of initialising the crtc pixmap that needs double
checking (I suspect that actually should be if !(flags & TEAR_FREE)) and may be
the cause of the delayed init.
Option "PerCRTCPixmap" + Option "TearFree" should work together, that's akin to
triple buffering, as the CRTC flips are double buffered with the ScreenPixmap
being the third copy as rendered to by the clients. Without the feedback loop,
it should be impervious to the accumulation of dirt, but it may still exhibit
the wrong buffer syndrome (if the event accounting is completely skewiff), e.g.
glxgears going backwards.
The drawback is that at best it should instill an extra frame of input-output
latency, and at worst that latency may jitter.</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>