• Daniel Vetter's avatar
    drm/atomic-helper: Again check modeset *before* plane states · b4274fbe
    Daniel Vetter authored
    This essentially reverts
    
    commit 934ce1c2
    Author: Rob Clark <robdclark@gmail.com>
    Date:   Wed Nov 19 16:41:33 2014 -0500
    
        drm/atomic: check mode_changed *after* atomic_check
    
    Depending upon the driver both orders (or maybe even interleaving) is
    required:
    - If ->atomic_check updates ->mode_changed then helper_check_modeset
      must be run afters.
    - If ->atomic_check depends upon accurate adjusted dotclock values for
      e.g. watermarks, then helper_check_modeset must be run first.
    
    The failure mode in the first case is usually a totally angry hw
    because the pixel format switching doesn't happen. The failure mode in
    the later case is usually nothing, since in most cases the old
    adjusted mode from the previous modeset wont be too far off to be a
    problem. So just underruns and perhaps even just suboptimal (from a
    power consumption) watermarks.
    
    Furthermore in the transitional helpers we only call ->atomic_check
    after the new modeset state has been fully set up (and hence
    computed).
    
    Given that asymmetry in expected failure modes I think it's safer to
    go back to the older order. So do that and give msm a special check
    function to compensate.
    
    Also update kerneldoc to explain this a bit.
    
    v2: Actually add the missing hunk Rob spotted.
    
    v3: Move msm_atomic_check into msm_atomic.c, requested by Rob.
    
    Cc: Rob Clark <robdclark@gmail.com>
    Reviewed-by: default avatarRob Clark <robdclark@gmail.com>
    Tested-by: default avatarRob Clark <robdclark@gmail.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
    b4274fbe
drm_atomic_helper.c 53.1 KB