[PATCH] drm/amd/display: Try YCbCr420 color when YCbCr444 fails

Werner Sembach wse at tuxedocomputers.com
Thu Apr 1 12:32:09 UTC 2021


Am 29.03.21 um 17:28 schrieb Alex Deucher:
> Applied.  Thanks!
>
> Alex
Nice to hear that ^^

One quick question: Here do I find the amd-gfx dev branch?

Kind regards,

Werner Sembach
>
> On Fri, Mar 26, 2021 at 10:59 AM Harry Wentland <harry.wentland at amd.com> wrote:
>>
>>
>> On 2021-03-24 4:23 p.m., Alex Deucher wrote:
>>> On Wed, Mar 17, 2021 at 11:25 AM Werner Sembach <wse at tuxedocomputers.com> wrote:
>>>> When encoder validation of a display mode fails, retry with less bandwidth
>>>> heavy YCbCr420 color mode, if available. This enables some HDMI 1.4 setups
>>>> to support 4k60Hz output, which previously failed silently.
>>>>
>>>> On some setups, while the monitor and the gpu support display modes with
>>>> pixel clocks of up to 600MHz, the link encoder might not. This prevents
>>>> YCbCr444 and RGB encoding for 4k60Hz, but YCbCr420 encoding might still be
>>>> possible. However, which color mode is used is decided before the link
>>>> encoder capabilities are checked. This patch fixes the problem by retrying
>>>> to find a display mode with YCbCr420 enforced and using it, if it is
>>>> valid.
>>>>
>>>> Signed-off-by: Werner Sembach <wse at tuxedocomputers.com>
>>>> Cc: <stable at vger.kernel.org>
>>>
>>> This seems reasonable to me.  Harry, Leo, Any objections?
>>>
>> Looks good to me.
>>
>> Reviewed-by: Harry Wentland <harry.wentland at amd.com>
>>
>> Harry
>>
>>> Alex
>>>
>>>> ---
>>>>
>>>>  From c9398160caf4ff20e63b8ba3a4366d6ef95c4ac3 Mon Sep 17 00:00:00 2001
>>>> From: Werner Sembach <wse at tuxedocomputers.com>
>>>> Date: Wed, 17 Mar 2021 12:52:22 +0100
>>>> Subject: [PATCH] Retry forcing YCbCr420 color on failed encoder validation
>>>>
>>>> ---
>>>>   drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 9 +++++++++
>>>>   1 file changed, 9 insertions(+)
>>>>
>>>> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>>>> index 961abf1cf040..2d16389b5f1e 100644
>>>> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>>>> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>>>> @@ -5727,6 +5727,15 @@ create_validate_stream_for_sink(struct amdgpu_dm_connector *aconnector,
>>>>
>>>>          } while (stream == NULL && requested_bpc >= 6);
>>>>
>>>> +       if (dc_result == DC_FAIL_ENC_VALIDATE && !aconnector->force_yuv420_output) {
>>>> +               DRM_DEBUG_KMS("Retry forcing YCbCr420 encoding\n");
>>>> +
>>>> +               aconnector->force_yuv420_output = true;
>>>> +               stream = create_validate_stream_for_sink(aconnector, drm_mode,
>>>> +                                               dm_state, old_stream);
>>>> +               aconnector->force_yuv420_output = false;
>>>> +       }
>>>> +
>>>>          return stream;
>>>>   }
>>>>
>>>> --
>>>> 2.25.1
>>>>
>>>> _______________________________________________
>>>> dri-devel mailing list
>>>> dri-devel at lists.freedesktop.org
>>>> https://lists.freedesktop.org/mailman/listinfo/dri-devel>


More information about the dri-devel mailing list