mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] drm/amd/display: add missing CSC entries for BT.2020 for DCE IPs
@ 2026-05-28  6:58 Leorize
  2026-05-28 19:03 ` Alex Deucher
  0 siblings, 1 reply; 3+ messages in thread
From: Leorize @ 2026-05-28  6:58 UTC (permalink / raw)
  To: amd-gfx, dri-devel
  Cc: Harry Wentland, Leo Li, Rodrigo Siqueira, Alex Deucher,
	Christian König, David Airlie, Simona Vetter, linux-kernel,
	Leorize

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@disroot.org>
---
 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


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] drm/amd/display: add missing CSC entries for BT.2020 for DCE IPs
  2026-05-28  6:58 [PATCH] drm/amd/display: add missing CSC entries for BT.2020 for DCE IPs Leorize
@ 2026-05-28 19:03 ` Alex Deucher
  2026-05-28 22:33   ` Alex Hung
  0 siblings, 1 reply; 3+ messages in thread
From: Alex Deucher @ 2026-05-28 19:03 UTC (permalink / raw)
  To: Leorize, Wentland, Harry, Leo (Sunpeng) Li
  Cc: amd-gfx, dri-devel, Rodrigo Siqueira, Alex Deucher,
	Christian König, David Airlie, Simona Vetter, linux-kernel

On Thu, May 28, 2026 at 3:39 AM Leorize <leorize+oss@disroot.org> 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@disroot.org>

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
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] drm/amd/display: add missing CSC entries for BT.2020 for DCE IPs
  2026-05-28 19:03 ` Alex Deucher
@ 2026-05-28 22:33   ` Alex Hung
  0 siblings, 0 replies; 3+ messages in thread
From: Alex Hung @ 2026-05-28 22:33 UTC (permalink / raw)
  To: Alex Deucher, Leorize, Wentland, Harry, Leo (Sunpeng) Li
  Cc: amd-gfx, dri-devel, Rodrigo Siqueira, Alex Deucher,
	Christian König, David Airlie, Simona Vetter, linux-kernel



On 5/28/26 13:03, Alex Deucher wrote:
> On Thu, May 28, 2026 at 3:39 AM Leorize <leorize+oss@disroot.org> 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@disroot.org>
> 
> This looks reasonable to me.  @Wentland, Harry, @Leo (Sunpeng) Li any concerns?
> 
> Alex

Reviewed-by: Alex Hung <alex.hung@amd.com>

> 
>> ---
>>   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
>>


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-05-28 22:33 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-05-28  6:58 [PATCH] drm/amd/display: add missing CSC entries for BT.2020 for DCE IPs Leorize
2026-05-28 19:03 ` Alex Deucher
2026-05-28 22:33   ` Alex Hung

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome