[PATCH] drm/amd/display: Use pixel encoding 444 for dongle usb-c to hdmi

Harry Wentland hwentlan at amd.com
Mon Nov 11 21:11:08 UTC 2019


On 2019-10-08 2:15 p.m., Julien Isorce wrote:
> Hi Harry,
> 
> I can reproduce on LG, Samsung and NEC monitors.
> 
> "Have you checked whether the driver picks RGB or YCBCR420 without your
> patch?" -> it was selecting RGB .
> 
> For example on https://commons.wikimedia.org/wiki/File:Gray_scale.jpg ,
> the second band from the left, will be entirely pinkish.
> Since the issue also happens without dongle, so with a direct cable from
> the miniDP from the graphic card to DisplayPort on the screen I think
> there is more serious issue with RGB output in amdgpu. But it is not
> easy to reproduce, you should try on above image.
> 

I haven't had time to repro this issue. Can you post a picture of this
problem somewhere? Ideally with a bug description at
https://gitlab.freedesktop.org/drm/amd/issues

> In any case, the goal with the patch is just to get the same output when
> using 2 screens at the same time, one connected to hdmi output of the
> graphic card and one connected  to usb-c to graphic card (hdmi cable
> with dongle). So prior this patch, the first one would use YCbCr 444 and
> the second would use RGB.
> After this patch, both will use YCbCr 444 (both are hdmi).

I've been hesitant about this patch since it changes driver policy which
is not something I like to do without very good reason and understanding
all the implications.

That said, treating an DP-HDMI adapter like a native HDMI connection
rather than DP is not unreasonable. I'm still curious, though, why this
is required at all. As mentioned above a picture of the problem (ideally
showing the monitors side-by-side) would help.

Harry


> The patch does not change the case for miniDP to DisplayPort, the driver
> will still use RGB. Because maybe the RGB issue is also specific to that
> graphic card which
> is VEGA"M". So that is why the patch only tries to match hdmi cases
> together, whether it is direct connection or through usb-c.
> 
> -
> Julien
> 
> 
> 
> On Tue, Oct 8, 2019 at 10:44 AM Harry Wentland <hwentlan at amd.com
> <mailto:hwentlan at amd.com>> wrote:
> 
>     Hi Julien,
> 
>     curious which monitor you're using.
> 
>     Have you checked whether the driver picks RGB or YCBCR420 without your
>     patch?
> 
>     I'm not sure I understand how the pinkish color issue looks. Do you see
>     a pinkish color at the transition from grey to another color? Or is the
>     entire grey area pinkish?
> 
>     Thanks,
>     Harry
> 
>     On 2019-10-08 12:06 p.m., Julien Isorce wrote:
>     > Hi,
>     >
>     > Gentle ping ?
>     >
>     > Thx
>     > Julien
>     >
>     > On Tue, Oct 1, 2019 at 3:21 PM Julien Isorce
>     <julien.isorce at gmail.com <mailto:julien.isorce at gmail.com>
>     > <mailto:julien.isorce at gmail.com <mailto:julien.isorce at gmail.com>>>
>     wrote:
>     >
>     >     Fix pinkish color issue around grey areas. This also happens
>     >     when not using any dongle so directly with a usb-c to Display
>     >     Port cable. Meaning there is something wrong when using pixel
>     >     encoding RGB with amd driver in the general case. In the meantime
>     >     just use the same pixel encoding as when using HDMI without
>     dongle.
>     >     This way users will see the same thing on 2 identical screens when
>     >     one is connected with hdmi-to-hdmi and the other is connected with
>     >     usb-c-to-hdmi.
>     >
>     >     Signed-off-by: Julien Isorce <jisorce at oblong.com
>     <mailto:jisorce at oblong.com>
>     >     <mailto:jisorce at oblong.com <mailto:jisorce at oblong.com>>>
>     >     ---
>     >      drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 5 +++++
>     >      1 file changed, 5 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 d3f404f097eb..8139dcc0bfba 100644
>     >     --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>     >     +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
>     >     @@ -3313,6 +3313,7 @@ static void
>     >     fill_stream_properties_from_drm_display_mode(
>     >      {
>     >             struct dc_crtc_timing *timing_out = &stream->timing;
>     >             const struct drm_display_info *info =
>     &connector->display_info;
>     >     +       const struct dc_link *link = stream->sink->link;
>     >
>     >             memset(timing_out, 0, sizeof(struct dc_crtc_timing));
>     >
>     >     @@ -3327,6 +3328,10 @@ static void
>     >     fill_stream_properties_from_drm_display_mode(
>     >             else if ((connector->display_info.color_formats &
>     >     DRM_COLOR_FORMAT_YCRCB444)
>     >                             && stream->signal ==
>     SIGNAL_TYPE_HDMI_TYPE_A)
>     >                     timing_out->pixel_encoding =
>     PIXEL_ENCODING_YCBCR444;
>     >     +       else if ((connector->display_info.color_formats &
>     >     DRM_COLOR_FORMAT_YCRCB444)
>     >     +                       && stream->sink->sink_signal ==
>     >     SIGNAL_TYPE_DISPLAY_PORT
>     >     +                       && link->dpcd_caps.dongle_type ==
>     >     DISPLAY_DONGLE_DP_HDMI_CONVERTER)
>     >     +               timing_out->pixel_encoding =
>     PIXEL_ENCODING_YCBCR444;
>     >             else
>     >                     timing_out->pixel_encoding = PIXEL_ENCODING_RGB;
>     >
>     >     --
>     >     2.17.1
>     >
>     >
>     > _______________________________________________
>     > amd-gfx mailing list
>     > amd-gfx at lists.freedesktop.org <mailto:amd-gfx at lists.freedesktop.org>
>     > https://lists.freedesktop.org/mailman/listinfo/amd-gfx
>     >
> 


More information about the amd-gfx mailing list