]> www.infradead.org Git - users/hch/misc.git/commitdiff
drm/amd/display: Incorrect Mirror Cositing
authorJesse Agate <jesse.agate@amd.com>
Fri, 13 Jun 2025 18:20:53 +0000 (14:20 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 7 Oct 2025 18:09:20 +0000 (14:09 -0400)
[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: Samson Tam <samson.tam@amd.com>
Signed-off-by: Jesse Agate <jesse.agate@amd.com>
Signed-off-by: Brendan Leder <breleder@amd.com>
Signed-off-by: Alex Hung <alex.hung@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/sspl/dc_spl.c

index 55b929ca798298a6d9f994436770a962c984c0a6..b1fb0f8a253a5f2750c83454b0f00c94379d9f1f 100644 (file)
@@ -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: