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.
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);
}