[Intel-gfx] [PATCH 1/2] drm: Adding rotation to drm_plane_helper_check_update

Ville Syrjälä ville.syrjala at linux.intel.com
Wed Jan 14 01:27:42 PST 2015


On Wed, Jan 14, 2015 at 10:05:53AM +0530, sonika wrote:
> 
> On Tuesday 13 January 2015 07:02 PM, Ville Syrjälä wrote:
> > On Tue, Jan 13, 2015 at 06:03:39PM +0530, Sonika Jindal wrote:
> >> Taking rotation into account while checking the plane
> >> and adjusting the sizes accordingly.
> >>
> >> Signed-off-by: Sonika Jindal <sonika.jindal at intel.com>
> >> ---
> >>   drivers/gpu/drm/drm_plane_helper.c |   79 ++++++++++++++++++++++++++++++++++--
> >>   include/drm/drm_plane_helper.h     |    3 +-
> >>   2 files changed, 77 insertions(+), 5 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/drm_plane_helper.c b/drivers/gpu/drm/drm_plane_helper.c
> >> index f24c4cf..4badd69 100644
> >> --- a/drivers/gpu/drm/drm_plane_helper.c
> >> +++ b/drivers/gpu/drm/drm_plane_helper.c
> >> @@ -138,9 +138,13 @@ int drm_plane_helper_check_update(struct drm_plane *plane,
> >>   				    int max_scale,
> >>   				    bool can_position,
> >>   				    bool can_update_disabled,
> >> -				    bool *visible)
> >> +				    bool *visible,
> >> +				    unsigned int rotation)
> >>   {
> >>   	int hscale, vscale;
> >> +	int crtc_x, crtc_y;
> >> +	unsigned int crtc_w, crtc_h;
> >> +	uint32_t src_x, src_y, src_w, src_h;
> >>   
> >>   	if (!fb) {
> >>   		*visible = false;
> >> @@ -158,9 +162,13 @@ int drm_plane_helper_check_update(struct drm_plane *plane,
> >>   		return -EINVAL;
> >>   	}
> >>   
> >> +	if (fb)
> >> +		drm_rect_rotate(src, fb->width << 16, fb->height << 16,
> >> +				rotation);
> >> +
> >>   	/* Check scaling */
> >> -	hscale = drm_rect_calc_hscale(src, dest, min_scale, max_scale);
> >> -	vscale = drm_rect_calc_vscale(src, dest, min_scale, max_scale);
> >> +	hscale = drm_rect_calc_hscale_relaxed(src, dest, min_scale, max_scale);
> >> +	vscale = drm_rect_calc_vscale_relaxed(src, dest, min_scale, max_scale);
> > This is an unrelated change. Relaxed scaling allows the the src/dest
> > rectangles to be reduced in size in order to keep the scaling ration
> > within the min/max range. I suppose we should switch to using it to
> > make the behaviour uniform across drivers, but definitely should be
> > done with a separate patch.
> Since, I added drm_rect_rotate before this, it changes the src sizes and 
> it was giving me
> Invalid scaling if we don't let the sizes to be changed using _relaxed 
> functions. I am trying this
> for 90/270 rotation.

That would indicate a bug somewhere. Pontetially the bug could be in
whatever test you're using as well.

> I can move it to a separate patch if required.

We nee to figure out why you got the error first.

-- 
Ville Syrjälä
Intel OTC


More information about the dri-devel mailing list