From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v4 3/3] drm: Add helper for simple display pipeline Date: Tue, 17 May 2016 10:46:51 +0300 Message-ID: <20160517074651.GM4329@intel.com> References: <1463077523-23959-1-git-send-email-noralf@tronnes.org> <1463077523-23959-4-git-send-email-noralf@tronnes.org> <20160512183614.GU4329@intel.com> <20160517070501.GJ27098@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 04DCF6E626 for ; Tue, 17 May 2016 07:46:56 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20160517070501.GJ27098@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= , jsarha@ti.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBNYXkgMTcsIDIwMTYgYXQgMDk6MDU6MDFBTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUaHUsIE1heSAxMiwgMjAxNiBhdCAwOTozNjoxNFBNICswMzAwLCBWaWxsZSBT eXJqw6Rsw6Qgd3JvdGU6Cj4gPiBPbiBUaHUsIE1heSAxMiwgMjAxNiBhdCAwODoyNToyM1BNICsw MjAwLCBOb3JhbGYgVHLDuG5uZXMgd3JvdGU6Cj4gPiA+IFByb3ZpZGVzIGhlbHBlciBmdW5jdGlv bnMgZm9yIGRyaXZlcnMgdGhhdCBoYXZlIGEgc2ltcGxlIGRpc3BsYXkKPiA+ID4gcGlwZWxpbmUu IFBsYW5lLCBjcnRjIGFuZCBlbmNvZGVyIGFyZSBjb2xsYXBzZWQgaW50byBvbmUgZW50aXR5Lgo+ ID4gPiAKPiA+ID4gQ2M6IGpzYXJoYUB0aS5jb20KPiA+ID4gU2lnbmVkLW9mZi1ieTogTm9yYWxm IFRyw7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+Cj4gPiA+IC0tLQo+ID4gPiAKPiA+ID4gQ2hh bmdlcyBzaW5jZSB2MzoKPiA+ID4gLSAoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICop LT5mdW5jcyBzaG91bGQgYmUgY29uc3QKPiA+ID4gCj4gPiA+IENoYW5nZXMgc2luY2UgdjI6Cj4g PiA+IC0gRHJvcCBLY29uZmlnIGtub2IgRFJNX0tNU19IRUxQRVIKPiA+ID4gLSBFeHBhbmQgZG9j dW1lbnRhdGlvbgo+ID4gPiAKPiA+ID4gQ2hhbmdlcyBzaW5jZSB2MToKPiA+ID4gLSBBZGQgRE9D IGhlYWRlciBhbmQgYWRkIHRvIGdwdS50bXBsCj4gPiA+IC0gRml4IGRvY3M6IEBmdW5jcyBpcyBv cHRpb25hbCwgIm5lZ2F0aXZlIGVycm9yIGNvZGUiLAo+ID4gPiAgICJUaGlzIGhvb2sgaXMgb3B0 aW9uYWwuIgo+ID4gPiAtIEFkZCBjaGVja3MgdG8gZHJtX3NpbXBsZV9rbXNfcGxhbmVfYXRvbWlj X2NoZWNrKCkKPiA+ID4gCj4gPiA+ICBEb2N1bWVudGF0aW9uL0RvY0Jvb2svZ3B1LnRtcGwgICAg ICAgICAgfCAgIDYgKwo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAg ICAgIHwgICAyICstCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVy LmMgfCAyMDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gIGluY2x1ZGUv ZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5oICAgICB8ICA5NCArKysrKysrKysrKysrKysKPiA+ ID4gIDQgZmlsZXMgY2hhbmdlZCwgMzA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiA+ ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX3NpbXBsZV9rbXNfaGVs cGVyLmMKPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS9kcm1fc2ltcGxlX2tt c19oZWxwZXIuaAo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vRG9jQm9v ay9ncHUudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9ncHUudG1wbAo+ID4gPiBpbmRleCA0 YTBjNTk5Li5jZjNmNWE4IDEwMDY0NAo+ID4gPiAtLS0gYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2sv Z3B1LnRtcGwKPiA+ID4gKysrIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dwdS50bXBsCj4gPiA+ IEBAIC0xNjkzLDYgKzE2OTMsMTIgQEAgdm9pZCBpbnRlbF9jcnRfaW5pdChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ID4gPiAgIUVkcml2ZXJzL2dwdS9kcm0vZHJtX3BhbmVsLmMKPiA+ID4gICFQ ZHJpdmVycy9ncHUvZHJtL2RybV9wYW5lbC5jIGRybSBwYW5lbAo+ID4gPiAgICAgIDwvc2VjdDI+ Cj4gPiA+ICsgICAgPHNlY3QyPgo+ID4gPiArICAgICAgPHRpdGxlPlNpbXBsZSBLTVMgSGVscGVy IFJlZmVyZW5jZTwvdGl0bGU+Cj4gPiA+ICshSWluY2x1ZGUvZHJtL2RybV9zaW1wbGVfa21zX2hl bHBlci5oCj4gPiA+ICshRWRyaXZlcnMvZ3B1L2RybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuYwo+ ID4gPiArIVBkcml2ZXJzL2dwdS9kcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmMgb3ZlcnZpZXcK PiA+ID4gKyAgICA8L3NlY3QyPgo+ID4gPiAgICA8L3NlY3QxPgo+ID4gPiAKPiA+ID4gICAgPCEt LSBJbnRlcm5hbHM6IGttcyBwcm9wZXJ0aWVzIC0tPgo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gPiA+IGluZGV4 IDJiZDNlNWEuLjMxYjg1ZGY1IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFr ZWZpbGUKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gPiA+IEBAIC0yMyw3 ICsyMyw3IEBAIGRybS0kKENPTkZJR19BR1ApICs9IGRybV9hZ3BzdXBwb3J0Lm8KPiA+ID4gCj4g PiA+ICBkcm1fa21zX2hlbHBlci15IDo9IGRybV9jcnRjX2hlbHBlci5vIGRybV9kcF9oZWxwZXIu byBkcm1fcHJvYmVfaGVscGVyLm8gXAo+ID4gPiAgCQlkcm1fcGxhbmVfaGVscGVyLm8gZHJtX2Rw X21zdF90b3BvbG9neS5vIGRybV9hdG9taWNfaGVscGVyLm8gXAo+ID4gPiAtCQlkcm1fa21zX2hl bHBlcl9jb21tb24ubwo+ID4gPiArCQlkcm1fa21zX2hlbHBlcl9jb21tb24ubyBkcm1fc2ltcGxl X2ttc19oZWxwZXIubwo+ID4gPiAKPiA+ID4gIGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9M T0FEX0VESURfRklSTVdBUkUpICs9IGRybV9lZGlkX2xvYWQubwo+ID4gPiAgZHJtX2ttc19oZWxw ZXItJChDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTikgKz0gZHJtX2ZiX2hlbHBlci5vCj4gPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmMgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmMKPiA+ID4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQKPiA+ID4gaW5kZXggMDAwMDAwMC4uZDQ1NDE3YQo+ID4gPiAtLS0gL2Rldi9udWxs Cj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuYwo+ID4g PiBAQCAtMCwwICsxLDIwOCBAQAo+ID4gPiArLyoKPiA+ID4gKyAqIENvcHlyaWdodCAoQykgMjAx NiBOb3JhbGYgVHLDuG5uZXMKPiA+ID4gKyAqCj4gPiA+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ID4gPiAr ICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKPiA+ID4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gPiA+ICsgKiAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ID4gPiArICovCj4gPiA+ICsKPiA+ID4gKyNpbmNsdWRl IDxkcm0vZHJtUC5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+Cj4gPiA+ICsj aW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gPiA+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9jcnRjX2hlbHBlci5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+ Cj4gPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5oPgo+ID4gPiArI2lu Y2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsgKiBET0M6IG92 ZXJ2aWV3Cj4gPiA+ICsgKgo+ID4gPiArICogVGhpcyBoZWxwZXIgbGlicmFyeSBwcm92aWRlcyBo ZWxwZXJzIGZvciBkcml2ZXJzIGZvciBzaW1wbGUgZGlzcGxheQo+ID4gPiArICogaGFyZHdhcmUu Cj4gPiA+ICsgKgo+ID4gPiArICogZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVfaW5pdCgpIGluaXRp YWxpemVzIGEgc2ltcGxlIGRpc3BsYXkgcGlwZWxpbmUKPiA+ID4gKyAqIHdoaWNoIGhhcyBvbmx5 IG9uZSBmdWxsLXNjcmVlbiBzY2Fub3V0IGJ1ZmZlciBmZWVkaW5nIG9uZSBvdXRwdXQuIFRoZQo+ ID4gPiArICogcGlwZWxpbmUgaXMgcmVwcmVzZW50ZWQgYnkgc3RydWN0ICZkcm1fc2ltcGxlX2Rp c3BsYXlfcGlwZSBhbmQgYmluZHMKPiA+ID4gKyAqIHRvZ2V0aGVyICZkcm1fcGxhbmUsICZkcm1f Y3J0YyBhbmQgJmRybV9lbmNvZGVyIHN0cnVjdHVyZXMgaW50byBvbmUgZml4ZWQKPiA+ID4gKyAq IGVudGl0eS4gU29tZSBmbGV4aWJpbGl0eSBmb3IgY29kZSByZXVzZSBpcyBwcm92aWRlZCB0aHJv dWdoIGEgc2VwYXJhdGVseQo+ID4gPiArICogYWxsb2NhdGVkICZkcm1fY29ubmVjdG9yIG9iamVj dCBhbmQgc3VwcG9ydGluZyBvcHRpb25hbCAmZHJtX2JyaWRnZQo+ID4gPiArICogZW5jb2RlciBk cml2ZXJzLgo+ID4gPiArICovCj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X2VuY29kZXJfZnVuY3MgZHJtX3NpbXBsZV9rbXNfZW5jb2Rlcl9mdW5jcyA9IHsKPiA+ID4gKwku ZGVzdHJveSA9IGRybV9lbmNvZGVyX2NsZWFudXAsCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICtz dGF0aWMgdm9pZCBkcm1fc2ltcGxlX2ttc19jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBl Owo+ID4gPiArCj4gPiA+ICsJcGlwZSA9IGNvbnRhaW5lcl9vZihjcnRjLCBzdHJ1Y3QgZHJtX3Np bXBsZV9kaXNwbGF5X3BpcGUsIGNydGMpOwo+ID4gPiArCWlmICghcGlwZS0+ZnVuY3MgfHwgIXBp cGUtPmZ1bmNzLT5lbmFibGUpCj4gPiA+ICsJCXJldHVybjsKPiA+ID4gKwo+ID4gPiArCXBpcGUt PmZ1bmNzLT5lbmFibGUocGlwZSwgY3J0Yy0+c3RhdGUpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ ICtzdGF0aWMgdm9pZCBkcm1fc2ltcGxlX2ttc19jcnRjX2Rpc2FibGUoc3RydWN0IGRybV9jcnRj ICpjcnRjKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAq cGlwZTsKPiA+ID4gKwo+ID4gPiArCXBpcGUgPSBjb250YWluZXJfb2YoY3J0Yywgc3RydWN0IGRy bV9zaW1wbGVfZGlzcGxheV9waXBlLCBjcnRjKTsKPiA+ID4gKwlpZiAoIXBpcGUtPmZ1bmNzIHx8 ICFwaXBlLT5mdW5jcy0+ZGlzYWJsZSkKPiA+ID4gKwkJcmV0dXJuOwo+ID4gPiArCj4gPiA+ICsJ cGlwZS0+ZnVuY3MtPmRpc2FibGUocGlwZSk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzIGRybV9zaW1wbGVfa21zX2NydGNf aGVscGVyX2Z1bmNzID0gewo+ID4gPiArCS5kaXNhYmxlID0gZHJtX3NpbXBsZV9rbXNfY3J0Y19k aXNhYmxlLAo+ID4gPiArCS5lbmFibGUgPSBkcm1fc2ltcGxlX2ttc19jcnRjX2VuYWJsZSwKPiA+ ID4gK307Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3Mg ZHJtX3NpbXBsZV9rbXNfY3J0Y19mdW5jcyA9IHsKPiA+ID4gKwkucmVzZXQgPSBkcm1fYXRvbWlj X2hlbHBlcl9jcnRjX3Jlc2V0LAo+ID4gPiArCS5kZXN0cm95ID0gZHJtX2NydGNfY2xlYW51cCwK PiA+ID4gKwkuc2V0X2NvbmZpZyA9IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcsCj4gPiA+ ICsJLnBhZ2VfZmxpcCA9IGRybV9hdG9taWNfaGVscGVyX3BhZ2VfZmxpcCwKPiA+ID4gKwkuYXRv bWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfZHVwbGljYXRlX3N0 YXRlLAo+ID4gPiArCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Ny dGNfZGVzdHJveV9zdGF0ZSwKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgZHJt X3NpbXBsZV9rbXNfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ ID4gPiArCQkJCQlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiA+ID4gK3sK PiA+ID4gKwlzdHJ1Y3QgZHJtX3JlY3Qgc3JjID0gewo+ID4gPiArCQkueDEgPSBwbGFuZV9zdGF0 ZS0+c3JjX3gsCj4gPiA+ICsJCS55MSA9IHBsYW5lX3N0YXRlLT5zcmNfeSwKPiA+ID4gKwkJLngy ID0gcGxhbmVfc3RhdGUtPnNyY194ICsgcGxhbmVfc3RhdGUtPnNyY193LAo+ID4gPiArCQkueTIg PSBwbGFuZV9zdGF0ZS0+c3JjX3kgKyBwbGFuZV9zdGF0ZS0+c3JjX2gsCj4gPiA+ICsJfTsKPiA+ ID4gKwlzdHJ1Y3QgZHJtX3JlY3QgZGVzdCA9IHsKPiA+ID4gKwkJLngxID0gcGxhbmVfc3RhdGUt PmNydGNfeCwKPiA+ID4gKwkJLnkxID0gcGxhbmVfc3RhdGUtPmNydGNfeSwKPiA+ID4gKwkJLngy ID0gcGxhbmVfc3RhdGUtPmNydGNfeCArIHBsYW5lX3N0YXRlLT5jcnRjX3csCj4gPiA+ICsJCS55 MiA9IHBsYW5lX3N0YXRlLT5jcnRjX3kgKyBwbGFuZV9zdGF0ZS0+Y3J0Y19oLAo+ID4gPiArCX07 Cj4gPiA+ICsJc3RydWN0IGRybV9yZWN0IGNsaXAgPSB7IDAgfTsKPiA+ID4gKwlzdHJ1Y3QgZHJt X3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGU7Cj4gPiA+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlOwo+ID4gPiArCWJvb2wgdmlzaWJsZTsKPiA+ID4gKwlpbnQgcmV0Owo+ID4g PiArCj4gPiA+ICsJcGlwZSA9IGNvbnRhaW5lcl9vZihwbGFuZSwgc3RydWN0IGRybV9zaW1wbGVf ZGlzcGxheV9waXBlLCBwbGFuZSk7Cj4gPiA+ICsJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0 X2V4aXN0aW5nX2NydGNfc3RhdGUocGxhbmVfc3RhdGUtPnN0YXRlLAo+ID4gPiArCQkJCQkJCSZw aXBlLT5jcnRjKTsKPiA+ID4gKwlpZiAoY3J0Y19zdGF0ZS0+ZW5hYmxlICE9ICEhcGxhbmVfc3Rh dGUtPmNydGMpCj4gPiA+ICsJCXJldHVybiAtRUlOVkFMOyAvKiBwbGFuZSBtdXN0IG1hdGNoIGNy dGMgZW5hYmxlIHN0YXRlICovCj4gPiA+ICsKPiA+ID4gKwlpZiAoIWNydGNfc3RhdGUtPmVuYWJs ZSkKPiA+ID4gKwkJcmV0dXJuIDA7IC8qIG5vdGhpbmcgdG8gY2hlY2sgd2hlbiBkaXNhYmxpbmcg b3IgZGlzYWJsZWQgKi8KPiA+ID4gKwo+ID4gPiArCWNsaXAueDIgPSBjcnRjX3N0YXRlLT5hZGp1 c3RlZF9tb2RlLmhkaXNwbGF5Owo+ID4gPiArCWNsaXAueTIgPSBjcnRjX3N0YXRlLT5hZGp1c3Rl ZF9tb2RlLnZkaXNwbGF5Owo+ID4gPiArCXJldCA9IGRybV9wbGFuZV9oZWxwZXJfY2hlY2tfdXBk YXRlKHBsYW5lLCAmcGlwZS0+Y3J0YywKPiA+ID4gKwkJCQkJICAgIHBsYW5lX3N0YXRlLT5mYiwK PiA+ID4gKwkJCQkJICAgICZzcmMsICZkZXN0LCAmY2xpcCwKPiA+ID4gKwkJCQkJICAgIERSTV9Q TEFORV9IRUxQRVJfTk9fU0NBTElORywKPiA+ID4gKwkJCQkJICAgIERSTV9QTEFORV9IRUxQRVJf Tk9fU0NBTElORywKPiA+ID4gKwkJCQkJICAgIGZhbHNlLCB0cnVlLCAmdmlzaWJsZSk7Cj4gPiA+ ICsJaWYgKHJldCkKPiA+ID4gKwkJcmV0dXJuIHJldDsKPiA+ID4gKwo+ID4gPiArCWlmICghdmlz aWJsZSkKPiA+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoIXBpcGUt PmZ1bmNzIHx8ICFwaXBlLT5mdW5jcy0+Y2hlY2spCj4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiAr Cj4gPiA+ICsJcmV0dXJuIHBpcGUtPmZ1bmNzLT5jaGVjayhwaXBlLCBwbGFuZV9zdGF0ZSwgY3J0 Y19zdGF0ZSk7Cj4gPiA+ICt9Cj4gPiAKPiA+IFdoYXQncyBhbnlvbmUgc3VwcG9zZWQgdG8gZG8g d2l0aCB0aGlzIHdoZW4gdGhlIGNsaXBwZWQgY29vcmRpbmF0ZXMKPiA+IGFyZW4ndCBldmVuIHBh c3NlZC9zdG9yZWQgYW55d2hlcmU/Cj4gCj4gSXQgZGlzYWxsb3dzIHBvc2l0aW9uaW5nIGFuZCBz Y2FsaW5nLCBzbyBzaG91bGRuJ3QgZXZlciBuZWVkIHRvIGhhdmUgdGhlCj4gY2xpcHBlZCBhcmVh PwoKWW91IGNhbiBzdGlsbCBjb25maWd1cmUgYSBsYXJnZXIgYXJlYSB0aGF0IGdldHMgY2xpcHBl ZCB0byB0aGUKZnVsbHNjcmVlbiBkaW1lbnNpb25zLgoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRl bCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754456AbcEQHrG (ORCPT ); Tue, 17 May 2016 03:47:06 -0400 Received: from mga11.intel.com ([192.55.52.93]:51489 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752446AbcEQHrE (ORCPT ); Tue, 17 May 2016 03:47:04 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.26,324,1459839600"; d="scan'208";a="956123818" Date: Tue, 17 May 2016 10:46:51 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= , jsarha@ti.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v4 3/3] drm: Add helper for simple display pipeline Message-ID: <20160517074651.GM4329@intel.com> References: <1463077523-23959-1-git-send-email-noralf@tronnes.org> <1463077523-23959-4-git-send-email-noralf@tronnes.org> <20160512183614.GU4329@intel.com> <20160517070501.GJ27098@phenom.ffwll.local> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20160517070501.GJ27098@phenom.ffwll.local> 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 Tue, May 17, 2016 at 09:05:01AM +0200, Daniel Vetter wrote: > On Thu, May 12, 2016 at 09:36:14PM +0300, Ville Syrjälä wrote: > > On Thu, May 12, 2016 at 08:25:23PM +0200, Noralf Trønnes wrote: > > > Provides helper functions for drivers that have a simple display > > > pipeline. Plane, crtc and encoder are collapsed into one entity. > > > > > > Cc: jsarha@ti.com > > > Signed-off-by: Noralf Trønnes > > > --- > > > > > > Changes since v3: > > > - (struct drm_simple_display_pipe *)->funcs should be const > > > > > > Changes since v2: > > > - Drop Kconfig knob DRM_KMS_HELPER > > > - Expand documentation > > > > > > Changes since v1: > > > - Add DOC header and add to gpu.tmpl > > > - Fix docs: @funcs is optional, "negative error code", > > > "This hook is optional." > > > - Add checks to drm_simple_kms_plane_atomic_check() > > > > > > Documentation/DocBook/gpu.tmpl | 6 + > > > drivers/gpu/drm/Makefile | 2 +- > > > drivers/gpu/drm/drm_simple_kms_helper.c | 208 ++++++++++++++++++++++++++++++++ > > > include/drm/drm_simple_kms_helper.h | 94 +++++++++++++++ > > > 4 files changed, 309 insertions(+), 1 deletion(-) > > > create mode 100644 drivers/gpu/drm/drm_simple_kms_helper.c > > > create mode 100644 include/drm/drm_simple_kms_helper.h > > > > > > diff --git a/Documentation/DocBook/gpu.tmpl b/Documentation/DocBook/gpu.tmpl > > > index 4a0c599..cf3f5a8 100644 > > > --- a/Documentation/DocBook/gpu.tmpl > > > +++ b/Documentation/DocBook/gpu.tmpl > > > @@ -1693,6 +1693,12 @@ void intel_crt_init(struct drm_device *dev) > > > !Edrivers/gpu/drm/drm_panel.c > > > !Pdrivers/gpu/drm/drm_panel.c drm panel > > > > > > + > > > + Simple KMS Helper Reference > > > +!Iinclude/drm/drm_simple_kms_helper.h > > > +!Edrivers/gpu/drm/drm_simple_kms_helper.c > > > +!Pdrivers/gpu/drm/drm_simple_kms_helper.c overview > > > + > > > > > > > > > > > > diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile > > > index 2bd3e5a..31b85df5 100644 > > > --- a/drivers/gpu/drm/Makefile > > > +++ b/drivers/gpu/drm/Makefile > > > @@ -23,7 +23,7 @@ drm-$(CONFIG_AGP) += drm_agpsupport.o > > > > > > drm_kms_helper-y := drm_crtc_helper.o drm_dp_helper.o drm_probe_helper.o \ > > > drm_plane_helper.o drm_dp_mst_topology.o drm_atomic_helper.o \ > > > - drm_kms_helper_common.o > > > + drm_kms_helper_common.o drm_simple_kms_helper.o > > > > > > drm_kms_helper-$(CONFIG_DRM_LOAD_EDID_FIRMWARE) += drm_edid_load.o > > > drm_kms_helper-$(CONFIG_DRM_FBDEV_EMULATION) += drm_fb_helper.o > > > diff --git a/drivers/gpu/drm/drm_simple_kms_helper.c b/drivers/gpu/drm/drm_simple_kms_helper.c > > > new file mode 100644 > > > index 0000000..d45417a > > > --- /dev/null > > > +++ b/drivers/gpu/drm/drm_simple_kms_helper.c > > > @@ -0,0 +1,208 @@ > > > +/* > > > + * Copyright (C) 2016 Noralf Trønnes > > > + * > > > + * This program is free software; you can redistribute it and/or modify > > > + * it under the terms of the GNU General Public License as published by > > > + * the Free Software Foundation; either version 2 of the License, or > > > + * (at your option) any later version. > > > + */ > > > + > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include > > > +#include > > > + > > > +/** > > > + * DOC: overview > > > + * > > > + * This helper library provides helpers for drivers for simple display > > > + * hardware. > > > + * > > > + * drm_simple_display_pipe_init() initializes a simple display pipeline > > > + * which has only one full-screen scanout buffer feeding one output. The > > > + * pipeline is represented by struct &drm_simple_display_pipe and binds > > > + * together &drm_plane, &drm_crtc and &drm_encoder structures into one fixed > > > + * entity. Some flexibility for code reuse is provided through a separately > > > + * allocated &drm_connector object and supporting optional &drm_bridge > > > + * encoder drivers. > > > + */ > > > + > > > +static const struct drm_encoder_funcs drm_simple_kms_encoder_funcs = { > > > + .destroy = drm_encoder_cleanup, > > > +}; > > > + > > > +static void drm_simple_kms_crtc_enable(struct drm_crtc *crtc) > > > +{ > > > + struct drm_simple_display_pipe *pipe; > > > + > > > + pipe = container_of(crtc, struct drm_simple_display_pipe, crtc); > > > + if (!pipe->funcs || !pipe->funcs->enable) > > > + return; > > > + > > > + pipe->funcs->enable(pipe, crtc->state); > > > +} > > > + > > > +static void drm_simple_kms_crtc_disable(struct drm_crtc *crtc) > > > +{ > > > + struct drm_simple_display_pipe *pipe; > > > + > > > + pipe = container_of(crtc, struct drm_simple_display_pipe, crtc); > > > + if (!pipe->funcs || !pipe->funcs->disable) > > > + return; > > > + > > > + pipe->funcs->disable(pipe); > > > +} > > > + > > > +static const struct drm_crtc_helper_funcs drm_simple_kms_crtc_helper_funcs = { > > > + .disable = drm_simple_kms_crtc_disable, > > > + .enable = drm_simple_kms_crtc_enable, > > > +}; > > > + > > > +static const struct drm_crtc_funcs drm_simple_kms_crtc_funcs = { > > > + .reset = drm_atomic_helper_crtc_reset, > > > + .destroy = drm_crtc_cleanup, > > > + .set_config = drm_atomic_helper_set_config, > > > + .page_flip = drm_atomic_helper_page_flip, > > > + .atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state, > > > + .atomic_destroy_state = drm_atomic_helper_crtc_destroy_state, > > > +}; > > > + > > > +static int drm_simple_kms_plane_atomic_check(struct drm_plane *plane, > > > + struct drm_plane_state *plane_state) > > > +{ > > > + struct drm_rect src = { > > > + .x1 = plane_state->src_x, > > > + .y1 = plane_state->src_y, > > > + .x2 = plane_state->src_x + plane_state->src_w, > > > + .y2 = plane_state->src_y + plane_state->src_h, > > > + }; > > > + struct drm_rect dest = { > > > + .x1 = plane_state->crtc_x, > > > + .y1 = plane_state->crtc_y, > > > + .x2 = plane_state->crtc_x + plane_state->crtc_w, > > > + .y2 = plane_state->crtc_y + plane_state->crtc_h, > > > + }; > > > + struct drm_rect clip = { 0 }; > > > + struct drm_simple_display_pipe *pipe; > > > + struct drm_crtc_state *crtc_state; > > > + bool visible; > > > + int ret; > > > + > > > + pipe = container_of(plane, struct drm_simple_display_pipe, plane); > > > + crtc_state = drm_atomic_get_existing_crtc_state(plane_state->state, > > > + &pipe->crtc); > > > + if (crtc_state->enable != !!plane_state->crtc) > > > + return -EINVAL; /* plane must match crtc enable state */ > > > + > > > + if (!crtc_state->enable) > > > + return 0; /* nothing to check when disabling or disabled */ > > > + > > > + clip.x2 = crtc_state->adjusted_mode.hdisplay; > > > + clip.y2 = crtc_state->adjusted_mode.vdisplay; > > > + ret = drm_plane_helper_check_update(plane, &pipe->crtc, > > > + plane_state->fb, > > > + &src, &dest, &clip, > > > + DRM_PLANE_HELPER_NO_SCALING, > > > + DRM_PLANE_HELPER_NO_SCALING, > > > + false, true, &visible); > > > + if (ret) > > > + return ret; > > > + > > > + if (!visible) > > > + return -EINVAL; > > > + > > > + if (!pipe->funcs || !pipe->funcs->check) > > > + return 0; > > > + > > > + return pipe->funcs->check(pipe, plane_state, crtc_state); > > > +} > > > > What's anyone supposed to do with this when the clipped coordinates > > aren't even passed/stored anywhere? > > It disallows positioning and scaling, so shouldn't ever need to have the > clipped area? You can still configure a larger area that gets clipped to the fullscreen dimensions. -- Ville Syrjälä Intel OTC