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


Reply via email to