drm/amd/display: Avoid ABM when ODM combine is enabled for eDP
authorRodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Tue, 18 Oct 2022 12:28:24 +0000 (08:28 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 24 Oct 2022 18:34:47 +0000 (14:34 -0400)
ODM to combine on the eDP panel with ABM causes the color difference to
the panel since the ABM module only sets one pipe. Hence, this commit
blocks ABM in case of ODM combined on eDP.

Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Co-developed-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc.c

index b7afada..375439c 100644 (file)
@@ -1950,9 +1950,19 @@ enum dc_status dc_commit_streams(struct dc *dc,
        res = dc_commit_state_no_check(dc, context);
 
        for (i = 0; i < stream_count; i++) {
-               for (j = 0; j < context->stream_count; j++)
+               for (j = 0; j < context->stream_count; j++) {
                        if (streams[i]->stream_id == context->streams[j]->stream_id)
                                streams[i]->out.otg_offset = context->stream_status[j].primary_otg_inst;
+
+                       if (dc_is_embedded_signal(streams[i]->signal)) {
+                               struct dc_stream_status *status = dc_stream_get_status_from_state(context, streams[i]);
+
+                               if (dc->hwss.is_abm_supported)
+                                       status->is_abm_supported = dc->hwss.is_abm_supported(dc, context, streams[i]);
+                               else
+                                       status->is_abm_supported = true;
+                       }
+               }
        }
 
 fail: