• Maxime Ripard's avatar
    drm/vc4: plane: Move additional planes creation to driver · 0c2a50f1
    Maxime Ripard authored
    So far the plane creation was done when each CRTC was bound, and those
    planes were only tied to the CRTC that was registering them.
    
    This causes two main issues:
      - The planes in the vc4 hardware are actually not tied to any CRTC, but
        can be used with every combination
    
      - More importantly, so far, we allocate 10 planes per CRTC, with 3 CRTCs.
        However, the next generation of hardware will have 5 CRTCs, putting us
        well above the maximum of 32 planes currently allowed by DRM.
    
    This patch is the first one in a series of patches that will take down both
    of these issues so that we can support the next generation of hardware
    while keeping a good amount of planes.
    
    We start by changing the way the planes are registered to first registering
    the primary planes for each CRTC in the CRTC bind function as we used to,
    but moving the overlay and cursor creation to the main driver bind
    function, after all the CRTCs have been bound, and make the planes
    associated to all CRTCs.
    
    This will slightly change the ID order of the planes, since the primary
    planes of all CRTCs will be first, and then a pattern of 8 overlays, 1
    cursor plane for each CRTC.
    
    This shouldn't cause any trouble since the ordering between the planes is
    preserved though.
    Reviewed-by: default avatarEric Anholt <eric@anholt.net>
    Signed-off-by: default avatarMaxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/0b85a3fdb20bb4ff85fb62cabd082d5a65e2730b.1590594512.git-series.maxime@cerno.tech
    0c2a50f1
vc4_crtc.c 36.6 KB