From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: Re: [RFC 0/6] drm/fences: add in-fences to DRM Date: Thu, 24 Mar 2016 11:31:53 -0300 Message-ID: <20160324143153.GA4781@joana> References: <1458758847-21170-1-git-send-email-gustavo@padovan.org> <56F3954D.8000308@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yw0-f177.google.com (mail-yw0-f177.google.com [209.85.161.177]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6DA046E9ED for ; Thu, 24 Mar 2016 14:32:12 +0000 (UTC) Received: by mail-yw0-f177.google.com with SMTP id h129so60879234ywb.1 for ; Thu, 24 Mar 2016 07:32:12 -0700 (PDT) Content-Disposition: inline In-Reply-To: <56F3954D.8000308@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Maarten Lankhorst Cc: Daniel Stone , Daniel Vetter , Arve =?iso-8859-1?B?SGr4bm5lduVn?= , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Riley Andrews , Gustavo Padovan , John Harrison List-Id: dri-devel@lists.freedesktop.org SGkgTWFhcnRlbiwKCjIwMTYtMDMtMjQgTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hv cnN0QGxpbnV4LmludGVsLmNvbT46Cgo+IEhleSwKPiAKPiBPcCAyMy0wMy0xNiBvbSAxOTo0NyBz Y2hyZWVmIEd1c3Rhdm8gUGFkb3ZhbjoKPiA+IEZyb206IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2 by5wYWRvdmFuQGNvbGxhYm9yYS5jby51az4KPiA+Cj4gPiBIaSwKPiA+Cj4gPiBUaGlzIGlzIGEg Zmlyc3QgcHJvcG9zYWwgdG8gZGlzY3VzcyB0aGUgYWRkaXRpb24gb2YgaW4tZmVuY2VzIHN1cHBv cnQKPiA+IHRvIERSTS4gSXQgYWRkcyBhIG5ldyBzdHJ1Y3QgdG8gZmVuY2UuYyB0byBhYnN0cmFj dCB0aGUgdXNlIG9mIHN5bmNfZmlsZQo+ID4gaW4gRFJNIGRyaXZlcnMuIFRoZSBuZXcgc3RydWN0 IGZlbmNlX2NvbGxlY3Rpb24gY29udGFpbnMgYSBhcnJheSB3aXRoIGFsbAo+ID4gZmVuY2VzIHRo YXQgYSBhdG9taWMgY29tbWl0IG5lZWRzIHRvIHdhaXQgb24KPiA+Cj4gPiAvKioKPiA+ICAqIHN0 cnVjdCBmZW5jZV9jb2xsZWN0aW9uIC0gYWdncmVnYXRlIGZlbmNlcyB0b2dldGhlcgo+ID4gICog QG51bV9mZW5jZXM6IG51bWJlciBvZiBmZW5jZSBpbiB0aGUgY29sbGVjdGlvbi4KPiA+ICAqIEB1 c2VyX2RhdGE6IHVzZXIgZGF0YS4KPiA+ICAqIEBmdW5jOiB1c2VyIGNhbGxiYWNrIHRvIHB1dCB1 c2VyIGRhdGEuCj4gPiAgKiBAZmVuY2VzOiBhcnJheSBvZiBAbnVtX2ZlbmNlcyBmZW5jZXMuCj4g PiAgKi8KPiA+IHN0cnVjdCBmZW5jZV9jb2xsZWN0aW9uIHsKPiA+ICAgICAgICBpbnQgbnVtX2Zl bmNlczsKPiA+ICAgICAgICB2b2lkICp1c2VyX2RhdGE7Cj4gPiAgICAgICAgY29sbGVjdGlvbl9w dXRfZnVuY190IGZ1bmM7Cj4gPiAgICAgICAgc3RydWN0IGZlbmNlICpmZW5jZXNbXTsKPiA+IH07 Cj4gPgo+ID4KPiA+IFRoZSBmZW5jZV9jb2xsZWN0aW9uIGlzIGFsbG9jYXRlZCBhbmQgZmlsbGVk IGJ5IHN5bmNfZmlsZV9mZW5jZXNfZ2V0KCkgYW5kCj4gPiBhdG9taWNfY29tbWl0IGhlbHBlcnMg Y2FuIHVzZSBmZW5jZV9jb2xsZWN0aW9uX3dhaXQoKSB0byB3YWl0IHRoZSBmZW5jZXMgdG8KPiA+ IHNpZ25hbC4KPiA+Cj4gPiBUaGVzZSBwYXRjaGVzIGRlcGVuZHMgb24gdGhlIHN5bmMgQUJJIHJl d29yazoKPiA+Cj4gPiBodHRwczovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9kcmktZGV2ZWwvbXNn MTAyNzk1Lmh0bWwKPiA+Cj4gPiBhbmQgdGhlIHBhdGNoIHRvIGRlLXN0YWdlIHRoZSBzeW5jIGZy YW1ld29yazoKPiA+Cj4gPiBodHRwczovL3d3dy5zcGluaWNzLm5ldC9saXN0cy9kcmktZGV2ZWwv bXNnMTAyNzk5Lmh0bWwKPiA+Cj4gPgo+ID4gSSBhbHNvIGhhY2tlZCB0b2dldGhlciBzb21lIHN5 bmMgc3VwcG9ydCBpbnRvIG1vZGV0ZXN0IGZvciB0ZXN0aW5nOgo+ID4KPiA+IGh0dHBzOi8vZ2l0 LmNvbGxhYm9yYS5jb20vY2dpdC91c2VyL3BhZG92YW4vbGliZHJtLmdpdC9sb2cvP2g9YXRvbWlj Cj4gPgo+IFdoeSBkaWQgeW91IGNob29zZSB0byBhZGQgZmVuY2VfY29sbGVjdGlvbiwgcmF0aGVy IHRoYW4gcHV0dGluZyBzeW5jX2ZpbGUgaW4gc3RhdGU/Cj4gCj4gVGhlcmUgdXNlZCB0byBiZSBh IHN5bmNfZmVuY2Vfd2FpdCBmdW5jdGlvbiwgd2hpY2ggd291bGQgbWVhbiB5b3UnZCBoYXZlIGV2 ZXJ5dGhpbmcgeW91IG5lZWQuCgpXZSBkaXNjdXNzZWQgdGhpcyBvbiAjZHJpLWRldmVsIGEgZmV3 IGRheXMgYWdvLiBUaGUgaWRlYSBiZWhpbmQgdGhpcyBpcwp0byBhYnN0cmFjdCBzeW5jX2ZpbGUg ZnJvbSBhbnkgZHJtIGRyaXZlciBhbmQgbGV0IG9ubHkgZHJtIGNvcmUgZGVhbAp3aXRoIHN5bmNf ZmlsZS4gCgpJbiB0aGUgbmV4dCBpdGVyYXRpb24gZXZlbiBmZW5jZV9jb2xsZWN0aW9uIHdpbGwg YmUgZ29uZSwgc28gdGhlIGRyaXZlcgp3ZSBkZWFsIG9ubHkgd2l0aCBzdHJ1Y3QgZmVuY2UgYW5k IHRoZSBmZW5jZV9jb2xsZWN0aW9uIHdpbGwgYmUgYQpzdWJjbGFzcyBvZiBmZW5jZS4KCglHdXN0 YXZvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757239AbcCXOcU (ORCPT ); Thu, 24 Mar 2016 10:32:20 -0400 Received: from mail-yw0-f171.google.com ([209.85.161.171]:32950 "EHLO mail-yw0-f171.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751695AbcCXOcN (ORCPT ); Thu, 24 Mar 2016 10:32:13 -0400 Date: Thu, 24 Mar 2016 11:31:53 -0300 From: Gustavo Padovan To: Maarten Lankhorst Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Daniel Stone , Arve =?iso-8859-1?B?SGr4bm5lduVn?= , Riley Andrews , Daniel Vetter , Rob Clark , Greg Hackmann , John Harrison , Gustavo Padovan Subject: Re: [RFC 0/6] drm/fences: add in-fences to DRM Message-ID: <20160324143153.GA4781@joana> Mail-Followup-To: Gustavo Padovan , Maarten Lankhorst , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Daniel Stone , Arve =?iso-8859-1?B?SGr4bm5lduVn?= , Riley Andrews , Daniel Vetter , Rob Clark , Greg Hackmann , John Harrison , Gustavo Padovan References: <1458758847-21170-1-git-send-email-gustavo@padovan.org> <56F3954D.8000308@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <56F3954D.8000308@linux.intel.com> 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 Hi Maarten, 2016-03-24 Maarten Lankhorst : > Hey, > > Op 23-03-16 om 19:47 schreef Gustavo Padovan: > > From: Gustavo Padovan > > > > Hi, > > > > This is a first proposal to discuss the addition of in-fences support > > to DRM. It adds a new struct to fence.c to abstract the use of sync_file > > in DRM drivers. The new struct fence_collection contains a array with all > > fences that a atomic commit needs to wait on > > > > /** > > * struct fence_collection - aggregate fences together > > * @num_fences: number of fence in the collection. > > * @user_data: user data. > > * @func: user callback to put user data. > > * @fences: array of @num_fences fences. > > */ > > struct fence_collection { > > int num_fences; > > void *user_data; > > collection_put_func_t func; > > struct fence *fences[]; > > }; > > > > > > The fence_collection is allocated and filled by sync_file_fences_get() and > > atomic_commit helpers can use fence_collection_wait() to wait the fences to > > signal. > > > > These patches depends on the sync ABI rework: > > > > https://www.spinics.net/lists/dri-devel/msg102795.html > > > > and the patch to de-stage the sync framework: > > > > https://www.spinics.net/lists/dri-devel/msg102799.html > > > > > > I also hacked together some sync support into modetest for testing: > > > > https://git.collabora.com/cgit/user/padovan/libdrm.git/log/?h=atomic > > > Why did you choose to add fence_collection, rather than putting sync_file in state? > > There used to be a sync_fence_wait function, which would mean you'd have everything you need. We discussed this on #dri-devel a few days ago. The idea behind this is to abstract sync_file from any drm driver and let only drm core deal with sync_file. In the next iteration even fence_collection will be gone, so the driver we deal only with struct fence and the fence_collection will be a subclass of fence. Gustavo