• N
    drm/amdgpu: Correct get_crtc_scanoutpos behavior when vpos >= vtotal · 520f08df
    Nicholas Kazlauskas 提交于
    When variable refresh rate is active the hardware counter can return
    a position >= vtotal. This results in a vpos being returned from
    amdgpu_display_get_crtc_scanoutpos that's a positive value. The
    positive value indicates to the caller that the display is
    currently in scanout when the display is actually still in vblank.
    
    This is because the vfront porch duration is unknown with variable
    refresh active and will end when either a page flip occurs or the
    timeout specified by the driver/display is reached.
    
    The behavior of the amdgpu_display_get_crtc_scanoutpos remains the
    same when the position is below vtotal. When the position is above
    vtotal the function will return a value that is effectively -vbl_end,
    the size of the vback porch.
    
    The only caller affected by this change is the DRM helper for
    calculating vblank timestamps. This change corrects behavior for
    calculating the page flip timestamp from being the previous timestamp
    to the calculation to the next timestamp when position >= vtotal.
    Signed-off-by: NNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Reviewed-by: NHarry Wentland <harry.wentland@amd.com>
    Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
    520f08df
amdgpu_display.c 26.8 KB