On 14/07/2025 19:43, Melissa Wen wrote:
On 11/07/2025 16:50, Mario Limonciello wrote:
On 7/10/2025 4:25 PM, [email protected] wrote:
From: Charlene Liu <[email protected]>
[why]
dc has some code out of sync:
dc_commit_updates_for_stream handles v1/v2/v3,
but dc_update_planes_and_stream makes v1 asic to use v2.
as a reression fix: limit clear_update_flags to dcn32 or newer asic.
regression
need to follow up that v1 asic using v2 issue.
Reviewed-by: Syed Hassan <[email protected]>
Signed-off-by: Charlene Liu <[email protected]>
Signed-off-by: Ivan Lipski <[email protected]>
There is a public issue on this regression, we should add the
following tags so it closes and backports to fix it.
Cc: [email protected]
Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4129
Fixes: 7671f62c10f2 ("drm/amd/display: Clear update flags after
update has been applied")
Just found this patch, and I suspect it causes a regression on
steamdeck (DCN 3.01), since in the past calling clear_update_flags
fixed glitches related to minimal transition. Except if there are
changes on other parts of the minimal transition machinery that avoid
the problem for some reasons.
Did you guys validate this patch in the scenario described in
https://gitlab.freedesktop.org/drm/amd/-/issues/3441#note_2508309 +
https://gitlab.freedesktop.org/drm/amd/-/issues/3441#note_2510928 ?
If not, I'll do tomorrow.
Hi,
I tested current `amd-staging-drm-next` that includes this patch on
SteamDeck/SteamOS and I see those glitches reported in [1] back.
For better context, on SteamDeck/SteamOS we use many plane color
capabilities (so it sets multiple update flags) and the glitches appear
when transitioning between 1-2 active overlay planes.
I think we should revert this patch. Another option is to include DCN
3.01 to the list of users of clear_update_flags().
Best Regards,
Melissa
[1] https://gitlab.freedesktop.org/drm/amd/-/issues/3441
Melissa
Thanks!
---
drivers/gpu/drm/amd/display/dc/core/dc.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c
b/drivers/gpu/drm/amd/display/dc/core/dc.c
index f37ed24b2430..cee45fe7cec9 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
@@ -5443,8 +5443,7 @@ bool dc_update_planes_and_stream(struct dc *dc,
else
ret = update_planes_and_stream_v2(dc, srf_updates,
surface_count, stream, stream_update);
-
- if (ret)
+ if (ret && dc->ctx->dce_version >= DCN_VERSION_3_2)
clear_update_flags(srf_updates, surface_count, stream);
return ret;
@@ -5475,7 +5474,7 @@ void dc_commit_updates_for_stream(struct dc *dc,
ret = update_planes_and_stream_v1(dc, srf_updates,
surface_count, stream,
stream_update, state);
- if (ret)
+ if (ret && dc->ctx->dce_version >= DCN_VERSION_3_2)
clear_update_flags(srf_updates, surface_count, stream);
}