2021-07-14 08:08:27

by Liviu Dudau

[permalink] [raw]
Subject: [PATCH] drm/amd/display: Fix 10bit 4K display on CIK GPUs

Commit 72a7cf0aec0c ("drm/amd/display: Keep linebuffer pixel depth at
30bpp for DCE-11.0.") doesn't seems to have fixed 10bit 4K rendering over
DisplayPort for CIK GPUs. On my machine with a HAWAII GPU I get a broken
image that looks like it has an effective resolution of 1920x1080 but
scaled up in an irregular way. Reverting the commit or applying this
patch fixes the problem on v5.14-rc1.

Fixes: 72a7cf0aec0c ("drm/amd/display: Keep linebuffer pixel depth at 30bpp for DCE-11.0.")
Signed-off-by: Liviu Dudau <[email protected]>
---
drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
index a6a67244a322e..1596f6b7fed7c 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
@@ -1062,7 +1062,7 @@ bool resource_build_scaling_params(struct pipe_ctx *pipe_ctx)
* so use only 30 bpp on DCE_VERSION_11_0. Testing with DCE 11.2 and 8.3
* did not show such problems, so this seems to be the exception.
*/
- if (plane_state->ctx->dce_version != DCE_VERSION_11_0)
+ if (plane_state->ctx->dce_version > DCE_VERSION_11_0)
pipe_ctx->plane_res.scl_data.lb_params.depth = LB_PIXEL_DEPTH_36BPP;
else
pipe_ctx->plane_res.scl_data.lb_params.depth = LB_PIXEL_DEPTH_30BPP;
--
2.32.0


2021-07-15 16:55:49

by Alex Deucher

[permalink] [raw]
Subject: Re: [PATCH] drm/amd/display: Fix 10bit 4K display on CIK GPUs

On Wed, Jul 14, 2021 at 4:15 AM Liviu Dudau <[email protected]> wrote:
>
> Commit 72a7cf0aec0c ("drm/amd/display: Keep linebuffer pixel depth at
> 30bpp for DCE-11.0.") doesn't seems to have fixed 10bit 4K rendering over
> DisplayPort for CIK GPUs. On my machine with a HAWAII GPU I get a broken
> image that looks like it has an effective resolution of 1920x1080 but
> scaled up in an irregular way. Reverting the commit or applying this
> patch fixes the problem on v5.14-rc1.
>
> Fixes: 72a7cf0aec0c ("drm/amd/display: Keep linebuffer pixel depth at 30bpp for DCE-11.0.")
> Signed-off-by: Liviu Dudau <[email protected]>

Harry or Mario any ideas? Maybe we need finer grained DCE version
checking? I don't remember all of the caveats of this stuff. DCE11
and older is getting to be pretty old at this point. I can just apply
this if you don't have any insights.

Alex

> ---
> drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
> index a6a67244a322e..1596f6b7fed7c 100644
> --- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
> +++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
> @@ -1062,7 +1062,7 @@ bool resource_build_scaling_params(struct pipe_ctx *pipe_ctx)
> * so use only 30 bpp on DCE_VERSION_11_0. Testing with DCE 11.2 and 8.3
> * did not show such problems, so this seems to be the exception.
> */
> - if (plane_state->ctx->dce_version != DCE_VERSION_11_0)
> + if (plane_state->ctx->dce_version > DCE_VERSION_11_0)
> pipe_ctx->plane_res.scl_data.lb_params.depth = LB_PIXEL_DEPTH_36BPP;
> else
> pipe_ctx->plane_res.scl_data.lb_params.depth = LB_PIXEL_DEPTH_30BPP;
> --
> 2.32.0
>
> _______________________________________________
> amd-gfx mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx

2021-07-15 19:55:06

by Mario Kleiner

[permalink] [raw]
Subject: Re: [PATCH] drm/amd/display: Fix 10bit 4K display on CIK GPUs

On Thu, Jul 15, 2021 at 6:10 PM Alex Deucher <[email protected]> wrote:
>
> On Wed, Jul 14, 2021 at 4:15 AM Liviu Dudau <[email protected]> wrote:
> >
> > Commit 72a7cf0aec0c ("drm/amd/display: Keep linebuffer pixel depth at
> > 30bpp for DCE-11.0.") doesn't seems to have fixed 10bit 4K rendering over
> > DisplayPort for CIK GPUs. On my machine with a HAWAII GPU I get a broken
> > image that looks like it has an effective resolution of 1920x1080 but
> > scaled up in an irregular way. Reverting the commit or applying this
> > patch fixes the problem on v5.14-rc1.
> >
> > Fixes: 72a7cf0aec0c ("drm/amd/display: Keep linebuffer pixel depth at 30bpp for DCE-11.0.")
> > Signed-off-by: Liviu Dudau <[email protected]>
>
> Harry or Mario any ideas? Maybe we need finer grained DCE version
> checking? I don't remember all of the caveats of this stuff. DCE11
> and older is getting to be pretty old at this point. I can just apply
> this if you don't have any insights.
>
> Alex
>

Hi Alex

I'd be fine with applying this. As my original commit says, photometer
measurements showed that increasing the line buffer depth was only
needed for my DCN-1 RavenRidge, not for my DCE-11.2 Polaris11 or a
DCE-8.3 cik, so this should probably not cause harm to the increased
precision modes.

Note that given the hardware and USB-C/DP-HDMI adapters i have, I only
tested this on a 2560x1440@144 Hz DP monitor with DCN-1, DCE-11.2, and
a 2560x1440@100 Hz HDMI monitor iirc with DCN-1, DCE-8.3, and i think
on a 2880x1800@60 Hz MBP Retina eDP panel with DCE-11.2. These are the
highest resolution/framerate monitors I have atm.I don't have access
to any 4k monitors, so maybe the problem is somehow specific to such
high resolutions? Maybe somewhere else in the code something would
need to be adapted? Lacking actual hw docs, my coding here is by
pattern matching against existing DC code, guessing and testing on my
limited hw samples.

Acked-by: Mario Kleiner <[email protected]>

-mario

> > ---
> > drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
> > index a6a67244a322e..1596f6b7fed7c 100644
> > --- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
> > +++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
> > @@ -1062,7 +1062,7 @@ bool resource_build_scaling_params(struct pipe_ctx *pipe_ctx)
> > * so use only 30 bpp on DCE_VERSION_11_0. Testing with DCE 11.2 and 8.3
> > * did not show such problems, so this seems to be the exception.
> > */
> > - if (plane_state->ctx->dce_version != DCE_VERSION_11_0)
> > + if (plane_state->ctx->dce_version > DCE_VERSION_11_0)
> > pipe_ctx->plane_res.scl_data.lb_params.depth = LB_PIXEL_DEPTH_36BPP;
> > else
> > pipe_ctx->plane_res.scl_data.lb_params.depth = LB_PIXEL_DEPTH_30BPP;
> > --
> > 2.32.0
> >
> > _______________________________________________
> > amd-gfx mailing list
> > [email protected]
> > https://lists.freedesktop.org/mailman/listinfo/amd-gfx

2021-07-15 19:56:24

by Harry Wentland

[permalink] [raw]
Subject: Re: [PATCH] drm/amd/display: Fix 10bit 4K display on CIK GPUs



On 2021-07-15 3:19 p.m., Mario Kleiner wrote:
> On Thu, Jul 15, 2021 at 6:10 PM Alex Deucher <[email protected]> wrote:
>>
>> On Wed, Jul 14, 2021 at 4:15 AM Liviu Dudau <[email protected]> wrote:
>>>
>>> Commit 72a7cf0aec0c ("drm/amd/display: Keep linebuffer pixel depth at
>>> 30bpp for DCE-11.0.") doesn't seems to have fixed 10bit 4K rendering over
>>> DisplayPort for CIK GPUs. On my machine with a HAWAII GPU I get a broken
>>> image that looks like it has an effective resolution of 1920x1080 but
>>> scaled up in an irregular way. Reverting the commit or applying this
>>> patch fixes the problem on v5.14-rc1.
>>>
>>> Fixes: 72a7cf0aec0c ("drm/amd/display: Keep linebuffer pixel depth at 30bpp for DCE-11.0.")
>>> Signed-off-by: Liviu Dudau <[email protected]>
>>
>> Harry or Mario any ideas? Maybe we need finer grained DCE version
>> checking? I don't remember all of the caveats of this stuff. DCE11
>> and older is getting to be pretty old at this point. I can just apply
>> this if you don't have any insights.
>>
>> Alex
>>
>
> Hi Alex
>
> I'd be fine with applying this. As my original commit says, photometer
> measurements showed that increasing the line buffer depth was only
> needed for my DCN-1 RavenRidge, not for my DCE-11.2 Polaris11 or a
> DCE-8.3 cik, so this should probably not cause harm to the increased
> precision modes.
>
> Note that given the hardware and USB-C/DP-HDMI adapters i have, I only
> tested this on a 2560x1440@144 Hz DP monitor with DCN-1, DCE-11.2, and
> a 2560x1440@100 Hz HDMI monitor iirc with DCN-1, DCE-8.3, and i think
> on a 2880x1800@60 Hz MBP Retina eDP panel with DCE-11.2. These are the
> highest resolution/framerate monitors I have atm.I don't have access
> to any 4k monitors, so maybe the problem is somehow specific to such
> high resolutions? Maybe somewhere else in the code something would
> need to be adapted? Lacking actual hw docs, my coding here is by
> pattern matching against existing DC code, guessing and testing on my
> limited hw samples.
>
> Acked-by: Mario Kleiner <[email protected]>

Makes sense.

Reviewed-by: Harry Wentland <[email protected]>

Harry

>
> -mario
>
>>> ---
>>> drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
>>> index a6a67244a322e..1596f6b7fed7c 100644
>>> --- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
>>> +++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
>>> @@ -1062,7 +1062,7 @@ bool resource_build_scaling_params(struct pipe_ctx *pipe_ctx)
>>> * so use only 30 bpp on DCE_VERSION_11_0. Testing with DCE 11.2 and 8.3
>>> * did not show such problems, so this seems to be the exception.
>>> */
>>> - if (plane_state->ctx->dce_version != DCE_VERSION_11_0)
>>> + if (plane_state->ctx->dce_version > DCE_VERSION_11_0)
>>> pipe_ctx->plane_res.scl_data.lb_params.depth = LB_PIXEL_DEPTH_36BPP;
>>> else
>>> pipe_ctx->plane_res.scl_data.lb_params.depth = LB_PIXEL_DEPTH_30BPP;
>>> --
>>> 2.32.0
>>>
>>> _______________________________________________
>>> amd-gfx mailing list
>>> [email protected]
>>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx>

2021-07-16 16:48:14

by Alex Deucher

[permalink] [raw]
Subject: Re: [PATCH] drm/amd/display: Fix 10bit 4K display on CIK GPUs

Applied. Thanks!

Alex

On Thu, Jul 15, 2021 at 3:40 PM Harry Wentland <[email protected]> wrote:
>
>
>
> On 2021-07-15 3:19 p.m., Mario Kleiner wrote:
> > On Thu, Jul 15, 2021 at 6:10 PM Alex Deucher <[email protected]> wrote:
> >>
> >> On Wed, Jul 14, 2021 at 4:15 AM Liviu Dudau <[email protected]> wrote:
> >>>
> >>> Commit 72a7cf0aec0c ("drm/amd/display: Keep linebuffer pixel depth at
> >>> 30bpp for DCE-11.0.") doesn't seems to have fixed 10bit 4K rendering over
> >>> DisplayPort for CIK GPUs. On my machine with a HAWAII GPU I get a broken
> >>> image that looks like it has an effective resolution of 1920x1080 but
> >>> scaled up in an irregular way. Reverting the commit or applying this
> >>> patch fixes the problem on v5.14-rc1.
> >>>
> >>> Fixes: 72a7cf0aec0c ("drm/amd/display: Keep linebuffer pixel depth at 30bpp for DCE-11.0.")
> >>> Signed-off-by: Liviu Dudau <[email protected]>
> >>
> >> Harry or Mario any ideas? Maybe we need finer grained DCE version
> >> checking? I don't remember all of the caveats of this stuff. DCE11
> >> and older is getting to be pretty old at this point. I can just apply
> >> this if you don't have any insights.
> >>
> >> Alex
> >>
> >
> > Hi Alex
> >
> > I'd be fine with applying this. As my original commit says, photometer
> > measurements showed that increasing the line buffer depth was only
> > needed for my DCN-1 RavenRidge, not for my DCE-11.2 Polaris11 or a
> > DCE-8.3 cik, so this should probably not cause harm to the increased
> > precision modes.
> >
> > Note that given the hardware and USB-C/DP-HDMI adapters i have, I only
> > tested this on a 2560x1440@144 Hz DP monitor with DCN-1, DCE-11.2, and
> > a 2560x1440@100 Hz HDMI monitor iirc with DCN-1, DCE-8.3, and i think
> > on a 2880x1800@60 Hz MBP Retina eDP panel with DCE-11.2. These are the
> > highest resolution/framerate monitors I have atm.I don't have access
> > to any 4k monitors, so maybe the problem is somehow specific to such
> > high resolutions? Maybe somewhere else in the code something would
> > need to be adapted? Lacking actual hw docs, my coding here is by
> > pattern matching against existing DC code, guessing and testing on my
> > limited hw samples.
> >
> > Acked-by: Mario Kleiner <[email protected]>
>
> Makes sense.
>
> Reviewed-by: Harry Wentland <[email protected]>
>
> Harry
>
> >
> > -mario
> >
> >>> ---
> >>> drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 2 +-
> >>> 1 file changed, 1 insertion(+), 1 deletion(-)
> >>>
> >>> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
> >>> index a6a67244a322e..1596f6b7fed7c 100644
> >>> --- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
> >>> +++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
> >>> @@ -1062,7 +1062,7 @@ bool resource_build_scaling_params(struct pipe_ctx *pipe_ctx)
> >>> * so use only 30 bpp on DCE_VERSION_11_0. Testing with DCE 11.2 and 8.3
> >>> * did not show such problems, so this seems to be the exception.
> >>> */
> >>> - if (plane_state->ctx->dce_version != DCE_VERSION_11_0)
> >>> + if (plane_state->ctx->dce_version > DCE_VERSION_11_0)
> >>> pipe_ctx->plane_res.scl_data.lb_params.depth = LB_PIXEL_DEPTH_36BPP;
> >>> else
> >>> pipe_ctx->plane_res.scl_data.lb_params.depth = LB_PIXEL_DEPTH_30BPP;
> >>> --
> >>> 2.32.0
> >>>
> >>> _______________________________________________
> >>> amd-gfx mailing list
> >>> [email protected]
> >>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx>