[PATCH] drm/amd/display: fix unnecessary pipe split playing NV12 1080p MPO video

Aurabindo Pillai aurabindo.pillai at amd.com
Fri Jul 8 18:56:05 UTC 2022


From: Samson Tam <Samson.Tam at amd.com>

[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 <Samson.Tam at amd.com>
---
 .../dc/dml/dcn32/display_mode_vba_32.c        | 31 ++-----------------
 1 file changed, 3 insertions(+), 28 deletions(-)

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 04b13e765a52..c6c3a9e6731a 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;
 			}
 		}
 	}
-- 
2.37.0



More information about the amd-gfx mailing list