Message ID | 20171123190502.28449-10-ville.syrjala@linux.intel.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Delegated to: | Andy Gross |
Headers | show |
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 --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);