From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Lankhorst, Maarten" Subject: Re: [v6 01/16] drm: Add Enhanced Gamma LUT precision structure Date: Wed, 27 Mar 2019 12:12:43 +0000 Message-ID: <1553688761.2524.7.camel@intel.com> References: <1552985064-11974-1-git-send-email-uma.shankar@intel.com> <1552985064-11974-2-git-send-email-uma.shankar@intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0915188149==" Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id ADAB06E0F1 for ; Wed, 27 Mar 2019 12:12:46 +0000 (UTC) In-Reply-To: <1552985064-11974-2-git-send-email-uma.shankar@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Shankar, Uma" , "intel-gfx@lists.freedesktop.org" Cc: "Syrjala, Ville" List-Id: intel-gfx@lists.freedesktop.org --===============0915188149== Content-Language: en-US Content-Type: multipart/signed; micalg=sha-1; protocol="application/x-pkcs7-signature"; boundary="=-pBtKukUZZhJz/XCTQWZl" --=-pBtKukUZZhJz/XCTQWZl Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable tis 2019-03-19 klockan 14:14 +0530 skrev Uma Shankar: > Existing LUT precision structure is having only 16 bit > precision. This is not enough for upcoming enhanced hardwares > and advance usecases like HDR processing. Hence added a new > structure with 32 bit precision values. Also added the code, > for extracting the same from values passed from userspace. >=20 > v4: Rebase >=20 > v5: Relocated the helper function to drm_color_mgmt.c. Declared > the same in a header file (Alexandru Gheorghe) >=20 > v6: Enhanced gamma lut structure to take U32.32 format as input. > This is needed for HDR usecase which require higher precision. >=20 > Signed-off-by: Uma Shankar > Reviewed-by: Alexandru Gheorghe > --- > drivers/gpu/drm/drm_color_mgmt.c | 19 +++++++++++++++++++ > include/drm/drm_color_mgmt.h | 1 + > include/uapi/drm/drm_mode.h | 15 +++++++++++++++ > 3 files changed, 35 insertions(+) >=20 > diff --git a/drivers/gpu/drm/drm_color_mgmt.c > b/drivers/gpu/drm/drm_color_mgmt.c > index d5d34d0..9dbfe1d 100644 > --- a/drivers/gpu/drm/drm_color_mgmt.c > +++ b/drivers/gpu/drm/drm_color_mgmt.c > @@ -128,6 +128,25 @@ uint32_t drm_color_lut_extract(uint32_t > user_input, uint32_t bit_precision) > } > EXPORT_SYMBOL(drm_color_lut_extract); > =20 > +/* > + * Added to accommodate enhanced LUT precision. > + * Max LUT precision is 32 bits. > + */ > +u64 drm_color_lut_extract_ext(u64 user_input, u32 bit_precision) > +{ > + u32 val =3D user_input & 0xffffffff; > + u32 max =3D 0xffffffff >> (32 - bit_precision); > + > + /* Round only if we're not using full precision. */ > + if (bit_precision < 32) { > + val +=3D 1UL << (32 - bit_precision - 1); > + val >>=3D 32 - bit_precision; > + } > + > + return ((user_input & 0xffffffff) | clamp_val(val, 0, max)); I thought the userspace precision was U32.32, so the precision here is max 64-bits? Anyway the math looks wrong for a U32.32 value, it's probably: user_input >> (64ULL - precision) > +} > +EXPORT_SYMBOL(drm_color_lut_extract_ext); > + > /** > * drm_crtc_enable_color_mgmt - enable color management properties > * @crtc: DRM CRTC > diff --git a/include/drm/drm_color_mgmt.h > b/include/drm/drm_color_mgmt.h > index d1c662d..c9d2746 100644 > --- a/include/drm/drm_color_mgmt.h > +++ b/include/drm/drm_color_mgmt.h > @@ -30,6 +30,7 @@ > struct drm_plane; > =20 > uint32_t drm_color_lut_extract(uint32_t user_input, uint32_t > bit_precision); > +u64 drm_color_lut_extract_ext(u64 user_input, u32 bit_precision); > =20 > void drm_crtc_enable_color_mgmt(struct drm_crtc *crtc, > uint degamma_lut_size, > diff --git a/include/uapi/drm/drm_mode.h > b/include/uapi/drm/drm_mode.h > index a439c2e..a0fae71 100644 > --- a/include/uapi/drm/drm_mode.h > +++ b/include/uapi/drm/drm_mode.h > @@ -630,6 +630,21 @@ struct drm_color_lut { > __u16 reserved; > }; > =20 > +/* > + * Creating 64 bit palette entries for better data > + * precision. This will be required for HDR and > + * similar color processing usecases. > + */ > +struct drm_color_lut_ext { > + /* > + * Data is U32.32 fixed point format. > + */ > + __u64 red; > + __u64 green; > + __u64 blue; > + __u64 reserved; > +}; > + > #define DRM_MODE_PAGE_FLIP_EVENT 0x01 > #define DRM_MODE_PAGE_FLIP_ASYNC 0x02 > #define DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE 0x4 --=-pBtKukUZZhJz/XCTQWZl Content-Type: application/x-pkcs7-signature; name="smime.p7s" Content-Disposition: attachment; filename="smime.p7s" Content-Transfer-Encoding: base64 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 xgO/QM5ml/P+chZnuIFCJXUE/6FcIa/59il6k7ihcAEu3CeZUAMAl88TyxByoJmmV9hSf8b9jzI0 rU0CAwEAAaOCAjkwggI1MB0GA1UdDgQWBBSl4YD7AA88PgpdAuuEDDG4Ps2iITAfBgNVHSMEGDAW gBQeaSq03Cj+RxhOIQs/vKwRL/CY9TBlBgNVHR8EXjBcMFqgWKBWhlRodHRwOi8vd3d3LmludGVs LmNvbS9yZXBvc2l0b3J5L0NSTC9JbnRlbCUyMEV4dGVybmFsJTIwQmFzaWMlMjBJc3N1aW5nJTIw Q0ElMjA0QS5jcmwwgZ8GCCsGAQUFBwEBBIGSMIGPMGkGCCsGAQUFBzAChl1odHRwOi8vd3d3Lmlu dGVsLmNvbS9yZXBvc2l0b3J5L2NlcnRpZmljYXRlcy9JbnRlbCUyMEV4dGVybmFsJTIwQmFzaWMl MjBJc3N1aW5nJTIwQ0ElMjA0QS5jcnQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLmludGVsLmNv bS8wCwYDVR0PBAQDAgeAMDwGCSsGAQQBgjcVBwQvMC0GJSsGAQQBgjcVCIbDjHWEmeVRg/2BKIWO n1OCkcAJZ4HevTmV8EMCAWQCAQkwHwYDVR0lBBgwFgYIKwYBBQUHAwQGCisGAQQBgjcKAwwwKQYJ KwYBBAGCNxUKBBwwGjAKBggrBgEFBQcDBDAMBgorBgEEAYI3CgMMMFMGA1UdEQRMMEqgKwYKKwYB BAGCNxQCA6AdDBttYWFydGVuLmxhbmtob3JzdEBpbnRlbC5jb22BG21hYXJ0ZW4ubGFua2hvcnN0 QGludGVsLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEATaztR6WZTxrtczyiSazcVhmuyca9zcLEqp7c a89HtMkaYySXsRrLxvTrycSptz0bjSF0epgcmDlqmIcE5ZIAxDudmLak1sSAzkWyzD9LOQuxJtAJ WaQ6VXVmOHvftigMHQY3xxWvBut9b3hqkHQzaN4aNxiQTeGNZdCccGxrufT5SO2TH417XUBeG6xq Ozw1exUjnPNZj9/rzxUqU8g7G2s8Yg2tiFpI6eKmP3FvzNqQLvWoXNVJ3AHUtJYaw9WeUYrnySJu swLq7RXcYsHWQGHLmq0DJuZUn2uLY7EqXz/E5qhsb6N0aXYFAaqaQdd5lA2YNWF8G0ra0f5uOhe2 EzGCAhcwggITAgEBMIGQMHkxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEUMBIGA1UEBxMLU2Fu dGEgQ2xhcmExGjAYBgNVBAoTEUludGVsIENvcnBvcmF0aW9uMSswKQYDVQQDEyJJbnRlbCBFeHRl cm5hbCBCYXNpYyBJc3N1aW5nIENBIDRBAhMzAADLlGJ3+jejVgpaAAAAAMuUMAkGBSsOAwIaBQCg XTAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xOTAzMjcxMjEyNDFa MCMGCSqGSIb3DQEJBDEWBBQvrLT3UJpY2A2lhH24QMYbk6VOSTANBgkqhkiG9w0BAQEFAASCAQBi Iib8/H9xdaf4eqcMYvGtwJX7xFKwx9OVcOZFoEBPJROpdwsZ7xJvYBXLeW+Ov0/SDp1aPxvfC6JH 2Z+m+CSSINMosN7iCzyNAO8OtCgQhSrlvzOyp04vZ0KMjy5CyhGolGYBOdzD83xFi6jEUj5epZQ1 zmNNyO7u4zwDYQoDkhT85ahHhzQDmBnZSEZW6m63Z9vrjCitUPez0Z3kWVa10i7f64uCcpQSFMeZ omKMg/aRQHoSLy/YhDb5B52aGBsQcFrcMn7epZMpnWwzC+UpcAH/8g1HTS6lxExp+f6kDwTeRD4+ 5eAsWIXV12/p+ROcqMwpdYt4cd9C/7h2z9A1AAAAAAAA --=-pBtKukUZZhJz/XCTQWZl-- --===============0915188149== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 --===============0915188149==--