[Bug 105720] screen corruption using SNA and TearFree on Intel GeminiLake

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Tue Apr 3 18:32:17 UTC 2018


https://bugs.freedesktop.org/show_bug.cgi?id=105720

--- Comment #34 from Chris Wilson <chris at chris-wilson.co.uk> ---
Created attachment 138556
  --> https://bugs.freedesktop.org/attachment.cgi?id=138556&action=edit
Reorder vblank/flip event handler

I do wonder if "sna: Defer submission of the next shadow frame until halfway
through" wasn't that far off the truth. Please try the attached diff (3 patches
rolled into one), surmised by

    sna: Reorder vblank/flip event handling to avoid TearFree recursion

    TearFree wants to grab the most recently used scanout for rendering the
    next frame into. If the flip event was still pending, we would then
    query the drm event buffer for any pending completions, but this would
    proceed to execute all the other events before the flip events as well.
    Since we they were out of sequence, we pushed them into a buffer to
    execute afterwards, however we forgot the side effects of the flip
    handlers, for example see commit af36a4ab78cc ("sna: Defer submission
    of the next shadow frame until halfway through") and that there may have
    been events read from drm into a local buffer inside sna_mode_wakeup()
    that haven't been processed yet.

    Eliminate the need for calling sna_mode_wakeup() by ensuring that all
    flip events have been completed first before handing the vblank
    callbacks and potential drawing, ensuring the correct ordering.

    References: https://bugs.freedesktop.org/show_bug.cgi?id=105720
    Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/intel-gfx-bugs/attachments/20180403/cd6ac519/attachment.html>


More information about the intel-gfx-bugs mailing list