* [PATCH] drm/amd/display: Reject YUV422 encoding over DP on DCE
@ 2025-09-19 8:14 Timur Kristóf
2025-09-19 15:09 ` Alex Deucher
0 siblings, 1 reply; 4+ messages in thread
From: Timur Kristóf @ 2025-09-19 8:14 UTC (permalink / raw)
To: amd-gfx
Cc: alexander.deucher, alex.hung, harry.wentland, siqueira,
Timur Kristóf
Mark YUV422 unsupported over DP on DCE to work around a
regression caused by the recent YUV422 fallback patch.
See https://gitlab.freedesktop.org/drm/amd/-/issues/4585
The recent YUV422 fallback breaks DisplayPort on DCE6-10 because
it can select a high refresh rate mode with YUV422 and 6 BPC,
which is apparently not actually supported by the HW, causing
it to boot to a "no signal" screen.
Tested with a Samsung Odyssey G7 on the following GPUs:
- Cape Verde (DCE 6): affected
- Tonga (DCE 10): affected
- Polaris (DCE 11.2): not affected
- Vega (DCE 12): not affected
Polaris and Vega are not affected because the same mode
gets rejected by other parts of the code base, possibly the
bandwidth calculation which exists for DCE11+ but not older HW.
It is not documented whether YUV422 is actually supported over DP
on DCE, but considering that this encoding was never used before,
and that YUV420 is already marked unsupported, probably not.
Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
---
drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c b/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
index 0c50fe266c8a..686f6be68c91 100644
--- a/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
+++ b/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
@@ -798,7 +798,8 @@ bool dce110_link_encoder_validate_dp_output(
const struct dce110_link_encoder *enc110,
const struct dc_crtc_timing *crtc_timing)
{
- if (crtc_timing->pixel_encoding == PIXEL_ENCODING_YCBCR420)
+ if (crtc_timing->pixel_encoding == PIXEL_ENCODING_YCBCR420 ||
+ crtc_timing->pixel_encoding == PIXEL_ENCODING_YCBCR422)
return false;
return true;
--
2.51.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] drm/amd/display: Reject YUV422 encoding over DP on DCE
2025-09-19 8:14 [PATCH] drm/amd/display: Reject YUV422 encoding over DP on DCE Timur Kristóf
@ 2025-09-19 15:09 ` Alex Deucher
2025-09-19 15:20 ` timur.kristof
2025-09-24 10:44 ` Timur Kristóf
0 siblings, 2 replies; 4+ messages in thread
From: Alex Deucher @ 2025-09-19 15:09 UTC (permalink / raw)
To: Timur Kristóf
Cc: amd-gfx, alexander.deucher, alex.hung, harry.wentland, siqueira
On Fri, Sep 19, 2025 at 4:14 AM Timur Kristóf <timur.kristof@gmail.com> wrote:
>
> Mark YUV422 unsupported over DP on DCE to work around a
> regression caused by the recent YUV422 fallback patch.
>
> See https://gitlab.freedesktop.org/drm/amd/-/issues/4585
>
> The recent YUV422 fallback breaks DisplayPort on DCE6-10 because
> it can select a high refresh rate mode with YUV422 and 6 BPC,
> which is apparently not actually supported by the HW, causing
> it to boot to a "no signal" screen.
>
> Tested with a Samsung Odyssey G7 on the following GPUs:
>
> - Cape Verde (DCE 6): affected
> - Tonga (DCE 10): affected
> - Polaris (DCE 11.2): not affected
> - Vega (DCE 12): not affected
>
> Polaris and Vega are not affected because the same mode
> gets rejected by other parts of the code base, possibly the
> bandwidth calculation which exists for DCE11+ but not older HW.
>
> It is not documented whether YUV422 is actually supported over DP
> on DCE, but considering that this encoding was never used before,
> and that YUV420 is already marked unsupported, probably not.
>
> Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
Fixes: db291ed1732e02 ("drm/amd/display: Add fallback path for YCBCR422")
Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4585
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Would be good to get feedback from the display team on what the actual
capabilities are, but seems reasonable to me.
Alex
> ---
> drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c b/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
> index 0c50fe266c8a..686f6be68c91 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
> @@ -798,7 +798,8 @@ bool dce110_link_encoder_validate_dp_output(
> const struct dce110_link_encoder *enc110,
> const struct dc_crtc_timing *crtc_timing)
> {
> - if (crtc_timing->pixel_encoding == PIXEL_ENCODING_YCBCR420)
> + if (crtc_timing->pixel_encoding == PIXEL_ENCODING_YCBCR420 ||
> + crtc_timing->pixel_encoding == PIXEL_ENCODING_YCBCR422)
> return false;
>
> return true;
> --
> 2.51.0
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] drm/amd/display: Reject YUV422 encoding over DP on DCE
2025-09-19 15:09 ` Alex Deucher
@ 2025-09-19 15:20 ` timur.kristof
2025-09-24 10:44 ` Timur Kristóf
1 sibling, 0 replies; 4+ messages in thread
From: timur.kristof @ 2025-09-19 15:20 UTC (permalink / raw)
To: Alex Deucher
Cc: amd-gfx, alexander.deucher, alex.hung, harry.wentland, siqueira
On Fri, 2025-09-19 at 11:09 -0400, Alex Deucher wrote:
> On Fri, Sep 19, 2025 at 4:14 AM Timur Kristóf
> <timur.kristof@gmail.com> wrote:
> >
> > Mark YUV422 unsupported over DP on DCE to work around a
> > regression caused by the recent YUV422 fallback patch.
> >
> > See https://gitlab.freedesktop.org/drm/amd/-/issues/4585
> >
> > The recent YUV422 fallback breaks DisplayPort on DCE6-10 because
> > it can select a high refresh rate mode with YUV422 and 6 BPC,
> > which is apparently not actually supported by the HW, causing
> > it to boot to a "no signal" screen.
> >
> > Tested with a Samsung Odyssey G7 on the following GPUs:
> >
> > - Cape Verde (DCE 6): affected
> > - Tonga (DCE 10): affected
> > - Polaris (DCE 11.2): not affected
> > - Vega (DCE 12): not affected
> >
> > Polaris and Vega are not affected because the same mode
> > gets rejected by other parts of the code base, possibly the
> > bandwidth calculation which exists for DCE11+ but not older HW.
> >
> > It is not documented whether YUV422 is actually supported over DP
> > on DCE, but considering that this encoding was never used before,
> > and that YUV420 is already marked unsupported, probably not.
> >
> > Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
>
> Fixes: db291ed1732e02 ("drm/amd/display: Add fallback path for
> YCBCR422")
> Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4585
> Acked-by: Alex Deucher <alexander.deucher@amd.com>
>
> Would be good to get feedback from the display team on what the
> actual
> capabilities are, but seems reasonable to me.
>
> Alex
Thanks Alex.
I prefer not to add the Closes tag, as this patch doesn't really
resolve the issue, it's just a workaround that I came up with until
someone who knows better can properly fix it.
The proper fix would be:
1. Determine which DCE and DCN versions actually support 422 over DP
and HDMI, and add new fields to the encoder capabilities:
dp_ycbcr422_supported
hdmi_ycbcr420_supported
(I didn't find this info anywhere publicly, but can I can help write
that patch if someone from AMD confirms which DCE/DCN versions support
422 and which don't.)
2. If it so happens that DCE actually supports 422 over DP, we should
determine why this mode doesn't work. (I suspect that it was rejected
on Polaris and Vega by the bandwidth calculation.)
3. If the current link encoder doesn't support 422 and/or 420, the code
should not even attempt to use them.
Thanks & best regards,
Timur
>
> > ---
> > drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
> > b/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
> > index 0c50fe266c8a..686f6be68c91 100644
> > --- a/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
> > +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_link_encoder.c
> > @@ -798,7 +798,8 @@ bool dce110_link_encoder_validate_dp_output(
> > const struct dce110_link_encoder *enc110,
> > const struct dc_crtc_timing *crtc_timing)
> > {
> > - if (crtc_timing->pixel_encoding == PIXEL_ENCODING_YCBCR420)
> > + if (crtc_timing->pixel_encoding == PIXEL_ENCODING_YCBCR420
> > ||
> > + crtc_timing->pixel_encoding ==
> > PIXEL_ENCODING_YCBCR422)
> > return false;
> >
> > return true;
> > --
> > 2.51.0
> >
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] drm/amd/display: Reject YUV422 encoding over DP on DCE
2025-09-19 15:09 ` Alex Deucher
2025-09-19 15:20 ` timur.kristof
@ 2025-09-24 10:44 ` Timur Kristóf
1 sibling, 0 replies; 4+ messages in thread
From: Timur Kristóf @ 2025-09-24 10:44 UTC (permalink / raw)
To: Alex Deucher
Cc: amd-gfx, alexander.deucher, alex.hung, harry.wentland, siqueira
On 9/19/25 17:09, Alex Deucher wrote:
> On Fri, Sep 19, 2025 at 4:14 AM Timur Kristóf <timur.kristof@gmail.com> wrote:
>>
>> Mark YUV422 unsupported over DP on DCE to work around a
>> regression caused by the recent YUV422 fallback patch.
>>
>> See https://gitlab.freedesktop.org/drm/amd/-/issues/4585
>>
>> The recent YUV422 fallback breaks DisplayPort on DCE6-10 because
>> it can select a high refresh rate mode with YUV422 and 6 BPC,
>> which is apparently not actually supported by the HW, causing
>> it to boot to a "no signal" screen.
>>
>> Tested with a Samsung Odyssey G7 on the following GPUs:
>>
>> - Cape Verde (DCE 6): affected
>> - Tonga (DCE 10): affected
>> - Polaris (DCE 11.2): not affected
>> - Vega (DCE 12): not affected
>>
>> Polaris and Vega are not affected because the same mode
>> gets rejected by other parts of the code base, possibly the
>> bandwidth calculation which exists for DCE11+ but not older HW.
>>
>> It is not documented whether YUV422 is actually supported over DP
>> on DCE, but considering that this encoding was never used before,
>> and that YUV420 is already marked unsupported, probably not.
>>
>> Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
>
> Fixes: db291ed1732e02 ("drm/amd/display: Add fallback path for YCBCR422")
> Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4585
> Acked-by: Alex Deucher <alexander.deucher@amd.com>
>
> Would be good to get feedback from the display team on what the actual
> capabilities are, but seems reasonable to me.
>
> Alex
Please disregard this patch.
I will send a different patch which will instead reject modes that would
require a pixel clock higher than the maximum display clock.
Thanks,
Timur
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-09-24 10:44 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-19 8:14 [PATCH] drm/amd/display: Reject YUV422 encoding over DP on DCE Timur Kristóf
2025-09-19 15:09 ` Alex Deucher
2025-09-19 15:20 ` timur.kristof
2025-09-24 10:44 ` Timur Kristóf
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.