From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomi Valkeinen Subject: Re: [PATCH v3 3/3] drm/omapdrm: Implement gamma_lut atomic crtc property Date: Tue, 24 May 2016 15:15:46 +0300 Message-ID: <574445F2.9090003@ti.com> References: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2021264376==" Return-path: Received: from comal.ext.ti.com (comal.ext.ti.com [198.47.26.152]) by gabe.freedesktop.org (Postfix) with ESMTPS id 463626E0FB for ; Tue, 24 May 2016 12:15:54 +0000 (UTC) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jyri Sarha , dri-devel@lists.freedesktop.org Cc: peter.ujfalusi@ti.com, laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org --===============2021264376== Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="TKRD4sJV1EPn5I3htFbpmREtw54caVPiK" --TKRD4sJV1EPn5I3htFbpmREtw54caVPiK Content-Type: multipart/mixed; boundary="S6EAcnkrvJbUFroHqTUvvitMBInh6tH4V" From: Tomi Valkeinen To: Jyri Sarha , dri-devel@lists.freedesktop.org Cc: airlied@linux.ie, daniel@ffwll.ch, peter.ujfalusi@ti.com, bparrot@ti.com, laurent.pinchart@ideasonboard.com Message-ID: <574445F2.9090003@ti.com> Subject: Re: [PATCH v3 3/3] drm/omapdrm: Implement gamma_lut atomic crtc property References: In-Reply-To: --S6EAcnkrvJbUFroHqTUvvitMBInh6tH4V Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hi, On 24/05/16 12:16, Jyri Sarha wrote: > Implement gamma_lut atomic crtc property, set crtc gamma size to 256 > for all crtcs and use drm_atomic_helper_legacy_gamma_set() as > gamma_set func. The tv-out crtc has 1024 element gamma table (with > 10bit precision) in HW, but current Xorg server does not accept > anything else but 256 elements so that is used for all CRTCs. The dss > dispc API converts table of any length for HW and uses linear > interpolation in the process. >=20 > Signed-off-by: Jyri Sarha > --- > drivers/gpu/drm/omapdrm/omap_crtc.c | 20 ++++++++++++++++++++ > 1 file changed, 20 insertions(+) >=20 > diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omap= drm/omap_crtc.c > index 075f2bb..d5210fe 100644 > --- a/drivers/gpu/drm/omapdrm/omap_crtc.c > +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c > @@ -384,6 +384,15 @@ static void omap_crtc_atomic_flush(struct drm_crtc= *crtc, > =20 > WARN_ON(omap_crtc->vblank_irq.registered); > =20 > + if (crtc->state->color_mgmt_changed) { > + struct drm_color_lut *lut =3D (struct drm_color_lut *) > + crtc->state->gamma_lut->data; > + unsigned int length =3D crtc->state->gamma_lut->length / > + sizeof(*lut); > + > + dispc_mgr_set_gamma(omap_crtc->channel, lut, length); > + } > + > if (dispc_mgr_is_enabled(omap_crtc->channel)) { > =20 > DBG("%s: GO", omap_crtc->name); > @@ -460,6 +469,7 @@ static const struct drm_crtc_funcs omap_crtc_funcs = =3D { > .set_config =3D drm_atomic_helper_set_config, > .destroy =3D omap_crtc_destroy, > .page_flip =3D drm_atomic_helper_page_flip, > + .gamma_set =3D drm_atomic_helper_legacy_gamma_set, > .set_property =3D drm_atomic_helper_crtc_set_property, > .atomic_duplicate_state =3D drm_atomic_helper_crtc_duplicate_state, > .atomic_destroy_state =3D drm_atomic_helper_crtc_destroy_state, > @@ -534,6 +544,16 @@ struct drm_crtc *omap_crtc_init(struct drm_device = *dev, > =20 > drm_crtc_helper_add(crtc, &omap_crtc_helper_funcs); > =20 > + /* The dispc API adapts to what ever size, but the HW supports > + * 256 element gamma table for LCDs and 1024 element table for > + * OMAP_DSS_CHANNEL_DIGIT. X server assumes 256 element gamma > + * tables so lets use that. Size of HW gamma table can be > + * extracted with dispc_mgr_gamma_size(). If it returns 0 > + * gamma table is not supprted. > + */ > + if (dispc_mgr_gamma_size(channel)) > + drm_mode_crtc_set_gamma_size(crtc, 256); > + > omap_plane_install_properties(crtc->primary, &crtc->base); > =20 > omap_crtcs[channel] =3D omap_crtc; >=20 I think you also need to attach the GAMMA_LUT and GAMMA_LUT_SIZE properties to the crtc. Otherwise only the legacy API is available. See drm_helper_crtc_enable_color_mgmt() (we can't use that, but as an example= ). Tomi --S6EAcnkrvJbUFroHqTUvvitMBInh6tH4V-- --TKRD4sJV1EPn5I3htFbpmREtw54caVPiK Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJXREXyAAoJEPo9qoy8lh71HogP/2Ddj6uHiR0y7TXvmHJW+Xud jDY2QhbR3mhfQDYqYLswO+CgqGaJho0Et3fkfI+IdVela0iDYqYy3mjGQbs0FaHU 4XXZNd+jc2o49fcVx+mg3Kk9DYj+nKr97lCIHXP9IKnxiQUltsHKHEeIZ97t4m/N tSlDmeB6UW4WFB/jFJdUTLdR1U1kiOQ+ViP1FwPVGshUleJuwWvSXHSHmXADrpGi URiKDvTbKPDkInLoKs+V0sbiWs3W7iStB68DoDbkgpHa/IU4uNF3zIKV8/EkFhPQ GQn2kd5Yh41Iwsi1FDwEC+XlW8YhCNXnmM+7I2ivFm9kHHJKY8LQyah4qXlRFS94 kdUaJDETSTNTtFv1+bL00iAkbbmgvh8VlGk7FCBGLRcRLSpIUrpQdvGavzql/o1o rLMlcxSQSRhD9Jv5BK6KnDz0rAAUVoHZaXPXxKCDLCWyRVQiotzhF6ern1YZXaPV iZegc3an3LCH4q0h7YAF34lpKjEO/Hhe/pVEd4OypeuoDj1kQG7tTaMBGy6gf0d9 U6ZkxEHPNbWTiojd/sjqBDPMh6XtTr48SyPq+Yof7GMMUot4LnK09DiWcg0/Yt+V eezSc5z/Sggb+iZxJdmwD+cew3vcYCUHv6rSpF9s7RwmXwiYWOntJGINPDIgdrXD XLsdzle+WTi5RkTOy5dK =WTc8 -----END PGP SIGNATURE----- --TKRD4sJV1EPn5I3htFbpmREtw54caVPiK-- --===============2021264376== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== --===============2021264376==--