From patchwork Thu Mar 15 01:00:25 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Osipenko X-Patchwork-Id: 10284109 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 4D90B60386 for ; Thu, 15 Mar 2018 08:53:04 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3ED8021EEB for ; Thu, 15 Mar 2018 08:53:04 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 337E72869B; Thu, 15 Mar 2018 08:53: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=-4.1 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, 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 89E712872E for ; Thu, 15 Mar 2018 08:52:55 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 707356E7D9; Thu, 15 Mar 2018 08:52:41 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-pg0-x243.google.com (mail-pg0-x243.google.com [IPv6:2607:f8b0:400e:c05::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id EA08D6E75C for ; Thu, 15 Mar 2018 01:01:51 +0000 (UTC) Received: by mail-pg0-x243.google.com with SMTP id g12so2144233pgs.0 for ; Wed, 14 Mar 2018 18:01:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=QUz+04MGc1WSnm5VuoxJgVcI2NwdzT6RhSb87RvDjwM=; b=r5wM8Gzx03xUMgjSd2rZxqfptnkgKwImaRQjUTlUcT1FwY+p04txef3tYi1/KgKV8y ESTRoWMXfUwVTASEk8p0sUsoKPxojQBlT6waA/ziXn7oi8Mi9wIkjZ9yI3lDgzN4cSgo VdEOwQBfZ3/Szi+148wUW7R+uANZoZunCub/CVZ1PWbk8oKAHcfScMXIYQnxZhRA8G3D PCXJPbZtfwrFmRWp+9xtJjBhFRJtQOVc/UtfteLa0Hzpd1jwyvWJV8+AL9Q6AZ8OTPnd MuoyOrTxIr5CqaYz6KPpgR+VJvrggybwn/2eeftIO3d85oDcSj/3Lc9d88ssyoj/5HX2 DUFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=QUz+04MGc1WSnm5VuoxJgVcI2NwdzT6RhSb87RvDjwM=; b=MsdMT2nAPfKqMiEGwIcNhIKUlGvFwwDkRqXrXXoEq5/LUyZQ8h1wg7yvGBSyRX4iIM dy4/5RgvUAGlEmEmyyLgq8cXLRW8I9eQiBqc5hfYXtTQpyTc2UMqERDp98EMlvjCndiq adIKpo6P1zpG0aOaUAANcCLjbvqqudo/RlBXuMFcG7kJRPKuARywRuYL0+EtAzKLguiA 9bVQxWSJf+hiX5RujafT7SAT1/IQKDkfrkbEtTH6m2oVosoJ9AwMKIZ9kW1kaOVHXDA7 hbx26KsFN9y1h0wtRF+heLcBd7K9BOIxRBHut0Bf7j7Z6Ojqo+eJhQY6WVu24Q5A3NvI aYPA== X-Gm-Message-State: AElRT7Fi6xhnaNPTEA5izjRhHkyDFkbuM4IxlEoWohlQ7dxfeF7+/xp7 iw5Sav16qSb3Dg49Vj9xEmzlLSh6 X-Google-Smtp-Source: AG47ELu7aAmMXs8FKNXrM/ZgK37aQvcnGNcPzuB7U3v8sbg7XBv3uEgvInOK3OGtOybmS33KzOE2bw== X-Received: by 10.101.73.77 with SMTP id q13mr5246954pgs.336.1521075711467; Wed, 14 Mar 2018 18:01:51 -0700 (PDT) Received: from localhost.localdomain (ppp109-252-55-234.pppoe.spdop.ru. [109.252.55.234]) by smtp.gmail.com with ESMTPSA id k195sm6823009pgc.71.2018.03.14.18.01.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 14 Mar 2018 18:01:50 -0700 (PDT) From: Dmitry Osipenko To: Thierry Reding Subject: [PATCH v1 3/3] drm/tegra: dc: Dedicate overlay plane to cursor on older Tegra's Date: Thu, 15 Mar 2018 04:00:25 +0300 Message-Id: X-Mailer: git-send-email 2.16.1 In-Reply-To: <8d9c7220b1d2cf126bd2030e5d232ec06f761440.1521075485.git.digetx@gmail.com> References: <8d9c7220b1d2cf126bd2030e5d232ec06f761440.1521075485.git.digetx@gmail.com> In-Reply-To: <8d9c7220b1d2cf126bd2030e5d232ec06f761440.1521075485.git.digetx@gmail.com> References: <8d9c7220b1d2cf126bd2030e5d232ec06f761440.1521075485.git.digetx@gmail.com> X-Mailman-Approved-At: Thu, 15 Mar 2018 08:52:12 +0000 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: linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP Older Tegra's do not support RGBA format for the cursor, but instead overlay plane could be used for it. Since there is no much use for the overlays on a regular desktop and HW-accelerated cursor is much better than a SW cursor, let's dedicate one overlay plane to the mouse cursor. Signed-off-by: Dmitry Osipenko --- drivers/gpu/drm/tegra/dc.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c index 22bf513612d1..e4d567ec07cc 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c @@ -857,9 +857,11 @@ static const u32 tegra124_overlay_formats[] = { static struct drm_plane *tegra_dc_overlay_plane_create(struct drm_device *drm, struct tegra_dc *dc, - unsigned int index) + unsigned int index, + bool cursor) { unsigned long possible_crtcs = tegra_plane_get_possible_crtcs(drm); + enum drm_plane_type type = DRM_PLANE_TYPE_OVERLAY; struct tegra_plane *plane; unsigned int num_formats; const u32 *formats; @@ -876,10 +878,12 @@ static struct drm_plane *tegra_dc_overlay_plane_create(struct drm_device *drm, num_formats = dc->soc->num_overlay_formats; formats = dc->soc->overlay_formats; + if (cursor) + type = DRM_PLANE_TYPE_CURSOR; + err = drm_universal_plane_init(drm, &plane->base, possible_crtcs, &tegra_plane_funcs, formats, - num_formats, NULL, - DRM_PLANE_TYPE_OVERLAY, NULL); + num_formats, NULL, type, NULL); if (err < 0) { kfree(plane); return ERR_PTR(err); @@ -931,6 +935,7 @@ static struct drm_plane *tegra_dc_add_planes(struct drm_device *drm, struct tegra_dc *dc) { struct drm_plane *planes[2], *primary; + unsigned int planes_num; unsigned int i; int err; @@ -938,8 +943,14 @@ static struct drm_plane *tegra_dc_add_planes(struct drm_device *drm, if (IS_ERR(primary)) return primary; - for (i = 0; i < 2; i++) { - planes[i] = tegra_dc_overlay_plane_create(drm, dc, 1 + i); + if (dc->soc->supports_cursor) + planes_num = 2; + else + planes_num = 1; + + for (i = 0; i < planes_num; i++) { + planes[i] = tegra_dc_overlay_plane_create(drm, dc, 1 + i, + false); if (IS_ERR(planes[i])) { err = PTR_ERR(planes[i]); @@ -1857,6 +1868,13 @@ static int tegra_dc_init(struct host1x_client *client) err = PTR_ERR(cursor); goto cleanup; } + } else { + /* dedicate one overlay to mouse cursor */ + cursor = tegra_dc_overlay_plane_create(drm, dc, 2, true); + if (IS_ERR(cursor)) { + err = PTR_ERR(cursor); + goto cleanup; + } } err = drm_crtc_init_with_planes(drm, &dc->base, primary, cursor,