aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/amd/display/dc/core/dc_resource.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
index bc1b5f42a0a4..95b8dd0e53c6 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c
@@ -669,12 +669,6 @@ static void calculate_inits_and_adj_vp(struct pipe_ctx *pipe_ctx, struct view *r
669 if (pipe_ctx->plane_state->horizontal_mirror) 669 if (pipe_ctx->plane_state->horizontal_mirror)
670 flip_horz_scan_dir = !flip_horz_scan_dir; 670 flip_horz_scan_dir = !flip_horz_scan_dir;
671 671
672 /* Temp W/A for rotated displays, ignore recout_skip */
673 if (flip_vert_scan_dir)
674 recout_skip->height = 0;
675 if (flip_horz_scan_dir)
676 recout_skip->width = 0;
677
678 if (pipe_ctx->plane_state->rotation == ROTATION_ANGLE_90 || 672 if (pipe_ctx->plane_state->rotation == ROTATION_ANGLE_90 ||
679 pipe_ctx->plane_state->rotation == ROTATION_ANGLE_270) { 673 pipe_ctx->plane_state->rotation == ROTATION_ANGLE_270) {
680 rect_swap_helper(&src); 674 rect_swap_helper(&src);
@@ -738,7 +732,7 @@ static void calculate_inits_and_adj_vp(struct pipe_ctx *pipe_ctx, struct view *r
738 } 732 }
739 733
740 /* Adjust for non-0 viewport offset */ 734 /* Adjust for non-0 viewport offset */
741 if (data->viewport.x) { 735 if (data->viewport.x && !flip_horz_scan_dir) {
742 int int_part; 736 int int_part;
743 737
744 data->inits.h = dal_fixed31_32_add(data->inits.h, dal_fixed31_32_mul_int( 738 data->inits.h = dal_fixed31_32_add(data->inits.h, dal_fixed31_32_mul_int(
@@ -759,7 +753,7 @@ static void calculate_inits_and_adj_vp(struct pipe_ctx *pipe_ctx, struct view *r
759 data->inits.h = dal_fixed31_32_add_int(data->inits.h, int_part); 753 data->inits.h = dal_fixed31_32_add_int(data->inits.h, int_part);
760 } 754 }
761 755
762 if (data->viewport_c.x) { 756 if (data->viewport_c.x && !flip_horz_scan_dir) {
763 int int_part; 757 int int_part;
764 758
765 data->inits.h_c = dal_fixed31_32_add(data->inits.h_c, dal_fixed31_32_mul_int( 759 data->inits.h_c = dal_fixed31_32_add(data->inits.h_c, dal_fixed31_32_mul_int(
@@ -780,7 +774,7 @@ static void calculate_inits_and_adj_vp(struct pipe_ctx *pipe_ctx, struct view *r
780 data->inits.h_c = dal_fixed31_32_add_int(data->inits.h_c, int_part); 774 data->inits.h_c = dal_fixed31_32_add_int(data->inits.h_c, int_part);
781 } 775 }
782 776
783 if (data->viewport.y) { 777 if (data->viewport.y && !flip_vert_scan_dir) {
784 int int_part; 778 int int_part;
785 779
786 data->inits.v = dal_fixed31_32_add(data->inits.v, dal_fixed31_32_mul_int( 780 data->inits.v = dal_fixed31_32_add(data->inits.v, dal_fixed31_32_mul_int(
@@ -801,7 +795,7 @@ static void calculate_inits_and_adj_vp(struct pipe_ctx *pipe_ctx, struct view *r
801 data->inits.v = dal_fixed31_32_add_int(data->inits.v, int_part); 795 data->inits.v = dal_fixed31_32_add_int(data->inits.v, int_part);
802 } 796 }
803 797
804 if (data->viewport_c.y) { 798 if (data->viewport_c.y && !flip_vert_scan_dir) {
805 int int_part; 799 int int_part;
806 800
807 data->inits.v_c = dal_fixed31_32_add(data->inits.v_c, dal_fixed31_32_mul_int( 801 data->inits.v_c = dal_fixed31_32_add(data->inits.v_c, dal_fixed31_32_mul_int(