drm/amd/display: Fix FreeSync when RGB MPO in use
authorAric Cyr <aric.cyr@amd.com>
Wed, 17 Mar 2021 17:57:49 +0000 (13:57 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 21 Apr 2021 01:40:55 +0000 (21:40 -0400)
[WHY]
We should skip programming manual trigger on non-primary planes when MPO is
enabled.

[HOW]
Implement an explicit mechanism for skipping manual trigger programming
for planes that shouldn't cause the frame to end.

Signed-off-by: Aric Cyr <aric.cyr@amd.com>
Reviewed-by: Anthony Koo <Anthony.Koo@amd.com>
Acked-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Acked-by: Krunoslav Kovac <Krunoslav.Kovac@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
drivers/gpu/drm/amd/display/dc/dc.h

index ee4970491d7b899a5292062e1910cdd944341e1a..79c652eaddb6a34814e49f65cd0f03bdfd351f6e 100644 (file)
@@ -2833,7 +2833,8 @@ static void commit_planes_for_stream(struct dc *dc,
 
                if (pipe_ctx->bottom_pipe || pipe_ctx->next_odm_pipe ||
                                !pipe_ctx->stream || pipe_ctx->stream != stream ||
-                               !pipe_ctx->plane_state->update_flags.bits.addr_update)
+                               !pipe_ctx->plane_state->update_flags.bits.addr_update ||
+                               pipe_ctx->plane_state->skip_manual_trigger)
                        continue;
 
                if (pipe_ctx->stream_res.tg->funcs->program_manual_trigger)
index 870cd7c6a38793b8f8e62d5462ce2cfc4c10b224..ed19b9b39af0ce2857c143a016394f6f62883ca1 100644 (file)
@@ -907,6 +907,8 @@ struct dc_plane_state {
 
        union surface_update_flags update_flags;
        bool flip_int_enabled;
+       bool skip_manual_trigger;
+
        /* private to DC core */
        struct dc_plane_status status;
        struct dc_context *ctx;