All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>,
	Tomi Valkeinen <tomi.valkeinen@ti.com>,
	DRI Development <dri-devel@lists.freedesktop.org>,
	Daniel Vetter <daniel.vetter@intel.com>
Subject: Re: [PATCH] drm/omap: Rework the rotation-on-crtc hack
Date: Tue, 01 Aug 2017 13:20:59 +0300	[thread overview]
Message-ID: <2563110.xQjJWl2ggy@avalon> (raw)
In-Reply-To: <b03263d9-8bc5-8203-c097-f64369021f30@linux.intel.com>

Hi Maarten,

On Tuesday 01 Aug 2017 07:59:13 Maarten Lankhorst wrote:
> Op 31-07-17 om 17:42 schreef Daniel Vetter:
> > I want/need to rework the core property handling, and this hack is
> > getting in the way. But since it's a non-standard propety only used by
> > legacy userspace we know that this will only every be called from
> > ioctl code. And never on some other free-standing state struct, where
> > this old hack wouldn't work either.
> > 
> > v2: don't forget zorder and get_property!
> > 
> > v3: Shadow the legacy state to avoid locking issues in get_property
> > (Maarten).
> > 
> > v4: Review from Laurent
> > - Move struct omap_crtc_state into omap_crtc.c
> > - Clean up comments.
> > - Don't forget to copy the shadowed state over on duplicate.
> > 
> > v5: Don't forget to update the reset handler (Maarten).
> > 
> > Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> (v4)
> > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > Cc: Tomi Valkeinen <tomi.valkeinen@ti.com
> > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> > ---
> > 
> >  drivers/gpu/drm/omapdrm/omap_crtc.c | 109 ++++++++++++++++++++-----------
> >  1 file changed, 72 insertions(+), 37 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c
> > b/drivers/gpu/drm/omapdrm/omap_crtc.c index 14e8a7738b06..9014085c33df
> > 100644
> > --- a/drivers/gpu/drm/omapdrm/omap_crtc.c
> > +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c

[snip]

> >  static int omap_crtc_atomic_set_property(struct drm_crtc *crtc,
> >  					 struct drm_crtc_state *state,
> >  					 struct drm_property *property,
> >  					 uint64_t val)
> >  {
> > -	if (omap_crtc_is_plane_prop(crtc, property)) {
> > -		struct drm_plane_state *plane_state;
> > -		struct drm_plane *plane = crtc->primary;
> > -
> > -		/*
> > -		 * Delegate property set to the primary plane. Get the plane
> > -		 * state and set the property directly.
> > -		 */
> > -
> > -		plane_state = drm_atomic_get_plane_state(state->state, plane);
> > -		if (IS_ERR(plane_state))
> > -			return PTR_ERR(plane_state);
> > +	struct omap_drm_private *priv = crtc->dev->dev_private;
> > +	struct omap_crtc_state *omap_state = to_omap_crtc_state(state);
> > +	struct drm_plane_state *plane_state;
> > 
> > -		return drm_atomic_plane_set_property(plane, plane_state,
> > -				property, val);
> > +	/*
> > +	 * Delegate property set to the primary plane. Get the plane state and
> > +	 * set the property directly, but keep a shadow copy for the
> > +	 * atomic_get_property callback.
> > +	 */
> > +	plane_state = drm_atomic_get_plane_state(state->state, crtc->primary);
> > +	if (IS_ERR(plane_state))
> > +		return PTR_ERR(plane_state);
> > +
> > +	if (property == crtc->primary->rotation_property) {
> > +		plane_state->rotation = val;
> > +		omap_state->rotation = val;
> > +	} else if (property == priv->zorder_prop) {
> > +		plane_state->zpos = val;
> > +		omap_state->zpos = val;
> 
> With atomic we should try to always make the getprop values accurate, or
> compositors might have troubles restoring.
> 
> I would update the shadow values in omap_crtc_atomic_check through
> omap_crtc_atomic_check instead, with something like this:
> 
> +       pri_state = drm_atomic_get_new_plane_state(crtc->primary,
> state->state);
> +       if (pri_state) {
> +               struct omap_crtc_state *omap_crtc_state =
> +                       to_omap_crtc_state(state);
> +
> +               omap_crtc_state->zpos = pri_state->zpos;
> +               omap_crtc_state->rotation = pri_state->rotation;
> +       }
> 
> That way even when updating the property through the primary plane, it gets
> reflected correctly. For example when vt switching with fbdev.

Let's not make it over-complicated. This hack is only needed fo the legacy X 
OMAP modesetting driver. The CRTC zpos and rotation properties should not be 
used through the atomic API.

> > +	} else {
> > +		return -EINVAL;
> >  	}
> > 
> > -	return -EINVAL;
> > +	return 0;
> >  }

-- 
Regards,

Laurent Pinchart

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  reply	other threads:[~2017-08-01 10:20 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-25  8:01 [PATCH 0/8] acquire ctx for everyone! Daniel Vetter
2017-07-25  8:01 ` [PATCH 1/8] drm/omap: Simplify the rotation-on-crtc hack Daniel Vetter
2017-07-25  8:47   ` Maarten Lankhorst
2017-07-25  9:24     ` [Intel-gfx] " Daniel Vetter
2017-07-31 11:48       ` Laurent Pinchart
2017-07-31 11:56         ` Tomi Valkeinen
2017-07-31 10:54   ` [PATCH] drm/omap: Rework " Daniel Vetter
2017-07-31 11:57     ` Laurent Pinchart
2017-07-31 12:45   ` Daniel Vetter
2017-07-31 13:30     ` Laurent Pinchart
2017-07-31 15:42   ` Daniel Vetter
2017-08-01  5:59     ` Maarten Lankhorst
2017-08-01 10:20       ` Laurent Pinchart [this message]
2017-08-02  8:02         ` Daniel Vetter
2017-08-02 13:20           ` Maarten Lankhorst
2017-08-04  9:57             ` Tomi Valkeinen
2017-08-04 10:02               ` Daniel Vetter
2017-08-07  9:24                 ` Maarten Lankhorst
2017-08-07  9:56                 ` Maarten Lankhorst
2017-08-07 10:20                 ` [PATCH v7] " Maarten Lankhorst
2017-08-08 12:08                   ` Tomi Valkeinen
2017-07-25  8:01 ` [PATCH 2/8] drm: Don't update property values for atomic drivers Daniel Vetter
2017-07-25  8:32   ` Maarten Lankhorst
2017-07-25 12:01   ` [PATCH] " Daniel Vetter
2017-08-11 22:20   ` [PATCH 2/8] " Laurent Pinchart
2017-08-14  7:25     ` Daniel Vetter
2017-08-14 10:32       ` Laurent Pinchart
2017-08-14 14:09         ` Daniel Vetter
2017-07-25  8:01 ` [PATCH 3/8] drm: Handle properties in the core " Daniel Vetter
2017-07-25  9:36   ` Archit Taneja
2017-07-25 12:02   ` [PATCH] " Daniel Vetter
2017-07-25  8:01 ` [PATCH 4/8] drm: Nuke drm_atomic_helper_crtc_set_property Daniel Vetter
2017-07-25  9:38   ` Archit Taneja
2017-07-25 10:05   ` Philippe CORNU
2017-08-03 13:34   ` Thomas Hellstrom
2017-07-25  8:01 ` [PATCH 5/8] drm: Nuke drm_atomic_helper_plane_set_property Daniel Vetter
2017-07-25  8:01   ` Daniel Vetter
2017-07-25  8:01   ` Daniel Vetter
2017-07-25  9:38   ` Archit Taneja
2017-07-25  9:38     ` Archit Taneja
2017-07-25  9:38     ` Archit Taneja
2017-07-25 10:06   ` Philippe CORNU
2017-07-25 10:06     ` Philippe CORNU
2017-07-25 10:06     ` Philippe CORNU
2017-07-28 16:45   ` Liviu Dudau
2017-07-28 16:45     ` Liviu Dudau
2017-07-28 16:45     ` Liviu Dudau
2017-08-08 10:03   ` Vincent ABRIOU
2017-08-08 10:03     ` Vincent ABRIOU
2017-08-08 10:03     ` Vincent ABRIOU
2017-08-08 12:31   ` Laurent Pinchart
     [not found] ` <20170725080122.20548-1-daniel.vetter-/w4YWyX8dFk@public.gmane.org>
2017-07-25  8:01   ` [PATCH 6/8] drm: Nuke drm_atomic_helper_connector_set_property Daniel Vetter
     [not found]     ` <20170725080122.20548-7-daniel.vetter-/w4YWyX8dFk@public.gmane.org>
2017-07-25  9:23       ` [Intel-gfx] " Maarten Lankhorst
2017-07-25  9:26         ` Daniel Vetter
2017-08-08 10:04     ` Vincent ABRIOU
2017-07-25  8:01 ` [PATCH 7/8] drm: Nuke drm_atomic_helper_connector_dpms Daniel Vetter
2017-07-25  8:01   ` Daniel Vetter
2017-07-25  8:04   ` Neil Armstrong
2017-07-25  8:04     ` Neil Armstrong
2017-07-25  8:04   ` Neil Armstrong
2017-07-25  8:59   ` Philipp Zabel
2017-07-25  8:59     ` Philipp Zabel
2017-07-25  8:59   ` Philipp Zabel
2017-07-25  9:30   ` Archit Taneja
2017-07-25  9:30     ` Archit Taneja
2017-07-25  9:30   ` Archit Taneja
2017-07-25 10:07   ` Philippe CORNU
2017-07-25 10:07   ` Philippe CORNU
2017-07-25 10:07     ` Philippe CORNU
2017-07-25 14:01   ` Laurent Pinchart
2017-07-25 14:01   ` Laurent Pinchart
2017-07-25 14:42   ` Shawn Guo
2017-07-25 14:42   ` Shawn Guo
2017-07-25 14:42     ` Shawn Guo
2017-07-26 19:00   ` Noralf Trønnes
2017-07-26 19:00   ` Noralf Trønnes
2017-07-26 19:00     ` Noralf Trønnes
2017-08-08 10:05   ` Vincent ABRIOU
2017-08-08 10:05     ` Vincent ABRIOU
2017-08-08 10:05   ` Vincent ABRIOU
2017-07-25  8:01 ` [PATCH 8/8] drm: Nuke drm_atomic_legacy_backoff Daniel Vetter
2017-07-25  9:36   ` [Intel-gfx] " Maarten Lankhorst
2017-07-25  8:44 ` ✓ Fi.CI.BAT: success for acquire ctx for everyone! Patchwork
2017-07-25 12:05 ` ✗ Fi.CI.BAT: failure for acquire ctx for everyone! (rev3) Patchwork

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=2563110.xQjJWl2ggy@avalon \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=daniel.vetter@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=tomi.valkeinen@ti.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.