Re: [PATCH] drm/amd/display: add missing CSC entries for BT.2020 for DCE IPs
From: Alex Deucher
Date: Thu May 28 2026 - 15:06:29 EST
On Thu, May 28, 2026 at 3:39 AM Leorize <leorize+oss@xxxxxxxxxxx> wrote:
>
> DCE-based hardware does not have the CSC matrices for BT.2020, which
> causes the driver to fallback to the GPU built-in matrices. This does
> not appear to cause any issues for RGB sinks, but causes major color
> artifacts for YCbCr ones (e.g. black becomes green).
>
> This commit adds the missing CSC matrices (taken from DC common) to DCE
> CSC tables, resolving the issue.
>
> Closes: https://gitlab.freedesktop.org/drm/amd/-/work_items/3358
> Closes: https://gitlab.freedesktop.org/drm/amd/-/work_items/5333
> Assisted-by: oh-my-pi:GPT-5.5
> Signed-off-by: Leorize <leorize+oss@xxxxxxxxxxx>
This looks reasonable to me. @Wentland, Harry, @Leo (Sunpeng) Li any concerns?
Alex
> ---
> drivers/gpu/drm/amd/display/dc/dce/dce_transform.c | 10 +++++++++-
> .../gpu/drm/amd/display/dc/dce110/dce110_opp_csc_v.c | 10 +++++++++-
> 2 files changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_transform.c b/drivers/gpu/drm/amd/display/dc/dce/dce_transform.c
> index b3640682fa60..12c85c3afd6a 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce/dce_transform.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_transform.c
> @@ -110,7 +110,15 @@ static const struct out_csc_color_matrix global_color_matrix[] = {
> { COLOR_SPACE_YCBCR601_LIMITED, { 0xE00, 0xF447, 0xFDB9, 0x1000, 0x991,
> 0x12C9, 0x3A6, 0x200, 0xFB47, 0xF6B9, 0xE00, 0x1000} },
> { COLOR_SPACE_YCBCR709_LIMITED, { 0xE00, 0xF349, 0xFEB7, 0x1000, 0x6CE, 0x16E3,
> - 0x24F, 0x200, 0xFCCB, 0xF535, 0xE00, 0x1000} }
> + 0x24F, 0x200, 0xFCCB, 0xF535, 0xE00, 0x1000} },
> +{ COLOR_SPACE_2020_RGB_FULLRANGE,
> + { 0x2000, 0, 0, 0, 0, 0x2000, 0, 0, 0, 0, 0x2000, 0} },
> +{ COLOR_SPACE_2020_RGB_LIMITEDRANGE,
> + { 0x1B67, 0, 0, 0x201, 0, 0x1B67, 0, 0x201, 0, 0, 0x1B67, 0x201} },
> +{ COLOR_SPACE_2020_YCBCR_LIMITED, { 0x1000, 0xF149, 0xFEB7, 0x1004, 0x0868,
> + 0x15B2, 0x01E6, 0x201, 0xFB88, 0xF478, 0x1000, 0x1004} },
> +{ COLOR_SPACE_2020_YCBCR_FULL, { 0x1000, 0xF149, 0xFEB7, 0x1004, 0x0868, 0x15B2,
> + 0x01E6, 0x201, 0xFB88, 0xF478, 0x1000, 0x1004} }
> };
>
> static bool setup_scaling_configuration(
> diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_opp_csc_v.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_opp_csc_v.c
> index cf63fac82832..1ed018aaa4bb 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_opp_csc_v.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_opp_csc_v.c
> @@ -88,7 +88,15 @@ static const struct out_csc_color_matrix global_color_matrix[] = {
> { COLOR_SPACE_YCBCR601_LIMITED, { 0xE00, 0xF447, 0xFDB9, 0x1000, 0x991,
> 0x12C9, 0x3A6, 0x200, 0xFB47, 0xF6B9, 0xE00, 0x1000} },
> { COLOR_SPACE_YCBCR709_LIMITED, { 0xE00, 0xF349, 0xFEB7, 0x1000, 0x6CE, 0x16E3,
> - 0x24F, 0x200, 0xFCCB, 0xF535, 0xE00, 0x1000} }
> + 0x24F, 0x200, 0xFCCB, 0xF535, 0xE00, 0x1000} },
> +{ COLOR_SPACE_2020_RGB_FULLRANGE,
> + { 0x2000, 0, 0, 0, 0, 0x2000, 0, 0, 0, 0, 0x2000, 0} },
> +{ COLOR_SPACE_2020_RGB_LIMITEDRANGE,
> + { 0x1B67, 0, 0, 0x201, 0, 0x1B67, 0, 0x201, 0, 0, 0x1B67, 0x201} },
> +{ COLOR_SPACE_2020_YCBCR_LIMITED, { 0x1000, 0xF149, 0xFEB7, 0x1004, 0x0868,
> + 0x15B2, 0x01E6, 0x201, 0xFB88, 0xF478, 0x1000, 0x1004} },
> +{ COLOR_SPACE_2020_YCBCR_FULL, { 0x1000, 0xF149, 0xFEB7, 0x1004, 0x0868, 0x15B2,
> + 0x01E6, 0x201, 0xFB88, 0xF478, 0x1000, 0x1004} }
> };
>
> enum csc_color_mode {
> --
> 2.54.0
>