From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v4 3/3] drm: Add helper for simple display pipeline Date: Tue, 17 May 2016 09:05:01 +0200 Message-ID: <20160517070501.GJ27098@phenom.ffwll.local> References: <1463077523-23959-1-git-send-email-noralf@tronnes.org> <1463077523-23959-4-git-send-email-noralf@tronnes.org> <20160512183614.GU4329@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7D5A96E396 for ; Tue, 17 May 2016 07:05:03 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id w143so2165218wmw.3 for ; Tue, 17 May 2016 00:05:03 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20160512183614.GU4329@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: dri-devel@lists.freedesktop.org, jsarha@ti.com, linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBNYXkgMTIsIDIwMTYgYXQgMDk6MzY6MTRQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFRodSwgTWF5IDEyLCAyMDE2IGF0IDA4OjI1OjIzUE0gKzAyMDAsIE5vcmFs ZiBUcsO4bm5lcyB3cm90ZToKPiA+IFByb3ZpZGVzIGhlbHBlciBmdW5jdGlvbnMgZm9yIGRyaXZl cnMgdGhhdCBoYXZlIGEgc2ltcGxlIGRpc3BsYXkKPiA+IHBpcGVsaW5lLiBQbGFuZSwgY3J0YyBh bmQgZW5jb2RlciBhcmUgY29sbGFwc2VkIGludG8gb25lIGVudGl0eS4KPiA+IAo+ID4gQ2M6IGpz YXJoYUB0aS5jb20KPiA+IFNpZ25lZC1vZmYtYnk6IE5vcmFsZiBUcsO4bm5lcyA8bm9yYWxmQHRy b25uZXMub3JnPgo+ID4gLS0tCj4gPiAKPiA+IENoYW5nZXMgc2luY2UgdjM6Cj4gPiAtIChzdHJ1 Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKiktPmZ1bmNzIHNob3VsZCBiZSBjb25zdAo+ID4g Cj4gPiBDaGFuZ2VzIHNpbmNlIHYyOgo+ID4gLSBEcm9wIEtjb25maWcga25vYiBEUk1fS01TX0hF TFBFUgo+ID4gLSBFeHBhbmQgZG9jdW1lbnRhdGlvbgo+ID4gCj4gPiBDaGFuZ2VzIHNpbmNlIHYx Ogo+ID4gLSBBZGQgRE9DIGhlYWRlciBhbmQgYWRkIHRvIGdwdS50bXBsCj4gPiAtIEZpeCBkb2Nz OiBAZnVuY3MgaXMgb3B0aW9uYWwsICJuZWdhdGl2ZSBlcnJvciBjb2RlIiwKPiA+ICAgIlRoaXMg aG9vayBpcyBvcHRpb25hbC4iCj4gPiAtIEFkZCBjaGVja3MgdG8gZHJtX3NpbXBsZV9rbXNfcGxh bmVfYXRvbWljX2NoZWNrKCkKPiA+IAo+ID4gIERvY3VtZW50YXRpb24vRG9jQm9vay9ncHUudG1w bCAgICAgICAgICB8ICAgNiArCj4gPiAgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAg ICAgICAgIHwgICAyICstCj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBl ci5jIHwgMjA4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgaW5jbHVkZS9k cm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmggICAgIHwgIDk0ICsrKysrKysrKysrKysrKwo+ID4g IDQgZmlsZXMgY2hhbmdlZCwgMzA5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiA+ICBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5j Cj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBl ci5oCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ3B1LnRtcGwg Yi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ3B1LnRtcGwKPiA+IGluZGV4IDRhMGM1OTkuLmNmM2Y1 YTggMTAwNjQ0Cj4gPiAtLS0gYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ3B1LnRtcGwKPiA+ICsr KyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay9ncHUudG1wbAo+ID4gQEAgLTE2OTMsNiArMTY5Mywx MiBAQCB2b2lkIGludGVsX2NydF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiAgIUVk cml2ZXJzL2dwdS9kcm0vZHJtX3BhbmVsLmMKPiA+ICAhUGRyaXZlcnMvZ3B1L2RybS9kcm1fcGFu ZWwuYyBkcm0gcGFuZWwKPiA+ICAgICAgPC9zZWN0Mj4KPiA+ICsgICAgPHNlY3QyPgo+ID4gKyAg ICAgIDx0aXRsZT5TaW1wbGUgS01TIEhlbHBlciBSZWZlcmVuY2U8L3RpdGxlPgo+ID4gKyFJaW5j bHVkZS9kcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmgKPiA+ICshRWRyaXZlcnMvZ3B1L2RybS9k cm1fc2ltcGxlX2ttc19oZWxwZXIuYwo+ID4gKyFQZHJpdmVycy9ncHUvZHJtL2RybV9zaW1wbGVf a21zX2hlbHBlci5jIG92ZXJ2aWV3Cj4gPiArICAgIDwvc2VjdDI+Cj4gPiAgICA8L3NlY3QxPgo+ ID4gCj4gPiAgICA8IS0tIEludGVybmFsczoga21zIHByb3BlcnRpZXMgLS0+Cj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxl Cj4gPiBpbmRleCAyYmQzZTVhLi4zMWI4NWRmNSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9NYWtlZmlsZQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gPiBAQCAt MjMsNyArMjMsNyBAQCBkcm0tJChDT05GSUdfQUdQKSArPSBkcm1fYWdwc3VwcG9ydC5vCj4gPiAK PiA+ICBkcm1fa21zX2hlbHBlci15IDo9IGRybV9jcnRjX2hlbHBlci5vIGRybV9kcF9oZWxwZXIu byBkcm1fcHJvYmVfaGVscGVyLm8gXAo+ID4gIAkJZHJtX3BsYW5lX2hlbHBlci5vIGRybV9kcF9t c3RfdG9wb2xvZ3kubyBkcm1fYXRvbWljX2hlbHBlci5vIFwKPiA+IC0JCWRybV9rbXNfaGVscGVy X2NvbW1vbi5vCj4gPiArCQlkcm1fa21zX2hlbHBlcl9jb21tb24ubyBkcm1fc2ltcGxlX2ttc19o ZWxwZXIubwo+ID4gCj4gPiAgZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX0xPQURfRURJRF9G SVJNV0FSRSkgKz0gZHJtX2VkaWRfbG9hZC5vCj4gPiAgZHJtX2ttc19oZWxwZXItJChDT05GSUdf RFJNX0ZCREVWX0VNVUxBVElPTikgKz0gZHJtX2ZiX2hlbHBlci5vCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9zaW1wbGVfa21zX2hlbHBlci5jCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5k ZXggMDAwMDAwMC4uZDQ1NDE3YQo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5jCj4gPiBAQCAtMCwwICsxLDIwOCBAQAo+ID4g Ky8qCj4gPiArICogQ29weXJpZ2h0IChDKSAyMDE2IE5vcmFsZiBUcsO4bm5lcwo+ID4gKyAqCj4g PiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKPiA+ICsgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQo+ID4gKyAqIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4g PiArICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiA+ICsgKi8KPiA+ICsK PiA+ICsjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMu aD4KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gPiArI2luY2x1ZGUg PGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxw ZXIuaD4KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5oPgo+ID4gKyNp bmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gPiArCj4gPiArLyoqCj4gPiArICogRE9DOiBvdmVydmll dwo+ID4gKyAqCj4gPiArICogVGhpcyBoZWxwZXIgbGlicmFyeSBwcm92aWRlcyBoZWxwZXJzIGZv ciBkcml2ZXJzIGZvciBzaW1wbGUgZGlzcGxheQo+ID4gKyAqIGhhcmR3YXJlLgo+ID4gKyAqCj4g PiArICogZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVfaW5pdCgpIGluaXRpYWxpemVzIGEgc2ltcGxl IGRpc3BsYXkgcGlwZWxpbmUKPiA+ICsgKiB3aGljaCBoYXMgb25seSBvbmUgZnVsbC1zY3JlZW4g c2Nhbm91dCBidWZmZXIgZmVlZGluZyBvbmUgb3V0cHV0LiBUaGUKPiA+ICsgKiBwaXBlbGluZSBp cyByZXByZXNlbnRlZCBieSBzdHJ1Y3QgJmRybV9zaW1wbGVfZGlzcGxheV9waXBlIGFuZCBiaW5k cwo+ID4gKyAqIHRvZ2V0aGVyICZkcm1fcGxhbmUsICZkcm1fY3J0YyBhbmQgJmRybV9lbmNvZGVy IHN0cnVjdHVyZXMgaW50byBvbmUgZml4ZWQKPiA+ICsgKiBlbnRpdHkuIFNvbWUgZmxleGliaWxp dHkgZm9yIGNvZGUgcmV1c2UgaXMgcHJvdmlkZWQgdGhyb3VnaCBhIHNlcGFyYXRlbHkKPiA+ICsg KiBhbGxvY2F0ZWQgJmRybV9jb25uZWN0b3Igb2JqZWN0IGFuZCBzdXBwb3J0aW5nIG9wdGlvbmFs ICZkcm1fYnJpZGdlCj4gPiArICogZW5jb2RlciBkcml2ZXJzLgo+ID4gKyAqLwo+ID4gKwo+ID4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgZHJtX3NpbXBsZV9rbXNfZW5j b2Rlcl9mdW5jcyA9IHsKPiA+ICsJLmRlc3Ryb3kgPSBkcm1fZW5jb2Rlcl9jbGVhbnVwLAo+ID4g K307Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgZHJtX3NpbXBsZV9rbXNfY3J0Y19lbmFibGUoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9zaW1wbGVfZGlzcGxh eV9waXBlICpwaXBlOwo+ID4gKwo+ID4gKwlwaXBlID0gY29udGFpbmVyX29mKGNydGMsIHN0cnVj dCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSwgY3J0Yyk7Cj4gPiArCWlmICghcGlwZS0+ZnVuY3Mg fHwgIXBpcGUtPmZ1bmNzLT5lbmFibGUpCj4gPiArCQlyZXR1cm47Cj4gPiArCj4gPiArCXBpcGUt PmZ1bmNzLT5lbmFibGUocGlwZSwgY3J0Yy0+c3RhdGUpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0 aWMgdm9pZCBkcm1fc2ltcGxlX2ttc19jcnRjX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRj KQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlOwo+ID4g Kwo+ID4gKwlwaXBlID0gY29udGFpbmVyX29mKGNydGMsIHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3Bs YXlfcGlwZSwgY3J0Yyk7Cj4gPiArCWlmICghcGlwZS0+ZnVuY3MgfHwgIXBpcGUtPmZ1bmNzLT5k aXNhYmxlKQo+ID4gKwkJcmV0dXJuOwo+ID4gKwo+ID4gKwlwaXBlLT5mdW5jcy0+ZGlzYWJsZShw aXBlKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxw ZXJfZnVuY3MgZHJtX3NpbXBsZV9rbXNfY3J0Y19oZWxwZXJfZnVuY3MgPSB7Cj4gPiArCS5kaXNh YmxlID0gZHJtX3NpbXBsZV9rbXNfY3J0Y19kaXNhYmxlLAo+ID4gKwkuZW5hYmxlID0gZHJtX3Np bXBsZV9rbXNfY3J0Y19lbmFibGUsCj4gPiArfTsKPiA+ICsKPiA+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9jcnRjX2Z1bmNzIGRybV9zaW1wbGVfa21zX2NydGNfZnVuY3MgPSB7Cj4gPiArCS5y ZXNldCA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfcmVzZXQsCj4gPiArCS5kZXN0cm95ID0gZHJt X2NydGNfY2xlYW51cCwKPiA+ICsJLnNldF9jb25maWcgPSBkcm1fYXRvbWljX2hlbHBlcl9zZXRf Y29uZmlnLAo+ID4gKwkucGFnZV9mbGlwID0gZHJtX2F0b21pY19oZWxwZXJfcGFnZV9mbGlwLAo+ ID4gKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfZHVw bGljYXRlX3N0YXRlLAo+ID4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hl bHBlcl9jcnRjX2Rlc3Ryb3lfc3RhdGUsCj4gPiArfTsKPiA+ICsKPiA+ICtzdGF0aWMgaW50IGRy bV9zaW1wbGVfa21zX3BsYW5lX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK PiA+ICsJCQkJCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ID4gK3sKPiA+ ICsJc3RydWN0IGRybV9yZWN0IHNyYyA9IHsKPiA+ICsJCS54MSA9IHBsYW5lX3N0YXRlLT5zcmNf eCwKPiA+ICsJCS55MSA9IHBsYW5lX3N0YXRlLT5zcmNfeSwKPiA+ICsJCS54MiA9IHBsYW5lX3N0 YXRlLT5zcmNfeCArIHBsYW5lX3N0YXRlLT5zcmNfdywKPiA+ICsJCS55MiA9IHBsYW5lX3N0YXRl LT5zcmNfeSArIHBsYW5lX3N0YXRlLT5zcmNfaCwKPiA+ICsJfTsKPiA+ICsJc3RydWN0IGRybV9y ZWN0IGRlc3QgPSB7Cj4gPiArCQkueDEgPSBwbGFuZV9zdGF0ZS0+Y3J0Y194LAo+ID4gKwkJLnkx ID0gcGxhbmVfc3RhdGUtPmNydGNfeSwKPiA+ICsJCS54MiA9IHBsYW5lX3N0YXRlLT5jcnRjX3gg KyBwbGFuZV9zdGF0ZS0+Y3J0Y193LAo+ID4gKwkJLnkyID0gcGxhbmVfc3RhdGUtPmNydGNfeSAr IHBsYW5lX3N0YXRlLT5jcnRjX2gsCj4gPiArCX07Cj4gPiArCXN0cnVjdCBkcm1fcmVjdCBjbGlw ID0geyAwIH07Cj4gPiArCXN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZTsKPiA+ ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ID4gKwlib29sIHZpc2libGU7 Cj4gPiArCWludCByZXQ7Cj4gPiArCj4gPiArCXBpcGUgPSBjb250YWluZXJfb2YocGxhbmUsIHN0 cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSwgcGxhbmUpOwo+ID4gKwljcnRjX3N0YXRlID0g ZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShwbGFuZV9zdGF0ZS0+c3RhdGUsCj4g PiArCQkJCQkJCSZwaXBlLT5jcnRjKTsKPiA+ICsJaWYgKGNydGNfc3RhdGUtPmVuYWJsZSAhPSAh IXBsYW5lX3N0YXRlLT5jcnRjKQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7IC8qIHBsYW5lIG11c3Qg bWF0Y2ggY3J0YyBlbmFibGUgc3RhdGUgKi8KPiA+ICsKPiA+ICsJaWYgKCFjcnRjX3N0YXRlLT5l bmFibGUpCj4gPiArCQlyZXR1cm4gMDsgLyogbm90aGluZyB0byBjaGVjayB3aGVuIGRpc2FibGlu ZyBvciBkaXNhYmxlZCAqLwo+ID4gKwo+ID4gKwljbGlwLngyID0gY3J0Y19zdGF0ZS0+YWRqdXN0 ZWRfbW9kZS5oZGlzcGxheTsKPiA+ICsJY2xpcC55MiA9IGNydGNfc3RhdGUtPmFkanVzdGVkX21v ZGUudmRpc3BsYXk7Cj4gPiArCXJldCA9IGRybV9wbGFuZV9oZWxwZXJfY2hlY2tfdXBkYXRlKHBs YW5lLCAmcGlwZS0+Y3J0YywKPiA+ICsJCQkJCSAgICBwbGFuZV9zdGF0ZS0+ZmIsCj4gPiArCQkJ CQkgICAgJnNyYywgJmRlc3QsICZjbGlwLAo+ID4gKwkJCQkJICAgIERSTV9QTEFORV9IRUxQRVJf Tk9fU0NBTElORywKPiA+ICsJCQkJCSAgICBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkcsCj4g PiArCQkJCQkgICAgZmFsc2UsIHRydWUsICZ2aXNpYmxlKTsKPiA+ICsJaWYgKHJldCkKPiA+ICsJ CXJldHVybiByZXQ7Cj4gPiArCj4gPiArCWlmICghdmlzaWJsZSkKPiA+ICsJCXJldHVybiAtRUlO VkFMOwo+ID4gKwo+ID4gKwlpZiAoIXBpcGUtPmZ1bmNzIHx8ICFwaXBlLT5mdW5jcy0+Y2hlY2sp Cj4gPiArCQlyZXR1cm4gMDsKPiA+ICsKPiA+ICsJcmV0dXJuIHBpcGUtPmZ1bmNzLT5jaGVjayhw aXBlLCBwbGFuZV9zdGF0ZSwgY3J0Y19zdGF0ZSk7Cj4gPiArfQo+IAo+IFdoYXQncyBhbnlvbmUg c3VwcG9zZWQgdG8gZG8gd2l0aCB0aGlzIHdoZW4gdGhlIGNsaXBwZWQgY29vcmRpbmF0ZXMKPiBh cmVuJ3QgZXZlbiBwYXNzZWQvc3RvcmVkIGFueXdoZXJlPwoKSXQgZGlzYWxsb3dzIHBvc2l0aW9u aW5nIGFuZCBzY2FsaW5nLCBzbyBzaG91bGRuJ3QgZXZlciBuZWVkIHRvIGhhdmUgdGhlCmNsaXBw ZWQgYXJlYT8KLURhbmllbAotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50 ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755272AbcEQHFI (ORCPT ); Tue, 17 May 2016 03:05:08 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:34093 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750995AbcEQHFE (ORCPT ); Tue, 17 May 2016 03:05:04 -0400 Date: Tue, 17 May 2016 09:05:01 +0200 From: Daniel Vetter To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: 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: <20160517070501.GJ27098@phenom.ffwll.local> Mail-Followup-To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= , Noralf =?iso-8859-1?Q?Tr=F8nnes?= , jsarha@ti.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org References: <1463077523-23959-1-git-send-email-noralf@tronnes.org> <1463077523-23959-4-git-send-email-noralf@tronnes.org> <20160512183614.GU4329@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20160512183614.GU4329@intel.com> X-Operating-System: Linux phenom 4.6.0-rc5+ 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 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? -Daniel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch