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 17:41:15 +0300 Message-ID: <20160517144115.GQ4329@intel.com> References: <20160512183614.GU4329@intel.com> <20160517070501.GJ27098@phenom.ffwll.local> <20160517074651.GM4329@intel.com> <20160517075945.GQ27098@phenom.ffwll.local> <20160517121208.GO4329@intel.com> <20160517130452.GL27098@phenom.ffwll.local> <20160517131401.GP4329@intel.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 ESMTP id 17E106E43C for ; Tue, 17 May 2016 14:41:21 +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: Daniel Vetter Cc: dri-devel , Jyri Sarha , Linux Kernel Mailing List List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBNYXkgMTcsIDIwMTYgYXQgMDM6MTk6MjBQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUdWUsIE1heSAxNywgMjAxNiBhdCAzOjE0IFBNLCBWaWxsZSBTeXJqw6Rsw6QK PiA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+IHdyb3RlOgo+ID4gT24gVHVlLCBNYXkg MTcsIDIwMTYgYXQgMDM6MDQ6NTJQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+PiBP biBUdWUsIE1heSAxNywgMjAxNiBhdCAwMjoyMjoyNlBNICswMjAwLCBOb3JhbGYgVHLDuG5uZXMg d3JvdGU6Cj4gPj4gPgo+ID4+ID4KPiA+PiA+IERlbiAxNy4wNS4yMDE2IDE0OjEyLCBza3JldiBW aWxsZSBTeXJqw6Rsw6Q6Cj4gPj4gPiA+T24gVHVlLCBNYXkgMTcsIDIwMTYgYXQgMDI6MDA6NDVQ TSArMDIwMCwgTm9yYWxmIFRyw7hubmVzIHdyb3RlOgo+ID4+ID4gPj5EZW4gMTcuMDUuMjAxNiAw OTo1OSwgc2tyZXYgRGFuaWVsIFZldHRlcjoKPiA+PiA+ID4+Pk9uIFR1ZSwgTWF5IDE3LCAyMDE2 IGF0IDEwOjQ2OjUxQU0gKzAzMDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+PiA+ID4+Pj5P biBUdWUsIE1heSAxNywgMjAxNiBhdCAwOTowNTowMUFNICswMjAwLCBEYW5pZWwgVmV0dGVyIHdy b3RlOgo+ID4+ID4gPj4+Pj5PbiBUaHUsIE1heSAxMiwgMjAxNiBhdCAwOTozNjoxNFBNICswMzAw LCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPj4gPiA+Pj4+Pj5PbiBUaHUsIE1heSAxMiwgMjAx NiBhdCAwODoyNToyM1BNICswMjAwLCBOb3JhbGYgVHLDuG5uZXMgd3JvdGU6Cj4gPj4gPiA+Pj4+ Pj4+UHJvdmlkZXMgaGVscGVyIGZ1bmN0aW9ucyBmb3IgZHJpdmVycyB0aGF0IGhhdmUgYSBzaW1w bGUgZGlzcGxheQo+ID4+ID4gPj4+Pj4+PnBpcGVsaW5lLiBQbGFuZSwgY3J0YyBhbmQgZW5jb2Rl ciBhcmUgY29sbGFwc2VkIGludG8gb25lIGVudGl0eS4KPiA+PiA+ID4+Pj4+Pj4KPiA+PiA+ID4+ Pj4+Pj5DYzoganNhcmhhQHRpLmNvbQo+ID4+ID4gPj4+Pj4+PlNpZ25lZC1vZmYtYnk6IE5vcmFs ZiBUcsO4bm5lcyA8bm9yYWxmQHRyb25uZXMub3JnPgo+ID4+ID4gPj4+Pj4+Pi0tLQo+ID4+ID4g Pj4+Pj4+Pgo+ID4+ID4gPj4+Pj4+PkNoYW5nZXMgc2luY2UgdjM6Cj4gPj4gPiA+Pj4+Pj4+LSAo c3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICopLT5mdW5jcyBzaG91bGQgYmUgY29uc3QK PiA+PiA+ID4+Pj4+Pj4KPiA+PiA+ID4+Pj4+Pj5DaGFuZ2VzIHNpbmNlIHYyOgo+ID4+ID4gPj4+ Pj4+Pi0gRHJvcCBLY29uZmlnIGtub2IgRFJNX0tNU19IRUxQRVIKPiA+PiA+ID4+Pj4+Pj4tIEV4 cGFuZCBkb2N1bWVudGF0aW9uCj4gPj4gPiA+Pj4+Pj4+Cj4gPj4gPiA+Pj4+Pj4+Q2hhbmdlcyBz aW5jZSB2MToKPiA+PiA+ID4+Pj4+Pj4tIEFkZCBET0MgaGVhZGVyIGFuZCBhZGQgdG8gZ3B1LnRt cGwKPiA+PiA+ID4+Pj4+Pj4tIEZpeCBkb2NzOiBAZnVuY3MgaXMgb3B0aW9uYWwsICJuZWdhdGl2 ZSBlcnJvciBjb2RlIiwKPiA+PiA+ID4+Pj4+Pj4gICAgIlRoaXMgaG9vayBpcyBvcHRpb25hbC4i Cj4gPj4gPiA+Pj4+Pj4+LSBBZGQgY2hlY2tzIHRvIGRybV9zaW1wbGVfa21zX3BsYW5lX2F0b21p Y19jaGVjaygpCj4gPj4gPiA+Pj4+Pj4+Cj4gPj4gPiA+Pj4+Pj4+ICAgRG9jdW1lbnRhdGlvbi9E b2NCb29rL2dwdS50bXBsICAgICAgICAgIHwgICA2ICsKPiA+PiA+ID4+Pj4+Pj4gICBkcml2ZXJz L2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgIDIgKy0KPiA+PiA+ID4+Pj4+Pj4g ICBkcml2ZXJzL2dwdS9kcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmMgfCAyMDggKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKPiA+PiA+ID4+Pj4+Pj4gICBpbmNsdWRlL2RybS9kcm1f c2ltcGxlX2ttc19oZWxwZXIuaCAgICAgfCAgOTQgKysrKysrKysrKysrKysrCj4gPj4gPiA+Pj4+ Pj4+ICAgNCBmaWxlcyBjaGFuZ2VkLCAzMDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ ID4+ID4gPj4+Pj4+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX3Np bXBsZV9rbXNfaGVscGVyLmMKPiA+PiA+ID4+Pj4+Pj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5j bHVkZS9kcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmgKPiA+PiA+ID4+Pj4+Pj4KPiA+PiA+ID4+ Pj4+Pj5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dwdS50bXBsIGIvRG9jdW1l bnRhdGlvbi9Eb2NCb29rL2dwdS50bXBsCj4gPj4gPiA+Pj4+Pj4+aW5kZXggNGEwYzU5OS4uY2Yz ZjVhOCAxMDA2NDQKPiA+PiA+ID4+Pj4+Pj4tLS0gYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ3B1 LnRtcGwKPiA+PiA+ID4+Pj4+Pj4rKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ3B1LnRtcGwK PiA+PiA+ID4+Pj4+Pj5AQCAtMTY5Myw2ICsxNjkzLDEyIEBAIHZvaWQgaW50ZWxfY3J0X2luaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiA+PiA+ID4+Pj4+Pj4gICAhRWRyaXZlcnMvZ3B1L2Ry bS9kcm1fcGFuZWwuYwo+ID4+ID4gPj4+Pj4+PiAgICFQZHJpdmVycy9ncHUvZHJtL2RybV9wYW5l bC5jIGRybSBwYW5lbAo+ID4+ID4gPj4+Pj4+PiAgICAgICA8L3NlY3QyPgo+ID4+ID4gPj4+Pj4+ PisgICAgPHNlY3QyPgo+ID4+ID4gPj4+Pj4+PisgICAgICA8dGl0bGU+U2ltcGxlIEtNUyBIZWxw ZXIgUmVmZXJlbmNlPC90aXRsZT4KPiA+PiA+ID4+Pj4+Pj4rIUlpbmNsdWRlL2RybS9kcm1fc2lt cGxlX2ttc19oZWxwZXIuaAo+ID4+ID4gPj4+Pj4+PishRWRyaXZlcnMvZ3B1L2RybS9kcm1fc2lt cGxlX2ttc19oZWxwZXIuYwo+ID4+ID4gPj4+Pj4+PishUGRyaXZlcnMvZ3B1L2RybS9kcm1fc2lt cGxlX2ttc19oZWxwZXIuYyBvdmVydmlldwo+ID4+ID4gPj4+Pj4+PisgICAgPC9zZWN0Mj4KPiA+ PiA+ID4+Pj4+Pj4gICAgIDwvc2VjdDE+Cj4gPj4gPiA+Pj4+Pj4+Cj4gPj4gPiA+Pj4+Pj4+ICAg ICA8IS0tIEludGVybmFsczoga21zIHByb3BlcnRpZXMgLS0+Cj4gPj4gPiA+Pj4+Pj4+ZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmls ZQo+ID4+ID4gPj4+Pj4+PmluZGV4IDJiZDNlNWEuLjMxYjg1ZGY1IDEwMDY0NAo+ID4+ID4gPj4+ Pj4+Pi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ID4+ID4gPj4+Pj4+PisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ID4+ID4gPj4+Pj4+PkBAIC0yMyw3ICsyMyw3IEBAIGRy bS0kKENPTkZJR19BR1ApICs9IGRybV9hZ3BzdXBwb3J0Lm8KPiA+PiA+ID4+Pj4+Pj4KPiA+PiA+ ID4+Pj4+Pj4gICBkcm1fa21zX2hlbHBlci15IDo9IGRybV9jcnRjX2hlbHBlci5vIGRybV9kcF9o ZWxwZXIubyBkcm1fcHJvYmVfaGVscGVyLm8gXAo+ID4+ID4gPj4+Pj4+PiAgICAgICAgICAgICBk cm1fcGxhbmVfaGVscGVyLm8gZHJtX2RwX21zdF90b3BvbG9neS5vIGRybV9hdG9taWNfaGVscGVy Lm8gXAo+ID4+ID4gPj4+Pj4+Pi0gICAgICAgICAgICBkcm1fa21zX2hlbHBlcl9jb21tb24ubwo+ ID4+ID4gPj4+Pj4+PisgICAgICAgICAgICBkcm1fa21zX2hlbHBlcl9jb21tb24ubyBkcm1fc2lt cGxlX2ttc19oZWxwZXIubwo+ID4+ID4gPj4+Pj4+Pgo+ID4+ID4gPj4+Pj4+PiAgIGRybV9rbXNf aGVscGVyLSQoQ09ORklHX0RSTV9MT0FEX0VESURfRklSTVdBUkUpICs9IGRybV9lZGlkX2xvYWQu bwo+ID4+ID4gPj4+Pj4+PiAgIGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9GQkRFVl9FTVVM QVRJT04pICs9IGRybV9mYl9oZWxwZXIubwo+ID4+ID4gPj4+Pj4+PmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X3NpbXBsZV9rbXNfaGVscGVyLmMKPiA+PiA+ID4+Pj4+Pj5uZXcgZmlsZSBtb2RlIDEwMDY0NAo+ ID4+ID4gPj4+Pj4+PmluZGV4IDAwMDAwMDAuLmQ0NTQxN2EKPiA+PiA+ID4+Pj4+Pj4tLS0gL2Rl di9udWxsCj4gPj4gPiA+Pj4+Pj4+KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zaW1wbGVfa21z X2hlbHBlci5jCj4gPj4gPiA+Pj4+Pj4+QEAgLTAsMCArMSwyMDggQEAKPiA+PiA+ID4+Pj4+Pj4r LyoKPiA+PiA+ID4+Pj4+Pj4rICogQ29weXJpZ2h0IChDKSAyMDE2IE5vcmFsZiBUcsO4bm5lcwo+ ID4+ID4gPj4+Pj4+PisgKgo+ID4+ID4gPj4+Pj4+PisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo+ID4+ID4gPj4+ Pj4+PisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQo+ID4+ID4gPj4+Pj4+PisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgo+ID4+ID4gPj4+ Pj4+PisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ID4+ID4gPj4+Pj4+ PisgKi8KPiA+PiA+ID4+Pj4+Pj4rCj4gPj4gPiA+Pj4+Pj4+KyNpbmNsdWRlIDxkcm0vZHJtUC5o Pgo+ID4+ID4gPj4+Pj4+PisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KPiA+PiA+ID4+Pj4+ Pj4rI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ID4+ID4gPj4+Pj4+PisjaW5j bHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ID4+ID4gPj4+Pj4+PisjaW5jbHVkZSA8ZHJt L2RybV9wbGFuZV9oZWxwZXIuaD4KPiA+PiA+ID4+Pj4+Pj4rI2luY2x1ZGUgPGRybS9kcm1fc2lt cGxlX2ttc19oZWxwZXIuaD4KPiA+PiA+ID4+Pj4+Pj4rI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4K PiA+PiA+ID4+Pj4+Pj4rCj4gPj4gPiA+Pj4+Pj4+Ky8qKgo+ID4+ID4gPj4+Pj4+PisgKiBET0M6 IG92ZXJ2aWV3Cj4gPj4gPiA+Pj4+Pj4+KyAqCj4gPj4gPiA+Pj4+Pj4+KyAqIFRoaXMgaGVscGVy IGxpYnJhcnkgcHJvdmlkZXMgaGVscGVycyBmb3IgZHJpdmVycyBmb3Igc2ltcGxlIGRpc3BsYXkK PiA+PiA+ID4+Pj4+Pj4rICogaGFyZHdhcmUuCj4gPj4gPiA+Pj4+Pj4+KyAqCj4gPj4gPiA+Pj4+ Pj4+KyAqIGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2luaXQoKSBpbml0aWFsaXplcyBhIHNpbXBs ZSBkaXNwbGF5IHBpcGVsaW5lCj4gPj4gPiA+Pj4+Pj4+KyAqIHdoaWNoIGhhcyBvbmx5IG9uZSBm dWxsLXNjcmVlbiBzY2Fub3V0IGJ1ZmZlciBmZWVkaW5nIG9uZSBvdXRwdXQuIFRoZQo+ID4+ID4g Pj4+Pj4+PisgKiBwaXBlbGluZSBpcyByZXByZXNlbnRlZCBieSBzdHJ1Y3QgJmRybV9zaW1wbGVf ZGlzcGxheV9waXBlIGFuZCBiaW5kcwo+ID4+ID4gPj4+Pj4+PisgKiB0b2dldGhlciAmZHJtX3Bs YW5lLCAmZHJtX2NydGMgYW5kICZkcm1fZW5jb2RlciBzdHJ1Y3R1cmVzIGludG8gb25lIGZpeGVk Cj4gPj4gPiA+Pj4+Pj4+KyAqIGVudGl0eS4gU29tZSBmbGV4aWJpbGl0eSBmb3IgY29kZSByZXVz ZSBpcyBwcm92aWRlZCB0aHJvdWdoIGEgc2VwYXJhdGVseQo+ID4+ID4gPj4+Pj4+PisgKiBhbGxv Y2F0ZWQgJmRybV9jb25uZWN0b3Igb2JqZWN0IGFuZCBzdXBwb3J0aW5nIG9wdGlvbmFsICZkcm1f YnJpZGdlCj4gPj4gPiA+Pj4+Pj4+KyAqIGVuY29kZXIgZHJpdmVycy4KPiA+PiA+ID4+Pj4+Pj4r ICovCj4gPj4gPiA+Pj4+Pj4+Kwo+ID4+ID4gPj4+Pj4+PitzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9lbmNvZGVyX2Z1bmNzIGRybV9zaW1wbGVfa21zX2VuY29kZXJfZnVuY3MgPSB7Cj4gPj4gPiA+ Pj4+Pj4+KyAgICAuZGVzdHJveSA9IGRybV9lbmNvZGVyX2NsZWFudXAsCj4gPj4gPiA+Pj4+Pj4+ K307Cj4gPj4gPiA+Pj4+Pj4+Kwo+ID4+ID4gPj4+Pj4+PitzdGF0aWMgdm9pZCBkcm1fc2ltcGxl X2ttc19jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gPj4gPiA+Pj4+Pj4+K3sK PiA+PiA+ID4+Pj4+Pj4rICAgIHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZTsK PiA+PiA+ID4+Pj4+Pj4rCj4gPj4gPiA+Pj4+Pj4+KyAgICBwaXBlID0gY29udGFpbmVyX29mKGNy dGMsIHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSwgY3J0Yyk7Cj4gPj4gPiA+Pj4+Pj4+ KyAgICBpZiAoIXBpcGUtPmZ1bmNzIHx8ICFwaXBlLT5mdW5jcy0+ZW5hYmxlKQo+ID4+ID4gPj4+ Pj4+PisgICAgICAgICAgICByZXR1cm47Cj4gPj4gPiA+Pj4+Pj4+Kwo+ID4+ID4gPj4+Pj4+Pisg ICAgcGlwZS0+ZnVuY3MtPmVuYWJsZShwaXBlLCBjcnRjLT5zdGF0ZSk7Cj4gPj4gPiA+Pj4+Pj4+ K30KPiA+PiA+ID4+Pj4+Pj4rCj4gPj4gPiA+Pj4+Pj4+K3N0YXRpYyB2b2lkIGRybV9zaW1wbGVf a21zX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gPj4gPiA+Pj4+Pj4+K3sK PiA+PiA+ID4+Pj4+Pj4rICAgIHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZTsK PiA+PiA+ID4+Pj4+Pj4rCj4gPj4gPiA+Pj4+Pj4+KyAgICBwaXBlID0gY29udGFpbmVyX29mKGNy dGMsIHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSwgY3J0Yyk7Cj4gPj4gPiA+Pj4+Pj4+ KyAgICBpZiAoIXBpcGUtPmZ1bmNzIHx8ICFwaXBlLT5mdW5jcy0+ZGlzYWJsZSkKPiA+PiA+ID4+ Pj4+Pj4rICAgICAgICAgICAgcmV0dXJuOwo+ID4+ID4gPj4+Pj4+PisKPiA+PiA+ID4+Pj4+Pj4r ICAgIHBpcGUtPmZ1bmNzLT5kaXNhYmxlKHBpcGUpOwo+ID4+ID4gPj4+Pj4+Pit9Cj4gPj4gPiA+ Pj4+Pj4+Kwo+ID4+ID4gPj4+Pj4+PitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBl cl9mdW5jcyBkcm1fc2ltcGxlX2ttc19jcnRjX2hlbHBlcl9mdW5jcyA9IHsKPiA+PiA+ID4+Pj4+ Pj4rICAgIC5kaXNhYmxlID0gZHJtX3NpbXBsZV9rbXNfY3J0Y19kaXNhYmxlLAo+ID4+ID4gPj4+ Pj4+PisgICAgLmVuYWJsZSA9IGRybV9zaW1wbGVfa21zX2NydGNfZW5hYmxlLAo+ID4+ID4gPj4+ Pj4+Pit9Owo+ID4+ID4gPj4+Pj4+PisKPiA+PiA+ID4+Pj4+Pj4rc3RhdGljIGNvbnN0IHN0cnVj dCBkcm1fY3J0Y19mdW5jcyBkcm1fc2ltcGxlX2ttc19jcnRjX2Z1bmNzID0gewo+ID4+ID4gPj4+ Pj4+PisgICAgLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19yZXNldCwKPiA+PiA+ID4+ Pj4+Pj4rICAgIC5kZXN0cm95ID0gZHJtX2NydGNfY2xlYW51cCwKPiA+PiA+ID4+Pj4+Pj4rICAg IC5zZXRfY29uZmlnID0gZHJtX2F0b21pY19oZWxwZXJfc2V0X2NvbmZpZywKPiA+PiA+ID4+Pj4+ Pj4rICAgIC5wYWdlX2ZsaXAgPSBkcm1fYXRvbWljX2hlbHBlcl9wYWdlX2ZsaXAsCj4gPj4gPiA+ Pj4+Pj4+KyAgICAuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Ny dGNfZHVwbGljYXRlX3N0YXRlLAo+ID4+ID4gPj4+Pj4+PisgICAgLmF0b21pY19kZXN0cm95X3N0 YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlLAo+ID4+ID4gPj4+Pj4+ Pit9Owo+ID4+ID4gPj4+Pj4+PisKPiA+PiA+ID4+Pj4+Pj4rc3RhdGljIGludCBkcm1fc2ltcGxl X2ttc19wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gPj4gPiA+ Pj4+Pj4+KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ID4+ID4gPj4+Pj4+Pit7Cj4gPj4gPiA+Pj4+Pj4+KyAg ICBzdHJ1Y3QgZHJtX3JlY3Qgc3JjID0gewo+ID4+ID4gPj4+Pj4+PisgICAgICAgICAgICAueDEg PSBwbGFuZV9zdGF0ZS0+c3JjX3gsCj4gPj4gPiA+Pj4+Pj4+KyAgICAgICAgICAgIC55MSA9IHBs YW5lX3N0YXRlLT5zcmNfeSwKPiA+PiA+ID4+Pj4+Pj4rICAgICAgICAgICAgLngyID0gcGxhbmVf c3RhdGUtPnNyY194ICsgcGxhbmVfc3RhdGUtPnNyY193LAo+ID4+ID4gPj4+Pj4+PisgICAgICAg ICAgICAueTIgPSBwbGFuZV9zdGF0ZS0+c3JjX3kgKyBwbGFuZV9zdGF0ZS0+c3JjX2gsCj4gPj4g PiA+Pj4+Pj4+KyAgICB9Owo+ID4+ID4gPj4+Pj4+PisgICAgc3RydWN0IGRybV9yZWN0IGRlc3Qg PSB7Cj4gPj4gPiA+Pj4+Pj4+KyAgICAgICAgICAgIC54MSA9IHBsYW5lX3N0YXRlLT5jcnRjX3gs Cj4gPj4gPiA+Pj4+Pj4+KyAgICAgICAgICAgIC55MSA9IHBsYW5lX3N0YXRlLT5jcnRjX3ksCj4g Pj4gPiA+Pj4+Pj4+KyAgICAgICAgICAgIC54MiA9IHBsYW5lX3N0YXRlLT5jcnRjX3ggKyBwbGFu ZV9zdGF0ZS0+Y3J0Y193LAo+ID4+ID4gPj4+Pj4+PisgICAgICAgICAgICAueTIgPSBwbGFuZV9z dGF0ZS0+Y3J0Y195ICsgcGxhbmVfc3RhdGUtPmNydGNfaCwKPiA+PiA+ID4+Pj4+Pj4rICAgIH07 Cj4gPj4gPiA+Pj4+Pj4+KyAgICBzdHJ1Y3QgZHJtX3JlY3QgY2xpcCA9IHsgMCB9Owo+ID4+ID4g Pj4+Pj4+PisgICAgc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlOwo+ID4+ID4g Pj4+Pj4+PisgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ID4+ID4gPj4+ Pj4+PisgICAgYm9vbCB2aXNpYmxlOwo+ID4+ID4gPj4+Pj4+PisgICAgaW50IHJldDsKPiA+PiA+ ID4+Pj4+Pj4rCj4gPj4gPiA+Pj4+Pj4+KyAgICBwaXBlID0gY29udGFpbmVyX29mKHBsYW5lLCBz dHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUsIHBsYW5lKTsKPiA+PiA+ID4+Pj4+Pj4rICAg IGNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHBsYW5lX3N0 YXRlLT5zdGF0ZSwKPiA+PiA+ID4+Pj4+Pj4rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZwaXBlLT5jcnRjKTsKPiA+PiA+ID4+Pj4+Pj4rICAgIGlm IChjcnRjX3N0YXRlLT5lbmFibGUgIT0gISFwbGFuZV9zdGF0ZS0+Y3J0YykKPiA+PiA+ID4+Pj4+ Pj4rICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7IC8qIHBsYW5lIG11c3QgbWF0Y2ggY3J0YyBl bmFibGUgc3RhdGUgKi8KPiA+PiA+ID4+Pj4+Pj4rCj4gPj4gPiA+Pj4+Pj4+KyAgICBpZiAoIWNy dGNfc3RhdGUtPmVuYWJsZSkKPiA+PiA+ID4+Pj4+Pj4rICAgICAgICAgICAgcmV0dXJuIDA7IC8q IG5vdGhpbmcgdG8gY2hlY2sgd2hlbiBkaXNhYmxpbmcgb3IgZGlzYWJsZWQgKi8KPiA+PiA+ID4+ Pj4+Pj4rCj4gPj4gPiA+Pj4+Pj4+KyAgICBjbGlwLngyID0gY3J0Y19zdGF0ZS0+YWRqdXN0ZWRf bW9kZS5oZGlzcGxheTsKPiA+PiA+ID4+Pj4+Pj4rICAgIGNsaXAueTIgPSBjcnRjX3N0YXRlLT5h ZGp1c3RlZF9tb2RlLnZkaXNwbGF5Owo+ID4+ID4gPj4+Pj4+PisgICAgcmV0ID0gZHJtX3BsYW5l X2hlbHBlcl9jaGVja191cGRhdGUocGxhbmUsICZwaXBlLT5jcnRjLAo+ID4+ID4gPj4+Pj4+Pisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmVfc3RhdGUtPmZiLAo+ ID4+ID4gPj4+Pj4+PisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNy YywgJmRlc3QsICZjbGlwLAo+ID4+ID4gPj4+Pj4+PisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRFJNX1BMQU5FX0hFTFBFUl9OT19TQ0FMSU5HLAo+ID4+ID4gPj4+Pj4+ PisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFJNX1BMQU5FX0hFTFBF Ul9OT19TQ0FMSU5HLAo+ID4+ID4gPj4+Pj4+PisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZmFsc2UsIHRydWUsICZ2aXNpYmxlKTsKPiA+PiA+ID4+Pj4+Pj4rICAgIGlm IChyZXQpCj4gPj4gPiA+Pj4+Pj4+KyAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPj4gPiA+Pj4+ Pj4+Kwo+ID4+ID4gPj4+Pj4+PisgICAgaWYgKCF2aXNpYmxlKQo+ID4+ID4gPj4+Pj4+PisgICAg ICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+PiA+ID4+Pj4+Pj4rCj4gPj4gPiA+Pj4+Pj4+KyAg ICBpZiAoIXBpcGUtPmZ1bmNzIHx8ICFwaXBlLT5mdW5jcy0+Y2hlY2spCj4gPj4gPiA+Pj4+Pj4+ KyAgICAgICAgICAgIHJldHVybiAwOwo+ID4+ID4gPj4+Pj4+PisKPiA+PiA+ID4+Pj4+Pj4rICAg IHJldHVybiBwaXBlLT5mdW5jcy0+Y2hlY2socGlwZSwgcGxhbmVfc3RhdGUsIGNydGNfc3RhdGUp Owo+ID4+ID4gPj4+Pj4+Pit9Cj4gPj4gPiA+Pj4+Pj5XaGF0J3MgYW55b25lIHN1cHBvc2VkIHRv IGRvIHdpdGggdGhpcyB3aGVuIHRoZSBjbGlwcGVkIGNvb3JkaW5hdGVzCj4gPj4gPiA+Pj4+Pj5h cmVuJ3QgZXZlbiBwYXNzZWQvc3RvcmVkIGFueXdoZXJlPwo+ID4+ID4gPj4+Pj5JdCBkaXNhbGxv d3MgcG9zaXRpb25pbmcgYW5kIHNjYWxpbmcsIHNvIHNob3VsZG4ndCBldmVyIG5lZWQgdG8gaGF2 ZSB0aGUKPiA+PiA+ID4+Pj4+Y2xpcHBlZCBhcmVhPwo+ID4+ID4gPj4+PllvdSBjYW4gc3RpbGwg Y29uZmlndXJlIGEgbGFyZ2VyIGFyZWEgdGhhdCBnZXRzIGNsaXBwZWQgdG8gdGhlCj4gPj4gPiA+ Pj4+ZnVsbHNjcmVlbiBkaW1lbnNpb25zLgo+ID4+ID4gPj4+T2ggcmlnaHQuIE5vcmFsZiwgc291 bmRzIGxpa2Ugd2UgbmVlZCB0byBmZWVkIGJhY2sgdGhlIGNsaXBwZWQgcmVjdGFuZ2xlLgo+ID4+ ID4gPj4+UHJvYmFibHkgYmVzdCBpZiB3ZSBhZGQgY2xpcHBlZCBwbGFuZSBjb29yZGluYXRlcyB0 byBkcm1fcGxhbmVfc3RhdGUuCj4gPj4gPiA+PkJvdGggc3JjIGFuZCBjcnRjIG9yIG9ubHkgc3Jj Pwo+ID4+ID4gPj4KPiA+PiA+ID4+ICAgICAgIGlmICghdmlzaWJsZSkKPiA+PiA+ID4+ICAgICAg ICAgICByZXR1cm4gLUVJTlZBTDsKPiA+PiA+ID4+Kwo+ID4+ID4gPj4rICAgIHBsYW5lX3N0YXRl LT5zcmNfeCA9IHNyYy54MTsKPiA+PiA+ID4+KyAgICBwbGFuZV9zdGF0ZS0+c3JjX3kgPSBzcmMu eTE7Cj4gPj4gPiA+PisgICAgcGxhbmVfc3RhdGUtPnNyY193ID0gZHJtX3JlY3Rfd2lkdGgoJnNy Yyk7Cj4gPj4gPiA+PisgICAgcGxhbmVfc3RhdGUtPnNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KCZz cmMpOwo+ID4+ID4gPj4rCj4gPj4gPiA+PisgICAgcGxhbmVfc3RhdGUtPmNydGNfeCA9IGRlc3Qu eDE7Cj4gPj4gPiA+PisgICAgcGxhbmVfc3RhdGUtPmNydGNfeSA9IGRlc3QueTE7Cj4gPj4gPiA+ PisgICAgcGxhbmVfc3RhdGUtPmNydGNfdyA9IGRybV9yZWN0X3dpZHRoKCZkZXN0KTsKPiA+PiA+ ID4+KyAgICBwbGFuZV9zdGF0ZS0+Y3J0Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZkZXN0KTsKPiA+ PiA+ID5Zb3UgYXJlbid0IGFsbG93ZWQgY2xvYmJlciB0aGUgdXNlciBwcm92aWRlZCBjb29yZGlu YXRlcyBsaWtlIHRoaXMuCj4gPj4gPiA+V2hhdCB5b3UgbmVlZCB0byBkbyBpcyBzdG9yZSB0aGUg Y2xpcHBlZCBjb29yZGluYXRlcyBpbiB0aGUgcGxhbmUKPiA+PiA+ID5zdGF0ZSBpbiBhZGRpdGlv biB0byB0aGUgdXNlciBjb29yZGluYXRlcy4KPiA+PiA+Cj4gPj4gPiBIb3cgZG8gSSBkbyB0aGF0 Pwo+ID4+Cj4gPj4gQWRkIG5ldyBzZXQgb2YgcGxhbmVfc3RhdGUtPmNsaXBwZWRfc3JjL2RzdF94 L3kvaC93IEkgdGhpbmssIGFuZCBzdWdnZXN0Cj4gPj4gdG8gZHJpdmVycyB0byB1c2UgdGhhdCBp ZiB0aGV5IG5lZWQgY2xpcHBlZCBjb29yZGluYXRlcy4gSSB0aGluayBhdCBsZWFzdCwKPiA+PiBh bGwgdGhlc2UgY2xpcCByZWN0cyBhcmUgYSBiaXQgdG9vIGNvbmZ1c2luZyB0byBtZS4gVmlsbGU/ Cj4gPgo+ID4gQmFzaWNhbGx5IGV2ZXJ5b25lIHNob3VsZCB1c2UgdGhlIGNsaXBwZWQgY29vcmRz LiBUaGVyZSBtdXN0IGJlCj4gPiBzb21ldGhpbmcgdmVyeSBzcGVjaWFsIGdvaW5nIG9uIGlmIGFu eW9uZSB3YW50cyB0byB1c2UgdGhlIHJhdyB1c2VyCj4gPiBjb29yZHMuCj4gCj4gSG0sIG1heWJl IGl0IHdvdWxkIGJlIGJldHRlciB0aGVuIHRvIGFkZCByYXdfIHZlcnNpb25zLCBhbmQgY2xpcCB0 bwo+IHNyYy9kc3QgaW4gdGhlIGF0b21pYyBoZWxwZXJzIGZvciBldmVyeW9uZT8gT3Igd291bGQg dGhhdCBicmVhayBzb21lCj4gZHJpdmVycz8gVGhpcyBzZWVtcyB0byBnZXQgYSBiaXQgb3V0IG9m IGhhbmQgLi4uCgpJIHN1cHBvc2Ugd2UgbWlnaHQgYmUgYWJsZSB0byBkbyB0aGUgYmFzaWMgc3R1 ZmYgaW4gc29tZSBjb21tb24gY29kZS4KVGhlIGRyaXZlciBtYXkgbmVlZCB0byBhZGp1c3QgdGhl IGNvb3JkaW5hdGVzIGEgYml0IGZ1cnRoZXIgdG8gZGVhbAp3aXRoIGhhcmR3YXJlIHNwZWNpZmlj IGxpbWl0cyBhbmQgd2hhdG5vdC4KCk9uZSBpc3N1ZSBpcyB0aGF0IEkgb3JpZ2luYWxseSBkZXNp Z25lZCB0aGUgcmVjdCBzdHVmZiBmb3IgbmljZQpoYXJkd2FyZSB0aGF0IGNhbiBlZy4gZGVhbCB3 aXRoIHN1Yi1waXhlbCBjb29yZGluYXRlcy4gQnV0IHRoZXJlJ3MKbG90cyBvZiBub3Qgc28gbmlj ZSBoYXJkd2FyZSBhcm91bmQgYW5kIHRoZSBjdXJyZW50IGNvZGUgbWF5IG5vdCBiZQp0aGUgYmVz dCBmaXQgdGhlcmUuCgpXZSBzaG91bGQgYWxzbyBjb21lIHRvIHNvbWUga2luZCBvZiBkZWNpc2lv bnMgb24gd2hhdCBraW5kIG9mCnRvbGVyYW5jZXMgd2UgYWxsb3cgaW4gZGV2aWF0aW5nIGZyb20g dGhlIHVzZXIgY29vcmRpbmF0ZXMgYW5kCndoYW5vdC4KCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50 ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755536AbcEQOlh (ORCPT ); Tue, 17 May 2016 10:41:37 -0400 Received: from mga03.intel.com ([134.134.136.65]:16463 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751243AbcEQOlg (ORCPT ); Tue, 17 May 2016 10:41:36 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.26,324,1459839600"; d="scan'208";a="982923935" Date: Tue, 17 May 2016 17:41:15 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Daniel Vetter Cc: Noralf =?iso-8859-1?Q?Tr=F8nnes?= , Jyri Sarha , dri-devel , Linux Kernel Mailing List Subject: Re: [PATCH v4 3/3] drm: Add helper for simple display pipeline Message-ID: <20160517144115.GQ4329@intel.com> References: <20160512183614.GU4329@intel.com> <20160517070501.GJ27098@phenom.ffwll.local> <20160517074651.GM4329@intel.com> <20160517075945.GQ27098@phenom.ffwll.local> <20160517121208.GO4329@intel.com> <20160517130452.GL27098@phenom.ffwll.local> <20160517131401.GP4329@intel.com> 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 Tue, May 17, 2016 at 03:19:20PM +0200, Daniel Vetter wrote: > On Tue, May 17, 2016 at 3:14 PM, Ville Syrjälä > wrote: > > On Tue, May 17, 2016 at 03:04:52PM +0200, Daniel Vetter wrote: > >> On Tue, May 17, 2016 at 02:22:26PM +0200, Noralf Trønnes wrote: > >> > > >> > > >> > Den 17.05.2016 14:12, skrev Ville Syrjälä: > >> > >On Tue, May 17, 2016 at 02:00:45PM +0200, Noralf Trønnes wrote: > >> > >>Den 17.05.2016 09:59, skrev Daniel Vetter: > >> > >>>On Tue, May 17, 2016 at 10:46:51AM +0300, Ville Syrjälä wrote: > >> > >>>>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. > >> > >>>Oh right. Noralf, sounds like we need to feed back the clipped rectangle. > >> > >>>Probably best if we add clipped plane coordinates to drm_plane_state. > >> > >>Both src and crtc or only src? > >> > >> > >> > >> if (!visible) > >> > >> return -EINVAL; > >> > >>+ > >> > >>+ plane_state->src_x = src.x1; > >> > >>+ plane_state->src_y = src.y1; > >> > >>+ plane_state->src_w = drm_rect_width(&src); > >> > >>+ plane_state->src_h = drm_rect_height(&src); > >> > >>+ > >> > >>+ plane_state->crtc_x = dest.x1; > >> > >>+ plane_state->crtc_y = dest.y1; > >> > >>+ plane_state->crtc_w = drm_rect_width(&dest); > >> > >>+ plane_state->crtc_h = drm_rect_height(&dest); > >> > >You aren't allowed clobber the user provided coordinates like this. > >> > >What you need to do is store the clipped coordinates in the plane > >> > >state in addition to the user coordinates. > >> > > >> > How do I do that? > >> > >> Add new set of plane_state->clipped_src/dst_x/y/h/w I think, and suggest > >> to drivers to use that if they need clipped coordinates. I think at least, > >> all these clip rects are a bit too confusing to me. Ville? > > > > Basically everyone should use the clipped coords. There must be > > something very special going on if anyone wants to use the raw user > > coords. > > Hm, maybe it would be better then to add raw_ versions, and clip to > src/dst in the atomic helpers for everyone? Or would that break some > drivers? This seems to get a bit out of hand ... I suppose we might be able to do the basic stuff in some common code. The driver may need to adjust the coordinates a bit further to deal with hardware specific limits and whatnot. One issue is that I originally designed the rect stuff for nice hardware that can eg. deal with sub-pixel coordinates. But there's lots of not so nice hardware around and the current code may not be the best fit there. We should also come to some kind of decisions on what kind of tolerances we allow in deviating from the user coordinates and whanot. -- Ville Syrjälä Intel OTC