On Fri, Oct 21, 2016 at 10:22:45PM +0300, ville.syrjala@xxxxxxxxxxxxxxx wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Now that all drivers have been converted over to the per-plane rotation > property, we can just nuke the global rotation property. > > v2: Rebase due to BIT(),__builtin_ffs() & co. > Deal with superfluous code shuffling > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Reviewed-by: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> Merged up to this patch. I think it's better to land the follow-up i915 patches through drm-intel. I'll do backmerges next week anyway, you won't need to wait long. Thanks, Daniel > --- > drivers/gpu/drm/drm_atomic.c | 6 ++---- > drivers/gpu/drm/drm_blend.c | 32 ++++---------------------------- > drivers/gpu/drm/drm_fb_helper.c | 7 +------ > include/drm/drm_blend.h | 2 -- > include/drm/drm_crtc.h | 5 ----- > 5 files changed, 7 insertions(+), 45 deletions(-) > > diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c > index f81706387889..1b5a32df9a9a 100644 > --- a/drivers/gpu/drm/drm_atomic.c > +++ b/drivers/gpu/drm/drm_atomic.c > @@ -705,8 +705,7 @@ int drm_atomic_plane_set_property(struct drm_plane *plane, > state->src_w = val; > } else if (property == config->prop_src_h) { > state->src_h = val; > - } else if (property == config->rotation_property || > - property == plane->rotation_property) { > + } else if (property == plane->rotation_property) { > if (!is_power_of_2(val & DRM_ROTATE_MASK)) > return -EINVAL; > state->rotation = val; > @@ -766,8 +765,7 @@ drm_atomic_plane_get_property(struct drm_plane *plane, > *val = state->src_w; > } else if (property == config->prop_src_h) { > *val = state->src_h; > - } else if (property == config->rotation_property || > - property == plane->rotation_property) { > + } else if (property == plane->rotation_property) { > *val = state->rotation; > } else if (property == plane->zpos_property) { > *val = state->zpos; > diff --git a/drivers/gpu/drm/drm_blend.c b/drivers/gpu/drm/drm_blend.c > index e52aece30900..1f2412c7ccfd 100644 > --- a/drivers/gpu/drm/drm_blend.c > +++ b/drivers/gpu/drm/drm_blend.c > @@ -89,7 +89,7 @@ > * On top of this basic transformation additional properties can be exposed by > * the driver: > * > - * - Rotation is set up with drm_mode_create_rotation_property(). It adds a > + * - Rotation is set up with drm_plane_create_rotation_property(). It adds a > * rotation and reflection step between the source and destination rectangles. > * Without this property the rectangle is only scaled, but not rotated or > * reflected. > @@ -105,18 +105,12 @@ > */ > > /** > - * drm_mode_create_rotation_property - create a new rotation property > - * @dev: DRM device > + * drm_plane_create_rotation_property - create a new rotation property > + * @plane: drm plane > + * @rotation: initial value of the rotation property > * @supported_rotations: bitmask of supported rotations and reflections > * > * This creates a new property with the selected support for transformations. > - * The resulting property should be stored in @rotation_property in > - * &drm_mode_config. It then must be attached to each plane which supports > - * rotations using drm_object_attach_property(). > - * > - * FIXME: Probably better if the rotation property is created on each plane, > - * like the zpos property. Otherwise it's not possible to allow different > - * rotation modes on different planes. > * > * Since a rotation by 180° degress is the same as reflecting both along the x > * and the y axis the rotation property is somewhat redundant. Drivers can use > @@ -144,24 +138,6 @@ > * rotation. After reflection, the rotation is applied to the image sampled from > * the source rectangle, before scaling it to fit the destination rectangle. > */ > -struct drm_property *drm_mode_create_rotation_property(struct drm_device *dev, > - unsigned int supported_rotations) > -{ > - static const struct drm_prop_enum_list props[] = { > - { __builtin_ffs(DRM_ROTATE_0) - 1, "rotate-0" }, > - { __builtin_ffs(DRM_ROTATE_90) - 1, "rotate-90" }, > - { __builtin_ffs(DRM_ROTATE_180) - 1, "rotate-180" }, > - { __builtin_ffs(DRM_ROTATE_270) - 1, "rotate-270" }, > - { __builtin_ffs(DRM_REFLECT_X) - 1, "reflect-x" }, > - { __builtin_ffs(DRM_REFLECT_Y) - 1, "reflect-y" }, > - }; > - > - return drm_property_create_bitmask(dev, 0, "rotation", > - props, ARRAY_SIZE(props), > - supported_rotations); > -} > -EXPORT_SYMBOL(drm_mode_create_rotation_property); > - > int drm_plane_create_rotation_property(struct drm_plane *plane, > unsigned int rotation, > unsigned int supported_rotations) > diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c > index e0d428f9d1cb..83dbae0fabcf 100644 > --- a/drivers/gpu/drm/drm_fb_helper.c > +++ b/drivers/gpu/drm/drm_fb_helper.c > @@ -392,15 +392,10 @@ static int restore_fbdev_mode(struct drm_fb_helper *fb_helper) > if (plane->type != DRM_PLANE_TYPE_PRIMARY) > drm_plane_force_disable(plane); > > - if (plane->rotation_property) { > + if (plane->rotation_property) > drm_mode_plane_set_obj_prop(plane, > plane->rotation_property, > DRM_ROTATE_0); > - } else if (dev->mode_config.rotation_property) { > - drm_mode_plane_set_obj_prop(plane, > - dev->mode_config.rotation_property, > - DRM_ROTATE_0); > - } > } > > for (i = 0; i < fb_helper->crtc_count; i++) { > diff --git a/include/drm/drm_blend.h b/include/drm/drm_blend.h > index fd351924e1c5..13221cf9b3eb 100644 > --- a/include/drm/drm_blend.h > +++ b/include/drm/drm_blend.h > @@ -52,8 +52,6 @@ static inline bool drm_rotation_90_or_270(unsigned int rotation) > return rotation & (DRM_ROTATE_90 | DRM_ROTATE_270); > } > > -struct drm_property *drm_mode_create_rotation_property(struct drm_device *dev, > - unsigned int supported_rotations); > int drm_plane_create_rotation_property(struct drm_plane *plane, > unsigned int rotation, > unsigned int supported_rotations); > diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h > index 284c1b3aec10..bc860cfc67ca 100644 > --- a/include/drm/drm_crtc.h > +++ b/include/drm/drm_crtc.h > @@ -1156,11 +1156,6 @@ struct drm_mode_config { > */ > struct drm_property *plane_type_property; > /** > - * @rotation_property: Optional property for planes or CRTCs to specifiy > - * rotation. > - */ > - struct drm_property *rotation_property; > - /** > * @prop_src_x: Default atomic plane property for the plane source > * position in the connected &drm_framebuffer. > */ > -- > 2.7.4 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel