• Rob Clark's avatar
    drm/atomic: track bitmask of planes attached to crtc · 6ddd388a
    Rob Clark authored
    Chasing plane->state->crtc of planes that are *not* part of the same
    atomic update is racy, making it incredibly awkward (or impossible) to
    do something simple like iterate over all planes and figure out which
    ones are attached to a crtc.
    
    Solve this by adding a bitmask of currently attached planes in the
    crtc-state.
    
    Note that the transitional helpers do not maintain the plane_mask.  But
    they only support the legacy ioctls, which have sufficient brute-force
    locking around plane updates that they can continue to loop over all
    planes to see what is attached to a crtc the old way.
    Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
    [danvet:
    - Drop comments about locking in set_crtc_for_plane since they're a
      bit misleading - we already should hold lock for the current crtc.
    - Also WARN_ON if get_state on the old crtc fails since that should
      have been done already.
    - Squash in fixup to check get_plane_state return value, reported by
      Dan Carpenter and acked by Rob Clark.]
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    6ddd388a
drm_atomic_helper.c 51.1 KB