• Felix Kuehling's avatar
    drm/radeon: fix deferred page-flip detection logic on Avivo-based ASICs · 81ffbbed
    Felix Kuehling authored
    This fixes page-flip-related flickering observed on Iconia Tab W500.
    
    The update_pending status returned by radeon_page_flip is very accurate on
    Avivo-based ASICs when vpos is negative.
    
    Experiments were conducted on several ASIC generations ranging from RS690
    to Cayman where the page flip was artificially timed to occur at a specific
    vpos. With negative vpos, overriding update_pending always lead to
    flickering.
    
    The same experiment on RV380 and RV410 showed that update_pending is not
    accurate with negative vpos. In most cases update_pending == 1 is returned
    although the flip would complete before the start of the next frame.
    Therefore I left the behaviour unchanged for pre-AVIVO ASICs for
    performance reasons, although this may result in flickering in rare cases.
    
    This change also makes the logic a little easier to understand.
    Signed-off-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
    Reviewed-by: default avatarMario Kleiner <mario.kleiner@tuebingen.mpg.de>
    Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
    81ffbbed
radeon_display.c 47.7 KB