Blob Blame History Raw
From 3eb3e950f00598a2a33b0f7a5f6e702b866af658 Mon Sep 17 00:00:00 2001
From: Samson Tam <Samson.Tam@amd.com>
Date: Mon, 11 Apr 2022 15:38:48 -0400
Subject: drm/amd/display: fix unnecessary pipe split playing NV12 1080p MPO
 video
Git-commit: 80fb575678b488b920cd9100939b60d480101907
Patch-mainline: v6.0-rc1
References: jsc#PED-1166 jsc#PED-1168 jsc#PED-1170 jsc#PED-1218 jsc#PED-1220 jsc#PED-1222 jsc#PED-1223 jsc#PED-1225 jsc#PED-2849

[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@amd.com>
Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Patrik Jakobsson <pjakobsson@suse.de>
---
 .../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 7d536c2f4477..349e36ae9333 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.38.1