From patchwork Wed Apr 11 15:22:22 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: 10335703 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 822E96053B for ; Wed, 11 Apr 2018 15:24:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7518D2897C for ; Wed, 11 Apr 2018 15:24:04 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6966928980; Wed, 11 Apr 2018 15:24:04 +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 DEB652897C for ; Wed, 11 Apr 2018 15:24:03 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 68F1F6E6B3; Wed, 11 Apr 2018 15:23:34 +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-eopbgr20051.outbound.protection.outlook.com [40.107.2.51]) by gabe.freedesktop.org (Postfix) with ESMTPS id DE6DC6E6AF for ; Wed, 11 Apr 2018 15:23:31 +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=7EXcOQ0QzU3F1KiVjAO84HGK3VNZN9/DQrb5Af1qHjc=; b=lhFxnahjQ3vkbVFF2uTVAQFHiDPEdN2A40It63j1Ed4KrhH/+qDBlDLWGE5P6dSKnzzIP0hA0xHHcaquNvF3NBGUlVuoRFuY8zVV+jNeNKszk5E+64KB7AodigF43WPxCHWTbfIBWTowYSlu4Q8IIA7xJ37XVnrg5xEAvX0jd+c= 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:29 +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 11/18] drm_hwcomposer: Add utility functions to copy displaycomposition internals Date: Wed, 11 Apr 2018 16:22:22 +0100 Message-Id: <1523460149-1740-12-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:Aj+bg5kT9inzd0ZxWbEbSuYN0V8O6+zEg548kbYcjm4msGdpsb2h+qTSQOOLgREMaGpvlCy/PtzoDCZKsbmmjQuqzV5NhUqj6u1tVrihXKKJ4+VtHzLScOm46PlE/v/tOdZRzQHW7QwvbnuMzRGeEgFCgVVQKGHrvozlIbStRYue/08azpMcf14dhNrZ0stYn0YGn01sA9qzLjYC1yzVq97HEHjIdLZTdIVIAmoYUWhwOod0XOs5PW20aPnxiGLi; 25:pwgNXhb+C1c54xbYrnj2DHBQAYvHCiKwgLcrHQlqCZfP/9BBLkU1xvDyTpYd+6H/d0HmIk6deahup5x8CqspF9eLOxzdEOZ6QHap28FTHaj4ZnLrTLR4xgAaMkm47o/tyb+8w1PrF10Tgad0rlWNc45g80N03MCyABr9I887aGtRS0yEQsAKs24wGfi8XIZiFqp43RpccJa0qlqKjfvUtK/BW9SAcZyNOkxhE1pT/O813iq56LLv1aWjOdR3IbOtGMyqmt7JGS6nFKCPlHXjHQCDy321/gs52xX8WG6/zIGn5NqEKnGi+RzxQMk7zoDa8dD8CLH3MeZgi/zdW8yakA==; 31:Gq4flCuFGnZwCK2AdUE4UuEJr1yPbPg4HskRriOzOffvL+uKPbiS1aG3HSxAMZo2tYVNC7TfpR7MS5sw2nMyaaDamlqV9xjiZp1L4dddsocSDxFscZ3viZ/y+/qbaSQHirqwEdbQKLxQu1+Lu3+wc1R5uS7n7H6L8umtFEwVSZV9aKpgoBfPEUHH2mTHFdcyQE1+a3b7MtAFMw5zGcFAkFYNByP23ktr9st+IJ/tO1E= X-MS-TrafficTypeDiagnostic: AM5PR0801MB1249: NoDisclaimer: True X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB1249; 20:eKOCUn6FvyLGi4yGGNS5d7GkuHwfH3an71dYWSfW7ebnLTQpxuIayryCFL6dt/yh0fODeuey2KG8PXpag/dk8VGS9Wiy4bcaPetCkIxDLhgR4axE2eG4PE52uVZlS/Tb+TGTjgiAhiQQDnhMFqhX4KXHMMM5AG9tGhjtXkPEXSI=; 4:XXMsu8ZNxfY3xOko4Ob7rdxp4Jh8IrtrRWiIcocwXgLbK6ZCmlKOqkVtvra5Lt6Pp4YxQJyQjtYZh52w8iAfx3i9VFzgv+pn7bpCW3VJ1of5ZI8KOFEsR406KQXE/JDyJmViu5NqYRBAJO/SAQQtRACky2kfMWI6EhNYYY36iktyseHtVw1lwVLMmF+pRSZGbLv83GWSJuvjJ7A94piQH8JC1rO28cuaN9XdCjbzNY94TcPIXrx7onNcyfslw6G0HVtSyKSyMMALoqZhmpHx8qzlLR0jtvnPOn2UInB10o/UUrCFJQIRKL89Wik1tooF X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); 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)(48376002)(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:LYlR/dcbtZQr9uy1Eg60L1ELxUmu6mB/rBA4l5/?= =?us-ascii?Q?P85u8KtDICeN6mhF5LBiE9Aym5BG9yiDU8M3ED1dnSE+Ph2ZYkNbUFKWTcjB?= =?us-ascii?Q?HQI1VMuSrnTMO0rcKLcEhbBpr6JQErQzgJUqjIXUJqnUcIGgb69uoi2s/ku8?= =?us-ascii?Q?y/WA1IIEW2WHoq8j6Qk7DTyiOR1scpRptzaRJVBd9r2OSj4hpIOt2Fn6nYfu?= =?us-ascii?Q?GH8C9/4k/YSD03zxxF6zRDxZlvnsWTanm4PtXMf1XoGn8T8TmuODrb614oUM?= =?us-ascii?Q?hmbp5ajFjXlUJMUId0LzbYyQe01y+3vTpAYKwCRz+VmPpBRV0W/4Rgm6igao?= =?us-ascii?Q?B8NIGSqsRt7Y0zXPNehHFzS4uLK2vgD7b4PSTXNYpqjY5fdtqHnQyJMmSOsT?= =?us-ascii?Q?y7lG/OEZ20+j7hdNqQRABcdGkWybOKJYxWsQRIhFvvozJ8wqUrxXdLLM5k00?= =?us-ascii?Q?GJo+o7oOiaoCp9nwQdVteHJpApefwo7mL4om9BI0X8q2LSdMIhrpRlCwEzKr?= =?us-ascii?Q?xbhTycgknrmwjEVQxIALB/fRBS3zSkt++VqJSPZjY6F5BgnwmdQnDU5oWMy2?= =?us-ascii?Q?vXOEdKrMLwak4d88k9qNv6dlDSOpj1YWk+ysvTWL/YA86detHXwsj3nHvVhu?= =?us-ascii?Q?cAZi0dqpB0dtLerJVRKMqQgYICjHoArt5mr8gn8SG63vn58nJW18q5GuPbFT?= =?us-ascii?Q?d9p63tFZqI1YoC61yp1KaXzzyBLBcV1Ub9oXpH/WkWAlxsa6ZmJtlOWgRyUU?= =?us-ascii?Q?2SYSYCu+ODIJSkdfcsa6pQV4F2YtKennbFszYNRj2vqIVKrqq44j/JIY8cQ/?= =?us-ascii?Q?xZCs4+wMTGhYgI34vyBUzu0tx/lVYHb0rn/drsHWfidX9OfITvAtuYwF8rtp?= =?us-ascii?Q?7C211r7jFPHqtCdYeDWwNvMiL2FwHMqfwdBZ9tMyNABId9t4hyPaJ0Ab79ZN?= =?us-ascii?Q?yQOwx6QN1RzbUi21TY4X5zCEzQy9wPTe9QKdosnbI7/7OaYPZnWvYKHDHe+b?= =?us-ascii?Q?EBfDMpodFRcBDEHO8DwX6fZ+O/sx3od+KV1wXfeDq3G6stQ40vtw9H8j5tOn?= =?us-ascii?Q?BW26WO9aH2QM/IECpPU3C9Dj+G4fs/GNlY1q3aBB1F+cGF5RM4ua1w+pHP+8?= =?us-ascii?Q?JW02Hsx/vrWsi2jsd/Qj5U0rmDdPMCE+MLCiYKvx5VCFfQ8o0D0LPohprMks?= =?us-ascii?Q?Ijb+FdXbPBHc2EvA=3D?= X-Microsoft-Antispam-Message-Info: zxNyLH8XTu7MsQ2btrcC39/No2M21oPI9zc7SowFPZTuuIksCBERP51KxAPK8yFbcmOIa1AgRSvDQBMo1X4zdsl+dFoxiO5+GYKLa0OGVC0EWVNN+HT0Kwkohn6pvHcrRryl91hZKcyMWdbzpOrc84GcohSlGsr8dLtztMH95zDhBGnTN+3FbSBDCBcVpoIB X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB1249; 6:zwEPLMJxZixCjMZGr0VN3OjQCZc60hfNwVRyAsghmdm5Fyx9CD/13z1Au4OqRyeev0fvw1bfXOzwpplUkwyM5X+6etDrgdNOIWLzn3KuDYnFCPuoc8K0U5yhXF+uICzmD4XdZpaczRorEZb0hOW9Y2MoCmkhQTc9bT370EG3OKJl1Kvk2HeQsQBmXQk7tre+TDjhFmQgu+000EPu5DbbksEp43/qhH4kfhaFgjwcgGeWX44eYNCwQyZFjAKo5t6Uz3XnLfXIuRt7iZHBflSSaHdkmgnQk/gUlUAmBCArYl1oi6MjXD9c7BVp4Zj72kv4iXptF88zm/xH982XxCD1tf/GBnKFpyNHAll88naMuKos3958zL1IQ2ntfwfrmZsNPAB2wZ3Utpu2MCM2fD8tsLGEYWTLSUgENugarzZVQabMkxoPPN/3y2CZRlYcCPulDprruyd9RoiF1HY0pY0NXg==; 5:Hbbj5W9Tz0IWLzGyNtNZOp7wF4Ytv2fnpEk2JZobGO7UyPgt+FvPzB/EJ4f04cTHmX4c6j8PDThiCdmdfnjgA1H1tEIVo4jkQpN9diMZaEREaIJ7LnIuOdj6lcqrAjS7FSuUQk1R1yf2BvfOqA46DW0NWPufmlb4M2GljB1o2Qs=; 24:b5zs5v+npCoJXmT1uUUaIts1qr30m1/RK5Mllf7ICay4Q5ck4Y83bSe1QMXm6rKj+CWmmlo+ngsCQWMKkAoT+75ihMoyLkPTHZJSBArHHPM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0801MB1249; 7:rEv/aqIo64wVRXghskPtJETg6KKz+svlYWL6nWT7E7yf7VEKUYeXP+dyyOHy5CULY8ZWQgMfBjwuHfK6Yie8NAvPaLpLkV223qHouwIlsrwfOhVLA3lpXGc/JaAmn0nAIubpiI0eyKzJG/SDwtmdj2w6L06Ikpqanm55yYAkJsupiuM59aErrUQVxS3loCUMU8y14oejOJjTOqZ9P7TwPsvwDdAXztw+2ZuA+b5RRgD7PFUgYCTk3VCmiG1ofOiY X-MS-Office365-Filtering-Correlation-Id: 52fdca89-a65b-4302-1c5d-08d59fc02e77 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2018 15:23:29.9974 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 52fdca89-a65b-4302-1c5d-08d59fc02e77 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 Add utility functions to copy the DrmHwcLayer and DrmCompositionPlanes from another DrmDisplayComposition. Signed-off-by: Alexandru Gheorghe --- drmdisplaycomposition.cpp | 29 +++++++++++++++++++++++++++++ drmdisplaycomposition.h | 3 +++ 2 files changed, 32 insertions(+) diff --git a/drmdisplaycomposition.cpp b/drmdisplaycomposition.cpp index 66e67a4..dd64f46 100644 --- a/drmdisplaycomposition.cpp +++ b/drmdisplaycomposition.cpp @@ -99,6 +99,35 @@ int DrmDisplayComposition::SetLayers(DrmHwcLayer *layers, size_t num_layers, return 0; } +int DrmDisplayComposition::CopyLayers(DrmDisplayComposition *src) { + geometry_changed_ = true; + type_ = DRM_COMPOSITION_TYPE_FRAME; + std::shared_ptr importer = + drm_->resource_manager()->GetImporter(crtc()->display()); + if (!importer) { + ALOGE("Failed to find a valid importer"); + return -EINVAL; + } + for (DrmHwcLayer &src_layer : src->layers()) { + DrmHwcLayer copy; + copy.PopulateFromDrmHwcLayer(&src_layer); + int ret = copy.ImportBuffer(importer.get(), + drm_->resource_manager()->GetGralloc()); + if (ret) { + ALOGE("Failed to import buffer ret = %d", ret); + return -EINVAL; + } + layers_.emplace_back(std::move(copy)); + } + return 0; +} + +void DrmDisplayComposition::CopyCompPlanes(DrmDisplayComposition *src) { + for (auto comp_plane : src->composition_planes()) { + composition_planes_.push_back(comp_plane); + } +} + int DrmDisplayComposition::SetDpmsMode(uint32_t dpms_mode) { if (!validate_composition_type(DRM_COMPOSITION_TYPE_DPMS)) return -EINVAL; diff --git a/drmdisplaycomposition.h b/drmdisplaycomposition.h index 9183925..c646420 100644 --- a/drmdisplaycomposition.h +++ b/drmdisplaycomposition.h @@ -68,6 +68,7 @@ class DrmCompositionPlane { DrmCompositionPlane() = default; DrmCompositionPlane(DrmCompositionPlane &&rhs) = default; + DrmCompositionPlane(const DrmCompositionPlane &rhs) = default; DrmCompositionPlane &operator=(DrmCompositionPlane &&other) = default; DrmCompositionPlane(Type type, DrmPlane *plane, DrmCrtc *crtc) : type_(type), plane_(plane), crtc_(crtc) { @@ -120,6 +121,8 @@ class DrmDisplayComposition { Planner *planner, uint64_t frame_no); int SetLayers(DrmHwcLayer *layers, size_t num_layers, bool geometry_changed); + int CopyLayers(DrmDisplayComposition *src); + void CopyCompPlanes(DrmDisplayComposition *src); int AddPlaneComposition(DrmCompositionPlane plane); int AddPlaneDisable(DrmPlane *plane); int SetDpmsMode(uint32_t dpms_mode);