[PATCH 0/2] drm: rcar-du: Avoid flicker when enabling a VSP plane

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

This patch series avoids flicker in some scenarios related to dual
output configuration.

The issue was originally reported by Michael Rodin in [1]. The problem
is described in details there, and copied here to facilitate discussion:

--------
Restarting a display unit group can cause a visible flicker on the display.
Particularly when a LVDS display is connected to a Salvator board and an
HDMI display is (re)connected, then there will be 2 visible flickers on the
LVDS display:

 1. during atomic_flush (The need_restart flag is set in this case by
    rcar_du_vsp_enable.):
  rcar_du_crtc_atomic_flush
    rcar_du_crtc_update_planes
      ...
      ...
      /* Restart the group if plane sources have changed. */
      if (rcrtc->group->need_restart)
              rcar_du_group_restart(rcrtc->group);
 2. during atomic_enable:
  rcar_du_crtc_atomic_enable
    rcar_du_crtc_start
      rcar_du_group_start_stop(rcrtc->group, true);

To avoid flickers in all use cases, do not restart DU groups on the Gen3
SoCs at all, since it is not required any more.
--------

The proposed patch unfortunately introduced a regression. This series
fixes the issue in the first scenario described above. The second
scenario still leads to flicker, and I don't think that can be fixed as
the hardware requires the whole group of outputs to be stopped for some
register changes to take effect.

[1] https://lore.kernel.org/dri-devel/1637680811-90510-1-git-send-email-mrodin@xxxxxxxxxxxxxx

Laurent Pinchart (2):
  drm: rcar-du: Don't select VSP1 sink on Gen3
  drm: rcar-du: Don't restart group when enabling plane on Gen3

 drivers/gpu/drm/rcar-du/rcar_du_plane.c | 12 ++++++++++--
 drivers/gpu/drm/rcar-du/rcar_du_vsp.c   |  9 ---------
 2 files changed, 10 insertions(+), 11 deletions(-)

-- 
Regards,

Laurent Pinchart




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux