From: Daniel Vetter <daniel@ffwll.ch>
To: sonika.jindal@intel.com
Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: [Intel-gfx] [v3 09/13] drm/i915: Add rotation property for sprites
Date: Fri, 11 Jul 2014 23:59:22 +0200 [thread overview]
Message-ID: <20140711215922.GJ17271@phenom.ffwll.local> (raw)
In-Reply-To: <1404795723-9630-10-git-send-email-sonika.jindal@intel.com>
On Tue, Jul 08, 2014 at 10:31:59AM +0530, sonika.jindal@intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Sprite planes support 180 degree rotation. The lower layers are now in
> place, so hook in the standard rotation property to expose the feature
> to the users.
>
> v2: Moving rotation_property to drm_plane
This change is wrong and I haven't figured out who suggested it. The
actual property is global (i.e. we should only have 1), but then it can be
attached to different pieces.
So here's what we need to do instead:
- Add the rotation property to dev->mode_config.
- Convert omapdrm to also store it there by moving it out of the omap
driver private structure.
- Probably better to just unconditionally set it up, but not sure.
- Adjust the fb helper code accordingly.
- Rip the omap restore rotation code in lastclose since the fb helper will
now take care of this.
I've merged the drm core parts for now but dropped the i915 implementation
and the fb helper patch again.
Thanks, Daniel
>
> Cc: dri-devel@lists.freedesktop.org
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Sonika Jindal <sonika.jindal@intel.com>
> Reviewed-by: Imre Deak <imre.deak@intel.com>
> ---
> drivers/gpu/drm/i915/intel_sprite.c | 40 ++++++++++++++++++++++++++++++++++-
> include/drm/drm_crtc.h | 1 +
> 2 files changed, 40 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c
> index cbad738..aa63027 100644
> --- a/drivers/gpu/drm/i915/intel_sprite.c
> +++ b/drivers/gpu/drm/i915/intel_sprite.c
> @@ -1202,6 +1202,29 @@ out_unlock:
> return ret;
> }
>
> +static int intel_plane_set_property(struct drm_plane *plane,
> + struct drm_property *prop,
> + uint64_t val)
> +{
> + struct intel_plane *intel_plane = to_intel_plane(plane);
> + uint64_t old_val;
> + int ret = -ENOENT;
> +
> + if (prop == plane->rotation_property) {
> + /* exactly one rotation angle please */
> + if (hweight32(val & 0xf) != 1)
> + return -EINVAL;
> +
> + old_val = intel_plane->rotation;
> + intel_plane->rotation = val;
> + ret = intel_plane_restore(plane);
> + if (ret)
> + intel_plane->rotation = old_val;
> + }
> +
> + return ret;
> +}
> +
> int intel_plane_restore(struct drm_plane *plane)
> {
> struct intel_plane *intel_plane = to_intel_plane(plane);
> @@ -1228,6 +1251,7 @@ static const struct drm_plane_funcs intel_plane_funcs = {
> .update_plane = intel_update_plane,
> .disable_plane = intel_disable_plane,
> .destroy = intel_destroy_plane,
> + .set_property = intel_plane_set_property,
> };
>
> static uint32_t ilk_plane_formats[] = {
> @@ -1338,8 +1362,22 @@ intel_plane_init(struct drm_device *dev, enum pipe pipe, int plane)
> &intel_plane_funcs,
> plane_formats, num_plane_formats,
> false);
> - if (ret)
> + if (ret) {
> kfree(intel_plane);
> + goto out;
> + }
> +
> + if (!intel_plane->base.rotation_property)
> + intel_plane->base.rotation_property =
> + drm_mode_create_rotation_property(dev,
> + BIT(DRM_ROTATE_0) |
> + BIT(DRM_ROTATE_180));
> +
> + if (intel_plane->base.rotation_property)
> + drm_object_attach_property(&intel_plane->base.base,
> + intel_plane->base.rotation_property,
> + intel_plane->rotation);
>
> + out:
> return ret;
> }
> diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
> index 08ed55e..6006c70 100644
> --- a/include/drm/drm_crtc.h
> +++ b/include/drm/drm_crtc.h
> @@ -615,6 +615,7 @@ struct drm_plane {
>
> const struct drm_plane_funcs *funcs;
>
> + struct drm_property *rotation_property;
> struct drm_object_properties properties;
>
> enum drm_plane_type type;
> --
> 1.7.10.4
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
next prev parent reply other threads:[~2014-07-11 21:59 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-08 5:01 [v3 00/13] Support for 180 degree HW rotation sonika.jindal
2014-07-08 5:01 ` [v3 01/13] drm: Move DRM_ROTATE bits out of omapdrm into drm_crtc.h sonika.jindal
2014-07-08 5:01 ` [v3 02/13] drm: Add support_bits parameter to drm_property_create_bitmask() sonika.jindal
2014-07-08 5:01 ` [v3 03/13] drm: Add drm_mode_create_rotation_property() sonika.jindal
2014-07-08 5:01 ` [v3 04/13] drm/omap: Switch omapdrm over to drm_mode_create_rotation_property() sonika.jindal
2014-07-08 5:01 ` [v3 05/13] drm: Add drm_rect rotation functions sonika.jindal
2014-07-08 5:01 ` [v3 06/13] drm: Add drm_rotation_simplify() sonika.jindal
2014-07-08 5:01 ` [v3 07/13] drm/i915: Add 180 degree sprite rotation support sonika.jindal
2014-07-08 5:01 ` [v3 08/13] drm/i915: Make intel_plane_restore() return an error sonika.jindal
2014-07-08 5:01 ` [v3 09/13] drm/i915: Add rotation property for sprites sonika.jindal
2014-07-11 21:59 ` Daniel Vetter [this message]
2014-07-14 3:57 ` Jindal, Sonika
2014-07-11 22:06 ` [Intel-gfx] " Daniel Vetter
2014-07-11 22:10 ` Daniel Vetter
2014-07-08 5:02 ` [v3 10/13] drm/i915: Add 180 degree primary plane rotation support sonika.jindal
2014-07-08 5:02 ` [v3 11/13] drm: Resetting rotation property sonika.jindal
2014-07-08 5:02 ` [v3 12/13] Documentation: drm: Removing placeholders for generic drm properties description sonika.jindal
2014-07-08 5:02 ` [v3 13/13] Documentation: drm: describing rotation property for i915 sonika.jindal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140711215922.GJ17271@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=sonika.jindal@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox