[PATCH v2 1/6] drm/msm/mdp5: Use per-plane rotation property
Ville Syrjälä
ville.syrjala at linux.intel.com
Mon Oct 24 10:25:32 UTC 2016
On Mon, Oct 24, 2016 at 03:52:09PM +0530, Archit Taneja wrote:
>
>
> On 10/24/2016 03:45 PM, Ville Syrjälä wrote:
> > On Mon, Oct 24, 2016 at 03:33:18PM +0530, Archit Taneja wrote:
> >> Hi Ville,
> >>
> >> On 10/22/2016 12:52 AM, ville.syrjala at linux.intel.com wrote:
> >>> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> >>>
> >>> The global mode_config.rotation_property is going away, switch over to
> >>> per-plane rotation_property.
> >>
> >>
> >> I was trying to test this on msm/drm using modetest. The 180 rotation
> >> works fine, but drm rejects reflect-x and reflect-y rotation prop
> >> values. Is this expected?
> >>
> >> I needed to make this modification to get reflect-x/y working too:
> >>
> >> diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
> >> index a747bb1..9fcc2c9 100644
> >> --- a/drivers/gpu/drm/drm_atomic.c
> >> +++ b/drivers/gpu/drm/drm_atomic.c
> >> @@ -711,7 +711,7 @@ int drm_atomic_plane_set_property(struct drm_plane *plane,
> >> state->src_h = val;
> >> } else if (property == config->rotation_property ||
> >> property == plane->rotation_property) {
> >> - if (!is_power_of_2(val & DRM_ROTATE_MASK))
> >> + if (!is_power_of_2(val & (DRM_ROTATE_MASK | DRM_REFLECT_MASK)))
> >
> > That makes no sense. You _must_ to pass one and only one rotation angle.
> > In *addition* you can pass any number of the reflection flags.
>
> Okay. Does the rotation property also include reflection flags, though?
Yes.
>
> When I dump plane properties using modetest, I get:
>
> 31 rotation:
> flags: bitmask
> values: rotate-0=0x1 rotate-180=0x4 reflect-x=0x10 reflect-y=0x20
> value: 1
>
> If I use modetest to set 0x10 or 0x20, it returns an error. I wanted to
> know if this is expected behavior or not?
It is. If you want 0 degree rotation with X reflection you have to pass
0x11.
>
> Thanks,
> Archit
>
> >
> >> return -EINVAL;
> >> state->rotation = val;
> >> } else if (property == plane->zpos_property) {
> >>
> >>
> >>
> >> Otherwise, the patches look fine to me.
> >>
> >> Thanks,
> >> Archit
> >>
> >>>
> >>> v2: Drop the BIT()
> >>>
> >>> Cc: Rob Clark <robdclark at gmail.com>
> >>> Cc: Jilai Wang <jilaiw at codeaurora.org>
> >>> Cc: Archit Taneja <architt at codeaurora.org>
> >>> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> >>> Reviewed-by: Rob Clark <robdclark at gmail.com>
> >>> ---
> >>> drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c | 14 +++++---------
> >>> 1 file changed, 5 insertions(+), 9 deletions(-)
> >>>
> >>> diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c
> >>> index 951c002b05df..2653ad893ebc 100644
> >>> --- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c
> >>> +++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c
> >>> @@ -75,15 +75,11 @@ static void mdp5_plane_install_rotation_property(struct drm_device *dev,
> >>> !(mdp5_plane->caps & MDP_PIPE_CAP_VFLIP))
> >>> return;
> >>>
> >>> - if (!dev->mode_config.rotation_property)
> >>> - dev->mode_config.rotation_property =
> >>> - drm_mode_create_rotation_property(dev,
> >>> - DRM_ROTATE_0 | DRM_REFLECT_X | DRM_REFLECT_Y);
> >>> -
> >>> - if (dev->mode_config.rotation_property)
> >>> - drm_object_attach_property(&plane->base,
> >>> - dev->mode_config.rotation_property,
> >>> - DRM_ROTATE_0);
> >>> + drm_plane_create_rotation_property(plane,
> >>> + DRM_ROTATE_0,
> >>> + DRM_ROTATE_0 |
> >>> + DRM_REFLECT_X |
> >>> + DRM_REFLECT_Y);
> >>> }
> >>>
> >>> /* helper to install properties which are common to planes and crtcs */
> >>>
> >>
> >> --
> >> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
> >> a Linux Foundation Collaborative Project
> >
>
> --
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
> a Linux Foundation Collaborative Project
--
Ville Syrjälä
Intel OTC
More information about the dri-devel
mailing list