diff mbox

[09/15] drm/msm/mdp5: Use drm_mode_get_hv_timing() to populate plane clip rectangle

Message ID 20171123190502.28449-10-ville.syrjala@linux.intel.com
State Not Applicable, archived
Delegated to: Andy Gross
Headers show

Commit Message

Ville Syrjälä Nov. 23, 2017, 7:04 p.m. UTC
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

Use drm_mode_get_hv_timing() to fill out the plane clip rectangle.

Note that this replaces crtc_state->adjusted_mode usage with
crtc_state->mode. The latter is the correct choice since that's the
mode the user provided and it matches the plane crtc coordinates
the user also provided.

Once everyone agrees on this we can move the clip handling into
drm_atomic_helper_check_plane_state().

Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Rob Clark <robdclark@gmail.com>
Cc: Archit Taneja <architt@codeaurora.org>
Cc: linux-arm-msm@vger.kernel.org
Cc: freedreno@lists.freedesktop.org
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
 drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

Comments

Archit Taneja Nov. 26, 2017, 1:11 p.m. UTC | #1
On 11/24/2017 12:34 AM, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> 
> Use drm_mode_get_hv_timing() to fill out the plane clip rectangle.
> 
> Note that this replaces crtc_state->adjusted_mode usage with
> crtc_state->mode. The latter is the correct choice since that's the
> mode the user provided and it matches the plane crtc coordinates
> the user also provided.
> 
> Once everyone agrees on this we can move the clip handling into
> drm_atomic_helper_check_plane_state().

For this and the msm change in patch # 15/15:

Reviewed-by: Archit Taneja <architt@codeaurora.org>

Thanks,
Archit

> 
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Cc: Rob Clark <robdclark@gmail.com>
> Cc: Archit Taneja <architt@codeaurora.org>
> Cc: linux-arm-msm@vger.kernel.org
> Cc: freedreno@lists.freedesktop.org
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
>   drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c | 20 ++++++++++----------
>   1 file changed, 10 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c
> index ee41423baeb7..09f758e7bb1b 100644
> --- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c
> +++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c
> @@ -286,7 +286,7 @@ static int mdp5_plane_atomic_check_with_state(struct drm_crtc_state *crtc_state,
>   	uint32_t max_width, max_height;
>   	bool out_of_bounds = false;
>   	uint32_t caps = 0;
> -	struct drm_rect clip;
> +	struct drm_rect clip = {};
>   	int min_scale, max_scale;
>   	int ret;
>   
> @@ -320,13 +320,13 @@ static int mdp5_plane_atomic_check_with_state(struct drm_crtc_state *crtc_state,
>   		return -ERANGE;
>   	}
>   
> -	clip.x1 = 0;
> -	clip.y1 = 0;
> -	clip.x2 = crtc_state->adjusted_mode.hdisplay;
> -	clip.y2 = crtc_state->adjusted_mode.vdisplay;
>   	min_scale = FRAC_16_16(1, 8);
>   	max_scale = FRAC_16_16(8, 1);
>   
> +	if (crtc_state->enable)
> +		drm_mode_get_hv_timing(&crtc_state->mode,
> +				       &clip.x2, &clip.y2);
> +
>   	ret = drm_atomic_helper_check_plane_state(state, crtc_state, &clip,
>   						  min_scale, max_scale,
>   						  true, true);
> @@ -471,7 +471,7 @@ static int mdp5_plane_atomic_async_check(struct drm_plane *plane,
>   {
>   	struct mdp5_plane_state *mdp5_state = to_mdp5_plane_state(state);
>   	struct drm_crtc_state *crtc_state;
> -	struct drm_rect clip;
> +	struct drm_rect clip = {};
>   	int min_scale, max_scale;
>   	int ret;
>   
> @@ -499,13 +499,13 @@ static int mdp5_plane_atomic_async_check(struct drm_plane *plane,
>   	    plane->state->fb != state->fb)
>   		return -EINVAL;
>   
> -	clip.x1 = 0;
> -	clip.y1 = 0;
> -	clip.x2 = crtc_state->adjusted_mode.hdisplay;
> -	clip.y2 = crtc_state->adjusted_mode.vdisplay;
>   	min_scale = FRAC_16_16(1, 8);
>   	max_scale = FRAC_16_16(8, 1);
>   
> +	if (crtc_state->enable)
> +		drm_mode_get_hv_timing(&crtc_state->mode,
> +				       &clip.x2, &clip.y2);
> +
>   	ret = drm_atomic_helper_check_plane_state(state, crtc_state, &clip,
>   						  min_scale, max_scale,
>   						  true, true);
>
diff mbox

Patch

diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c
index ee41423baeb7..09f758e7bb1b 100644
--- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c
+++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c
@@ -286,7 +286,7 @@  static int mdp5_plane_atomic_check_with_state(struct drm_crtc_state *crtc_state,
 	uint32_t max_width, max_height;
 	bool out_of_bounds = false;
 	uint32_t caps = 0;
-	struct drm_rect clip;
+	struct drm_rect clip = {};
 	int min_scale, max_scale;
 	int ret;
 
@@ -320,13 +320,13 @@  static int mdp5_plane_atomic_check_with_state(struct drm_crtc_state *crtc_state,
 		return -ERANGE;
 	}
 
-	clip.x1 = 0;
-	clip.y1 = 0;
-	clip.x2 = crtc_state->adjusted_mode.hdisplay;
-	clip.y2 = crtc_state->adjusted_mode.vdisplay;
 	min_scale = FRAC_16_16(1, 8);
 	max_scale = FRAC_16_16(8, 1);
 
+	if (crtc_state->enable)
+		drm_mode_get_hv_timing(&crtc_state->mode,
+				       &clip.x2, &clip.y2);
+
 	ret = drm_atomic_helper_check_plane_state(state, crtc_state, &clip,
 						  min_scale, max_scale,
 						  true, true);
@@ -471,7 +471,7 @@  static int mdp5_plane_atomic_async_check(struct drm_plane *plane,
 {
 	struct mdp5_plane_state *mdp5_state = to_mdp5_plane_state(state);
 	struct drm_crtc_state *crtc_state;
-	struct drm_rect clip;
+	struct drm_rect clip = {};
 	int min_scale, max_scale;
 	int ret;
 
@@ -499,13 +499,13 @@  static int mdp5_plane_atomic_async_check(struct drm_plane *plane,
 	    plane->state->fb != state->fb)
 		return -EINVAL;
 
-	clip.x1 = 0;
-	clip.y1 = 0;
-	clip.x2 = crtc_state->adjusted_mode.hdisplay;
-	clip.y2 = crtc_state->adjusted_mode.vdisplay;
 	min_scale = FRAC_16_16(1, 8);
 	max_scale = FRAC_16_16(8, 1);
 
+	if (crtc_state->enable)
+		drm_mode_get_hv_timing(&crtc_state->mode,
+				       &clip.x2, &clip.y2);
+
 	ret = drm_atomic_helper_check_plane_state(state, crtc_state, &clip,
 						  min_scale, max_scale,
 						  true, true);