drm/amd/display: Fix black flash when switching from ODM2to1 to ODMBypass
authorVladimir Stempen <vladimir.stempen@amd.com>
Fri, 19 Aug 2022 22:32:01 +0000 (18:32 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 29 Aug 2022 21:59:30 +0000 (17:59 -0400)
[Why]
On secondary display hotplug we switch primary
stream from ODM2to1 to ODMBypass mode. Current
logic will trigger disabling front end for this
stream.

[How]
We need to check if prev_odm_pipe is equal to NULL
in order to disable dangling planes in this scenario.

Reviewed-by: Ariel Bernstein <Eric.Bernstein@amd.com>
Acked-by: Brian Chang <Brian.Chang@amd.com>
Signed-off-by: Vladimir Stempen <vladimir.stempen@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc.c

index e399ed8cef08acd123e107a34cf9c89b867fef4a..b49237390ccee52a0ae07d178f977815829cb02e 100644 (file)
@@ -1097,7 +1097,8 @@ static void disable_dangling_plane(struct dc *dc, struct dc_state *context)
                                dc->current_state->stream_count != context->stream_count)
                        should_disable = true;
 
-               if (old_stream && !dc->current_state->res_ctx.pipe_ctx[i].top_pipe) {
+               if (old_stream && !dc->current_state->res_ctx.pipe_ctx[i].top_pipe &&
+                               !dc->current_state->res_ctx.pipe_ctx[i].prev_odm_pipe) {
                        struct pipe_ctx *old_pipe, *new_pipe;
 
                        old_pipe = &dc->current_state->res_ctx.pipe_ctx[i];