drm/amd/display: ensure committing streams is seamless

[Why]
When transitioning between topologies such as multi-display to single
display ODM 2:1, pipes might not be freed before use.

[How]
In dc_commit_streams, commit an additional, minimal transition if
original transition is not seamless to ensure pipes are freed.

Reviewed-by: Alvin Lee <alvin.lee2@amd.com>
Signed-off-by: Clay King <clayking@amd.com>
Signed-off-by: Wayne Lin <wayne.lin@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Clay King
2025-07-07 13:21:30 -04:00
committed by Alex Deucher
parent 92f68f6a1b
commit ca74cc428f

View File

@@ -2399,6 +2399,18 @@ enum dc_status dc_commit_streams(struct dc *dc, struct dc_commit_streams_params
goto fail;
}
/*
* If not already seamless, make transition seamless by inserting intermediate minimal transition
*/
if (dc->hwss.is_pipe_topology_transition_seamless &&
!dc->hwss.is_pipe_topology_transition_seamless(dc, dc->current_state, context)) {
res = commit_minimal_transition_state(dc, context);
if (res != DC_OK) {
BREAK_TO_DEBUGGER();
goto fail;
}
}
res = dc_commit_state_no_check(dc, context);
for (i = 0; i < params->stream_count; i++) {