present: Only requeue for next MSC after flip failure
This code was added to deal with the driver present hook failing, in
which case we need to wait for the next MSC before executing the
presentation.
However, it could also take effect in cases where the driver incorrectly
thinks the current MSC matches the target one (e.g. due to the kernel
interface only supporting 32-bit MSC values), in which case it could
result in the presentation getting requeued over and over.
To prevent such issues, check specifically for the target MSC
immediately following the current MSC.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94596
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit 3b385105b2
)
This commit is contained in:
parent
e8f785f82e
commit
07ad2fde78
|
@ -726,7 +726,7 @@ present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
|
|||
}
|
||||
|
||||
/* If present_flip failed, we may have to requeue for the target MSC */
|
||||
if (msc_is_after(vblank->target_msc, crtc_msc) &&
|
||||
if (vblank->target_msc == crtc_msc + 1 &&
|
||||
Success == present_queue_vblank(screen,
|
||||
vblank->crtc,
|
||||
vblank->event_id,
|
||||
|
|
Loading…
Reference in New Issue