From: Samson Tam Date: Mon, 11 Apr 2022 19:38:48 +0000 (-0400) Subject: drm/amd/display: fix unnecessary pipe split playing NV12 1080p MPO video X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=80fb575678b488b920cd9100939b60d480101907;p=linux.git drm/amd/display: fix unnecessary pipe split playing NV12 1080p MPO video [Why] When playing NV12 1080p MPO video, it is pipe splitting so we see two pipes in fullscreen and four pipes in windowed mode. Pipe split is happening because we are setting MaximumMPCCombine = 1 [How] Algorithm for MaximumMPCCombine has extra conditions we do not need. Use DCN31 algorithm instead Signed-off-by: Samson Tam Reviewed-by: Rodrigo Siqueira Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c index 7d536c2f4477c..349e36ae93338 100644 --- a/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c +++ b/drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c @@ -3733,35 +3733,10 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l mode_lib->vba.ModeIsSupported = mode_lib->vba.ModeSupport[i][0] == true || mode_lib->vba.ModeSupport[i][1] == true; - if ((mode_lib->vba.ModeSupport[i][0] == false && mode_lib->vba.ModeSupport[i][1] == true) - || MPCCombineMethodAsPossible - || (MPCCombineMethodAsNeededForPStateChangeAndVoltage - && mode_lib->vba.DRAMClockChangeRequirementFinal - && (((mode_lib->vba.DRAMClockChangeSupport[i][1] == dm_dram_clock_change_vactive - || mode_lib->vba.DRAMClockChangeSupport[i][1] == - dm_dram_clock_change_vactive_w_mall_full_frame - || mode_lib->vba.DRAMClockChangeSupport[i][1] == - dm_dram_clock_change_vactive_w_mall_sub_vp) - && !(mode_lib->vba.DRAMClockChangeSupport[i][0] == dm_dram_clock_change_vactive - || mode_lib->vba.DRAMClockChangeSupport[i][0] == - dm_dram_clock_change_vactive_w_mall_full_frame - || mode_lib->vba.DRAMClockChangeSupport[i][0] == - dm_dram_clock_change_vactive_w_mall_sub_vp)) - || ((mode_lib->vba.DRAMClockChangeSupport[i][1] == dm_dram_clock_change_vblank - || mode_lib->vba.DRAMClockChangeSupport[i][1] == - dm_dram_clock_change_vblank_w_mall_full_frame - || mode_lib->vba.DRAMClockChangeSupport[i][1] == - dm_dram_clock_change_vblank_w_mall_sub_vp) - && mode_lib->vba.DRAMClockChangeSupport[i][0] == dm_dram_clock_change_unsupported))) - || (MPCCombineMethodAsNeededForPStateChangeAndVoltage && - mode_lib->vba.FCLKChangeRequirementFinal - && ((mode_lib->vba.FCLKChangeSupport[i][1] == dm_fclock_change_vactive - && mode_lib->vba.FCLKChangeSupport[i][0] != dm_fclock_change_vactive) - || (mode_lib->vba.FCLKChangeSupport[i][1] == dm_fclock_change_vblank - && mode_lib->vba.FCLKChangeSupport[i][0] == dm_fclock_change_unsupported)))) { - MaximumMPCCombine = 1; - } else { + if (mode_lib->vba.ModeSupport[i][0] == true) { MaximumMPCCombine = 0; + } else { + MaximumMPCCombine = 1; } } }