From: Ville Syrjälä <ville.syrj...@linux.intel.com>

When converting the mode hdisplay/vdisplay to primary plane src
coordinates we need to take into account the current plane
rotation.

Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
---
 drivers/gpu/drm/drm_atomic_helper.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/drm_atomic_helper.c 
b/drivers/gpu/drm/drm_atomic_helper.c
index d0d11dbf..b119a29 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -1798,8 +1798,13 @@ int __drm_atomic_helper_set_config(struct drm_mode_set 
*set,
        primary_state->crtc_w = set->mode->hdisplay;
        primary_state->src_x = set->x << 16;
        primary_state->src_y = set->y << 16;
-       primary_state->src_h = set->mode->vdisplay << 16;
-       primary_state->src_w = set->mode->hdisplay << 16;
+       if (primary_state->rotation & (BIT(DRM_ROTATE_90) | 
BIT(DRM_ROTATE_270))) {
+               primary_state->src_h = set->mode->hdisplay << 16;
+               primary_state->src_w = set->mode->vdisplay << 16;
+       } else {
+               primary_state->src_h = set->mode->vdisplay << 16;
+               primary_state->src_w = set->mode->hdisplay << 16;
+       }

 commit:
        ret = update_output_state(state, set);
-- 
2.4.9

Reply via email to