From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: DRM Atomic property for color-space conversion Date: Fri, 17 Mar 2017 16:09:51 +0200 Message-ID: <20170317140951.GT31595@intel.com> References: <20170131155541.GF11506@e106950-lin.cambridge.arm.com> <20170316140725.GF31595@intel.com> <0cff6bab-7593-d3d2-f3b5-71dc21669dab@intel.com> <20170316143059.GG31595@intel.com> <20170316143721.GN6268@e110455-lin.cambridge.arm.com> <20170316155501.GA25006@e106950-lin.cambridge.arm.com> <20170316173656.GI31595@intel.com> <20170317103313.GA2090@e106950-lin.cambridge.arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 867656E202 for ; Fri, 17 Mar 2017 14:09:57 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20170317103313.GA2090@e106950-lin.cambridge.arm.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Brian Starkey Cc: Local user for Liviu Dudau , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, mihail.atanassov@arm.com, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBNYXIgMTcsIDIwMTcgYXQgMTA6MzM6MTVBTSArMDAwMCwgQnJpYW4gU3RhcmtleSB3 cm90ZToKPiBIaSBWaWxsZSwKPiAKPiBPbiBUaHUsIE1hciAxNiwgMjAxNyBhdCAwNzozNjo1NlBN ICswMjAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPk9uIFRodSwgTWFyIDE2LCAyMDE3IGF0 IDA3OjA1OjEyUE0gKzAyMDAsIFNoYXJtYSwgU2hhc2hhbmsgd3JvdGU6Cj4gPj4gT24gMy8xNi8y MDE3IDU6NTUgUE0sIEJyaWFuIFN0YXJrZXkgd3JvdGU6Cj4gPj4gPiBPbiBUaHUsIE1hciAxNiwg MjAxNyBhdCAwNToxNDowN1BNICswMjAwLCBTaGFybWEgU2hhc2hhbmsgd3JvdGU6Cj4gPj4gPj4g T24gMy8xNi8yMDE3IDQ6MzcgUE0sIExvY2FsIHVzZXIgZm9yIExpdml1IER1ZGF1IHdyb3RlOgo+ ID4+ID4+PiBPbiBUaHUsIE1hciAxNiwgMjAxNyBhdCAwNDozMDo1OVBNICswMjAwLCBWaWxsZSBT eXJqw6Rsw6Qgd3JvdGU6Cj4gPj4gPj4+PiBPbiBUaHUsIE1hciAxNiwgMjAxNyBhdCAwNDoyMDoy OVBNICswMjAwLCBTaGFybWEsIFNoYXNoYW5rIHdyb3RlOgo+ID4+ID4+Pj4+IE9uIDMvMTYvMjAx NyA0OjA3IFBNLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gCj4gW3NuaXBdCj4gCj4gPj4gPj4+ Pj4+Cj4gPj4gPj4+Pj4+IFNvIHdoYXQgd2UgbWlnaHQgbmVlZCBpcyBzb21ldGhpbmcgbGlrZToK PiA+PiA+Pj4+Pj4gZW51bSBZQ0JDUl9UT19SR0JfQ1NDCj4gPj4gPj4+Pj4+ICAgKiBZQ2JDciBC VC42MDEgbGltaXRlZCB0byBSR0IgQlQuNzA5IGZ1bGwKPiA+PiA+Pj4+Pj4gICAqIFlDYkNyIEJU LjcwOSBsaW1pdGVkIHRvIFJHQiBCVC43MDkgZnVsbCA8dGhpcyB3b3VsZCBiZSB0aGUKPiA+PiA+ Pj4+Pj4gbGlrZWx5IGRlZmF1bHQgdmFsdWUgSU1PPgo+ID4+ID4+Pj4+PiAgICogWUNiQ3IgQlQu NjAxIGxpbWl0ZWQgdG8gUkdCIEJULjIwMjAgZnVsbAo+ID4+ID4+Pj4+PiAgICogWUNiQ3IgQlQu NzA5IGxpbWl0ZWQgdG8gUkdCIEJULjIwMjAgZnVsbAo+ID4+ID4+Pj4+PiAgICogWUNiQ3IgQlQu MjAyMCBsaW1pdGVkIHRvIFJHQiBCVC4yMDIwIGZ1bGwKPiA+PiA+Pj4+Pj4KPiA+PiA+Pj4+Pj4g QW5kIHRoYW5rcyB0byBCVC4yMDIwIHdlJ2xsIG5lZWQgYSBSR0ItPlJHQiBDU0MgcHJvcGVydHkg YXMgd2VsbC4KPiA+PiA+Pj4+Pj4gRWc6Cj4gPj4gPj4+Pj4+IGVudW0gUkdCX1RPX1JHQl9DU0MK PiA+PiA+Pj4+Pj4gICAqIGJ5cGFzcyAob3Igc2VwYXJhdGUgNzA5LT43MDksIDIwMjAtPjIwMjA/ KSA8dGhpcyB3b3VsZCBiZSB0aGUKPiA+PiA+Pj4+Pj4gZGVmYXVsdD4KPiA+PiA+Pj4+Pj4gICAq IFJHQiBCVC43MDkgZnVsbCB0byBSR0IgQlQuMjAyMCBmdWxsCj4gPj4gPgo+ID4+ID4gSSBsaWtl IHRoaXMgYXBwcm9hY2gsIGZyb20gYSBwb2ludCBvZiB2aWV3IG9mIGJlaW5nIGV4cGxpY2l0IGFu ZAo+ID4+ID4gZGlzY292ZXJhYmxlIGJ5IHVzZXJzcGFjZS4gSXQgYWxzbyBoYXBwZW5zIHRvIG1h cCBxdWl0ZSBuaWNlbHkgdG8gb3VyCj4gPj4gPiBoYXJkd2FyZS4uLiB3ZSBoYXZlIGEgbWF0cml4 IGJlZm9yZSBkZWdhbW1hLCBzbyB3ZSBjb3VsZCBkbyBhCj4gPj4gPiBDU0MgKyBHYW11dCBjb252 ZXJzaW9uIHRoZXJlIGluIG9uZSBnbywgd2hpY2ggaXMgYXBwYXJlbnRseSBub3QgMTAwJQo+ID4+ ID4gbWF0aGVtYXRpY2FsbHkgY29ycmVjdCwgYnV0IGluIGdlbmVyYWwgaXMgZ29vZCBlbm91Z2gu Cj4gPj4gPgo+ID4+ID4gLi4uIGhvd2V2ZXIgaGF2aW5nIHRhbGtlZCB0aGlzIG92ZXIgYSBiaXQg d2l0aCBzb21lb25lIHdobyB1bmRlcnN0YW5kcwo+ID4+ID4gdGhlIGRldGFpbCBhIGxvdCBiZXR0 ZXIgdGhhbiBtZSwgaXQgc291bmRzIGxpa2UgdGhlICJjb3JyZWN0IiB0aGluZyB0bwo+ID4+ID4g ZG8gYXMgcGVyIHRoZSBzcGVjIGlzOgo+ID4+ID4KPiA+PiA+IENTQyAtPiBERUdBTU1BIC0+IEdB TVVUCj4gPj4gPgo+ID4+ID4gZS5nLgo+ID4+ID4KPiA+PiA+IFlDYkNyIGJ0LjYwMSBsaW1pdGVk IHRvIFJHQiBidC42MDEgZnVsbCAtPiBkZWdhbW1hIC0+Cj4gPj4gPiAgICAgUkdCIGJ0LjYwMSBm dWxsIHRvIFJHQiBidC43MDkgZnVsbAo+ID4+ID4KPiA+PiA+IFNvIHRoYXQgc291bmRzIGxpa2Ug d2hhdCB3ZSBuZWVkIHRvIHN1cHBvcnQgaW4gdGhlIEFQSSwgYW5kIGFsc28KPiA+PiA+IHNvdW5k cyBtb3JlIGxpa2UgdGhlICJzZXBhcmF0ZSBwcm9wZXJ0aWVzIiBhcHByb2FjaC4KPiA+PiBJIGFn cmVlLgo+ID4+ID4KPiA+PiA+Pj4+Pj4KPiA+PiA+Pj4+Pj4gQWx0ZXJuYXRpdmVzIHdvdWxkIGlu dm9sdmUgdHdvIHByb3BlcnRpZXMgdG8gZGVmaW5lIHRoZSBpbnB1dCBhbmQKPiA+PiA+Pj4+Pj4g b3V0cHV0Cj4gPj4gPj4+Pj4+IGZyb20gdGhlIENTQyBzZXBhcmF0ZWx5LCBidXQgdGhlbiB5b3Ug bG9zZSB0aGUgY2FwYWJpbGl0eSB0byBzZWUKPiA+PiA+Pj4+Pj4gd2hpY2gKPiA+PiA+Pj4+Pj4g Y29tYmluYXRpb25zIGFyZSBhY3R1YWxseSBzdXBvb3J0ZWQuCj4gPj4gPj4+Pj4gSSB3YXMgdGhp bmtpbmcgYWJvdXQgdGhpcyB0b28sIG9yIHdvdWxkIGl0IG1ha2UgbW9yZSBzZW5zZSB0bwo+ID4+ ID4+Pj4+IGNyZWF0ZSB0d28KPiA+PiA+Pj4+PiBwcm9wZXJ0aWVzOgo+ID4+ID4+Pj4+IC0gb25l IGZvciBnYW11dCBtYXBwaW5nIChjYXNlcyBsaWtlIFJHQjcwOS0+UkdCMjAyMCkKPiA+PiA+Pj4+ PiAtIG90aGVyIG9uZSBmb3IgQ29sb3Igc3BhY2UgY29udmVyc2lvbiAoY2FzZXMgbGlsZSBZVVYg NzA5IC0+IFJHQgo+ID4+ID4+Pj4+IDcwOSkKPiA+PiA+Pj4+Pgo+ID4+ID4+Pj4+IEdhbXV0IG1h cHBpbmcgY2FuIHJlcHJlc2VudCBhbnkgb2YgdGhlIGZpeCBmdW5jdGlvbiBtYXBwaW5nLAo+ID4+ ID4+Pj4+IHdlcmVhcyBDU0MKPiA+PiA+Pj4+PiBjYW4gYnJpbmcgdXAgYW55IHByb2dyYW1tYWJs ZSBtYXRyaXgKPiA+PiA+Pj4+Pgo+ID4+ID4+Pj4+IEludGVybmFsbHkgdGhlc2UgcHJvcGVydGll cyBjYW4gdXNlIHRoZSBzYW1lIEhXIHVuaXQgb3IgZXZlbiBzYW1lCj4gPj4gPj4+Pj4gZnVuY3Rp b24uCj4gPj4gPj4+Pj4gRG9lcyBpdCBzb3VuZCBhbnkgZ29vZCA/Cj4gPj4gPgo+ID4+ID4gSXQg c2VlbXMgdG8gbWUgdGhhdCBhY3R1YWxseSB0aGUgdHdvIGFwcHJvYWNoZXMgY2FuIGJlIGNvbWJp bmVkIGludG8KPiA+PiA+IHRoZSBzYW1lIHRoaW5nOgo+ID4+ID4gICogV2UgZGVmaW5pdGVseSBu ZWVkIGEgWUNiQ3ItdG8tUkdCIGNvbnZlcnNpb24gYmVmb3JlIGRlZ2FtbWEKPiA+PiA+ICAgIChm b3IgY29udmVydGluZyBZVVYgZGF0YSB0byBSR0IsIGluIHNvbWUgZmxhdm91cikKPiA+PiA+ICAq IFdlIGRlZmluaXRlbHkgbmVlZCBhbiBSR0ItdG8tUkdCIGNvbnZlcnNpb24gYWZ0ZXIgZ2FtbWEg dG8gaGFuZGxlCj4gPj4gPiAgICA3MDkgbGF5ZXJzIGJsZW5kZWQgd2l0aCBSZWMuMjAyMC4KPiA+ PiA+IFRoZSBleGFjdCBjb252ZXJzaW9uIGVhY2ggb2YgdGhvc2UgcHJvcGVydGllcyByZXByZXNl bnRzIChDU0MgKyBnYW11dCwKPiA+PiA+IENTQyBvbmx5LCBnYW11dCBvbmx5KSBjYW4gYmUgaW1w bGljaXQgaW4gdGhlIGVudW0gbmFtZS4KPiA+PiA+Cj4gPj4gPiBGb3IgaGFyZHdhcmUgd2hpY2gg aGFzIGEgZml4ZWQtZnVuY3Rpb24gQ1NDIGJlZm9yZSBERUdBTU1BIHdpdGggYQo+ID4+ID4gbWF0 cml4IGFmdGVyIERFR0FNTUEsIEknZCBleHBlY3QgdG8gc2VlIHNvbWV0aGluZyBsaWtlIGJlbG93 LiBOb25lIG9mCj4gPj4gPiB0aGUgWUNCQ1JfVE9fUkdCX0NTQyB2YWx1ZXMgaW5jbHVkZSBhIGdh bXV0IGNvbnZlcnNpb24sIGJlY2F1c2UgdGhhdAo+ID4+ID4gaXMgaW5zdGVhZCBleHBvc2VkIHdp dGggdGhlIFJHQl9UT19SR0JfQ1NDIHByb3BlcnR5ICh3aGljaCByZXByZXNlbnRzCj4gPj4gPiB0 aGUgaGFyZHdhcmUgbWF0cml4KQo+ID4+ID4KPiA+PiA+IFlDQkNSX1RPX1JHQl9DU0MgKGJlZm9y ZSBERUdBTU1BKToKPiA+PiA+ICAgICBZQ2JDciBCVC42MDEgbGltaXRlZCB0byBSR0IgQlQuNjAx IGZ1bGwKPiA+PiA+ICAgICBZQ2JDciBCVC43MDkgbGltaXRlZCB0byBSR0IgQlQuNzA5IGZ1bGwK PiA+PiA+ICAgICBZQ2JDciBCVC4yMDIwIGxpbWl0ZWQgdG8gUkdCIEJULjIwMjAgZnVsbAo+ID4+ ID4KPiA+PiA+IFJHQl9UT19SR0JfQ1NDIChhZnRlciBERUdBTU1BKToKPiA+PiA+ICAgICBSR0Ig QlQuNjAxIGZ1bGwgdG8gUkdCIEJULjcwOSBmdWxsCj4gPj4gPiAgICAgUkdCIEJULjcwOSBmdWxs IHRvIFJHQiBCVC4yMDIwIGZ1bGwKPiA+PiA+Cj4gPj4gPgo+ID4+ID4gT24gdGhlIG90aGVyIGhh bmQsIG9uIGhhcmR3YXJlIHdoaWNoIGRvZXMgYSBDU0MgKyBHYW11dCBjb252ZXJzaW9uIGluCj4g Pj4gPiBvbmUgZ28sIGJlZm9yZSBERUdBTU1BIChsaWtlIG91cnMpLCB5b3UgbWlnaHQgaGF2ZToK PiA+PiA+Cj4gPj4gPiBZQ0JDUl9UT19SR0JfQ1NDIChiZWZvcmUgREVHQU1NQSk6Cj4gPj4gPiAg ICAgWUNiQ3IgQlQuNjAxIGxpbWl0ZWQgdG8gUkdCIEJULjYwMSBmdWxsCj4gPj4gPiAgICAgWUNi Q3IgQlQuNjAxIGxpbWl0ZWQgdG8gUkdCIEJULjcwOSBmdWxsCj4gPj4gPiAgICAgWUNiQ3IgQlQu NzA5IGxpbWl0ZWQgdG8gUkdCIEJULjcwOSBmdWxsCj4gPj4gPiAgICAgWUNiQ3IgQlQuMjAyMCBs aW1pdGVkIHRvIFJHQiBCVC4yMDIwIGZ1bGwKPiA+PiA+Cj4gPj4gPiBSR0JfVE9fUkdCX0NTQyAo YWZ0ZXIgREVHQU1NQSk6Cj4gPj4gPiAgICAgTm90IHN1cHBvcnRlZAo+ID4+ID4KPiA+PiA+IFVz ZXJzcGFjZSBjYW4gcGFyc2UgdGhlIHR3byBwcm9wZXJ0aWVzIHRvIGZpZ3VyZSBvdXQgaXRzIG9w dGlvbnMgdG8KPiA+PiA+IGdldCBmcm9tIGRlc2lyZWQgaW5wdXQgLT4gZGVzaXJlZCBvdXRwdXQu IEl0IGlzIHBlcmhhcHMgYSBsaXR0bGUKPiA+PiA+IHZlcmJvc2UsIGJ1dCBpdCdzIGRlc2NyaXB0 aXZlIGFuZCBmbGV4aWJsZS4KPiA+PiA+Cj4gPj4gU2VlbXMgdG8gYmUgYSBnb29kIGlkZWEsIFZp bGxlID8KPiA+Cj4gPkxvb2tzIHByZXR0eSBzYW5lIHRvIG1lLgo+ID4KPiA+VGhvdWdoIGhvdyB3 ZSdsbCBkbyB0aGUgZGVnYW1tYS9nYW1tYSBpcyByYXRoZXIgdW5jbGVhciBzdGlsbC4KPiA+Cj4g PkkgdGhpbmsgd2UgbWlnaHQgYmUgbG9va2luZyBhdCB0d28gdmFyaWFudHMgb2YgaGFyZHdhcmU6 Cj4gPi0gQSBmdWxseSBwcm9ncmFtbWFibGUgb25lIHdpdGggc2VwYXJhdGUgc3RhZ2VzOgo+ID4g IGNzYyAtPiBkZWdhbW1hIC0+IGdhbXV0IC0+IGdhbW1hCj4gPi0gQSB0b3RhbGx5IGZpeGVkIG9u ZSB3aXRoIGp1c3QgYSBmZXcgZGlmZmVyZW50IHZhcmlhbnRzCj4gPiAgb2YgdGhlIHBpcGVsaW5l IGJha2VkIGludG8gdGhlIGhhcmR3YXJlCj4gPgo+ID5JZiB3ZSB3YW50IHRvIGV4cG9zZSB0aGUg Z2FtbWEvZGVnYW1tYSB0byB0aGUgdXNlciwgaG93IGV4YWN0bHkgYXJlIHdlCj4gPmdvaW5nIHRv IGRvIHRoYXQgd2l0aCB0aGUgbGF0dGVyIGZvcm0gb3IgaGFyZHdhcmUuIEkgZ3Vlc3Mgd2UgY291 bGQKPiA+c3BlY2lmeSB0aGF0IGlmIHRoZSBkZWdhbW1hIHByb3BlcnR5IGlzIG5vdCBleHBvc2Vk LCB0aGVyZSB3aWxsIGJlIGFuCj4gPmltcGxpY2l0IGRlZ2FtbWEgc3RhZ2UgYmV0d2VlbiB0aGUg dHdvIGNzYyBhbmQgZ2FtdXQuIEFuZCBpZiBpdCBpcwo+ID5leHBvc2VkIHRoZSBvdXRwdXQgZnJv bSB0aGUgZmlyc3QgY3NjIGlzIG5vbi1saW5lYXIgYW5kIHRodXMgbmVlZHMKPiA+dGhlIGRlZ2Ft bWEgcHJvZ3JhbW1lZCB0byBtYWtlIGl0IHNvIGJlZm9yZSB0aGUgZ2FtdXQgbWFwcGluZy4KPiA+ Cj4gPkFuZCBwZXJoYXBzIGEgc2ltaWxhciBydWxlIGNvdWxkIHdvcmsgZm9yIHRoZSBnYW1tYTsg SWYgaXQncyBwcmVzZW50Cj4gPnRoZSBvdXRwdXQgZnJvbSB0aGUgZ2FtdXQgbWFwcGluZyBpcyBl eHBlY3RlZCB0byBiZSBsaW5lYXIsIGFuZAo+ID5vdGhlcndpc2Ugbm9uLWxpbmVhci4gTm90IHF1 aXRlIHN1cmUgYWJvdXQgdGhpcy4gSW4gZmFjdCBJIGRvbid0IHlldAo+ID5rbm93IHdoYXQgb3Vy IGhhcmR3YXJlIHdvdWxkIG91dHB1dCBmcm9tIHRoZSBlbmQgb2YgdGhlIGZpeGVkIHBpcGVsaW5l Lgo+IAo+IEkgZG9uJ3QgcmVhbGx5IGxpa2UgdGhlIGltcGxpY2l0IG5hdHVyZSBvZiB0aGF0LCBh bmQgSSBhbHNvIGRvbid0Cj4gdGhpbmsgaXQgZml0cyB3aXRoIHByYWN0aWNhbCB1c2UtY2FzZXMg LSBmb3IgaW5zdGFuY2Ugb24gY3VycmVudAo+IEFuZHJvaWQsIGJsZW5kaW5nIGlzIGFzc3VtZWQg dG8gYmUgZG9uZSB3aXRoIG5vbi1saW5lYXIgZGF0YSwgc28gYW4KPiBpbXBsaWNpdCBsaW5lYXJp c2F0aW9uIGRvZXNuJ3QgZml0IHdpdGggdGhhdC4KCkkgdGhpbmsgdGhlcmUncyBnb2luZyB0byBi ZSBhbiBpbXBsaWNpdCBsaW5lYXJpemF0aW9uIGJldHdlZW4gdGhlIGNzYwphbmQgZ2FtdXQgbWFw cGluZyBhbnl3YXkuIE90aGVyd2lzZSBpdCBqdXN0IHdvdWxkbid0IHdvcmsgY29ycmVjdGx5LgpC dXQgd2hldGhlciB0aGUgb3V0cHV0IGZyb20gdGhhdCBnYW11dCBtYXBwaW5nIGlzIGxpbmVhciBv ciBub3QgZm9yCm91ciBoYXJkd2FyZSBJIGRvbid0IGtub3cgeWV0LgoKPiBJIHRoaW5rIGl0J3Mg bXVjaCBiZXR0ZXIgdG8gbWFrZSBzdXJlIGVhY2ggZWxlbWVudCBpbiB0aGUgcGlwZWxpbmUgaXMK PiBkaXNjb3ZlcmFibGUgYW5kIGNvbmZpZ3VyYWJsZSBmcm9tIHVzZXJzcGFjZS4KPiAKPiBUaGVy ZSdzIGFsc28gdGhlIGZhY3QgdGhhdCB3ZSBhbHJlYWR5IGhhdmUgR0FNTUEvREVHQU1NQSBwcm9w ZXJ0aWVzCj4gd2l0aCBhIGRlZmluZWQgaW50ZXJmYWNlIGFuZCBzZW1hbnRpY3MuCj4gCj4gTWFs aS1EUCBmYWxscyBpbiB0aGUgImZ1bGx5IHByb2dyYW1tYWJsZSIgY2FtcCAtIHdlIGNhbiB1c2Ug YQo+IHByb2dyYW1tYWJsZSBkZS1nYW1tYSBjdXJ2ZSBpbiB0aGUgcGxhbmUgcGlwZWxpbmUsIGFu ZCBmb3IgdGhpcywgdGhlCj4gZXhpc3RpbmcgREVHQU1NQSBwcm9wZXJ0eSBpcyBhIGdvb2QgZml0 Lgo+IAo+IEZvciBub3QtcHJvZ3JhbW1hYmxlIGhhcmR3YXJlLCB3b3VsZCBhIHNlY29uZCAiREVH QU1NQV9GSVhFRCIgcHJvcGVydHkKPiBtYWtlIHNlbnNlLCB3aGljaCBpcyBhbiBlbnVtIHR5cGUg ZXhwb3Npbmcgd2hhdCBjdXJ2ZXMgYXJlIHN1cHBvcnRlZD8KPiAod2l0aCBhbmFsb2dvdXMgR0FN TUFfRklYRUQgYXMgd2VsbCkKCkhtbS4gSSBzdXBwb3NlIHdlIGNvdWxkIG1ha2UgaXQgYSBiaXQg bW9yZSBleHBsaWNpdCBsaWtlIHRoYXQuCk5vdCBzdXJlIGhvdyB3ZSdkIHNwZWNpZnkgdGhvc2Ug dGhvdWdoLiBKdXN0IEJULjcwOSwgQlQuMjAyMCwgZXRjLiBhbmQKcGVyaGFwcyBqdXN0IHNvbWV0 aGluZyBsaWtlICdHYW1tYSAyLjInIGlmIGl0J3MgYSBwdXJlIGdhbW1hIGN1cnZlPwpTb21lb25l IHdobyBpcyBtb3JlIGZhbWlsaWFyIHdpdGggdGhlIHN1YmplY3QgY291bGQgcHJvYmFibHkgcHJv cG9zZQphIGJldHRlciBuYW1pbmcgc2NoZW1lLgoKPiAKPiBEcml2ZXJzIHNob3VsZCBleHBvc2Ug b25lIG9yIHRoZSBvdGhlciAoYnV0IG5vdCBib3RoKSBmb3IgZWFjaAo+IGdhbW1hL2RlZ2FtbWEg Y29udmVyc2lvbiB0aGUgaGFyZHdhcmUgaW1wbGVtZW50cy4KPiAKPiAtQnJpYW4KPiAKPiA+Cj4g Pj4KPiA+PiAtIFNoYXNoYW5rCj4gPj4gPj4+PiBJdCdzIGNlcnRhaW5seSBwb3NzaWJsZS4gT25l IHByb2JsZW0gaXMgdGhhdCB3ZSBjYW4ndCBpbmZvcm0gdXNlcnNwYWNlCj4gPj4gPj4+PiB1cGZy b250IHdoaWNoIGNvbWJpbmF0aW9ucyBhcmUgc3VwcG9ydGVkLiBXaGV0aGVyIHRoYXQncyBhIHJl YWwKPiA+PiA+Pj4+IHByb2JsZW0KPiA+PiA+Pj4+IEknbSBub3Qgc3VyZS4gV2l0aCBhdG9taWMg dXNlcnNwYWNlIGNhbiBvZiBjb3Vyc2UgY2hlY2sgdXBmcm9udCBpZgo+ID4+ID4+Pj4gc29tZXRo aW5nIGNhbiBiZSBkb25lIG9yIG5vdCwgYnV0IHRoZSBtYWluIHByb2JsZW0gaXMgdGhlbiBjb21p bmcgdXAKPiA+PiA+Pj4+IHdpdGggYSBmYWxsYmFjayBzdHJhdGVneSB0aGF0IGRvZXNuJ3Qgc3Vj ayB0b28gYmFkbHkuCj4gPj4gPj4+Pgo+ID4+ID4KPiA+PiA+IFRoZSBhcHByb2FjaCBhYm92ZSBo ZWxwcyBsaW1pdCB0aGUgc2V0IGV4cG9zZWQgdG8gdXNlcnNwYWNlIHRvIGJlIG9ubHkKPiA+PiA+ IHRob3NlIHdoaWNoIGFyZSBzdXBwb3J0ZWQgLSBiZWNhdXNlIGRldmljZXMgd2hpY2ggZG9uJ3Qg aGF2ZSBzZXBhcmF0ZQo+ID4+ID4gaGFyZHdhcmUgZm9yIHRoZSB0d28gc3RhZ2VzIHdvbid0IGV4 cG9zZSB2YWx1ZXMgZm9yIGJvdGguCj4gPj4gPgo+ID4+ID4+Pj4gQW55d2F5cywgSSBkb24ndCB0 aGluayBJIGhhdmUgYW55IHN0cm9uZyBmYXZvcml0ZXMgaGVyZS4gV291bGQgYmUgbmljZQo+ID4+ ID4+Pj4gdG8gaGVhciB3aGF0IGV2ZXJ5b25lIGVsc2UgdGhpbmtzLgo+ID4+ID4+PiBJIGNvbmZl c3MgdG8gYSBsYWNrIG9mIGV4cGVyaWVuY2UgaW4gdGhlIHN1YmplY3QgaGVyZSwgYnV0IHdoYXQg aXMKPiA+PiA+Pj4gdGhlIG1vcmUgY29tbW9uCj4gPj4gPj4+IHJlcXVlc3QgY29taW5nIGZyb20g dXNlcnNwYWNlOiBjb252ZXJ0aW5nIFlVViA8LT4gUkdCIGJ1dCBrZWVwaW5nCj4gPj4gPj4+IHRo ZSBnYW1tdXQgbWFwcGluZwo+ID4+ID4+PiBzZXBhcmF0ZSwgb3IgWVVWIChnYW1tdXQgeCkgPC0+ IFJHQiAoZ2FtbXV0IHkpID8gSW4gb3RoZXIgd29yZHM6IEkKPiA+PiA+Pj4gY2FuIHNlZSB0aGUg dXNlZnVsbmVzcwo+ID4+ID4+PiBvZiBoYXZpbmcgYW4gZXhwbGljaXQgd2F5IG9mIGRlY29tcG9z aW5nIHRoZSBjb2xvciBtYXBwaW5nIHByb2Nlc3MKPiA+PiA+Pj4gYW5kIGNvbnRyb2wgdGhlCj4g Pj4gPj4+IHBhcmFtZXRlcnMsIGJ1dCBob3cgb2Z0ZW4gZG8gYXBwcyBvciBjb21wb3NpdG9ycyBn byB0aHJvdWdoIHRoZQo+ID4+ID4+PiB3aG9sZSBjaGFpbj8KPiA+PiA+PiBSaWdodCBub3csIG1v cmUgb3IgbGVzcyB0aGUgaW50ZXJlc3QgaXMgb24gdGhlIFJHQi0+WVVWIGNvbnZlcnNpb24KPiA+ PiA+PiBzaWRlLCBjb3ogdGlsbCBub3cgQlQgMjAyMCBnYW11dCB3YXMgbm90IGluCj4gPj4gPj4g cGljdHVyZS4gUkVDIDYwMSBhbmQgNzA5IGhhdmUgdmVyeSBjbG9zZSBnYW11dHMsIHNvIGl0IHdh cyBvayB0bwo+ID4+ID4+IGJsZW5kIGZyYW1lcyBtb3N0bHkgd2l0aG91dCBib3RoZXJpbmcgYWJv dXQKPiA+PiA+PiBnYW11dCwgYnV0IGdvaW5nIGZ3ZCwgb25lcyBSRUMgMjAyMCBjb21lcyBpbnRv IHBpY3R1cmUsIHdlIG5lZWQgdG8KPiA+PiA+PiBib3RoZXIgYWJvdXQgbWFwcGluZyBnYW11dHMg dG9vLCBlbHNlCj4gPj4gPj4gYmxlbmRpbmcgUmVjNzA5IGJ1ZmZlcnMgYW5kIFJlYzIwMjAgYnVm ZmVycyB0b2dldGhlciB3b3VsZCBjYXVzZSB2ZXJ5Cj4gPj4gPj4gdmlzaWJsZSBnYW11dCBtaXNt YXRjaC4KPiA+PiA+Pgo+ID4+ID4+IFNvIGNvbnNpZGVyaW5nIGZ1dHVyaXN0aWMgZGV2ZWxvcG1l bnRzLCBpdCBtaWdodCBiZSBvayB0byBjb25zaWRlcgo+ID4+ID4+IGJvdGguIFN0aWxsLCBhcyBW aWxsZSBtZW50aW9uZWQsIGl0IHdvdWxkIGJlIGdvb2QKPiA+PiA+PiB0byBoZWFyIGZyb20gb3Ro ZXIgdG9vLgo+ID4+ID4+Cj4gPj4gPgo+ID4+ID4gWWVhaCBJIGFncmVlIHRoYXQgd2UgZGVmaW5p dGVseSBuZWVkIHRvIGNvbnNpZGVyIGJvdGggZm9yIGFueXRoaW5nIHdlCj4gPj4gPiBjb21lIHVw IHdpdGggbm93Lgo+ID4+ID4KPiA+PiA+IENoZWVycywKPiA+PiA+IEJyaWFuCj4gPj4gPgo+ID4+ ID4+IC0gU2hhc2hhbmsKPiA+PiA+Pj4KPiA+PiA+Pj4gQmVzdCByZWdhcmRzLAo+ID4+ID4+PiBM aXZpdQo+ID4+ID4+Pgo+ID4+ID4+Pj4gLS0KPiA+PiA+Pj4+IFZpbGxlIFN5cmrDpGzDpAo+ID4+ ID4+Pj4gSW50ZWwgT1RDCj4gPj4gPj4KPiA+Cj4gPi0tIAo+ID5WaWxsZSBTeXJqw6Rsw6QKPiA+ SW50ZWwgT1RDCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mga02.intel.com ([134.134.136.20]:3955 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751023AbdCQOXI (ORCPT ); Fri, 17 Mar 2017 10:23:08 -0400 Date: Fri, 17 Mar 2017 16:09:51 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Brian Starkey Cc: "Sharma, Shashank" , Local user for Liviu Dudau , dri-devel@lists.freedesktop.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, mihail.atanassov@arm.com, "Cyr, Aric" , "Wentland, Harry" , Alex Deucher Subject: Re: DRM Atomic property for color-space conversion Message-ID: <20170317140951.GT31595@intel.com> References: <20170131155541.GF11506@e106950-lin.cambridge.arm.com> <20170316140725.GF31595@intel.com> <0cff6bab-7593-d3d2-f3b5-71dc21669dab@intel.com> <20170316143059.GG31595@intel.com> <20170316143721.GN6268@e110455-lin.cambridge.arm.com> <20170316155501.GA25006@e106950-lin.cambridge.arm.com> <20170316173656.GI31595@intel.com> <20170317103313.GA2090@e106950-lin.cambridge.arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20170317103313.GA2090@e106950-lin.cambridge.arm.com> Sender: linux-media-owner@vger.kernel.org List-ID: On Fri, Mar 17, 2017 at 10:33:15AM +0000, Brian Starkey wrote: > Hi Ville, > > On Thu, Mar 16, 2017 at 07:36:56PM +0200, Ville Syrjälä wrote: > >On Thu, Mar 16, 2017 at 07:05:12PM +0200, Sharma, Shashank wrote: > >> On 3/16/2017 5:55 PM, Brian Starkey wrote: > >> > On Thu, Mar 16, 2017 at 05:14:07PM +0200, Sharma Shashank wrote: > >> >> On 3/16/2017 4:37 PM, Local user for Liviu Dudau wrote: > >> >>> On Thu, Mar 16, 2017 at 04:30:59PM +0200, Ville Syrjälä wrote: > >> >>>> On Thu, Mar 16, 2017 at 04:20:29PM +0200, Sharma, Shashank wrote: > >> >>>>> On 3/16/2017 4:07 PM, Ville Syrjälä wrote: > > [snip] > > >> >>>>>> > >> >>>>>> So what we might need is something like: > >> >>>>>> enum YCBCR_TO_RGB_CSC > >> >>>>>> * YCbCr BT.601 limited to RGB BT.709 full > >> >>>>>> * YCbCr BT.709 limited to RGB BT.709 full >> >>>>>> likely default value IMO> > >> >>>>>> * YCbCr BT.601 limited to RGB BT.2020 full > >> >>>>>> * YCbCr BT.709 limited to RGB BT.2020 full > >> >>>>>> * YCbCr BT.2020 limited to RGB BT.2020 full > >> >>>>>> > >> >>>>>> And thanks to BT.2020 we'll need a RGB->RGB CSC property as well. > >> >>>>>> Eg: > >> >>>>>> enum RGB_TO_RGB_CSC > >> >>>>>> * bypass (or separate 709->709, 2020->2020?) >> >>>>>> default> > >> >>>>>> * RGB BT.709 full to RGB BT.2020 full > >> > > >> > I like this approach, from a point of view of being explicit and > >> > discoverable by userspace. It also happens to map quite nicely to our > >> > hardware... we have a matrix before degamma, so we could do a > >> > CSC + Gamut conversion there in one go, which is apparently not 100% > >> > mathematically correct, but in general is good enough. > >> > > >> > ... however having talked this over a bit with someone who understands > >> > the detail a lot better than me, it sounds like the "correct" thing to > >> > do as per the spec is: > >> > > >> > CSC -> DEGAMMA -> GAMUT > >> > > >> > e.g. > >> > > >> > YCbCr bt.601 limited to RGB bt.601 full -> degamma -> > >> > RGB bt.601 full to RGB bt.709 full > >> > > >> > So that sounds like what we need to support in the API, and also > >> > sounds more like the "separate properties" approach. > >> I agree. > >> > > >> >>>>>> > >> >>>>>> Alternatives would involve two properties to define the input and > >> >>>>>> output > >> >>>>>> from the CSC separately, but then you lose the capability to see > >> >>>>>> which > >> >>>>>> combinations are actually supoorted. > >> >>>>> I was thinking about this too, or would it make more sense to > >> >>>>> create two > >> >>>>> properties: > >> >>>>> - one for gamut mapping (cases like RGB709->RGB2020) > >> >>>>> - other one for Color space conversion (cases lile YUV 709 -> RGB > >> >>>>> 709) > >> >>>>> > >> >>>>> Gamut mapping can represent any of the fix function mapping, > >> >>>>> wereas CSC > >> >>>>> can bring up any programmable matrix > >> >>>>> > >> >>>>> Internally these properties can use the same HW unit or even same > >> >>>>> function. > >> >>>>> Does it sound any good ? > >> > > >> > It seems to me that actually the two approaches can be combined into > >> > the same thing: > >> > * We definitely need a YCbCr-to-RGB conversion before degamma > >> > (for converting YUV data to RGB, in some flavour) > >> > * We definitely need an RGB-to-RGB conversion after gamma to handle > >> > 709 layers blended with Rec.2020. > >> > The exact conversion each of those properties represents (CSC + gamut, > >> > CSC only, gamut only) can be implicit in the enum name. > >> > > >> > For hardware which has a fixed-function CSC before DEGAMMA with a > >> > matrix after DEGAMMA, I'd expect to see something like below. None of > >> > the YCBCR_TO_RGB_CSC values include a gamut conversion, because that > >> > is instead exposed with the RGB_TO_RGB_CSC property (which represents > >> > the hardware matrix) > >> > > >> > YCBCR_TO_RGB_CSC (before DEGAMMA): > >> > YCbCr BT.601 limited to RGB BT.601 full > >> > YCbCr BT.709 limited to RGB BT.709 full > >> > YCbCr BT.2020 limited to RGB BT.2020 full > >> > > >> > RGB_TO_RGB_CSC (after DEGAMMA): > >> > RGB BT.601 full to RGB BT.709 full > >> > RGB BT.709 full to RGB BT.2020 full > >> > > >> > > >> > On the other hand, on hardware which does a CSC + Gamut conversion in > >> > one go, before DEGAMMA (like ours), you might have: > >> > > >> > YCBCR_TO_RGB_CSC (before DEGAMMA): > >> > YCbCr BT.601 limited to RGB BT.601 full > >> > YCbCr BT.601 limited to RGB BT.709 full > >> > YCbCr BT.709 limited to RGB BT.709 full > >> > YCbCr BT.2020 limited to RGB BT.2020 full > >> > > >> > RGB_TO_RGB_CSC (after DEGAMMA): > >> > Not supported > >> > > >> > Userspace can parse the two properties to figure out its options to > >> > get from desired input -> desired output. It is perhaps a little > >> > verbose, but it's descriptive and flexible. > >> > > >> Seems to be a good idea, Ville ? > > > >Looks pretty sane to me. > > > >Though how we'll do the degamma/gamma is rather unclear still. > > > >I think we might be looking at two variants of hardware: > >- A fully programmable one with separate stages: > > csc -> degamma -> gamut -> gamma > >- A totally fixed one with just a few different variants > > of the pipeline baked into the hardware > > > >If we want to expose the gamma/degamma to the user, how exactly are we > >going to do that with the latter form or hardware. I guess we could > >specify that if the degamma property is not exposed, there will be an > >implicit degamma stage between the two csc and gamut. And if it is > >exposed the output from the first csc is non-linear and thus needs > >the degamma programmed to make it so before the gamut mapping. > > > >And perhaps a similar rule could work for the gamma; If it's present > >the output from the gamut mapping is expected to be linear, and > >otherwise non-linear. Not quite sure about this. In fact I don't yet > >know what our hardware would output from the end of the fixed pipeline. > > I don't really like the implicit nature of that, and I also don't > think it fits with practical use-cases - for instance on current > Android, blending is assumed to be done with non-linear data, so an > implicit linearisation doesn't fit with that. I think there's going to be an implicit linearization between the csc and gamut mapping anyway. Otherwise it just wouldn't work correctly. But whether the output from that gamut mapping is linear or not for our hardware I don't know yet. > I think it's much better to make sure each element in the pipeline is > discoverable and configurable from userspace. > > There's also the fact that we already have GAMMA/DEGAMMA properties > with a defined interface and semantics. > > Mali-DP falls in the "fully programmable" camp - we can use a > programmable de-gamma curve in the plane pipeline, and for this, the > existing DEGAMMA property is a good fit. > > For not-programmable hardware, would a second "DEGAMMA_FIXED" property > make sense, which is an enum type exposing what curves are supported? > (with analogous GAMMA_FIXED as well) Hmm. I suppose we could make it a bit more explicit like that. Not sure how we'd specify those though. Just BT.709, BT.2020, etc. and perhaps just something like 'Gamma 2.2' if it's a pure gamma curve? Someone who is more familiar with the subject could probably propose a better naming scheme. > > Drivers should expose one or the other (but not both) for each > gamma/degamma conversion the hardware implements. > > -Brian > > > > >> > >> - Shashank > >> >>>> It's certainly possible. One problem is that we can't inform userspace > >> >>>> upfront which combinations are supported. Whether that's a real > >> >>>> problem > >> >>>> I'm not sure. With atomic userspace can of course check upfront if > >> >>>> something can be done or not, but the main problem is then coming up > >> >>>> with a fallback strategy that doesn't suck too badly. > >> >>>> > >> > > >> > The approach above helps limit the set exposed to userspace to be only > >> > those which are supported - because devices which don't have separate > >> > hardware for the two stages won't expose values for both. > >> > > >> >>>> Anyways, I don't think I have any strong favorites here. Would be nice > >> >>>> to hear what everyone else thinks. > >> >>> I confess to a lack of experience in the subject here, but what is > >> >>> the more common > >> >>> request coming from userspace: converting YUV <-> RGB but keeping > >> >>> the gammut mapping > >> >>> separate, or YUV (gammut x) <-> RGB (gammut y) ? In other words: I > >> >>> can see the usefulness > >> >>> of having an explicit way of decomposing the color mapping process > >> >>> and control the > >> >>> parameters, but how often do apps or compositors go through the > >> >>> whole chain? > >> >> Right now, more or less the interest is on the RGB->YUV conversion > >> >> side, coz till now BT 2020 gamut was not in > >> >> picture. REC 601 and 709 have very close gamuts, so it was ok to > >> >> blend frames mostly without bothering about > >> >> gamut, but going fwd, ones REC 2020 comes into picture, we need to > >> >> bother about mapping gamuts too, else > >> >> blending Rec709 buffers and Rec2020 buffers together would cause very > >> >> visible gamut mismatch. > >> >> > >> >> So considering futuristic developments, it might be ok to consider > >> >> both. Still, as Ville mentioned, it would be good > >> >> to hear from other too. > >> >> > >> > > >> > Yeah I agree that we definitely need to consider both for anything we > >> > come up with now. > >> > > >> > Cheers, > >> > Brian > >> > > >> >> - Shashank > >> >>> > >> >>> Best regards, > >> >>> Liviu > >> >>> > >> >>>> -- > >> >>>> Ville Syrjälä > >> >>>> Intel OTC > >> >> > > > >-- > >Ville Syrjälä > >Intel OTC -- Ville Syrjälä Intel OTC