[PATCH] drm/amd/display: Use pixel encoding 444 for dongle usb-c to hdmi
Julien Isorce
julien.isorce at gmail.com
Thu Nov 14 23:57:04 UTC 2019
Hi Harry,
As suggested I created the issue here
https://gitlab.freedesktop.org/drm/amd/issues/2 with a picture of the
problem attached.
Please take a look, thx!
Julien
On Mon, Nov 11, 2019 at 1:11 PM Harry Wentland <hwentlan at amd.com> wrote:
> 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
> > >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20191114/ff2e8e50/attachment.html>
More information about the amd-gfx
mailing list