From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 1/5] drm/i915: Correctly handle limited range YCbCr data on VLV/CHV Date: Tue, 20 Jun 2017 17:34:55 +0300 Message-ID: <20170620143455.GS12629@intel.com> References: <20170608203315.21196-2-ville.syrjala@linux.intel.com> <20170620133257.22660-1-ville.syrjala@linux.intel.com> <7bc97412-fbd7-a88d-2949-fa016fec5884@intel.com> 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 194E289ED3 for ; Tue, 20 Jun 2017 14:34:59 +0000 (UTC) Content-Disposition: inline In-Reply-To: <7bc97412-fbd7-a88d-2949-fa016fec5884@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Sharma, Shashank" Cc: intel-gfx@lists.freedesktop.org, "Tang, Jun" , stable@vger.kernel.org, Jyri Sarha List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKdW4gMjAsIDIwMTcgYXQgMDc6Mjc6NTRQTSArMDUzMCwgU2hhcm1hLCBTaGFzaGFu ayB3cm90ZToKPiBSZWdhcmRzCj4gU2hhc2hhbmsKPiAKPiBPbiA2LzIwLzIwMTcgNzowMiBQTSwg dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20gd3JvdGU6Cj4gPiBGcm9tOiBWaWxsZSBTeXJq w6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4KPiA+IFR1cm5zIG91dCB0 aGUgVkxWL0NIViBmaXhlZCBmdW5jdGlvbiBzcHJpdGUgQ1NDIGV4cGVjdHMgZnVsbCByYW5nZQo+ ID4gZGF0YSBhcyBpbnB1dC4gV2UndmUgYmVlbiBmZWVkaW5nIGl0IGxpbWl0ZWQgcmFuZ2UgZGF0 YSB0byBpdCBhbGwKPiA+IGFsb25nLiBUbyBleHBhbmQgdGhlIGRhdGEgb3V0IHRvIGZ1bGwgcmFu Z2Ugd2UnbGwgdXNlIHRoZSBjb2xvcgo+ID4gY29ycmVjdGlvbiByZWdpc3RlcnMgKGJyaWdodG5l c3MsIGNvbnRyYXN0LCBhbmQgc2F0dXJhdGlvbikuCj4gPgo+ID4gT24gQ0hWIHBpcGUgQiB3ZSB3 ZXJlIGFjdHVhbGx5IGRvaW5nIHRoZSByaWdodCB0aGluZyBhbHJlYWR5IGJlY2F1c2Ugd2UKPiA+ IHByb2dhbW1lZCB0aGUgY3VzdG9tIENTQyBtYXRyaXggdG8gZG8gZXhwZWN0IGxpbWl0ZWQgcmFu Z2UgaW5wdXQuIE5vdwo+ID4gdGhhdCB3ZWxsIHByZS1leHBhbmQgdGhlIGRhdGEgb3V0IHdpdGgg dGhlIGNvbG9yIGNvcnJlY3Rpb24gdW5pdCwgd2UKPiA+IG5lZWQgdG8gY2hhbmdlIHRoZSBDU0Mg bWF0cml4IHRvIG9wZXJhdGUgd2l0aCBmdWxsIHJhbmdlIGlucHV0IGluc3RlYWQuCj4gPgo+ID4g VGhpcyBzaG91bGQgbWFrZSB0aGUgc3ByaXRlIG91dHB1dCBvZiB0aGUgb3RoZXIgcGlwZXMgbWF0 Y2ggdGhlIHNwcml0ZQo+ID4gb3V0cHV0IG9mIHBpcGUgQiByZWFzb25hYmx5IHdlbGwuIExvb2tp bmcgYXQgdGhlIHJlc3VsdGluZyBwaXBlIENSQ3MsCj4gPiB0aGVyZSBjYW4gYmUgYSBzbGlnaHQg ZGlmZmVyZW5jZSBpbiB0aGUgb3V0cHV0LCBidXQgYXMgSSBkb24ndCBrbm93Cj4gPiB0aGUgZm9y bXVsYSB1c2VkIGJ5IHRoZSBmaXhlZCBmdW5jdGlvbiBDU0Mgb2YgdGhlIG90aGVyIHBpcGVzLCBJ IGRvbid0Cj4gPiB0aGluayBpdCdzIHdvcnRoIHRoZSBlZmZvcnQgdG8gdHJ5IHRvIG1hdGNoIHRo ZSBvdXRwdXQgZXhhY3RseS4gSXQKPiA+IG1pZ2h0IG5vdCBldmVuIGJlIHBvc3NpYmxlIGR1ZSB0 byBkaWZmZXJlbmNlIGluIGludGVybmFsIHByZWNpc2lvbiBldGMuCj4gPgo+ID4gT25lIHNsaWdo dCBjYXZlYXQgaGVyZSBpcyB0aGF0IHRoZSBjb2xvciBjb3JyZWN0aW9uIHJlZ2lzdGVycyBhcmUg c2luZ2xlCj4gPiBidWZmZXJyZWQsIHNvIHdlIHNob3VsZCByZWFsbHkgYmUgdXBkYXRpbmcgdGhl bSBkdXJpbmcgdmJsYW5rLCBidXQgd2UKPiA+IHN0aWxsIGRvbid0IGhhdmUgYSBtZWNoYW5pc20g Zm9yIHRoYXQsIHNvIGp1c3QgdG9zcyBpbiBhbm90aGVyIEZJWE1FLgo+ID4KPiA+IHYyOiBSZWJh c2UKPiA+IHYzOiBzL2JyaS9icmlnaHRuZXNzLyBzL2Nvbi9jb250cmFzdC8gKFNoYXNoYW5rKQo+ ID4KPiA+IENjOiBTaGFzaGFuayBTaGFybWEgPHNoYXNoYW5rLnNoYXJtYUBpbnRlbC5jb20+Cj4g PiBDYzogSnlyaSBTYXJoYSA8anNhcmhhQHRpLmNvbT4KPiA+IENjOiAiVGFuZywgSnVuIiA8anVu LnRhbmdAaW50ZWwuY29tPgo+ID4gUmVwb3J0ZWQtYnk6ICJUYW5nLCBKdW4iIDxqdW4udGFuZ0Bp bnRlbC5jb20+Cj4gPiBDYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZwo+ID4gRml4ZXM6IDdmMWYz ODUxZmViMCAoImRybS9pOTE1OiBzcHJpdGUgc3VwcG9ydCBmb3IgVmFsbGV5VmlldyB2NCIpCj4g PiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50 ZWwuY29tPgo+ID4gLS0tCj4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAg IHwgMTAgKysrKysKPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgfCA3 NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCj4gPiAgIDIgZmlsZXMgY2hh bmdlZCwgNjYgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oCj4gPiBpbmRleCBjODY0N2NmYTgxYmEuLjI5MDMyMjU4OGY1NiAxMDA2NDQK PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+IEBAIC01OTc0LDYgKzU5NzQsMTIgQEAgZW51 bSB7Cj4gPiAgICNkZWZpbmUgX1NQQVRJTEVPRkYJCShWTFZfRElTUExBWV9CQVNFICsgMHg3MjFh NCkKPiA+ICAgI2RlZmluZSBfU1BBQ09OU1RBTFBIQQkJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDcy MWE4KQo+ID4gICAjZGVmaW5lICAgU1BfQ09OU1RfQUxQSEFfRU5BQkxFCQkoMTw8MzEpCj4gPiAr I2RlZmluZSBfU1BBQ0xSQzAJCShWTFZfRElTUExBWV9CQVNFICsgMHg3MjFkMCkKPiA+ICsjZGVm aW5lICAgU1BfQ09OVFJBU1QoeCkJCSgoeCkgPDwgMTgpIC8qIHUzLjYgKi8KPiBwcm90ZWN0aW9u IGZvciBoaWdoZXIgcmVzZXJ2ZWQgYml0cyA/IEZyb20gMjctMzEgPyBzb21ldGhpbmcgbGlrZSAo KHggJiAKPiAxRkYpIDw8IDE4KSA/CgpJdCdzIHVuc2lnbmVkLCBzbyBubyBuZWVkLgoKPiA+ICsj ZGVmaW5lICAgU1BfQlJJR0hUTkVTUyh4KQkJKCh4KSAmIDB4ZmYpIC8qIHM4ICovCj4gPiArI2Rl ZmluZSBfU1BBQ0xSQzEJCShWTFZfRElTUExBWV9CQVNFICsgMHg3MjFkNCkKPiA+ICsjZGVmaW5l ICAgU1BfU0hfU0lOKHgpCQkJKCgoeCkgJiAweDdmZikgPDwgMTYpIC8qIHM0LjcgKi8KPiA+ICsj ZGVmaW5lICAgU1BfU0hfQ09TKHgpCQkJKHgpIC8qIHUzLjcgKi8KPiA+ICAgCj4gCj4gI2RlZmlu ZSAgIFNQX1NIX0NPUyh4KQkJCSh4ICYgM0ZGKSAvKiB1My43ICovID8KCkFsc28gdW5zaWduZWQK Cj4gCj4gPiAjZGVmaW5lIF9TUEFHQU1DCQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NzIxZjQpCj4g PiAgIAo+ID4gICAjZGVmaW5lIF9TUEJDTlRSCQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NzIyODAp Cj4gPiBAQCAtNTk4Nyw2ICs1OTkzLDggQEAgZW51bSB7Cj4gPiAgICNkZWZpbmUgX1NQQktFWU1B WFZBTAkJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDcyMmEwKQo+ID4gICAjZGVmaW5lIF9TUEJUSUxF T0ZGCQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NzIyYTQpCj4gPiAgICNkZWZpbmUgX1NQQkNPTlNU QUxQSEEJCShWTFZfRElTUExBWV9CQVNFICsgMHg3MjJhOCkKPiA+ICsjZGVmaW5lIF9TUEJDTFJD MAkJKFZMVl9ESVNQTEFZX0JBU0UgKyAweDcyMmQwKQo+ID4gKyNkZWZpbmUgX1NQQkNMUkMxCQko VkxWX0RJU1BMQVlfQkFTRSArIDB4NzIyZDQpCj4gPiAgICNkZWZpbmUgX1NQQkdBTUMJCShWTFZf RElTUExBWV9CQVNFICsgMHg3MjJmNCkKPiA+ICAgCj4gPiAgICNkZWZpbmUgX01NSU9fVkxWX1NQ UihwaXBlLCBwbGFuZV9pZCwgcmVnX2EsIHJlZ19iKSBcCj4gPiBAQCAtNjAwMyw2ICs2MDExLDgg QEAgZW51bSB7Cj4gPiAgICNkZWZpbmUgU1BLRVlNQVhWQUwocGlwZSwgcGxhbmVfaWQpCV9NTUlP X1ZMVl9TUFIoKHBpcGUpLCAocGxhbmVfaWQpLCBfU1BBS0VZTUFYVkFMLCBfU1BCS0VZTUFYVkFM KQo+ID4gICAjZGVmaW5lIFNQVElMRU9GRihwaXBlLCBwbGFuZV9pZCkJX01NSU9fVkxWX1NQUigo cGlwZSksIChwbGFuZV9pZCksIF9TUEFUSUxFT0ZGLCBfU1BCVElMRU9GRikKPiA+ICAgI2RlZmlu ZSBTUENPTlNUQUxQSEEocGlwZSwgcGxhbmVfaWQpCV9NTUlPX1ZMVl9TUFIoKHBpcGUpLCAocGxh bmVfaWQpLCBfU1BBQ09OU1RBTFBIQSwgX1NQQkNPTlNUQUxQSEEpCj4gPiArI2RlZmluZSBTUENM UkMwKHBpcGUsIHBsYW5lX2lkKQkJX01NSU9fVkxWX1NQUigocGlwZSksIChwbGFuZV9pZCksIF9T UEFDTFJDMCwgX1NQQkNMUkMwKQo+ID4gKyNkZWZpbmUgU1BDTFJDMShwaXBlLCBwbGFuZV9pZCkJ CV9NTUlPX1ZMVl9TUFIoKHBpcGUpLCAocGxhbmVfaWQpLCBfU1BBQ0xSQzEsIF9TUEJDTFJDMSkK PiA+ICAgI2RlZmluZSBTUEdBTUMocGlwZSwgcGxhbmVfaWQpCQlfTU1JT19WTFZfU1BSKChwaXBl KSwgKHBsYW5lX2lkKSwgX1NQQUdBTUMsIF9TUEJHQU1DKQo+ID4gICAKPiA+ICAgLyoKPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gPiBpbmRleCAwYzY1MGMyY2JjYTguLjQ0NjI0 MDhjYzgzNSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0 ZS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ID4gQEAg LTMyNSw0NCArMzI1LDgwIEBAIHNrbF9kaXNhYmxlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAq cGxhbmUsIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ID4gICB9Cj4gPiAgIAo+ID4gICBzdGF0 aWMgdm9pZAo+ID4gLWNodl91cGRhdGVfY3NjKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsIHVp bnQzMl90IGZvcm1hdCkKPiA+ICtjaHZfdXBkYXRlX2NzYyhjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ID4gICB7Cj4gPiArCXN0cnVjdCBpbnRlbF9wbGFuZSAq cGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gPiAgIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5iYXNlLmRl dik7Cj4gPiArCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUt PmJhc2UuZmI7Cj4gPiAgIAllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gcGxhbmUtPmlkOwo+ID4g ICAKPiA+ICAgCS8qIFNlZW1zIFJHQiBkYXRhIGJ5cGFzc2VzIHRoZSBDU0MgYWx3YXlzICovCj4g PiAtCWlmICghZm9ybWF0X2lzX3l1dihmb3JtYXQpKQo+ID4gKwlpZiAoIWZvcm1hdF9pc195dXYo ZmItPmZvcm1hdC0+Zm9ybWF0KSkKPiA+ICAgCQlyZXR1cm47Cj4gPiAgIAo+ID4gICAJLyoKPiA+ IC0JICogQlQuNjAxIGxpbWl0ZWQgcmFuZ2UgWUNiQ3IgLT4gZnVsbCByYW5nZSBSR0IKPiA+ICsJ ICogQlQuNjAxIGZ1bGwgcmFuZ2UgWUNiQ3IgLT4gZnVsbCByYW5nZSBSR0IKPiA+ICAgCSAqCj4g PiAtCSAqIHxyfCAgIHwgNjUzNyA0NzY5ICAgICAwfCAgIHxjciAgfAo+ID4gLQkgKiB8Z3wgPSB8 LTMzMzAgNDc2OSAtMTYwNXwgeCB8eS02NHwKPiA+IC0JICogfGJ8ICAgfCAgICAwIDQ3NjkgIDgy NjN8ICAgfGNiICB8Cj4gPiArCSAqIHxyfCAgIHwgNTc0MyA0MDk2ICAgICAwfCAgIHxjcnwKPiA+ ICsJICogfGd8ID0gfC0yOTI1IDQwOTYgLTE0MTB8IHggfHkgfAo+ID4gKwkgKiB8YnwgICB8ICAg IDAgNDA5NiAgNzI1OHwgICB8Y2J8Cj4gPiAgIAkgKgo+ID4gLQkgKiBDYiBhbmQgQ3IgYXBwYXJl bnRseSBjb21lIGluIGFzIHNpZ25lZCBhbHJlYWR5LCBzbyBubwo+ID4gLQkgKiBuZWVkIGZvciBh bnkgb2Zmc2V0LiBGb3IgWSB3ZSBuZWVkIHRvIHJlbW92ZSB0aGUgb2Zmc2V0Lgo+ID4gKwkgKiBD YiBhbmQgQ3IgYXBwYXJlbnRseSBjb21lIGluIGFzIHNpZ25lZCBhbHJlYWR5LAo+ID4gKwkgKiBh bmQgd2UgZ2V0IGZ1bGwgcmFuZ2UgZGF0YSBpbiBvbiBhY2NvdW50IG9mIENMUkMwLzEKPiA+ICAg CSAqLwo+ID4gLQlJOTE1X1dSSVRFX0ZXKFNQQ1NDWUdPRkYocGxhbmVfaWQpLCBTUENTQ19PT0ZG KDApIHwgU1BDU0NfSU9GRigtNjQpKTsKPiA+ICsJSTkxNV9XUklURV9GVyhTUENTQ1lHT0ZGKHBs YW5lX2lkKSwgU1BDU0NfT09GRigwKSB8IFNQQ1NDX0lPRkYoMCkpOwo+ID4gICAJSTkxNV9XUklU RV9GVyhTUENTQ0NCT0ZGKHBsYW5lX2lkKSwgU1BDU0NfT09GRigwKSB8IFNQQ1NDX0lPRkYoMCkp Owo+ID4gICAJSTkxNV9XUklURV9GVyhTUENTQ0NST0ZGKHBsYW5lX2lkKSwgU1BDU0NfT09GRigw KSB8IFNQQ1NDX0lPRkYoMCkpOwo+ID4gICAKPiA+IC0JSTkxNV9XUklURV9GVyhTUENTQ0MwMShw bGFuZV9pZCksIFNQQ1NDX0MxKDQ3NjkpIHwgU1BDU0NfQzAoNjUzNykpOwo+ID4gLQlJOTE1X1dS SVRFX0ZXKFNQQ1NDQzIzKHBsYW5lX2lkKSwgU1BDU0NfQzEoLTMzMzApIHwgU1BDU0NfQzAoMCkp Owo+ID4gLQlJOTE1X1dSSVRFX0ZXKFNQQ1NDQzQ1KHBsYW5lX2lkKSwgU1BDU0NfQzEoLTE2MDUp IHwgU1BDU0NfQzAoNDc2OSkpOwo+ID4gLQlJOTE1X1dSSVRFX0ZXKFNQQ1NDQzY3KHBsYW5lX2lk KSwgU1BDU0NfQzEoNDc2OSkgfCBTUENTQ19DMCgwKSk7Cj4gPiAtCUk5MTVfV1JJVEVfRlcoU1BD U0NDOChwbGFuZV9pZCksIFNQQ1NDX0MwKDgyNjMpKTsKPiA+ICsJSTkxNV9XUklURV9GVyhTUENT Q0MwMShwbGFuZV9pZCksIFNQQ1NDX0MxKDQwOTYpIHwgU1BDU0NfQzAoNTc0MykpOwo+ID4gKwlJ OTE1X1dSSVRFX0ZXKFNQQ1NDQzIzKHBsYW5lX2lkKSwgU1BDU0NfQzEoLTI5MjUpIHwgU1BDU0Nf QzAoMCkpOwo+ID4gKwlJOTE1X1dSSVRFX0ZXKFNQQ1NDQzQ1KHBsYW5lX2lkKSwgU1BDU0NfQzEo LTE0MTApIHwgU1BDU0NfQzAoNDA5NikpOwo+ID4gKwlJOTE1X1dSSVRFX0ZXKFNQQ1NDQzY3KHBs YW5lX2lkKSwgU1BDU0NfQzEoNDA5NikgfCBTUENTQ19DMCgwKSk7Cj4gPiArCUk5MTVfV1JJVEVf RlcoU1BDU0NDOChwbGFuZV9pZCksIFNQQ1NDX0MwKDcyNTgpKTsKPiA+ICAgCj4gPiAtCUk5MTVf V1JJVEVfRlcoU1BDU0NZR0lDTEFNUChwbGFuZV9pZCksIFNQQ1NDX0lNQVgoOTQwKSB8IFNQQ1ND X0lNSU4oNjQpKTsKPiA+IC0JSTkxNV9XUklURV9GVyhTUENTQ0NCSUNMQU1QKHBsYW5lX2lkKSwg U1BDU0NfSU1BWCg0NDgpIHwgU1BDU0NfSU1JTigtNDQ4KSk7Cj4gPiAtCUk5MTVfV1JJVEVfRlco U1BDU0NDUklDTEFNUChwbGFuZV9pZCksIFNQQ1NDX0lNQVgoNDQ4KSB8IFNQQ1NDX0lNSU4oLTQ0 OCkpOwo+ID4gKwlJOTE1X1dSSVRFX0ZXKFNQQ1NDWUdJQ0xBTVAocGxhbmVfaWQpLCBTUENTQ19J TUFYKDEwMjMpIHwgU1BDU0NfSU1JTigwKSk7Cj4gPiArCUk5MTVfV1JJVEVfRlcoU1BDU0NDQklD TEFNUChwbGFuZV9pZCksIFNQQ1NDX0lNQVgoNTEyKSB8IFNQQ1NDX0lNSU4oLTUxMikpOwo+ID4g KwlJOTE1X1dSSVRFX0ZXKFNQQ1NDQ1JJQ0xBTVAocGxhbmVfaWQpLCBTUENTQ19JTUFYKDUxMikg fCBTUENTQ19JTUlOKC01MTIpKTsKPiA+ICAgCj4gPiAgIAlJOTE1X1dSSVRFX0ZXKFNQQ1NDWUdP Q0xBTVAocGxhbmVfaWQpLCBTUENTQ19PTUFYKDEwMjMpIHwgU1BDU0NfT01JTigwKSk7Cj4gPiAg IAlJOTE1X1dSSVRFX0ZXKFNQQ1NDQ0JPQ0xBTVAocGxhbmVfaWQpLCBTUENTQ19PTUFYKDEwMjMp IHwgU1BDU0NfT01JTigwKSk7Cj4gPiAgIAlJOTE1X1dSSVRFX0ZXKFNQQ1NDQ1JPQ0xBTVAocGxh bmVfaWQpLCBTUENTQ19PTUFYKDEwMjMpIHwgU1BDU0NfT01JTigwKSk7Cj4gPiAgIH0KPiA+ICAg Cj4gPiArc3RhdGljIHZvaWQKPiA+ICt2bHZfdXBkYXRlX2NscmMoY29uc3Qgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiA+ICt7Cj4gPiArCXN0cnVjdCBpbnRlbF9wbGFu ZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZV9zdGF0ZS0+YmFzZS5wbGFuZSk7Cj4gPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2Uu ZGV2KTsKPiA+ICsJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0 ZS0+YmFzZS5mYjsKPiA+ICsJZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsKPiA+ICsJZW51 bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKPiA+ICsJaW50IGNvbnRyYXN0LCBicmln aHRuZXNzLCBzaF9zaW4sIHNoX2NvczsKPiA+ICsKPiA+ICsJaWYgKGZvcm1hdF9pc195dXYoZmIt PmZvcm1hdC0+Zm9ybWF0KSkgewo+ID4gKwkJLyoKPiA+ICsJCSAqIGV4cGFuZCBsaW1pdGVkIHJh bmdlIHRvIGZ1bGwgcmFuZ2UuCj4gPiArCQkgKiBjb250cmFzdCBpcyBhcHBsaWVkIGZpcnN0LCB0 aGVuIGJyaWdodG5lc3MKPiA+ICsJCSAqLwo+IEkgd291bGQgYmUgaGFwcHkgdG8gc2VlIHNvbWUg Y29tbWVudCBleHBsYWluaW5nIHRoZSBCcmlnaHRuZXNzL0NvbnRyYXN0IAo+IGNhbGN1bGF0aW9u IG1hZ2ljIG5vcywgb3IgbWF5IGJlIGEgaGludCBmb3Igb3RoZXIgZGV2ZWxvcGVycy4KClk6IDE2 LTIzNSAqIGNvbnRyYXN0ICsgYnJpZ2h0bmVzcyAtPiB+MC0+MjU1CkNiQ3I6IG5vIGh1ZSBhZGp1 c3RlbW50IC0+IDAgZGVncmVlIGFuZ2xlCiAgICAgIHNjYWxlIHRvIGV4cGFuZCBDYkNyIHJhbmdl IGZyb20gLTExMi0xMTIgdG8gLTEyOC0xMjgKICAgICAgc2hfc2luID0gc2luKDApICogMTI4LzEx MiA9IDAKICAgICAgc2hfY29zID0gY29zKDApICogMTI4LzExMiA9IHdoYXRldmVyCgo+ID4gKwkJ Y29udHJhc3QgPSAoKDI1NSA8PCA3KSAvIDIxOSArIDEpID4+IDE7Cj4gPiArCQlicmlnaHRuZXNz ID0gLSgoMTYgPDwgMSkgKiAyNTUgLyAyMTkgKyAxKSA+PiAxOwo+ID4gKwkJc2hfc2luID0gMDsK PiA+ICsJCXNoX2NvcyA9ICgoKDEyOCA8PCA4KSAvIDExMikgKyAxKSA+PiAxOwo+ID4gKwl9IGVs c2Ugewo+ID4gKwkJLyogcGFzcy10aHJvdWdoIGV2ZXJ5dGhpbmcgKi8KPiA+ICsJCWNvbnRyYXN0 ID0gMSA8PCA2Owo+ID4gKwkJYnJpZ2h0bmVzcyA9IDA7Cj4gPiArCQlzaF9zaW4gPSAwOwo+ID4g KwkJc2hfY29zID0gMSA8PCA3Owo+ID4gKwl9Cj4gPiArCj4gPiArCS8qIEZJWE1FIHRoZXNlIHJl Z2lzdGVyIGFyZSBzaW5nbGUgYnVmZmVyZWQgOiggKi8KPiA+ICsJSTkxNV9XUklURV9GVyhTUENM UkMwKHBpcGUsIHBsYW5lX2lkKSwKPiA+ICsJCSAgICAgIFNQX0NPTlRSQVNUKGNvbnRyYXN0KSB8 IFNQX0JSSUdIVE5FU1MoYnJpZ2h0bmVzcykpOwo+ID4gKwlJOTE1X1dSSVRFX0ZXKFNQQ0xSQzEo cGlwZSwgcGxhbmVfaWQpLAo+ID4gKwkJICAgICAgU1BfU0hfU0lOKHNoX3NpbikgfCBTUF9TSF9D T1Moc2hfY29zKSk7Cj4gPiArfQo+ID4gKwo+ID4gICBzdGF0aWMgdTMyIHZsdl9zcHJpdGVfY3Rs KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gICAJCQkgIGNv bnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gPiAgIHsKPiA+IEBA IC00NTYsOCArNDkyLDEwIEBAIHZsdl91cGRhdGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSwKPiA+ICAgCj4gPiAgIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnVuY29yZS5s b2NrLCBpcnFmbGFncyk7Cj4gPiAgIAo+ID4gKwl2bHZfdXBkYXRlX2NscmMocGxhbmVfc3RhdGUp Owo+ID4gKwo+ID4gICAJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpICYmIHBpcGUgPT0gUElQ RV9CKQo+ID4gLQkJY2h2X3VwZGF0ZV9jc2MocGxhbmUsIGZiLT5mb3JtYXQtPmZvcm1hdCk7Cj4g PiArCQljaHZfdXBkYXRlX2NzYyhwbGFuZV9zdGF0ZSk7Cj4gPiAgIAo+ID4gICAJaWYgKGtleS0+ ZmxhZ3MpIHsKPiA+ICAgCQlJOTE1X1dSSVRFX0ZXKFNQS0VZTUlOVkFMKHBpcGUsIHBsYW5lX2lk KSwga2V5LT5taW5fdmFsdWUpOwoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com ([192.55.52.43]:62120 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751075AbdFTOe7 (ORCPT ); Tue, 20 Jun 2017 10:34:59 -0400 Date: Tue, 20 Jun 2017 17:34:55 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: "Sharma, Shashank" Cc: intel-gfx@lists.freedesktop.org, Jyri Sarha , "Tang, Jun" , stable@vger.kernel.org Subject: Re: [PATCH v3 1/5] drm/i915: Correctly handle limited range YCbCr data on VLV/CHV Message-ID: <20170620143455.GS12629@intel.com> References: <20170608203315.21196-2-ville.syrjala@linux.intel.com> <20170620133257.22660-1-ville.syrjala@linux.intel.com> <7bc97412-fbd7-a88d-2949-fa016fec5884@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <7bc97412-fbd7-a88d-2949-fa016fec5884@intel.com> Sender: stable-owner@vger.kernel.org List-ID: On Tue, Jun 20, 2017 at 07:27:54PM +0530, Sharma, Shashank wrote: > Regards > Shashank > > On 6/20/2017 7:02 PM, ville.syrjala@linux.intel.com wrote: > > From: Ville Syrj�l� > > > > Turns out the VLV/CHV fixed function sprite CSC expects full range > > data as input. We've been feeding it limited range data to it all > > along. To expand the data out to full range we'll use the color > > correction registers (brightness, contrast, and saturation). > > > > On CHV pipe B we were actually doing the right thing already because we > > progammed the custom CSC matrix to do expect limited range input. Now > > that well pre-expand the data out with the color correction unit, we > > need to change the CSC matrix to operate with full range input instead. > > > > This should make the sprite output of the other pipes match the sprite > > output of pipe B reasonably well. Looking at the resulting pipe CRCs, > > there can be a slight difference in the output, but as I don't know > > the formula used by the fixed function CSC of the other pipes, I don't > > think it's worth the effort to try to match the output exactly. It > > might not even be possible due to difference in internal precision etc. > > > > One slight caveat here is that the color correction registers are single > > bufferred, so we should really be updating them during vblank, but we > > still don't have a mechanism for that, so just toss in another FIXME. > > > > v2: Rebase > > v3: s/bri/brightness/ s/con/contrast/ (Shashank) > > > > Cc: Shashank Sharma > > Cc: Jyri Sarha > > Cc: "Tang, Jun" > > Reported-by: "Tang, Jun" > > Cc: stable@vger.kernel.org > > Fixes: 7f1f3851feb0 ("drm/i915: sprite support for ValleyView v4") > > Signed-off-by: Ville Syrj�l� > > --- > > drivers/gpu/drm/i915/i915_reg.h | 10 +++++ > > drivers/gpu/drm/i915/intel_sprite.c | 74 ++++++++++++++++++++++++++++--------- > > 2 files changed, 66 insertions(+), 18 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h > > index c8647cfa81ba..290322588f56 100644 > > --- a/drivers/gpu/drm/i915/i915_reg.h > > +++ b/drivers/gpu/drm/i915/i915_reg.h > > @@ -5974,6 +5974,12 @@ enum { > > #define _SPATILEOFF (VLV_DISPLAY_BASE + 0x721a4) > > #define _SPACONSTALPHA (VLV_DISPLAY_BASE + 0x721a8) > > #define SP_CONST_ALPHA_ENABLE (1<<31) > > +#define _SPACLRC0 (VLV_DISPLAY_BASE + 0x721d0) > > +#define SP_CONTRAST(x) ((x) << 18) /* u3.6 */ > protection for higher reserved bits ? From 27-31 ? something like ((x & > 1FF) << 18) ? It's unsigned, so no need. > > +#define SP_BRIGHTNESS(x) ((x) & 0xff) /* s8 */ > > +#define _SPACLRC1 (VLV_DISPLAY_BASE + 0x721d4) > > +#define SP_SH_SIN(x) (((x) & 0x7ff) << 16) /* s4.7 */ > > +#define SP_SH_COS(x) (x) /* u3.7 */ > > > > #define SP_SH_COS(x) (x & 3FF) /* u3.7 */ ? Also unsigned > > > #define _SPAGAMC (VLV_DISPLAY_BASE + 0x721f4) > > > > #define _SPBCNTR (VLV_DISPLAY_BASE + 0x72280) > > @@ -5987,6 +5993,8 @@ enum { > > #define _SPBKEYMAXVAL (VLV_DISPLAY_BASE + 0x722a0) > > #define _SPBTILEOFF (VLV_DISPLAY_BASE + 0x722a4) > > #define _SPBCONSTALPHA (VLV_DISPLAY_BASE + 0x722a8) > > +#define _SPBCLRC0 (VLV_DISPLAY_BASE + 0x722d0) > > +#define _SPBCLRC1 (VLV_DISPLAY_BASE + 0x722d4) > > #define _SPBGAMC (VLV_DISPLAY_BASE + 0x722f4) > > > > #define _MMIO_VLV_SPR(pipe, plane_id, reg_a, reg_b) \ > > @@ -6003,6 +6011,8 @@ enum { > > #define SPKEYMAXVAL(pipe, plane_id) _MMIO_VLV_SPR((pipe), (plane_id), _SPAKEYMAXVAL, _SPBKEYMAXVAL) > > #define SPTILEOFF(pipe, plane_id) _MMIO_VLV_SPR((pipe), (plane_id), _SPATILEOFF, _SPBTILEOFF) > > #define SPCONSTALPHA(pipe, plane_id) _MMIO_VLV_SPR((pipe), (plane_id), _SPACONSTALPHA, _SPBCONSTALPHA) > > +#define SPCLRC0(pipe, plane_id) _MMIO_VLV_SPR((pipe), (plane_id), _SPACLRC0, _SPBCLRC0) > > +#define SPCLRC1(pipe, plane_id) _MMIO_VLV_SPR((pipe), (plane_id), _SPACLRC1, _SPBCLRC1) > > #define SPGAMC(pipe, plane_id) _MMIO_VLV_SPR((pipe), (plane_id), _SPAGAMC, _SPBGAMC) > > > > /* > > diff --git a/drivers/gpu/drm/i915/intel_sprite.c b/drivers/gpu/drm/i915/intel_sprite.c > > index 0c650c2cbca8..4462408cc835 100644 > > --- a/drivers/gpu/drm/i915/intel_sprite.c > > +++ b/drivers/gpu/drm/i915/intel_sprite.c > > @@ -325,44 +325,80 @@ skl_disable_plane(struct intel_plane *plane, struct intel_crtc *crtc) > > } > > > > static void > > -chv_update_csc(struct intel_plane *plane, uint32_t format) > > +chv_update_csc(const struct intel_plane_state *plane_state) > > { > > + struct intel_plane *plane = to_intel_plane(plane_state->base.plane); > > struct drm_i915_private *dev_priv = to_i915(plane->base.dev); > > + const struct drm_framebuffer *fb = plane_state->base.fb; > > enum plane_id plane_id = plane->id; > > > > /* Seems RGB data bypasses the CSC always */ > > - if (!format_is_yuv(format)) > > + if (!format_is_yuv(fb->format->format)) > > return; > > > > /* > > - * BT.601 limited range YCbCr -> full range RGB > > + * BT.601 full range YCbCr -> full range RGB > > * > > - * |r| | 6537 4769 0| |cr | > > - * |g| = |-3330 4769 -1605| x |y-64| > > - * |b| | 0 4769 8263| |cb | > > + * |r| | 5743 4096 0| |cr| > > + * |g| = |-2925 4096 -1410| x |y | > > + * |b| | 0 4096 7258| |cb| > > * > > - * Cb and Cr apparently come in as signed already, so no > > - * need for any offset. For Y we need to remove the offset. > > + * Cb and Cr apparently come in as signed already, > > + * and we get full range data in on account of CLRC0/1 > > */ > > - I915_WRITE_FW(SPCSCYGOFF(plane_id), SPCSC_OOFF(0) | SPCSC_IOFF(-64)); > > + I915_WRITE_FW(SPCSCYGOFF(plane_id), SPCSC_OOFF(0) | SPCSC_IOFF(0)); > > I915_WRITE_FW(SPCSCCBOFF(plane_id), SPCSC_OOFF(0) | SPCSC_IOFF(0)); > > I915_WRITE_FW(SPCSCCROFF(plane_id), SPCSC_OOFF(0) | SPCSC_IOFF(0)); > > > > - I915_WRITE_FW(SPCSCC01(plane_id), SPCSC_C1(4769) | SPCSC_C0(6537)); > > - I915_WRITE_FW(SPCSCC23(plane_id), SPCSC_C1(-3330) | SPCSC_C0(0)); > > - I915_WRITE_FW(SPCSCC45(plane_id), SPCSC_C1(-1605) | SPCSC_C0(4769)); > > - I915_WRITE_FW(SPCSCC67(plane_id), SPCSC_C1(4769) | SPCSC_C0(0)); > > - I915_WRITE_FW(SPCSCC8(plane_id), SPCSC_C0(8263)); > > + I915_WRITE_FW(SPCSCC01(plane_id), SPCSC_C1(4096) | SPCSC_C0(5743)); > > + I915_WRITE_FW(SPCSCC23(plane_id), SPCSC_C1(-2925) | SPCSC_C0(0)); > > + I915_WRITE_FW(SPCSCC45(plane_id), SPCSC_C1(-1410) | SPCSC_C0(4096)); > > + I915_WRITE_FW(SPCSCC67(plane_id), SPCSC_C1(4096) | SPCSC_C0(0)); > > + I915_WRITE_FW(SPCSCC8(plane_id), SPCSC_C0(7258)); > > > > - I915_WRITE_FW(SPCSCYGICLAMP(plane_id), SPCSC_IMAX(940) | SPCSC_IMIN(64)); > > - I915_WRITE_FW(SPCSCCBICLAMP(plane_id), SPCSC_IMAX(448) | SPCSC_IMIN(-448)); > > - I915_WRITE_FW(SPCSCCRICLAMP(plane_id), SPCSC_IMAX(448) | SPCSC_IMIN(-448)); > > + I915_WRITE_FW(SPCSCYGICLAMP(plane_id), SPCSC_IMAX(1023) | SPCSC_IMIN(0)); > > + I915_WRITE_FW(SPCSCCBICLAMP(plane_id), SPCSC_IMAX(512) | SPCSC_IMIN(-512)); > > + I915_WRITE_FW(SPCSCCRICLAMP(plane_id), SPCSC_IMAX(512) | SPCSC_IMIN(-512)); > > > > I915_WRITE_FW(SPCSCYGOCLAMP(plane_id), SPCSC_OMAX(1023) | SPCSC_OMIN(0)); > > I915_WRITE_FW(SPCSCCBOCLAMP(plane_id), SPCSC_OMAX(1023) | SPCSC_OMIN(0)); > > I915_WRITE_FW(SPCSCCROCLAMP(plane_id), SPCSC_OMAX(1023) | SPCSC_OMIN(0)); > > } > > > > +static void > > +vlv_update_clrc(const struct intel_plane_state *plane_state) > > +{ > > + struct intel_plane *plane = to_intel_plane(plane_state->base.plane); > > + struct drm_i915_private *dev_priv = to_i915(plane->base.dev); > > + const struct drm_framebuffer *fb = plane_state->base.fb; > > + enum pipe pipe = plane->pipe; > > + enum plane_id plane_id = plane->id; > > + int contrast, brightness, sh_sin, sh_cos; > > + > > + if (format_is_yuv(fb->format->format)) { > > + /* > > + * expand limited range to full range. > > + * contrast is applied first, then brightness > > + */ > I would be happy to see some comment explaining the Brightness/Contrast > calculation magic nos, or may be a hint for other developers. Y: 16-235 * contrast + brightness -> ~0->255 CbCr: no hue adjustemnt -> 0 degree angle scale to expand CbCr range from -112-112 to -128-128 sh_sin = sin(0) * 128/112 = 0 sh_cos = cos(0) * 128/112 = whatever > > + contrast = ((255 << 7) / 219 + 1) >> 1; > > + brightness = -((16 << 1) * 255 / 219 + 1) >> 1; > > + sh_sin = 0; > > + sh_cos = (((128 << 8) / 112) + 1) >> 1; > > + } else { > > + /* pass-through everything */ > > + contrast = 1 << 6; > > + brightness = 0; > > + sh_sin = 0; > > + sh_cos = 1 << 7; > > + } > > + > > + /* FIXME these register are single buffered :( */ > > + I915_WRITE_FW(SPCLRC0(pipe, plane_id), > > + SP_CONTRAST(contrast) | SP_BRIGHTNESS(brightness)); > > + I915_WRITE_FW(SPCLRC1(pipe, plane_id), > > + SP_SH_SIN(sh_sin) | SP_SH_COS(sh_cos)); > > +} > > + > > static u32 vlv_sprite_ctl(const struct intel_crtc_state *crtc_state, > > const struct intel_plane_state *plane_state) > > { > > @@ -456,8 +492,10 @@ vlv_update_plane(struct intel_plane *plane, > > > > spin_lock_irqsave(&dev_priv->uncore.lock, irqflags); > > > > + vlv_update_clrc(plane_state); > > + > > if (IS_CHERRYVIEW(dev_priv) && pipe == PIPE_B) > > - chv_update_csc(plane, fb->format->format); > > + chv_update_csc(plane_state); > > > > if (key->flags) { > > I915_WRITE_FW(SPKEYMINVAL(pipe, plane_id), key->min_value); -- Ville Syrj�l� Intel OTC