From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: CTM and other color related properties Date: Wed, 29 Mar 2017 12:14:20 +0300 Message-ID: <20170329091420.GR30290@intel.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id C76946E707 for ; Wed, 29 Mar 2017 09:14:31 +0000 (UTC) Content-Disposition: inline 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 Cc: "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , "Valkeinen, Tomi" List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBNYXIgMjksIDIwMTcgYXQgMTA6MjM6NTRBTSArMDMwMCwgSnlyaSBTYXJoYSB3cm90 ZToKPiBSZWZlcnJpbmcgdG8gdGhpcyBkaXNjdXNzaW9uOgo+IGh0dHBzOi8vcGF0Y2h3b3JrLmtl cm5lbC5vcmcvcGF0Y2gvOTU0NjkwNS8KPiAKPiBTaW5jZSB0aGUgZGlzY3Vzc2lvbiwgaGFzIHRo ZXJlIGJlZW4gYW55IHBsYW5uaW5nL3dvcmsgYmVlbiBkb25lIGFib3V0Cj4gdGhlIENUTTIgQVBJ Pwo+IAo+IFdlIHdvdWxkIG5lZWQgZm9yIG9tYXAgZHJtIChmb3IgRFNTNSBhbmQgRFNTNikgYSBz aW1pbGFyIG1hdHJpeCBBUEkKPiBmb3IgdHdvIHB1cnBvc2VzLiBIb3dldmVyLCBuZWl0aGVyIG9m IHRoZW0gaXMgYW4gZXhhY3QgbWF0Y2ggdG8gdGhlCj4gQ1RNIHByb3BlcnR5Lgo+IAo+IDEuIENS VEMgc3BlY2lmaWMgQ29sb3IgUGhhc2UgUm90YXRpb24gbWF0cml4IGlzIHByZXR0eSBjbG9zZSB0 byBDVE0KPiBjb25jZXB0LCBidXQgaXQgaXMgYXBwbGllZCBhZnRlciB0aGUgZ2FtbWEgY29ycmVj dGlvbi4gSG93ZXZlciwgdGhlcmUKPiBpcyBhbiBvcHRpb25hbCBzdGF0aWMgZnVsbC1yYW5nZSBv ciBsaW1pdGVkLXJhbmdlIHBvc3Qtb2Zmc2V0IHZlY3Rvcgo+IGFuZCB3aXRoIGl0IHRoZSBDVE0g Y2FuIGFsc28gYmUgdXNlZCB0byBjb252ZXJ0IHRoZSBSR0Igb3V0cHV0IHRvIGEKPiBZQ2JDciBk aXNwbGF5IG91dHB1dC4KCkhhdmluZyBhIHBvc3QtZ2FtbWEgY3NjIGlzIGRlZmludGllbHkgdGhl IHJpZ2h0IHdheSB0byBkbyBpdC4gSW4gb3VyCmNhc2Ugd2UgZG9uJ3QgaGF2ZSB0aGF0IGluIHRo ZSBjdXJyZW50IGhhcmR3YXJlIDooIEFsbCB3ZSBoYXZlIGlzCmRlZ2FtbWErY3NjK2dhbW1hLCBz byB0aGlzIGNvbXBsaWNhdGVzIHRoaW5ncyBxdWl0ZSBhIGJpdCB3aGVuIHRoZSB1c2VyCndhbnRz IHRvIGFwcGx5IGN0bSBhbmQvb3IgZ2FtbWEgYW5kIHdlIGFsc28gbmVlZCB0byB1c2UgdGhlIGNz YyBlaXRoZXIKZm9yIHJnYi0+eWNiY3Igb3IgcmdiIGZ1bGwtPmxpbWl0ZWQgcmFuZ2UgY29udmVy c2lvbi4gQVRNIHdlIGRvbid0IGRvCnljYmNyIG91dHB1dCAoYnV0IFNoYXNoYW5rIGhhcyBwbGFu cykgYW5kIGl0IGxvb2tzIGxpa2Ugb3VyIGNvZGUgZm9yCmRlYWxpbmcgd2l0aCB0aGUgcmdiIGZ1 bGwtPmxpbWl0ZWQgcmFuZ2UgY29udmVyc2lvbiBpcyB0b3RhbGx5IGJvZ3VzIGlmCnRoZXJlJ3Mg YSB1c2VyIHNwZWNpZmllZCBjdG0gb3IgZ2FtbWEuCgpTbyBJIHRoaW5rIHdoYXQgd2Ugd2FudCBp cyBhIGRlZ2FtbWEtPmNzYy0+Z2FtbWEtPmNzYyB0eXBlIG9mCnBpcGVsaW5lLCB3aGVyZSBlYWNo IGRyaXZlciBjYW4gb2J2aW91c2x5IHNlbGVjdCB3aGljaCBwYXJ0cyBvZiB0aGUKcGlwZWxpbmUg dGhleSBhY3R1YWxseSBjYW4gc3VwcG9ydC4KCj4gCj4gMi4gUGxhbmUgc3BlY2lmaWMgQ29sb3Ig U3BhY2UgQ29udmVyc2lvbiBtYXRyaXggYW5kIHByZS1vZmZzZXQgdmVjdG9yCj4gaXMgZm9yIFlV ViB0byBSR0IgY29udmVyc2lvbi4gRm9yIGN1c3RvbWl6YXRpb24gcHVycG9zZXMgd2Ugd291bGQg bGlrZQo+IHRvIGV4cG9zZSB0aGlzIDN4MyBtYXRyaXggYW5kIHRoZSAzLWVsZW1lbnQgb2Zmc2V0 IHZlY3RvciB0byB1c2VyCj4gc3BhY2UuIFNvIGluIGdlbmVyYWwgdGhpcyBpcyBhbG1vc3QgdGhl IHNhbWUgdGhpbmcgYXQgdGhlIHByZXZpb3VzLCBidXQKPiBmb3IgcmV2ZXJzZSBjb252ZXJzaW9u LgoKWWVhaCwgZm9yIHBsYW5lcyBJIHRoaW5rIHdlIHdhbnQgYSBjc2MtPmRlZ2FtbWEtPmNzYy0+ Z2FtbWEgdHlwZSBvZgpwaXBlbGluZS4gQWdhaW4gbm90IGFsbCBoYXJkd2FyZSBjYW4gZG8gaXQg YWxsIHNvIHNvbWUgb2YgaXQgd2lsbCBiZQpvcHRpb25hbC4gQW5kIG9uIGEgbG90IG9mIGhhcmR3 YXJlIHNvbWUgb2YgdGhlc2UgYXJlIHRvdGFsbHkgZml4ZWQKZnVuY3Rpb24gYmxvY2tzLCBzbyBl Zy4gZXhwb3NpbmcgYSBmdWxseSBwcm9ncmFtbWFibGUgbWF0cml4IG1heSBub3QKYWx3YXlzIG1h a2Ugc2Vuc2UuCgpXZSBkaWQgZGlzY3VzcyB0aGlzIG9uIHRoZSBsaXN0IHJlY2VudGx5OgpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9kcmktZGV2ZWwvMjAxNy1KYW51YXJ5 LzEzMTE3NS5odG1sCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL2RyaS1k ZXZlbC8yMDE3LU1hcmNoLzEzNTg1NC5odG1sCgo+IAo+IFNvIHdoZW4gYWRkaW5nIGEgQ1RNMiBw cm9wZXJ0eSBibG9iLCBJIHdvdWxkIGFsc28gdm90ZSBmb3IgYWRkaW5nCj4gcHJlLSBhbmQgcG9z dC1vZmZzZXQgdmVjdG9ycy4KCkluZGVlZC4gSSB3YXMgYWN0dWFsbHkgdGhpbmtpbmcgdGhhdCB3 b3VsZG4ndCBpdCBiZSBjb29sIGlmIHRoZSBodwphY3R1YWxseSBoYWQgYSA0eDQgbWF0cml4IHNv IHRoYXQgeW91IGNvdWxkIGRvIHRoZSB0cmFuc2xhdGlvbnMgcHVyZWx5CndpdGggdGhlIG1hdHJp eCBpdHNlbGYuIEJ1dCBJJ3ZlIG5ldmVyIGFjdHVhbGx5IHNlZW4gdGhhdCBpbiBhbnkKaGFyZHdh cmUsIHNvIGV4cG9zaW5nIHRoZSBwcmUvcG9zdCBvZmZzZXRzIHNlcGFyYXRlbHkgc2VlbXMgbGlr ZSB0aGUKYmV0dGVyIHBsYW4uCgo+IFRoZW4gYSBDU0Mgd291bGQgc2ltcGx5IGJlIGEKPiBjb21i aW5hdGlvbiBvZmYgQ1RNIGFuZCBlaXRoZXIgYSBwcmUtIG9yIHBvc3QtIG9mZnNldCB2ZWN0b3Ig b3IgbWF5YmUKPiBib3RoLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgYmxvY2sgcHJvdmlkZXMg YSBjb252ZXJzaW9uIGZyb20gUkdCIHRvCj4gWVVWLCB0aGUgb3RoZXIgd2F5IGFyb3VuZCwgb3Ig Ym90aC4KPiAKPiBUaGVuIGl0IGlzIGEgcXVlc3Rpb24gd2hldGhlciB0aGUgb2Zmc2V0IHZlY3Rv cnMgc2hvdWxkIGJlIGFic29sdXRlIG9yCj4gb3IgcmVsYXRpdmUgdG8gdGhlIGJpdCBkZXB0aCBv ZiBSR0IgY29tcG9uZW50cy4gQSByZWxhdGl2ZSwgd2l0aCBlbm91Z2gKPiBwcmVjaXNpb24sIHdv dWxkIGJlIHRoZSBtb3N0IGdlbmVyaWMgY2hvaWNlIGJ1dCBpdCB3b3VsZCBsZWF2ZSBhIGxvdCBv Zgo+IHdvcmsgdG8gdGhlIGRyaXZlciBjb2RlIGluIG1hbnkgY2FzZXMuCgpUaGUgYWN0dWFsIGRl cHRoIG9mIHRoZSBkYXRhIGdvaW5nIHRocm91Z2ggdGhlIG1hdHJpeCBpcyBoYXJkd2FyZQpkZXBl bmRhbnQgYW55d2F5LCBzbyBJIGRvbid0IHRoaW5rIGFic29sdXRlIHZhbHVlcyB3aWxsIHJlYWxs eSB3b3JrLgoKPiAKPiBGb3IgY29udmVuaWVuY2UgdGhlcmUgY291bGQgYWxzbyBiZSBhIHN0YW5k YXJkIGVudW0gZm9yIHNlbGVjdGluZwo+IGVpdGhlciBjdXN0b20gY29lZmZpY2llbnRzIG9yIHBy ZWRlZmluZWQgc3RhbmRhcmQgY29udmVyc2lvbgo+IChGdWxsLXJhbmdlLCBJVFUtUiBCVC42MDEs IGFuZCBJVFUtUiBCVC43MDkgYXQgbGVhc3QpLgo+IAo+IEluIGdlbmVyYWwgdGhlIGNvbG9yIHNw YWNlIGNvbnZlcnNpb24gYXJpdGhtZXRpYyBhcmUgZGVzY3JpYmVkIHdlbGwKPiBvbiB0aGlzIHdl YiBwYWdlOgo+IGh0dHA6Ly93d3cuZXF1YXN5cy5kZS9jb2xvcmNvbnZlcnNpb24uaHRtbAo+IAo+ IEJlc3QgcmVnYXJkcywKPiBKeXJpCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754897AbdC2JO3 (ORCPT ); Wed, 29 Mar 2017 05:14:29 -0400 Received: from mga05.intel.com ([192.55.52.43]:51633 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752720AbdC2JO1 (ORCPT ); Wed, 29 Mar 2017 05:14:27 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.36,240,1486454400"; d="scan'208";a="1128408298" Date: Wed, 29 Mar 2017 12:14:20 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Jyri Sarha Cc: "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , jani.nikula@linux.intel.com, Sean Paul , Lionel G Landwerlin , Daniel Vetter , "Valkeinen, Tomi" Subject: Re: CTM and other color related properties Message-ID: <20170329091420.GR30290@intel.com> References: MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Mar 29, 2017 at 10:23:54AM +0300, Jyri Sarha wrote: > Referring to this discussion: > https://patchwork.kernel.org/patch/9546905/ > > Since the discussion, has there been any planning/work been done about > the CTM2 API? > > We would need for omap drm (for DSS5 and DSS6) a similar matrix API > for two purposes. However, neither of them is an exact match to the > CTM property. > > 1. CRTC specific Color Phase Rotation matrix is pretty close to CTM > concept, but it is applied after the gamma correction. However, there > is an optional static full-range or limited-range post-offset vector > and with it the CTM can also be used to convert the RGB output to a > YCbCr display output. Having a post-gamma csc is defintiely the right way to do it. In our case we don't have that in the current hardware :( All we have is degamma+csc+gamma, so this complicates things quite a bit when the user wants to apply ctm and/or gamma and we also need to use the csc either for rgb->ycbcr or rgb full->limited range conversion. ATM we don't do ycbcr output (but Shashank has plans) and it looks like our code for dealing with the rgb full->limited range conversion is totally bogus if there's a user specified ctm or gamma. So I think what we want is a degamma->csc->gamma->csc type of pipeline, where each driver can obviously select which parts of the pipeline they actually can support. > > 2. Plane specific Color Space Conversion matrix and pre-offset vector > is for YUV to RGB conversion. For customization purposes we would like > to expose this 3x3 matrix and the 3-element offset vector to user > space. So in general this is almost the same thing at the previous, but > for reverse conversion. Yeah, for planes I think we want a csc->degamma->csc->gamma type of pipeline. Again not all hardware can do it all so some of it will be optional. And on a lot of hardware some of these are totally fixed function blocks, so eg. exposing a fully programmable matrix may not always make sense. We did discuss this on the list recently: https://lists.freedesktop.org/archives/dri-devel/2017-January/131175.html https://lists.freedesktop.org/archives/dri-devel/2017-March/135854.html > > So when adding a CTM2 property blob, I would also vote for adding > pre- and post-offset vectors. Indeed. I was actually thinking that wouldn't it be cool if the hw actually had a 4x4 matrix so that you could do the translations purely with the matrix itself. But I've never actually seen that in any hardware, so exposing the pre/post offsets separately seems like the better plan. > Then a CSC would simply be a > combination off CTM and either a pre- or post- offset vector or maybe > both, depending on whether the block provides a conversion from RGB to > YUV, the other way around, or both. > > Then it is a question whether the offset vectors should be absolute or > or relative to the bit depth of RGB components. A relative, with enough > precision, would be the most generic choice but it would leave a lot of > work to the driver code in many cases. The actual depth of the data going through the matrix is hardware dependant anyway, so I don't think absolute values will really work. > > For convenience there could also be a standard enum for selecting > either custom coefficients or predefined standard conversion > (Full-range, ITU-R BT.601, and ITU-R BT.709 at least). > > In general the color space conversion arithmetic are described well > on this web page: > http://www.equasys.de/colorconversion.html > > Best regards, > Jyri -- Ville Syrjälä Intel OTC