From patchwork Wed Apr 11 15:22:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexandru-Cosmin Gheorghe X-Patchwork-Id: 10335691 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id C3E3D6053B for ; Wed, 11 Apr 2018 15:23:28 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B547D2897C for ; Wed, 11 Apr 2018 15:23:28 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A9A0C28980; Wed, 11 Apr 2018 15:23:28 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.1 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 462FB2897C for ; Wed, 11 Apr 2018 15:23:28 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 3010A6E6A6; Wed, 11 Apr 2018 15:23:26 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20055.outbound.protection.outlook.com [40.107.2.55]) by gabe.freedesktop.org (Postfix) with ESMTPS id AAFA46E6A7 for ; Wed, 11 Apr 2018 15:23:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=OcxGdbmdtwImUgjjEmT930W5Aqh42T3F8XLiOrpF2fI=; b=X35pAkl9D2uvCTt+SFzOQMIurfE+YvJAYUDV1F8uLwabk2i2OGMe7Dw1HKNpvFDOJJKgarOnDKTvFTCdA6Wq+7gUtJga2oVgkcuqQuL36ckP7dcf3xrl843DrrpgfTBLAD0U2VdAs++07oOaSMtKwxtdpWiTJ2nVRB7PZ5F+UPQ= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Alexandru-Cosmin.Gheorghe@arm.com; Received: from e114479-lin.cambridge.arm.com (217.140.96.140) by AM5PR0801MB1249.eurprd08.prod.outlook.com (2603:10a6:203:1e::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.675.10; Wed, 11 Apr 2018 15:23:21 +0000 From: Alexandru Gheorghe To: dri-devel@lists.freedesktop.org, liviu.dudau@arm.com, brian.starkey@arm.com, ayan.halder@arm.com, seanpaul@chromium.org Subject: [PATCH hwc v2 06/18] drm_hwcomposer: Add writeback connector support Date: Wed, 11 Apr 2018 16:22:17 +0100 Message-Id: <1523460149-1740-7-git-send-email-alexandru-cosmin.gheorghe@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1523460149-1740-1-git-send-email-alexandru-cosmin.gheorghe@arm.com> References: <1523460149-1740-1-git-send-email-alexandru-cosmin.gheorghe@arm.com> MIME-Version: 1.0 X-Originating-IP: [217.140.96.140] X-ClientProxiedBy: VI1PR0701CA0066.eurprd07.prod.outlook.com (2603:10a6:800:5f::28) To AM5PR0801MB1249.eurprd08.prod.outlook.com (2603:10a6:203:1e::8) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(4627221)(201703031133081)(201702281549075)(48565401081)(2017052603328)(7153060)(7193020); SRVR:AM5PR0801MB1249; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB1249; 3:/2hNcVr2ditgnvbXcxDgpid98t+hQv7CX45hmUwi9y37czs/usske9Mn99trcv+zyKA/AkFdPwqYTOTDY51/ID0UDAfMbD6jO0UyEYYeIvSBB/EaTbgZ8KQUy9AKc2zOSgphAPW7Q61sy+MKUDZfWoWzCMYWYCv86LpkX01a9+cnHgtwVB0FDO+GnecccZnmPShP6XPDzQ7w50Xypuus4W89pbj8goRHs+lYjM25u3GeddjkDb3zwYRkwYLB2aoV; 25:f9b6Mm7f0R9cA3cjgoyeAzFd2Igw/nH8vd9ygkmprIRYpq2B9nwdyK2OxQdlR3RgCU9b/Gzx6YzaIzR5vmpbOuTob1SyLymb+UkTYqjZ/3DlOzsyoSe0lpuwZRhxJt16ZeLJZ7HcwRARcAT6Dux9VXcM2qyn8cOyEdJYYAa3GfygKRFlMtkhBEVleRosy5o+Mlyhe1H8JX9pApnzUWlXx29mSRpcXVn+nfbq65KVG+AJYOHToyOzHqCk2ZVQ+OftM5uOZGVLbTTYKdElRJTg1HWwUZw8ne7+pQqdrMabYKx0fybI1U0xnI0gxv0H0hZ+J2afUQfDQrWr9YNHASsB5Q==; 31:WlHCGPh2kpfxuv8ePdcNBy0FNnMBXTRmKjJ/pNkApHCdbg5r5iVeAgxDyoWUlR3a/IHHHRk7tHCiLzxAPyeEtiJXxngvTJTkBaeswgEZx/N7YgYs+HEFjXYLEy4oKTJJTr1Wk0kPq77PRncW1NHf7uFYjU1Stemt1iQNbCmF9bZVdG6/clhkN8BfkmD5b28Wijg8DlUCofGaMU/rjTX2JjRuWrK2BzfDNnh6qDu+ay0= X-MS-TrafficTypeDiagnostic: AM5PR0801MB1249: NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB1249; 20:p8ICo15ZDfEoO7uek9DlPYM9D+9A9mi6b98qUsN+7Y1saYMw05nyat/SNPoEx4sXk14NMMo6k3Ozjwpt2MGefjQOAkyi9nleBUeonuw//zJ4zI1QLduesGt6AGSoiMk6JIjX9I2oHI89ib6IQ8POvGx/7JnPF6Bpi86piW2LRpo=; 4:cD/FH5tJ/+RukKpn5WcX+K+BvumbgtgYO0zJa9iatTVwHJjxIj7kHCx6Konshl5Ct+uRGsXFovwJcF5dZe70UxxSPEMCsOpztu2Y/aMLDWFqzMZoDDTwIlb2rn+m9VIwsH28D2ImcLaghde0KW106SwPGfYYbzDSic3//102MRHttBWVy1GyuSFejQ8YGFXoi6hQo3pa+EGHxD7aGAVDaPB663uYzriMZYDtrXLTybOer+9sq8XdsPe0FJe3f1jlLrodKOeOI9TGZcHnWGKZrdA4U1DdN4hvDIFdF2wUmdxgJspc5yr4dZD9c9HSE21HJYMDQWQ2gxxZKeOJNs/5302H4w2QhNUoSClCdxIcc1m7at8fKvtM1nIbHrC+JCso X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(180628864354917)(15185016700835)(217544274631240); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(3231221)(944501327)(52105095)(6055026)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123564045)(20161123560045)(6072148)(201708071742011); SRVR:AM5PR0801MB1249; BCL:0; PCL:0; RULEID:; SRVR:AM5PR0801MB1249; X-Forefront-PRVS: 0639027A9E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(39380400002)(346002)(396003)(376002)(366004)(39860400002)(189003)(199004)(16526019)(478600001)(305945005)(50226002)(16586007)(68736007)(7736002)(86362001)(81156014)(8676002)(316002)(81166006)(4326008)(25786009)(2906002)(50466002)(8936002)(6486002)(105586002)(6306002)(48376002)(966005)(186003)(956004)(5660300001)(6666003)(72206003)(106356001)(476003)(53936002)(3846002)(76176011)(51416003)(52116002)(47776003)(7696005)(36756003)(66066001)(11346002)(446003)(386003)(97736004)(59450400001)(6116002)(2616005)(26005)(486006); DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0801MB1249; H:e114479-lin.cambridge.arm.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: arm.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM5PR0801MB1249; 23:JDEc6ZsJq6XcwVr9IPVjhqVvySwDljVvIj2lnPr?= =?us-ascii?Q?w3ACGOxYOTLqjCDsa0wQeS6QlWTNNz+7NGCI98UqeJkczcsZQK8VyA8H67TM?= =?us-ascii?Q?XQb527v4usugi8dZERxvTbfQ25VDB8E3tUrvLcH1L2YixL5SXnprO1d8homN?= =?us-ascii?Q?jwthAC4Q0xv9MYgeId1JFEuDORAIDL98Kxcp9vhhdRvuvJfjIC4v9aewfBRo?= =?us-ascii?Q?UbjPT/MQivL6F81k2DpX6qizr071n4p5CfK75x55dGQWYJW3C6IwxQvNrAP3?= =?us-ascii?Q?TKUZubSPDg1/R12wMSskuwGrJEh9SVuyauE5VPRVnXoVqVBxZwlZMItdgG2m?= =?us-ascii?Q?TpEoINDYmZjTbJjiKXExDnKMY64pVHmxfTJxy34XDvVpqXt5pVYmCMW5I4xJ?= =?us-ascii?Q?sbB2iGRijLaekCr2QTa1+l+MWvLM+VrbZX3cvL5Q3g4wfyA7n6/E2y5mhoyl?= =?us-ascii?Q?KJKT1DZ6yFRND+enS/qCzChwRTVCBT9Cigr7M97+J7KrL+djthy8/rWYy78P?= =?us-ascii?Q?2x/ufneoBhU9ltZf5OvJSofwMqFMWQCiaRsErHf9GLmhZ/IaBbX0Yy23vnMV?= =?us-ascii?Q?pHOnuEm4wy0gIHEQjXc5O6RsuWlDYHD5XskAOza0HY/6pkzo/Z2QhPXllSUR?= =?us-ascii?Q?K/x4Qfj1gfnxRIJwTfvRQDAM+KM/kRD2lI3fBFHYUaf65Z2EOFmuWRZmyv+M?= =?us-ascii?Q?RTx9LGWxQRsgZRW4N3+BYMCgRnkCYLzFc5DT6/vLisi1uTVHbHx2kzz2R4qe?= =?us-ascii?Q?1a8/WktnYKrfpN4rXY+PtfL2Kl/K+FvHDtiVcIyhbsAEvxMm1hxgRms1o5DK?= =?us-ascii?Q?RpJsK3bOGKN5Z+Hh2k+bPCKsOMNDmoFX5DLD6MSUKXREhvk4oY/hEJVy3+pG?= =?us-ascii?Q?ncBWZ7kU48azHJ7qnn90XiXywpldfLAgRDNG544BLTlxJ7hMnDTIa95R7yil?= =?us-ascii?Q?Nn11KzzOTxQFqzNIt0ekwyYlXYtAkpK5SyzUIYQbmTxc7nmcq7JuWRw/iOmC?= =?us-ascii?Q?7dwaX7oZA4adWgI/NEW1luQ1L3vVNuX1HIQ7lPAA76m29mZg9acoUqiYhQF8?= =?us-ascii?Q?u7q4iqcBLcmADXUDeKDGFNxlEqPb+Uu5sLN/RtJFmOeCevlBTpvU1Xn3iwYU?= =?us-ascii?Q?Nucip2s1VuPJ0VGmXBZZLP+BBvz/5XC71cQUI9tgkFn7TkrjuiUiudQp/gDr?= =?us-ascii?Q?g8gYvqIGDvB3Q1slad1Z1MLioX/aXGaaf7EZv/o4dPdMJ+jeDNlFZCCSdTQ?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Antispam-Message-Info: d8ancJhHcuts3gwotYl4CfIGMPHM4acCWOfWkm7tahNtPCQkQGZwaD9p0lI490yoP5pnD6TWNXWg2/PFezw6Sk1KBvOgMgWwFSxjV/dJc6m99BGTEKBqauQz8fCCRtDSuRSMBgBMYbvtqx6mH53recZs42YbdkfkzOoSP65fBlHtChNuor3y8RBdZdT31IUW X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB1249; 6:H9FX7UvQ1tt28A/bJxyUcrVrovmsf0sVP9bFlSyoCiu6BoyDL32EsLiUDKDe4SB0ljxrm6Jscm6FJbfU7RhbDLpitfP7mKLop0EzE/47HlqPNCrG0WHH0tWKTNnwlsI01KBF/Tkvu/RdS+D4tvrygH63irU0aRneW1Y4F0umfx2WOoqmGMlHElL3M+uywITENgiKy/pjb9sys3sjKlgeEQezxPP2Zvxn2k1kxEYYE7coUSmSt2VqOpzmLofYfkiUSXJMiwM5eAPrl9mI0uVIbwoTmFJDNfba3lEbZRsm8rOkvhns1PfrbVDM1DosTKHyltKp5tRaThje2rMPlZIOg4gvfTrFf1YMyeeR8x1hatylJYZpTtbYQVSnjaalB7/ca4+dmxplo6Zm6vQvAeMQzmz4QVXw0rzBUiZMNCncb2nWBW15f/lCiv84vom9aBNP14xILzuvayUM0sm2+OnnYg==; 5:xiQTVWejtbgcNaqzrmlMjXMlbFIQ5DNggbwa184fpS3nwCNLrgLAuuECKj3v7fZNCcEo5De2jUt22la7NYz7ikKEI7i/WP6Nte30pOx4e+JmkXZpTxwpgOkcHHFf7+4C2p790Wv9OQD6OtR3llsOXaUFYf6l+eAQEelmJPvCND0=; 24:CihH8KRI5HaFZ4AVFHDe++XvPLaUQHCcGK0y34gl7YoKvuo1I9DipvO5UTyjgxQZhXxbux4b5uq3XPUNlrKdRX6XQmMpE7KBW+2No/bj9Jc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB1249; 7:LYR99oNEhRaqDmMiucWvb/GuZXr1+uA9Mxd+i8iIuzarGA6ZivRF2jMuanykSeriiT965aHc1WM++fRJtN0wsCRPVlxTEgUEAUc39F5j2BgaCtCgZD9/qhAMwna6vvP2EKFLeIkieF/oYsH3PHRNY9WssP/e6MwbmSqglmczLwEbJNKOZbfi5p745XHa9t6oYuY97l1Gp117NNW4z3bYG/f5IuyJ0mEzyoa9jyR9i3N06K0hJHT7qyLZmVAHzosd X-MS-Office365-Filtering-Correlation-Id: 1b6269a9-ee75-43fb-119c-08d59fc029a1 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2018 15:23:21.8858 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1b6269a9-ee75-43fb-119c-08d59fc029a1 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1249 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: nd@arm.com, Alexandru Gheorghe Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP Writeback connector is a special case of connector, which can be linked to a CRTC in order to get the result of the composition back to a memory buffer. This had not been merged to the mainline kernel yet, latest version of the kernel patches could be found here [1]. [1] https://lists.freedesktop.org/archives/dri-devel/2018-February/167703.html Signed-off-by: Alexandru Gheorghe Reviewed-by: Sean Paul --- drmconnector.cpp | 42 +++++++++++++++++++++++++++++++++++++++++- drmconnector.h | 7 +++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/drmconnector.cpp b/drmconnector.cpp index 145518f..e482832 100644 --- a/drmconnector.cpp +++ b/drmconnector.cpp @@ -52,6 +52,26 @@ int DrmConnector::Init() { ALOGE("Could not get CRTC_ID property\n"); return ret; } + if (writeback()) { + ret = drm_->GetConnectorProperty(*this, "WRITEBACK_PIXEL_FORMATS", + &writeback_pixel_formats_); + if (ret) { + ALOGE("Could not get WRITEBACK_PIXEL_FORMATS connector_id = %d\n", id_); + return ret; + } + ret = + drm_->GetConnectorProperty(*this, "WRITEBACK_FB_ID", &writeback_fb_id_); + if (ret) { + ALOGE("Could not get WRITEBACK_FB_ID connector_id = %d\n", id_); + return ret; + } + ret = drm_->GetConnectorProperty(*this, "WRITEBACK_OUT_FENCE_PTR", + &writeback_out_fence_); + if (ret) { + ALOGE("Could not get WRITEBACK_OUT_FENCE_PTR connector_id = %d\n", id_); + return ret; + } + } return 0; } @@ -78,8 +98,16 @@ bool DrmConnector::external() const { type_ == DRM_MODE_CONNECTOR_VGA; } +bool DrmConnector::writeback() const { +#ifdef DRM_MODE_CONNECTOR_WRITEBACK + return type_ == DRM_MODE_CONNECTOR_WRITEBACK; +#else + return false; +#endif +} + bool DrmConnector::valid_type() const { - return internal() || external(); + return internal() || external() || writeback(); } int DrmConnector::UpdateModes() { @@ -130,6 +158,18 @@ const DrmProperty &DrmConnector::crtc_id_property() const { return crtc_id_property_; } +const DrmProperty &DrmConnector::writeback_pixel_formats() const { + return writeback_pixel_formats_; +} + +const DrmProperty &DrmConnector::writeback_fb_id() const { + return writeback_fb_id_; +} + +const DrmProperty &DrmConnector::writeback_out_fence() const { + return writeback_out_fence_; +} + DrmEncoder *DrmConnector::encoder() const { return encoder_; } diff --git a/drmconnector.h b/drmconnector.h index 5601e06..e139730 100644 --- a/drmconnector.h +++ b/drmconnector.h @@ -46,6 +46,7 @@ class DrmConnector { bool internal() const; bool external() const; + bool writeback() const; bool valid_type() const; int UpdateModes(); @@ -58,6 +59,9 @@ class DrmConnector { const DrmProperty &dpms_property() const; const DrmProperty &crtc_id_property() const; + const DrmProperty &writeback_pixel_formats() const; + const DrmProperty &writeback_fb_id() const; + const DrmProperty &writeback_out_fence() const; const std::vector &possible_encoders() const { return possible_encoders_; @@ -88,6 +92,9 @@ class DrmConnector { DrmProperty dpms_property_; DrmProperty crtc_id_property_; + DrmProperty writeback_pixel_formats_; + DrmProperty writeback_fb_id_; + DrmProperty writeback_out_fence_; std::vector possible_encoders_; };