[PATCH 00/10] R-Car DU: Fix flicker due to hardware plane reassociations

Laurent Pinchart laurent.pinchart+renesas at ideasonboard.com
Tue Apr 28 17:37:54 PDT 2015


Hello,

This patch set attempts to get rid of flicker caused by hardware plane
reassociations.

The 8 DU hardware planes are shared by two CRTCs and can be associated with
any of them. However, when association needs to change, for instance because
a currently unused planes that was associated with the first CRTC is getting
used by the second CRTC, the hardware architecture requires both CRTCs to be
restarted, causing flicker on both CRTCs.

To mitigate the problem this patch set avoids changing associations when a
plane is being disabled (07/10), teach the plane allocator to allocate
preferably from free planes already associated with the right CRTC (08/10) and
creates a split 4/4 pre-associations of planes to CRTCs (10/10). The other
patches include a bit of refactoring to make this possible (01/10 to 05/10 and
09/10) and handy debugging (06/10).

Flicker still occurs on the other CRTC when a CRTC in the group is enabled,
but this seems unrelated to plane associations. I'll investigate it
separately.

Laurent Pinchart (10):
  drm: rcar-du: Document the rcar_du_crtc structure
  drm: rcar-du: Document the rcar_du_plane_state structure
  drm: rcar-du: Move properties from rcar_du_planes to rcar_du_device
  drm: rcar-du: Embed rcar_du_planes structure into rcar_du_group
  drm: rcar-du: Rename to_rcar_du_plane_state to to_rcar_plane_state
  drm: rcar-du: Add plane allocation debugging
  drm: rcar-du: Keep plane to CRTC associations when disabling a plane
  drm: rcar-du: Consider plane to CRTC associations in the plane
    allocator
  drm: rcar-du: Store the number of CRTCs per group in the group
    structure
  drm: rcar-du: Split planes pre-association 4/4 between CRTCs

 drivers/gpu/drm/rcar-du/rcar_du_crtc.c  |  61 ++++++++++---------
 drivers/gpu/drm/rcar-du/rcar_du_crtc.h  |  14 +++++
 drivers/gpu/drm/rcar-du/rcar_du_drv.h   |   6 ++
 drivers/gpu/drm/rcar-du/rcar_du_group.c |   6 ++
 drivers/gpu/drm/rcar-du/rcar_du_group.h |   8 ++-
 drivers/gpu/drm/rcar-du/rcar_du_kms.c   | 105 +++++++++++++++++++++++++++++---
 drivers/gpu/drm/rcar-du/rcar_du_plane.c |  71 +++++++--------------
 drivers/gpu/drm/rcar-du/rcar_du_plane.h |  21 ++++---
 8 files changed, 195 insertions(+), 97 deletions(-)

-- 
Regards,

Laurent Pinchart



More information about the dri-devel mailing list