• Nicholas Kazlauskas's avatar
    drm/amd/display: Rework CRTC color management · 7cd4b700
    Nicholas Kazlauskas authored
    [Why]
    To prepare for the upcoming DRM plane color management properties
    we need to correct a lot of wrong behavior and assumptions made for
    CRTC color management.
    
    The documentation added by this commit in amdgpu_dm_color explains
    how the HW color pipeline works and its limitations with the DRM
    interface.
    
    The current implementation does the following wrong:
    - Implicit sRGB DGM when no CRTC DGM is set
    - Implicit sRGB RGM when no CRTC RGM is set
    - No way to specify a non-linear DGM matrix that produces correct output
    - No way to specify a correct RGM when a linear DGM is used
    
    We had workarounds for passing kms_color tests but not all of the
    behavior we had wrong was covered by these tests (especially when
    it comes to non-linear DGM). Testing both DGM and RGM at the same time
    isn't something kms_color tests well either.
    
    [How]
    The specifics for how color management works in AMDGPU and the new
    behavior can be found by reading the documentation added to
    amdgpu_dm_color.c from this patch.
    
    All of the incorrect cases from the old implementation have been
    addressed for the atomic interface, but there still a few TODOs for
    the legacy one.
    
    Note: this does cause regressions for kms_color@pipe-a-ctm-* over HDMI.
    
    The result looks correct from visual inspection but the CRC no longer
    matches. For reference, the test was previously doing the following:
    
    linear degamma -> CTM -> sRGB regamma -> RGB to YUV (709) -> ...
    
    Now the test is doing:
    
    linear degamma -> CTM -> linear regamma -> RGB to YUV (709) -> ...
    Signed-off-by: default avatarNicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Reviewed-by: default avatarSun peng Li <Sunpeng.Li@amd.com>
    Acked-by: default avatarBhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    7cd4b700
amdgpu_dm.c 198 KB