• Nicholas Kazlauskas's avatar
    drm/amd/display: Only get the connector state for VRR when toggled · a93587b3
    Nicholas Kazlauskas authored
    [Why]
    This fixes a stuttering issue that occurs when moving a hardware cursor
    when VRR is enabled.
    
    Previously when VRR is enabled atomic check will grab the connector
    state for every atomic update. This has to lock the connector in order
    to do so. The locking is bad enough by itself for performance, but
    it gets worse with what we do just below that - add all the planes
    for the CRTC to the commit.
    
    This prevents the cursor fast path from working - there's more than one
    plane now. With state->allow_modeset = true on top of this, it also
    adds and removes all the planes from the DC context triggering a full
    (very slow) update in DC.
    
    [How]
    We need the connector state to get the VRR min/max capbilities, but we
    only need them when there's a CRTC mode change or when VRR is toggled.
    
    The condition has been updated accordingly.
    
    Fixes: 3cc22f281318 ("drm/amdgpu: Set FreeSync state using drm VRR properties")
    Signed-off-by: default avatarNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Reviewed-by: default avatarLeo Li <sunpeng.li@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    a93587b3
amdgpu_dm.c 171 KB