On 2025-11-28 14:09, Melissa Wen wrote:
> 
> 
> On 27/11/2025 17:39, Harry Wentland wrote:
>>
>> On 2025-11-25 19:45, Melissa Wen wrote:
>>> The usage of DCN30 CM helper creates some unexpected shimmer points on
>>> PQ shaper TF in the steamOS HDR color pipeline. Fix it by using the same
>>> DCN10 color mgmt helper of previous hw versions to translate plane
>>> shaper func to hw format in DCN32 hw family.
>>>
>>> Signed-off-by: Melissa Wen <[email protected]>
>>> ---
>>>
>>> Hi,
>>>
>>> Commit a953cd8cac6b ("drm/amd/display: Fix MPCC 1DLUT programming")
>>> mentions some visible artifacts when using DCN10 CM helper on DCN32
>>> shaper and blend LUTs. On the other hand, using DCN30 CM helper creates
>>> some shimmer points on steamOS HDR pipeline. We didn't noticed any
>>> visible artifacts so far, but I'd like to know more about what kind of
>>> artifacts were visible at the time this helper for shaper func was
>>> switched in the afore-mentioned commit for further investigation.
>>>
>> Thanks for the debug.
>>
>> Do you have more info on the unexpected shimmer points with SteamOS?
>> Ideally a video and a description on what to look for and why it's
>> wrong, or a comparison to a GFX-transformed example that shows the
>> correct visuals?
> Hi Harry,
> 
> I took some pictures of clear unexpected scenes in HDR games.
> 
> 1. 
> https://people.igalia.com/mwen/hdr-dcn321-pics/HDR-DCN321-split-fiction-game-black-loading-bkg.jpg
> 
> Just loading Split Fiction after having turning on HDR in this game options 
> (Options > Graphics > HDR).
> We expected a black background with the Loading <icon> in the bottom right, 
> this background is full of bright spots.
> Friend pass is enough to reproduce the issue without having the game.
> 
> 2. 
> https://people.igalia.com/mwen/hdr-dcn321-pics/HDR-DCN321-god-of-war-ragnarok-menu.jpg
> 
> Colorful-bright points around the margin/corner of the God of War Ragnarok 
> game menu.
> 
> 3. God of War Ragnarok game intro:
> 
> - 
> https://people.igalia.com/mwen/hdr-dcn321-pics/HDR-DCN321-god-of-war-ragnarok-intro1.jpg
> - 
> https://people.igalia.com/mwen/hdr-dcn321-pics/HDR-DCN321-god-of-war-ragnarok-intro2.jpg
> - 
> https://people.igalia.com/mwen/hdr-dcn321-pics/HDR-DCN321-god-of-war-ragnarok-intro3.jpg
> - 
> https://people.igalia.com/mwen/hdr-dcn321-pics/HDR-DCN321-god-of-war-ragnarok-PS-logo.jpg
> 
> Same random shimmer distortions.
> I think those images are good examples, but still pending screenshot/GFX 
> examples for comparison.
> I'll take it and reply here later.
> 

Thanks, that would still be helpful, but even as-is these images
quite highlight the issue. It's more severe than I expected.

>>
>> Obviously we don't want to simply switch back to DCN10 helpers
>> without understand why, and potentially regressing other use-cases.
>> At least we should look at what the differences are between the
>> two versions of that function, and which part of the curve programming
>> causes the undesirable results.
>>
>> The original bug that was solved by that commit was a regression that
>> sent bright values in an HDR video to black or red, so basically
>> something really messed up bright PQ values. At least I suspect
>> it was a PQ HDR video. The ticket doesn't state that.
> I see. Looks like now we have somehow the same problem but in reverse (?) 
> like black values mapped into bright values (?)

Yeah, if I understand your screenshots the issue seems to happen
(mainly) with dark values?

>>
>> When looking at the diff between the two functions I notice that
>> the cm3_ version is missing the dc_fixpt_clamp_u0d10 for the
>> delta_<color>_reg assignments, toward the bottom of the function.
>> I remember I had to add that to the cm_ version since it caused
>> issues with SteamOS HDR. Can we try that on the cm3_ function?
> Yes, I remember this issue.
> 
> I've already tried the same changes from this commit 
> (https://gitlab.freedesktop.org/agd5f/linux/-/commit/27fc10d1095f) to 
> cm3_helper, but it doesn't help... probably because the commit was addressing 
> a different behaviors.
> 
> I also noticed on cm3_ they consider a different range of hw points, as in 
> this comment:
> "
>     // DCN3+ have 257 pts in lieu of no separate slope registers
>     // Prior HW had 256 base+slope pairs
> "
> 
> Can it be related to this problem?
> 

Possibly. The point distribution is one potential culprit.

How I would debug this is to look at the diff between the two
functions and try each diff one at a time to see whether one
(or two) small changes fixes this. Then look at what that change
was and what it does. That can then give us a guide on how to
properly fix it without affecting other use-cases.

The other thing to understand is why we didn't see issues with
the Color Pipeline API tests in IGT.

Harry

> Thanks,
> 
> Melissa
> 
>>
>> Cheers,
>> Harry
>>
>>> Thanks in advance,
>>>
>>> Melissa
>>>
>>>
>>>   drivers/gpu/drm/amd/display/dc/hwss/dcn32/dcn32_hwseq.c | 6 +++---
>>>   1 file changed, 3 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/display/dc/hwss/dcn32/dcn32_hwseq.c 
>>> b/drivers/gpu/drm/amd/display/dc/hwss/dcn32/dcn32_hwseq.c
>>> index bf19ba65d09a..a28560caa1c0 100644
>>> --- a/drivers/gpu/drm/amd/display/dc/hwss/dcn32/dcn32_hwseq.c
>>> +++ b/drivers/gpu/drm/amd/display/dc/hwss/dcn32/dcn32_hwseq.c
>>> @@ -501,9 +501,9 @@ bool dcn32_set_mcm_luts(
>>>           lut_params = &plane_state->in_shaper_func.pwl;
>>>       else if (plane_state->in_shaper_func.type == 
>>> TF_TYPE_DISTRIBUTED_POINTS) {
>>>           // TODO: dpp_base replace
>>> -        ASSERT(false);
>>> -        
>>> cm3_helper_translate_curve_to_hw_format(&plane_state->in_shaper_func,
>>> -                &dpp_base->shaper_params, true);
>>> +        cm_helper_translate_curve_to_hw_format(plane_state->ctx,
>>> +                               &plane_state->in_shaper_func,
>>> +                               &dpp_base->shaper_params, true);
>>>           lut_params = &dpp_base->shaper_params;
>>>       }
>>>   
> 

Reply via email to