From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC 4/8] drm/fence: add in-fences support Date: Fri, 15 Apr 2016 10:11:32 +0200 Message-ID: <20160415081132.GT2510@phenom.ffwll.local> References: <1460683781-22535-1-git-send-email-gustavo@padovan.org> <1460683781-22535-5-git-send-email-gustavo@padovan.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id DA8DB6EBC4 for ; Fri, 15 Apr 2016 08:11:36 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id y144so3929257wmd.0 for ; Fri, 15 Apr 2016 01:11:36 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1460683781-22535-5-git-send-email-gustavo@padovan.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Gustavo Padovan Cc: marcheu@google.com, Daniel Stone , seanpaul@google.com, Daniel Vetter , Arve =?iso-8859-1?B?SGr4bm5lduVn?= , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Riley Andrews , m.chehab@samsung.com, Gustavo Padovan , John Harrison , laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBBcHIgMTQsIDIwMTYgYXQgMDY6Mjk6MzdQTSAtMDcwMCwgR3VzdGF2byBQYWRvdmFu IHdyb3RlOgo+IEZyb206IEd1c3Rhdm8gUGFkb3ZhbiA8Z3VzdGF2by5wYWRvdmFuQGNvbGxhYm9y YS5jby51az4KPiAKPiBUaGVyZSBpcyBub3cgYSBuZXcgcHJvcGVydHkgY2FsbGVkIEZFTkNFX0ZE IGF0dGFjaGVkIHRvIGV2ZXJ5IHBsYW5lCj4gc3RhdGUgdGhhdCByZWNlaXZlcyB0aGUgc3luY19m aWxlIGZkIGZyb20gdXNlcnNwYWNlIHZpYSB0aGUgYXRvbWljIGNvbW1pdAo+IElPQ1RMLgo+IAo+ IFRoZSBmZCBpcyB0aGVuIHRyYW5zbGF0ZWQgdG8gYSBmZW5jZSAodGhhdCBtYXkgYmUgYSBmZW5j ZV9jb2xsZWN0aW9uCj4gc3ViY2xhc3Mgb3IganVzdCBhIG5vcm1hbCBmZW5jZSkgYW5kIHRoZW4g dXNlZCBieSBEUk0gdG8gZmVuY2Vfd2FpdCgpIGZvcgo+IGFsbCBmZW5jZXMgaW4gdGhlIHN5bmNf ZmlsZSB0byBzaWduYWwuIFNvIGl0IG9ubHkgY29tbWl0cyB3aGVuIGFsbAo+IGZyYW1lYnVmZmVy cyBhcmUgcmVhZHkgdG8gc2Nhbm91dC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBHdXN0YXZvIFBhZG92 YW4gPGd1c3Rhdm8ucGFkb3ZhbkBjb2xsYWJvcmEuY28udWs+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9LY29uZmlnICAgICAgICAgICAgIHwgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljLmMgICAgICAgIHwgOCArKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19o ZWxwZXIuYyB8IDUgKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMgICAgICAgICAg fCA3ICsrKysrKysKPiAgaW5jbHVkZS9kcm0vZHJtX2NydGMuaCAgICAgICAgICAgICAgfCAxICsK PiAgNSBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiBpbmRleCBm MmE3NGQwLi4zYzk4N2UzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiBAQCAtMTIsNiArMTIsNyBAQCBtZW51Y29u ZmlnIERSTQo+ICAJc2VsZWN0IEkyQwo+ICAJc2VsZWN0IEkyQ19BTEdPQklUCj4gIAlzZWxlY3Qg RE1BX1NIQVJFRF9CVUZGRVIKPiArCXNlbGVjdCBTWU5DX0ZJTEUKPiAgCWhlbHAKPiAgCSAgS2Vy bmVsLWxldmVsIHN1cHBvcnQgZm9yIHRoZSBEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJl IChEUkkpCj4gIAkgIGludHJvZHVjZWQgaW4gWEZyZWU4NiA0LjAuIElmIHlvdSBzYXkgWSBoZXJl LCB5b3UgbmVlZCB0byBzZWxlY3QKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiBpbmRleCA4ZWUxZGI4Li42 NzAyNTAyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jCj4gQEAgLTMwLDYgKzMwLDcgQEAKPiAgI2lu Y2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX21vZGUuaD4KPiAg I2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zeW5j X2ZpbGUuaD4KPiAgCj4gIC8qKgo+ICAgKiBkcm1fYXRvbWljX3N0YXRlX2RlZmF1bHRfcmVsZWFz ZSAtCj4gQEAgLTY4MCw2ICs2ODEsMTEgQEAgaW50IGRybV9hdG9taWNfcGxhbmVfc2V0X3Byb3Bl cnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJCWRybV9hdG9taWNfc2V0X2ZiX2Zvcl9w bGFuZShzdGF0ZSwgZmIpOwo+ICAJCWlmIChmYikKPiAgCQkJZHJtX2ZyYW1lYnVmZmVyX3VucmVm ZXJlbmNlKGZiKTsKPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29uZmlnLT5wcm9wX2ZlbmNl X2ZkKSB7CgpOZWVkIHRvIGZlbmNlX3B1dCBpZiBzdGF0ZS0+ZmVuY2UgaXMgbm9uLU5VTEwgYWxy ZWFkeS4gQ291bGQgaGFwcGVuIGlmCnVzZXJzcGFjZSBzZXRzIEZFTkNFX0ZEIG1vcmUgdGhhbiBv bmNlIChhbm90aGVyIGNhc2UgZm9yIHlvdXIgdGVzdGNhc2UgSSdkCnNheSkuCi1EYW5pZWwKCj4g KwkJc3RhdGUtPmZlbmNlID0gc3luY19maWxlX2ZlbmNlc19nZXQodmFsKTsKPiArCQlpZiAoIXN0 YXRlLT5mZW5jZSkKPiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4gKwkJZmVuY2VfZ2V0KHN0YXRlLT5m ZW5jZSk7Cj4gIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+cHJvcF9jcnRjX2lkKSB7 Cj4gIAkJc3RydWN0IGRybV9jcnRjICpjcnRjID0gZHJtX2NydGNfZmluZChkZXYsIHZhbCk7Cj4g IAkJcmV0dXJuIGRybV9hdG9taWNfc2V0X2NydGNfZm9yX3BsYW5lKHN0YXRlLCBjcnRjKTsKPiBA QCAtNzM3LDYgKzc0Myw4IEBAIGRybV9hdG9taWNfcGxhbmVfZ2V0X3Byb3BlcnR5KHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLAo+ICAKPiAgCWlmIChwcm9wZXJ0eSA9PSBjb25maWctPnByb3BfZmJf aWQpIHsKPiAgCQkqdmFsID0gKHN0YXRlLT5mYikgPyBzdGF0ZS0+ZmItPmJhc2UuaWQgOiAwOwo+ ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25maWctPnByb3BfZmVuY2VfZmQpIHsKPiArCQkq dmFsID0gLTE7Cj4gIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+cHJvcF9jcnRjX2lk KSB7Cj4gIAkJKnZhbCA9IChzdGF0ZS0+Y3J0YykgPyBzdGF0ZS0+Y3J0Yy0+YmFzZS5pZCA6IDA7 Cj4gIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+cHJvcF9jcnRjX3gpIHsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+IGluZGV4IGY4NWVmOGMuLjZlZDgzMzkgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+IEBAIC0yNjg3LDYgKzI2ODcsMTEgQEAg dm9pZCBfX2RybV9hdG9taWNfaGVscGVyX3BsYW5lX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCj4gIHsKPiAgCWlmIChzdGF0ZS0+ZmIpCj4gIAkJZHJtX2ZyYW1lYnVmZmVy X3VucmVmZXJlbmNlKHN0YXRlLT5mYik7Cj4gKwo+ICsJaWYgKHN0YXRlLT5mZW5jZSkgewo+ICsJ CWZlbmNlX3B1dChzdGF0ZS0+ZmVuY2UpOwo+ICsJCXN0YXRlLT5mZW5jZSA9IE5VTEw7Cj4gKwl9 Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChfX2RybV9hdG9taWNfaGVscGVyX3BsYW5lX2Rlc3Ryb3lf c3RhdGUpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYwo+IGluZGV4IDU1ZmZkZTUuLjY1MjEyY2UgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2NydGMuYwo+IEBAIC0xMjc4LDYgKzEyNzgsNyBAQCBpbnQgZHJtX3VuaXZlcnNhbF9w bGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l LAo+ICAKPiAgCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0FUT01JQykp IHsKPiAgCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIGNvbmZpZy0+ cHJvcF9mYl9pZCwgMCk7Cj4gKwkJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJnBsYW5lLT5i YXNlLCBjb25maWctPnByb3BfZmVuY2VfZmQsIC0xKTsKPiAgCQlkcm1fb2JqZWN0X2F0dGFjaF9w cm9wZXJ0eSgmcGxhbmUtPmJhc2UsIGNvbmZpZy0+cHJvcF9jcnRjX2lkLCAwKTsKPiAgCQlkcm1f b2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UsIGNvbmZpZy0+cHJvcF9jcnRjX3gs IDApOwo+ICAJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwgY29uZmln LT5wcm9wX2NydGNfeSwgMCk7Cj4gQEAgLTE1MzMsNiArMTUzNCwxMiBAQCBzdGF0aWMgaW50IGRy bV9tb2RlX2NyZWF0ZV9zdGFuZGFyZF9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gIAlkZXYtPm1vZGVfY29uZmlnLnByb3BfZmJfaWQgPSBw cm9wOwo+ICAKPiArCXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlX3NpZ25lZF9yYW5nZShkZXYs IERSTV9NT0RFX1BST1BfQVRPTUlDLAo+ICsJCQkiRkVOQ0VfRkQiLCAtMSwgSU5UX01BWCk7Cj4g KwlpZiAoIXByb3ApCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwlkZXYtPm1vZGVfY29uZmlnLnBy b3BfZmVuY2VfZmQgPSBwcm9wOwo+ICsKPiAgCXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlX29i amVjdChkZXYsIERSTV9NT0RFX1BST1BfQVRPTUlDLAo+ICAJCQkiQ1JUQ19JRCIsIERSTV9NT0RF X09CSkVDVF9DUlRDKTsKPiAgCWlmICghcHJvcCkKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v ZHJtX2NydGMuaCBiL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKPiBpbmRleCA4Y2IzNzdjLi41YmEz Y2RhIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKPiArKysgYi9pbmNsdWRl L2RybS9kcm1fY3J0Yy5oCj4gQEAgLTIxMjIsNiArMjEyMiw3IEBAIHN0cnVjdCBkcm1fbW9kZV9j b25maWcgewo+ICAJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcF9jcnRjX3c7Cj4gIAlzdHJ1Y3Qg ZHJtX3Byb3BlcnR5ICpwcm9wX2NydGNfaDsKPiAgCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3Bf ZmJfaWQ7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wX2ZlbmNlX2ZkOwo+ICAJc3RydWN0 IGRybV9wcm9wZXJ0eSAqcHJvcF9jcnRjX2lkOwo+ICAJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJv cF9hY3RpdmU7Cj4gIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wX21vZGVfaWQ7Cj4gLS0gCj4g Mi41LjUKPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jw b3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753281AbcDOILk (ORCPT ); Fri, 15 Apr 2016 04:11:40 -0400 Received: from mail-wm0-f66.google.com ([74.125.82.66]:36435 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752587AbcDOILh (ORCPT ); Fri, 15 Apr 2016 04:11:37 -0400 Date: Fri, 15 Apr 2016 10:11:32 +0200 From: Daniel Vetter To: Gustavo Padovan 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 , laurent.pinchart@ideasonboard.com, seanpaul@google.com, marcheu@google.com, m.chehab@samsung.com, Maarten Lankhorst , Gustavo Padovan Subject: Re: [RFC 4/8] drm/fence: add in-fences support Message-ID: <20160415081132.GT2510@phenom.ffwll.local> Mail-Followup-To: Gustavo Padovan , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Daniel Stone , Arve =?iso-8859-1?B?SGr4bm5lduVn?= , Riley Andrews , Rob Clark , Greg Hackmann , John Harrison , laurent.pinchart@ideasonboard.com, seanpaul@google.com, marcheu@google.com, m.chehab@samsung.com, Maarten Lankhorst , Gustavo Padovan References: <1460683781-22535-1-git-send-email-gustavo@padovan.org> <1460683781-22535-5-git-send-email-gustavo@padovan.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1460683781-22535-5-git-send-email-gustavo@padovan.org> X-Operating-System: Linux phenom 4.4.0-1-amd64 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, Apr 14, 2016 at 06:29:37PM -0700, Gustavo Padovan wrote: > From: Gustavo Padovan > > There is now a new property called FENCE_FD attached to every plane > state that receives the sync_file fd from userspace via the atomic commit > IOCTL. > > The fd is then translated to a fence (that may be a fence_collection > subclass or just a normal fence) and then used by DRM to fence_wait() for > all fences in the sync_file to signal. So it only commits when all > framebuffers are ready to scanout. > > Signed-off-by: Gustavo Padovan > --- > drivers/gpu/drm/Kconfig | 1 + > drivers/gpu/drm/drm_atomic.c | 8 ++++++++ > drivers/gpu/drm/drm_atomic_helper.c | 5 +++++ > drivers/gpu/drm/drm_crtc.c | 7 +++++++ > include/drm/drm_crtc.h | 1 + > 5 files changed, 22 insertions(+) > > diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig > index f2a74d0..3c987e3 100644 > --- a/drivers/gpu/drm/Kconfig > +++ b/drivers/gpu/drm/Kconfig > @@ -12,6 +12,7 @@ menuconfig DRM > select I2C > select I2C_ALGOBIT > select DMA_SHARED_BUFFER > + select SYNC_FILE > help > Kernel-level support for the Direct Rendering Infrastructure (DRI) > introduced in XFree86 4.0. If you say Y here, you need to select > diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c > index 8ee1db8..6702502 100644 > --- a/drivers/gpu/drm/drm_atomic.c > +++ b/drivers/gpu/drm/drm_atomic.c > @@ -30,6 +30,7 @@ > #include > #include > #include > +#include > > /** > * drm_atomic_state_default_release - > @@ -680,6 +681,11 @@ int drm_atomic_plane_set_property(struct drm_plane *plane, > drm_atomic_set_fb_for_plane(state, fb); > if (fb) > drm_framebuffer_unreference(fb); > + } else if (property == config->prop_fence_fd) { Need to fence_put if state->fence is non-NULL already. Could happen if userspace sets FENCE_FD more than once (another case for your testcase I'd say). -Daniel > + state->fence = sync_file_fences_get(val); > + if (!state->fence) > + return -EINVAL; > + fence_get(state->fence); > } else if (property == config->prop_crtc_id) { > struct drm_crtc *crtc = drm_crtc_find(dev, val); > return drm_atomic_set_crtc_for_plane(state, crtc); > @@ -737,6 +743,8 @@ drm_atomic_plane_get_property(struct drm_plane *plane, > > if (property == config->prop_fb_id) { > *val = (state->fb) ? state->fb->base.id : 0; > + } else if (property == config->prop_fence_fd) { > + *val = -1; > } else if (property == config->prop_crtc_id) { > *val = (state->crtc) ? state->crtc->base.id : 0; > } else if (property == config->prop_crtc_x) { > diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c > index f85ef8c..6ed8339 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -2687,6 +2687,11 @@ void __drm_atomic_helper_plane_destroy_state(struct drm_plane *plane, > { > if (state->fb) > drm_framebuffer_unreference(state->fb); > + > + if (state->fence) { > + fence_put(state->fence); > + state->fence = NULL; > + } > } > EXPORT_SYMBOL(__drm_atomic_helper_plane_destroy_state); > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index 55ffde5..65212ce 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -1278,6 +1278,7 @@ int drm_universal_plane_init(struct drm_device *dev, struct drm_plane *plane, > > if (drm_core_check_feature(dev, DRIVER_ATOMIC)) { > drm_object_attach_property(&plane->base, config->prop_fb_id, 0); > + drm_object_attach_property(&plane->base, config->prop_fence_fd, -1); > drm_object_attach_property(&plane->base, config->prop_crtc_id, 0); > drm_object_attach_property(&plane->base, config->prop_crtc_x, 0); > drm_object_attach_property(&plane->base, config->prop_crtc_y, 0); > @@ -1533,6 +1534,12 @@ static int drm_mode_create_standard_properties(struct drm_device *dev) > return -ENOMEM; > dev->mode_config.prop_fb_id = prop; > > + prop = drm_property_create_signed_range(dev, DRM_MODE_PROP_ATOMIC, > + "FENCE_FD", -1, INT_MAX); > + if (!prop) > + return -ENOMEM; > + dev->mode_config.prop_fence_fd = prop; > + > prop = drm_property_create_object(dev, DRM_MODE_PROP_ATOMIC, > "CRTC_ID", DRM_MODE_OBJECT_CRTC); > if (!prop) > diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h > index 8cb377c..5ba3cda 100644 > --- a/include/drm/drm_crtc.h > +++ b/include/drm/drm_crtc.h > @@ -2122,6 +2122,7 @@ struct drm_mode_config { > struct drm_property *prop_crtc_w; > struct drm_property *prop_crtc_h; > struct drm_property *prop_fb_id; > + struct drm_property *prop_fence_fd; > struct drm_property *prop_crtc_id; > struct drm_property *prop_active; > struct drm_property *prop_mode_id; > -- > 2.5.5 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch