Commit d07e1426 authored by Jesse Agate's avatar Jesse Agate Committed by Alex Deucher
Browse files

drm/amd/display: Incorrect Mirror Cositing



[WHY]
hinit/vinit are incorrect in the case of mirroring.

[HOW]
Cositing sign must be flipped when image is mirrored in the vertical
or horizontal direction.

Cc: Mario Limonciello <mario.limonciello@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Reviewed-by: default avatarSamson Tam <samson.tam@amd.com>
Signed-off-by: default avatarJesse Agate <jesse.agate@amd.com>
Signed-off-by: default avatarBrendan Leder <breleder@amd.com>
Signed-off-by: default avatarAlex Hung <alex.hung@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 5949e7c4
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -641,16 +641,16 @@ static void spl_calculate_inits_and_viewports(struct spl_in *spl_in,
		/* this gives the direction of the cositing (negative will move
		 * left, right otherwise)
		 */
		int sign = 1;
		int h_sign = flip_horz_scan_dir ? -1 : 1;
		int v_sign = flip_vert_scan_dir ? -1 : 1;

		switch (spl_in->basic_in.cositing) {

		case CHROMA_COSITING_TOPLEFT:
			init_adj_h = spl_fixpt_from_fraction(sign, 4);
			init_adj_v = spl_fixpt_from_fraction(sign, 4);
			init_adj_h = spl_fixpt_from_fraction(h_sign, 4);
			init_adj_v = spl_fixpt_from_fraction(v_sign, 4);
			break;
		case CHROMA_COSITING_LEFT:
			init_adj_h = spl_fixpt_from_fraction(sign, 4);
			init_adj_h = spl_fixpt_from_fraction(h_sign, 4);
			init_adj_v = spl_fixpt_zero;
			break;
		case CHROMA_COSITING_NONE: