[PATCH] Revert "drm/amd/display: limit clear_update_flags to dcn32 and above"
Melissa Wen
mwen at igalia.com
Fri Jul 18 13:11:46 UTC 2025
On 18-07-2025 00:51, Matthew Schwartz wrote:
[...]
>
> Sure, going to use my Legion Go S w/ Z2 Go for this (DCN 3.1.2). All
> of these are from amd-staging-drm-next with AMD_PRIVATE_COLOR=y.
>
> DTN log from Hades II with MangoHud enabled:
> https://gist.github.com/matte-schwartz/0c290ffe99bdb4f0d7369ee8817d1145
>
> DTN log from Hades II with MangoHud disabled:
> https://gist.github.com/matte-schwartz/3e2867e192ec9742ec545d2c5dd3096a
>
> drm_info from Hades II with MangoHud enabled:
> https://gist.github.com/matte-schwartz/456684fc60f7e84173ee2f42de4b774b
>
> drm_info from Hades II with MangoHud disabled:
> https://gist.github.com/matte-schwartz/6b635fa584d033234b435667f5d2c153
>
Hey Matthew,
Thanks for the logs.
There is actually a difference between your hw and Steam Deck in terms
of pipe split.
With your hw, there is no pipe split in both scenarios. However, on
Steam Deck with MangoHud disabled, we can see the split (2 planes):
HUBP: format addr_hi width height rot mir sw_mode dcc_en
blank_en clock_en ttu_dis underflow min_ttu_vblank qos_low_wm
qos_high_wm
[ 0]: 8h f4h 1280 400 3h 0h 1bh 1
0 1 0 0h 36.562 0.000
33.854
[ 1]: 8h f4h 1280 400 3h 0h 1bh 1
0 1 0 0h 36.562 0.000
33.854
[ 2]: 8h f4h 1280 400 3h 0h 1bh 1
0 1 0 0h 36.562 0.000
33.854
[ 3]: 8h f4h 1280 400 3h 0h 1bh 1
0 1 0 0h 36.562 0.000
33.854
For completion, this is the DTN log of Steam Deck with MangoHud enabled
(3 planes, no pipe split):
HUBP: format addr_hi width height rot mir sw_mode dcc_en
blank_en clock_en ttu_dis underflow min_ttu_vblank qos_low_wm
qos_high_wm
[ 0]: 8h f4h 1280 800 3h 0h 1bh 1
0 1 0 0h 44.708 0.000
33.854
[ 1]: 0h 0h 0 0 0h 0h 0h 0
0 0 0 0h 0.000 0.000
0.000
[ 2]: 8h f4h 1280 800 3h 0h 1bh 1
0 1 0 0h 44.708 0.000
33.854
[ 3]: 8h f4h 1280 800 3h 0h 1bh 1
0 1 0 0h 44.708 0.000
33.854
I couldn't find a pipe-split policy specific for 3.1.2, but I guess it
follows the 3.1 Dynamic policy, that is the same of the Steam Deck:
drivers/gpu/drm/amd/display/dc/resource/dcn31/dcn31_resource.c:863:
.pipe_split_policy = MPC_SPLIT_DYNAMIC,
drivers/gpu/drm/amd/display/dc/resource/dcn314/dcn314_resource.c:883:
.pipe_split_policy = MPC_SPLIT_DYNAMIC,
drivers/gpu/drm/amd/display/dc/resource/dcn315/dcn315_resource.c:863:
.pipe_split_policy = MPC_SPLIT_DYNAMIC,
drivers/gpu/drm/amd/display/dc/resource/dcn316/dcn316_resource.c:858:
.pipe_split_policy = MPC_SPLIT_DYNAMIC,
I remember that we have discussed about the possibility of workaround
those glitches by avoiding pipe split (and then we would avoid the
"split" transition), right?
In short, there is a chance that you are not seeing those glitches
because there are no changes in the pipe split when transitioning
between 1-2 overlay planes in your hw, but the split happens on steam
deck for some reasons. I don't know how the driver decides whether or
not to split pipes.
That said, if AMD prefers to go with an exception for steam deck, better
if this situation is documented.
Steam Deck still needs the clear_update_flags() because it uses plane
color caps and therefore sets multiple update flags, and some glitches
appear when transitioning from 2 planes (with pipe split) to 3 planes
(no pipe split). It might be related to minimal transition machinery.
Thank you for all inputs.
Melissa
More information about the amd-gfx
mailing list