mirror of
https://gitlab.freedesktop.org/xorg/xserver.git
synced 2026-05-01 14:58:14 +02:00
present: Fix use of vsynced pageflips and honor PresentOptionAsync. (v4)
Pageflips for Pixmap presents were not synchronized to vblank on drivers with support for PresentCapabilityAsync, due to some missing init for vblank->sync_flips. The PresentOptionAsync flag was completely ignored for pageflipped presents. Vsynced flips only worked by accident on the intel-ddx, as that driver doesn't have PresentCapabilityAsync support. On nouveau-ddx, which supports PresentCapabilityAsync, this always caused non-vsynced pageflips with pretty ugly tearing. This patch fixes the problem, as tested on top of XOrg 1.16.2 on nouveau and intel. v4: Add additional PresentCapabilityAsync caps check, as suggested by Eric Anholt. Please also apply to XOrg 1.17 and XOrg 1.16.2 stable. Applying on top of XOrg 1.16.2 requires cherry-picking commit2051514652which trivially fixes lack of support for protocol option PresentOptionCopy - get two bug fixes for the price of one! Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com> Reviewed-by: Eric Anholt <eric@anholt.net> Signed-off-by: Keith Packard <keithp@keithp.com> (cherry picked from commitaae6460694) Signed-off-by: Julien Cristau <jcristau@debian.org>
This commit is contained in:
parent
77ef968c86
commit
d1bd02fb67
1 changed files with 4 additions and 1 deletions
|
|
@ -829,10 +829,13 @@ present_pixmap(WindowPtr window,
|
|||
vblank->notifies = notifies;
|
||||
vblank->num_notifies = num_notifies;
|
||||
|
||||
if (!screen_priv->info || !(screen_priv->info->capabilities & PresentCapabilityAsync))
|
||||
if (!(options & PresentOptionAsync))
|
||||
vblank->sync_flip = TRUE;
|
||||
|
||||
if (!(options & PresentOptionCopy) &&
|
||||
!((options & PresentOptionAsync) &&
|
||||
(!screen_priv->info ||
|
||||
!(screen_priv->info->capabilities & PresentCapabilityAsync))) &&
|
||||
pixmap != NULL &&
|
||||
present_check_flip (target_crtc, window, pixmap, vblank->sync_flip, valid, x_off, y_off))
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue