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>
Tue, 30 Aug 2022 21:09:31 +0000 (17:09 -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 aeecca6..fb22c3d 100644 (file)
@@ -1094,7 +1094,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];