public inbox for intel-gfx@lists.freedesktop.org
 help / color / mirror / Atom feed
From: "Jindal, Sonika" <sonika.jindal@intel.com>
To: Daniel Vetter <daniel@ffwll.ch>
Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: [v3 09/13] drm/i915: Add rotation property for sprites
Date: Mon, 14 Jul 2014 09:27:10 +0530	[thread overview]
Message-ID: <53C35516.9050809@intel.com> (raw)
In-Reply-To: <20140711215922.GJ17271@phenom.ffwll.local>



On 7/12/2014 3:29 AM, Daniel Vetter wrote:
> 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.
>
Ok, I will make this property a part of mode_config and will attach that 
to drm_plane, and will post the remaining patches.
-Sonika
> 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
>

  reply	other threads:[~2014-07-14  3:57 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   ` [Intel-gfx] " Daniel Vetter
2014-07-14  3:57     ` Jindal, Sonika [this message]
2014-07-11 22:06   ` 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=53C35516.9050809@intel.com \
    --to=sonika.jindal@intel.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    /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