From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752165AbeERPSH (ORCPT ); Fri, 18 May 2018 11:18:07 -0400 Received: from fw-tnat.cambridge.arm.com ([217.140.96.140]:54889 "EHLO cam-smtp0.cambridge.arm.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751117AbeERPSB (ORCPT ); Fri, 18 May 2018 11:18:01 -0400 From: Liviu Dudau To: Gustavo Padovan Cc: Maarten Lankhorst , Sean Paul , Jonathan Corbet , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, David Airlie , Brian Starkey , Alexandru-Cosmin Gheorghe , Eric Anholt , Boris Brezillon , Maxime Ripard , Daniel Stone , Liviu Dudau Subject: [PATCH v8 3/3] drm: writeback: Add client capability for exposing writeback connectors Date: Fri, 18 May 2018 16:17:43 +0100 Message-Id: <20180518151743.29937-4-Liviu.Dudau@arm.com> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180518151743.29937-1-Liviu.Dudau@arm.com> References: <20180518151743.29937-1-Liviu.Dudau@arm.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Due to the fact that writeback connectors behave in a special way in DRM (they always report being disconnected) we might confuse some userspace. Add a client capability for writeback connectors that will filter them out for clients that don't understand the capability. Re-requested-by: Sean Paul Cc: Brian Starkey Signed-off-by: Liviu Dudau --- drivers/gpu/drm/drm_ioctl.c | 7 +++++++ drivers/gpu/drm/drm_mode_config.c | 5 +++++ include/drm/drm_file.h | 7 +++++++ include/uapi/drm/drm.h | 9 +++++++++ 4 files changed, 28 insertions(+) diff --git a/drivers/gpu/drm/drm_ioctl.c b/drivers/gpu/drm/drm_ioctl.c index af782911c505d..59951ff3e3630 100644 --- a/drivers/gpu/drm/drm_ioctl.c +++ b/drivers/gpu/drm/drm_ioctl.c @@ -325,6 +325,13 @@ drm_setclientcap(struct drm_device *dev, void *data, struct drm_file *file_priv) file_priv->atomic = req->value; file_priv->universal_planes = req->value; break; + case DRM_CLIENT_CAP_WRITEBACK_CONNECTORS: + if (!file_priv->atomic || !drm_core_check_feature(dev, DRIVER_ATOMIC)) + return -EINVAL; + if (req->value > 1) + return -EINVAL; + file_priv->writeback_connectors = req->value; + break; default: return -EINVAL; } diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c index e5c653357024d..21e353bd3948e 100644 --- a/drivers/gpu/drm/drm_mode_config.c +++ b/drivers/gpu/drm/drm_mode_config.c @@ -145,6 +145,11 @@ int drm_mode_getresources(struct drm_device *dev, void *data, count = 0; connector_id = u64_to_user_ptr(card_res->connector_id_ptr); drm_for_each_connector_iter(connector, &conn_iter) { + /* only expose writeback connectors if userspace understands them */ + if (!file_priv->writeback_connectors && + (connector->connector_type == DRM_MODE_CONNECTOR_WRITEBACK)) + continue; + if (drm_lease_held(file_priv, connector->base.id)) { if (count < card_res->count_connectors && put_user(connector->base.id, connector_id + count)) { diff --git a/include/drm/drm_file.h b/include/drm/drm_file.h index 5176c3797680c..2a09b3c8965c6 100644 --- a/include/drm/drm_file.h +++ b/include/drm/drm_file.h @@ -181,6 +181,13 @@ struct drm_file { /** @atomic: True if client understands atomic properties. */ unsigned atomic:1; + /** + * @writeback_connectors: + * + * True if client understands writeback connectors + */ + unsigned writeback_connectors:1; + /** * @is_master: * diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h index 6fdff5945c8a0..59f27ea928b42 100644 --- a/include/uapi/drm/drm.h +++ b/include/uapi/drm/drm.h @@ -680,6 +680,15 @@ struct drm_get_cap { */ #define DRM_CLIENT_CAP_ATOMIC 3 +/** + * DRM_CLIENT_CAP_WRITEBACK_CONNECTORS + * + * If set to 1, the DRM core will expose special connectors to be used for + * writing back to memory the scene setup in the commit. Depends on client + * also supporting DRM_CLIENT_CAP_ATOMIC + */ +#define DRM_CLIENT_CAP_WRITEBACK_CONNECTORS 4 + /** DRM_IOCTL_SET_CLIENT_CAP ioctl argument type */ struct drm_set_client_cap { __u64 capability; -- 2.17.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liviu Dudau Subject: [PATCH v8 3/3] drm: writeback: Add client capability for exposing writeback connectors Date: Fri, 18 May 2018 16:17:43 +0100 Message-ID: <20180518151743.29937-4-Liviu.Dudau@arm.com> References: <20180518151743.29937-1-Liviu.Dudau@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from cam-smtp0.cambridge.arm.com (fw-tnat.cambridge.arm.com [217.140.96.140]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0141F6EDFA for ; Fri, 18 May 2018 15:17:55 +0000 (UTC) In-Reply-To: <20180518151743.29937-1-Liviu.Dudau@arm.com> 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: Maxime Ripard , Daniel Stone , Jonathan Corbet , David Airlie , Liviu Dudau , Boris Brezillon , Alexandru-Cosmin Gheorghe , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RHVlIHRvIHRoZSBmYWN0IHRoYXQgd3JpdGViYWNrIGNvbm5lY3RvcnMgYmVoYXZlIGluIGEgc3Bl Y2lhbCB3YXkKaW4gRFJNICh0aGV5IGFsd2F5cyByZXBvcnQgYmVpbmcgZGlzY29ubmVjdGVkKSB3 ZSBtaWdodCBjb25mdXNlIHNvbWUKdXNlcnNwYWNlLiBBZGQgYSBjbGllbnQgY2FwYWJpbGl0eSBm b3Igd3JpdGViYWNrIGNvbm5lY3RvcnMgdGhhdCB3aWxsCmZpbHRlciB0aGVtIG91dCBmb3IgY2xp ZW50cyB0aGF0IGRvbid0IHVuZGVyc3RhbmQgdGhlIGNhcGFiaWxpdHkuCgpSZS1yZXF1ZXN0ZWQt Ynk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgpDYzogQnJpYW4gU3RhcmtleSA8 YnJpYW4uc3RhcmtleUBhcm0uY29tPgpTaWduZWQtb2ZmLWJ5OiBMaXZpdSBEdWRhdSA8bGl2aXUu ZHVkYXVAYXJtLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMgICAgICAgfCA3 ICsrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZV9jb25maWcuYyB8IDUgKysrKysKIGlu Y2x1ZGUvZHJtL2RybV9maWxlLmggICAgICAgICAgICB8IDcgKysrKysrKwogaW5jbHVkZS91YXBp L2RybS9kcm0uaCAgICAgICAgICAgIHwgOSArKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMjgg aW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYwppbmRleCBhZjc4MjkxMWM1MDVkLi41OTk1MWZm M2UzNjMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2RybV9pb2N0bC5jCkBAIC0zMjUsNiArMzI1LDEzIEBAIGRybV9zZXRjbGll bnRjYXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxl ICpmaWxlX3ByaXYpCiAJCWZpbGVfcHJpdi0+YXRvbWljID0gcmVxLT52YWx1ZTsKIAkJZmlsZV9w cml2LT51bml2ZXJzYWxfcGxhbmVzID0gcmVxLT52YWx1ZTsKIAkJYnJlYWs7CisJY2FzZSBEUk1f Q0xJRU5UX0NBUF9XUklURUJBQ0tfQ09OTkVDVE9SUzoKKwkJaWYgKCFmaWxlX3ByaXYtPmF0b21p YyB8fCAhZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9BVE9NSUMpKQorCQkJcmV0 dXJuIC1FSU5WQUw7CisJCWlmIChyZXEtPnZhbHVlID4gMSkKKwkJCXJldHVybiAtRUlOVkFMOwor CQlmaWxlX3ByaXYtPndyaXRlYmFja19jb25uZWN0b3JzID0gcmVxLT52YWx1ZTsKKwkJYnJlYWs7 CiAJZGVmYXVsdDoKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2RybV9tb2RlX2NvbmZpZy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9tb2RlX2NvbmZp Zy5jCmluZGV4IGU1YzY1MzM1NzAyNGQuLjIxZTM1M2JkMzk0OGUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fbW9kZV9jb25maWcuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX21v ZGVfY29uZmlnLmMKQEAgLTE0NSw2ICsxNDUsMTEgQEAgaW50IGRybV9tb2RlX2dldHJlc291cmNl cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWNvdW50ID0gMDsKIAljb25u ZWN0b3JfaWQgPSB1NjRfdG9fdXNlcl9wdHIoY2FyZF9yZXMtPmNvbm5lY3Rvcl9pZF9wdHIpOwog CWRybV9mb3JfZWFjaF9jb25uZWN0b3JfaXRlcihjb25uZWN0b3IsICZjb25uX2l0ZXIpIHsKKwkJ Lyogb25seSBleHBvc2Ugd3JpdGViYWNrIGNvbm5lY3RvcnMgaWYgdXNlcnNwYWNlIHVuZGVyc3Rh bmRzIHRoZW0gKi8KKwkJaWYgKCFmaWxlX3ByaXYtPndyaXRlYmFja19jb25uZWN0b3JzICYmCisJ CSAgICAoY29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfV1JJ VEVCQUNLKSkKKwkJCWNvbnRpbnVlOworCiAJCWlmIChkcm1fbGVhc2VfaGVsZChmaWxlX3ByaXYs IGNvbm5lY3Rvci0+YmFzZS5pZCkpIHsKIAkJCWlmIChjb3VudCA8IGNhcmRfcmVzLT5jb3VudF9j b25uZWN0b3JzICYmCiAJCQkgICAgcHV0X3VzZXIoY29ubmVjdG9yLT5iYXNlLmlkLCBjb25uZWN0 b3JfaWQgKyBjb3VudCkpIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9maWxlLmggYi9p bmNsdWRlL2RybS9kcm1fZmlsZS5oCmluZGV4IDUxNzZjMzc5NzY4MGMuLjJhMDliM2M4OTY1YzYg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9maWxlLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJt X2ZpbGUuaApAQCAtMTgxLDYgKzE4MSwxMyBAQCBzdHJ1Y3QgZHJtX2ZpbGUgewogCS8qKiBAYXRv bWljOiBUcnVlIGlmIGNsaWVudCB1bmRlcnN0YW5kcyBhdG9taWMgcHJvcGVydGllcy4gKi8KIAl1 bnNpZ25lZCBhdG9taWM6MTsKIAorCS8qKgorCSAqIEB3cml0ZWJhY2tfY29ubmVjdG9yczoKKwkg KgorCSAqIFRydWUgaWYgY2xpZW50IHVuZGVyc3RhbmRzIHdyaXRlYmFjayBjb25uZWN0b3JzCisJ ICovCisJdW5zaWduZWQgd3JpdGViYWNrX2Nvbm5lY3RvcnM6MTsKKwogCS8qKgogCSAqIEBpc19t YXN0ZXI6CiAJICoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmggYi9pbmNsdWRl L3VhcGkvZHJtL2RybS5oCmluZGV4IDZmZGZmNTk0NWM4YTAuLjU5ZjI3ZWE5MjhiNDIgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9kcm0u aApAQCAtNjgwLDYgKzY4MCwxNSBAQCBzdHJ1Y3QgZHJtX2dldF9jYXAgewogICovCiAjZGVmaW5l IERSTV9DTElFTlRfQ0FQX0FUT01JQwkzCiAKKy8qKgorICogRFJNX0NMSUVOVF9DQVBfV1JJVEVC QUNLX0NPTk5FQ1RPUlMKKyAqCisgKiBJZiBzZXQgdG8gMSwgdGhlIERSTSBjb3JlIHdpbGwgZXhw b3NlIHNwZWNpYWwgY29ubmVjdG9ycyB0byBiZSB1c2VkIGZvcgorICogd3JpdGluZyBiYWNrIHRv IG1lbW9yeSB0aGUgc2NlbmUgc2V0dXAgaW4gdGhlIGNvbW1pdC4gRGVwZW5kcyBvbiBjbGllbnQK KyAqIGFsc28gc3VwcG9ydGluZyBEUk1fQ0xJRU5UX0NBUF9BVE9NSUMKKyAqLworI2RlZmluZSBE Uk1fQ0xJRU5UX0NBUF9XUklURUJBQ0tfQ09OTkVDVE9SUwk0CisKIC8qKiBEUk1fSU9DVExfU0VU X0NMSUVOVF9DQVAgaW9jdGwgYXJndW1lbnQgdHlwZSAqLwogc3RydWN0IGRybV9zZXRfY2xpZW50 X2NhcCB7CiAJX191NjQgY2FwYWJpbGl0eTsKLS0gCjIuMTcuMAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==