From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marius Vlad via dri-devel Subject: Re: [PATCH] drm/imx: ipuv3-plane: add zpos property Date: Sat, 16 Feb 2019 15:56:33 +0200 Message-ID: <20190216135630.GA3117@xpredator> References: <20181203094956.29833-1-p.zabel@pengutronix.de> <1550225879.4531.8.camel@pengutronix.de> Reply-To: Marius Vlad Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1074374865==" Return-path: Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by gabe.freedesktop.org (Postfix) with ESMTPS id 96F3B89A1F for ; Sat, 16 Feb 2019 13:56:39 +0000 (UTC) In-Reply-To: <1550225879.4531.8.camel@pengutronix.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Philipp Zabel Cc: Jernej Skrabec , Tomeu Vizoso , Maxime Ripard , dri-devel@lists.freedesktop.org, Peter Ujfalusi , Chris Healy , Gustavo Padovan , kernel@pengutronix.de, Marek Szyprowski List-Id: dri-devel@lists.freedesktop.org --===============1074374865== Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="BOKacYhQ+x31HxR3" Content-Disposition: inline --BOKacYhQ+x31HxR3 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi Philipp, Tested-By: Marius Vlad Thanks! On Fri, Feb 15, 2019 at 11:17:59AM +0100, Philipp Zabel wrote: > Hi, >=20 > I have added (most of) you to Cc: because I think you have either > recently or significantly touched zpos property code. Could I ask > for a review or ack of this patch from zpos point of view? >=20 > If you have tested this patch, a Tested-by: would be appreciated > as well. >=20 > regards > Philipp >=20 > On Mon, 2018-12-03 at 10:49 +0100, Philipp Zabel wrote: > > Add a zpos property to planes. Call drm_atomic_helper_check() instead of > > calling drm_atomic_helper_check_modeset() and drm_atomic_check_planes() > > manually. This effectively adds a call to drm_atoimic_normalize_zpos() Small typo. > > before checking planes. Reorder atomic update to allow changing plane > > zpos without modeset. ``, by using global alpha (of the combining unit)''? > >=20 > > Note that the initial zpos is set in ipu_plane_state_reset(). The > > initial value set in ipu_plane_init() is just for show. The zpos > > parameter of drm_plane_create_zpos_property() is ignored because > > the newly created plane do not have state yet. > >=20 > > Signed-off-by: Philipp Zabel > > --- > > drivers/gpu/drm/imx/imx-drm-core.c | 7 ++-- > > drivers/gpu/drm/imx/ipuv3-plane.c | 56 +++++++++++++++++------------- > > 2 files changed, 33 insertions(+), 30 deletions(-) > >=20 > > diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/i= mx-drm-core.c > > index 820c7e3878f0..687cfb9d410e 100644 > > --- a/drivers/gpu/drm/imx/imx-drm-core.c > > +++ b/drivers/gpu/drm/imx/imx-drm-core.c > > @@ -49,11 +49,7 @@ static int imx_drm_atomic_check(struct drm_device *d= ev, > > { > > int ret; > > =20 > > - ret =3D drm_atomic_helper_check_modeset(dev, state); > > - if (ret) > > - return ret; > > - > > - ret =3D drm_atomic_helper_check_planes(dev, state); > > + ret =3D drm_atomic_helper_check(dev, state); > > if (ret) > > return ret; > > =20 > > @@ -229,6 +225,7 @@ static int imx_drm_bind(struct device *dev) > > drm->mode_config.funcs =3D &imx_drm_mode_config_funcs; > > drm->mode_config.helper_private =3D &imx_drm_mode_config_helpers; > > drm->mode_config.allow_fb_modifiers =3D true;=20 > > + drm->mode_config.normalize_zpos =3D true; > > =20 > > drm_mode_config_init(drm); > > =20 > > diff --git a/drivers/gpu/drm/imx/ipuv3-plane.c b/drivers/gpu/drm/imx/ip= uv3-plane.c > > index d6d9ab5b33db..508ce655d638 100644 > > --- a/drivers/gpu/drm/imx/ipuv3-plane.c > > +++ b/drivers/gpu/drm/imx/ipuv3-plane.c > > @@ -273,6 +273,7 @@ static void ipu_plane_destroy(struct drm_plane *pla= ne) > > =20 > > static void ipu_plane_state_reset(struct drm_plane *plane) > > { > > + unsigned int zpos =3D (plane->type =3D=3D DRM_PLANE_TYPE_PRIMARY) ? 0= : 1; > > struct ipu_plane_state *ipu_state; > > =20 > > if (plane->state) { > > @@ -284,8 +285,11 @@ static void ipu_plane_state_reset(struct drm_plane= *plane) > > =20 > > ipu_state =3D kzalloc(sizeof(*ipu_state), GFP_KERNEL); > > =20 > > - if (ipu_state) > > + if (ipu_state) { > > __drm_atomic_helper_plane_reset(plane, &ipu_state->base); > > + ipu_state->base.zpos =3D zpos; > > + ipu_state->base.normalized_zpos =3D zpos; > > + } > > } > > =20 > > static struct drm_plane_state * > > @@ -560,6 +564,25 @@ static void ipu_plane_atomic_update(struct drm_pla= ne *plane, > > if (ipu_plane->dp_flow =3D=3D IPU_DP_FLOW_SYNC_FG) > > ipu_dp_set_window_pos(ipu_plane->dp, dst->x1, dst->y1); > > =20 > > + switch (ipu_plane->dp_flow) { > > + case IPU_DP_FLOW_SYNC_BG: > > + if (state->normalized_zpos =3D=3D 1) { > > + ipu_dp_set_global_alpha(ipu_plane->dp, > > + !fb->format->has_alpha, 0xff, > > + true); > > + } else { > > + ipu_dp_set_global_alpha(ipu_plane->dp, true, 0, true); > > + } > > + break; > > + case IPU_DP_FLOW_SYNC_FG: > > + if (state->normalized_zpos =3D=3D 1) { > > + ipu_dp_set_global_alpha(ipu_plane->dp, > > + !fb->format->has_alpha, 0xff, > > + false); > > + } > > + break; > > + } > > + > > eba =3D drm_plane_state_to_eba(state, 0); > > =20 > > /* > > @@ -596,34 +619,11 @@ static void ipu_plane_atomic_update(struct drm_pl= ane *plane, > > switch (ipu_plane->dp_flow) { > > case IPU_DP_FLOW_SYNC_BG: > > ipu_dp_setup_channel(ipu_plane->dp, ics, IPUV3_COLORSPACE_RGB); > > - ipu_dp_set_global_alpha(ipu_plane->dp, true, 0, true); > > break; > > case IPU_DP_FLOW_SYNC_FG: > > ipu_dp_setup_channel(ipu_plane->dp, ics, > > IPUV3_COLORSPACE_UNKNOWN); > > - /* Enable local alpha on partial plane */ > > - switch (fb->format->format) { > > - case DRM_FORMAT_ARGB1555: > > - case DRM_FORMAT_ABGR1555: > > - case DRM_FORMAT_RGBA5551: > > - case DRM_FORMAT_BGRA5551: > > - case DRM_FORMAT_ARGB4444: > > - case DRM_FORMAT_ARGB8888: > > - case DRM_FORMAT_ABGR8888: > > - case DRM_FORMAT_RGBA8888: > > - case DRM_FORMAT_BGRA8888: > > - case DRM_FORMAT_RGB565_A8: > > - case DRM_FORMAT_BGR565_A8: > > - case DRM_FORMAT_RGB888_A8: > > - case DRM_FORMAT_BGR888_A8: > > - case DRM_FORMAT_RGBX8888_A8: > > - case DRM_FORMAT_BGRX8888_A8: > > - ipu_dp_set_global_alpha(ipu_plane->dp, false, 0, false); > > - break; > > - default: > > - ipu_dp_set_global_alpha(ipu_plane->dp, true, 0, true); > > - break; > > - } > > + break; > > } > > =20 > > ipu_dmfc_config_wait4eot(ipu_plane->dmfc, drm_rect_width(dst)); > > @@ -826,6 +826,7 @@ struct ipu_plane *ipu_plane_init(struct drm_device = *dev, struct ipu_soc *ipu, > > { > > struct ipu_plane *ipu_plane; > > const uint64_t *modifiers =3D ipu_format_modifiers; > > + unsigned int zpos =3D (type =3D=3D DRM_PLANE_TYPE_PRIMARY) ? 0 : 1; > > int ret; > > =20 > > DRM_DEBUG_KMS("channel %d, dp flow %d, possible_crtcs=3D0x%x\n", > > @@ -856,5 +857,10 @@ struct ipu_plane *ipu_plane_init(struct drm_device= *dev, struct ipu_soc *ipu, > > =20 > > drm_plane_helper_add(&ipu_plane->base, &ipu_plane_helper_funcs); > > =20 > > + if (dp =3D=3D IPU_DP_FLOW_SYNC_BG || dp =3D=3D IPU_DP_FLOW_SYNC_FG) > > + drm_plane_create_zpos_property(&ipu_plane->base, zpos, 0, 1); > > + else > > + drm_plane_create_zpos_immutable_property(&ipu_plane->base, 0); > > + > > return ipu_plane; > > } --BOKacYhQ+x31HxR3 Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEcDKHej6x6uPk3J379jQS5glH1u8FAlxoFooACgkQ9jQS5glH 1u+bnRAAxDv4+McjgseiArRPTvsTvT+x5r8FUcI89nAoq+ZSkYxbK/3R7jzrTrLo 5PIuyUOPnBjZczlSGSnvQ9Hu2BvMYTanxOX9bIAeEmuvDN162HWamFkBz+2Lns7/ B9EmSMAQRD9kQbh/3ml+01FCUnzlsgCVjQGMPs8LA05kTSirms4tJJf7zgqFxFbs inqBfz4nG4J5CYu3XUoEDp7xYi1tXNPxMrIgRNByQDRKIxye8kyMJr8HKDC70Mry F3WU8aonFAZaYdI44k+UKIhvZennzeBFSzQpR//kY4RfFPErbhvMJ7HaK/3l4Daw 68uPXv5q7iQYhBaZOdBmyjphCWAwybkaV85jxy3sCZ99t5sf+ks9CcRwDfZeKQyk u0CkX59s1Q3+IPhzMefEJHrEPhD+lpSDtWD9KBHSj5ZgiaUg32Ts8WbZCYbSfwto WS4I6V6cN577YANrnVC+OD/SkK4KGNM/FgMz8icuxh7omRTH/QeRvKpSmLVYrrKk eCfOqtUN0TCFOO9R+doCskdUthduYW99vu2eYlQTJ1ww3sN8vUyA3nLrzVIdb9iL zums5POnbqK8+Dw/xTXtJPv5v8h/VwSNKgk0W6gIZoqNj4WIbdCnqzlefVAt1VfD 11wOhk99CrmFelzWttNYnHaByxmxSdTkpzNa6L1HGt2U2tvjcDs= =+ITH -----END PGP SIGNATURE----- --BOKacYhQ+x31HxR3-- --===============1074374865== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs --===============1074374865==--