From: Jesse Agate <[email protected]>

[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 <[email protected]>
Cc: Alex Deucher <[email protected]>
Cc: [email protected]
Reviewed-by: Samson Tam <[email protected]>
Signed-off-by: Jesse Agate <[email protected]>
Signed-off-by: Brendan Leder <[email protected]>
Signed-off-by: Alex Hung <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/sspl/dc_spl.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/sspl/dc_spl.c 
b/drivers/gpu/drm/amd/display/dc/sspl/dc_spl.c
index 55b929ca7982..b1fb0f8a253a 100644
--- a/drivers/gpu/drm/amd/display/dc/sspl/dc_spl.c
+++ b/drivers/gpu/drm/amd/display/dc/sspl/dc_spl.c
@@ -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:
-- 
2.43.0

Reply via email to