Received: by 10.213.65.68 with SMTP id h4csp1342056imn; Wed, 14 Mar 2018 18:03:40 -0700 (PDT) X-Google-Smtp-Source: AG47ELs1qZX2dIR5DllWgSuVxX7wdDWzR4msGSlPk+Tv3fMyZ4a3GbiB+G8B89lCndsdOPAfJKN4 X-Received: by 10.101.82.70 with SMTP id q6mr5191888pgp.67.1521075820935; Wed, 14 Mar 2018 18:03:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521075820; cv=none; d=google.com; s=arc-20160816; b=ZlLanFys57TN8tu2X85vGZ384xt5jPMPw4B/zxe6vCdTxuIIgY1D2+B2Okfz33iVJO ivmgwJi5KeuiKa84rrJJuyTt0mKuGzNxkgemQxI2+Er6foXkqOZaNCrN0g6QUvRfS12x sknrLJTP86p2cBdZRBimo2PGcJ8geZYOVLw/TPv72TrtHhKxNgLtAJ0airDYBOhfwTcM VtxYK/XfmzUebSwbbawt2MPNLqYS9+b5attkCu2522CSCUPKH00CK4p+IeoLgvOF+TtI +yL4gbpMptJvbqlhMgfNDO/sXdLH/e1MfWSE7VCt2/vA9CoRRTw8yfgBBF2doJt3mUKv 8rBg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:dkim-signature :arc-authentication-results; bh=QUz+04MGc1WSnm5VuoxJgVcI2NwdzT6RhSb87RvDjwM=; b=FfRJVl+3/Ux+t+az1e8fFXaatw7Z+4LMTIUzdo8C1xPmsYryVOBYcd5E5QEb1mXX1/ H6PmECVr3lcXHDsHs4J+oM2N5bOOElXkK1hB8ya5rJowdSD26SSI2fFaYj8i/gY8lkeX 5yzl7pSX2o02MCM3o3lWfagdMn3FxIIo+wx+DADokS1PnlGbe07uRQBtOjtbvHR3/P6y yteBh4ndvD8qfZZaGKjI3i0hMeNBfSRZWHIA/6GMxIhyPdaxVnaU2HQ1tXzHIGiSx6Ov dsWZ5DxVXQzG0MrlkSvXk/o3H0UeOUJkh3ftot/ogAVuHAiLo4bRgCEw5+0OX4iAnbJP laxQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=r5wM8Gzx; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 62si2697841pgh.100.2018.03.14.18.03.26; Wed, 14 Mar 2018 18:03:40 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=r5wM8Gzx; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752038AbeCOBCG (ORCPT + 99 others); Wed, 14 Mar 2018 21:02:06 -0400 Received: from mail-pg0-f65.google.com ([74.125.83.65]:37945 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751626AbeCOBBw (ORCPT ); Wed, 14 Mar 2018 21:01:52 -0400 Received: by mail-pg0-f65.google.com with SMTP id a15so2137678pgn.5; 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=VOg8S4w2//lqTTQzsoaHURU7xUT71/TolG2bwjL3nFT0JjFVUXkUvZ/EC/UVt0KPYN yVNsCJ4AdbqbCfPtXo1GmllNR+6qsTaac78yF5lbre9DJzQCQamM3ULiD1T1EHFn418I sH31xkCE1Dt24Tsw8e61MqKPjv28Bjn/f2IpSYdadkCt9kCQgEsfXS07Wx21eUmayiKa G5OSpuaXk/2fNq6GSkhwDXDOUO4Y8cGmcn/aC2MHAE8n7h9uUbfc9zr2xT6yAIQ4E1Sr 2BHv42Y4iNGDUPidND+jPi/5NbeZ2Mscpx1TcNS4udXONsLjuXzOl1H+EsmBkWLYITv2 leiQ== X-Gm-Message-State: AElRT7ER1x8Io80BgtsJEkYklByV3sPlgoh8ZAw+Uix4ziL5JYokcqZ6 wQ1AunjEYA6AlwGG3R5n9Io= 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 Cc: dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org 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> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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, -- 2.16.1