]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
drm: mali-dp: Fix bug on scaling with rotation
authorAyan Halder <ayan.halder@arm.com>
Tue, 19 Dec 2017 16:20:16 +0000 (16:20 +0000)
committerLiviu Dudau <Liviu.Dudau@arm.com>
Wed, 14 Mar 2018 11:38:02 +0000 (11:38 +0000)
In the case, when the user wants to scale and rotate a layer by 90/270
degrees, the scaling engine input dimensions' parameters ie width and
height needs to be swapped with respect to the layer's input dimensions.
This means scaling engine input height should be set to layer's input
width and scaling engine input width should be set to
layer's input height.

Signed-off-by: Ayan Halder <ayan.halder@arm.com>
Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
drivers/gpu/drm/arm/malidp_crtc.c

index 904fff80917baa09bfa5cdafa2f56ee2aa4b4474..7b952559fc43628c87b6f64224f8e1d5aec3c07b 100644 (file)
@@ -288,8 +288,14 @@ static int malidp_crtc_atomic_check_scaling(struct drm_crtc *crtc,
                s->enhancer_enable = ((h_upscale_factor >> 16) >= 2 ||
                                      (v_upscale_factor >> 16) >= 2);
 
-               s->input_w = pstate->src_w >> 16;
-               s->input_h = pstate->src_h >> 16;
+               if (pstate->rotation & MALIDP_ROTATED_MASK) {
+                       s->input_w = pstate->src_h >> 16;
+                       s->input_h = pstate->src_w >> 16;
+               } else {
+                       s->input_w = pstate->src_w >> 16;
+                       s->input_h = pstate->src_h >> 16;
+               }
+
                s->output_w = pstate->crtc_w;
                s->output_h = pstate->crtc_h;