From patchwork Wed Oct 3 09:40:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Christoph Manszewski X-Patchwork-Id: 10624527 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 48B1615A6 for ; Wed, 3 Oct 2018 09:42:38 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 394B928726 for ; Wed, 3 Oct 2018 09:42:38 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2D04E28737; Wed, 3 Oct 2018 09:42:38 +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=-2.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id B762328726 for ; Wed, 3 Oct 2018 09:42:37 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: Message-Id:In-Reply-To:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=O3J9guMNfdkyXg/XUBrcDmeZghWDRq8NDJKQoJ45ocU=; b=sUDFh6wqJZTByDKXWzTKcHszUa tC34V4onAUcKP/hBqCPMyvpZCOgb4WcQ2aBshV60/MlZToFp2VCrlClU71YzMAk6B3GFvDo4aNCOE 0oVjE2DGGjUEgfzbCzrZxye68s0o5lakp5V0+MXWF5G6Valm1CXe7cfA3Kf8BKt+wxXMWVSrq3j7U knJGdOlv+/tfly8ggpVy0e+bQL+UYxQ2nkI4RPkCA4dGN1Ur5jAVTKzQRlxY25XLqhOvPYg50/bEm KjybZj6XOJ6iNguQsubDjopBu5As5A+3xO1CEUl2E3DgGoC1j0F/ntZOKek66OI6uOFXqWNXkAhEw Cv74+EzA==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1g7dfs-00086z-4d; Wed, 03 Oct 2018 09:42:32 +0000 Received: from mailout2.w1.samsung.com ([210.118.77.12]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1g7dec-0007VG-KP for linux-arm-kernel@lists.infradead.org; Wed, 03 Oct 2018 09:41:22 +0000 Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20181003094102euoutp02ece1b6e4a0b2e9a9e12f4c8809495445~aD9yCKgbv0287802878euoutp02R for ; Wed, 3 Oct 2018 09:41:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20181003094102euoutp02ece1b6e4a0b2e9a9e12f4c8809495445~aD9yCKgbv0287802878euoutp02R DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1538559662; bh=9saKoG0uwzzoT2555MEKJ+g1xamHvZuhQxVa8f9dY/E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XhUvNhkdCvskkEyr8Mt95uUxebagR40ByyySkIVoKfaHkP+Bu2cuOTT3uDQZNUAoR daBHIIZc91pIV+zAGhXzBM/O393wZD+PnQyz2BAslKS6J9b4LlwZqzvcAj9Idi/8Ul z0aL5B6GyoMEGQZorZSSB2KyIrsM8n/ettsvBObA= Received: from eusmges2new.samsung.com (unknown [203.254.199.244]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20181003094101eucas1p13d1ef02473fb848c1180c095a9cfca4f~aD9xI6k_m2300023000eucas1p1M; Wed, 3 Oct 2018 09:41:01 +0000 (GMT) Received: from eucas1p2.samsung.com ( [182.198.249.207]) by eusmges2new.samsung.com (EUCPMTA) with SMTP id DE.11.04294.DAE84BB5; Wed, 3 Oct 2018 10:41:01 +0100 (BST) Received: from eusmtrp1.samsung.com (unknown [182.198.249.138]) by eucas1p2.samsung.com (KnoxPortal) with ESMTPA id 20181003094100eucas1p23bfb9604dbd50ee77f11a85d2c626471~aD9wOUXM61807118071eucas1p2b; Wed, 3 Oct 2018 09:41:00 +0000 (GMT) Received: from eusmgms1.samsung.com (unknown [182.198.249.179]) by eusmtrp1.samsung.com (KnoxPortal) with ESMTP id 20181003094100eusmtrp1db12007028d59246689637c222d37353~aD9v8P5a00092600926eusmtrp1j; Wed, 3 Oct 2018 09:41:00 +0000 (GMT) X-AuditID: cbfec7f4-835ff700000010c6-06-5bb48ead7f73 Received: from eusmtip1.samsung.com ( [203.254.199.221]) by eusmgms1.samsung.com (EUCPMTA) with SMTP id 88.7D.04284.CAE84BB5; Wed, 3 Oct 2018 10:41:00 +0100 (BST) Received: from AMDC2034.DIGITAL.local (unknown [106.120.51.41]) by eusmtip1.samsung.com (KnoxPortal) with ESMTPA id 20181003094059eusmtip19cedd4e12fdc78d6be9d3c5fa76897ce~aD9vKwU-W0809708097eusmtip1D; Wed, 3 Oct 2018 09:40:59 +0000 (GMT) From: Christoph Manszewski To: dri-devel@lists.freedesktop.org Subject: [PATCH 2/2] drm/exynos: decon: Make pixel blend mode configurable Date: Wed, 3 Oct 2018 11:40:44 +0200 X-Mailer: git-send-email 2.7.4 In-Reply-To: <1538559644-30269-1-git-send-email-c.manszewski@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA0VSa0hTURzv7N67XZeL2zQ8qBgtDHtphdKBJAqCbkaQfgk1qJk3tXTKrq4s MNHwnS4FExVt4qulqXOaTrQc5lJxl9LERz7KIB8TKx+klrR5lb79zu/1/5/DITGpmXAmIxSx jFIhj5QJxXhz9xp3vDZbH3xiPXk3Gn1lJtATc48ANRTUEcjUVgHQ4MqiELVOGUQod1KNo5mJ DzjKmZ7HEMfVi1B/kkWEdNNDBBowFAtRAdchQDktnQSq7RoXIc3PJhyN53UBVJA3KzznQNeU 1ABap00X0q9Xpwi6pMefnsw0CejG8kd0a267gDYZRkV0tl4L6CWd21VxkNg3lImMUDFKr7M3 xeETvd+ImEyX+0ZOjyeCLKcMYEdCyhuq1+qJDCAmpVQ1gJaNeZFNkFLLAKbV4bywBGCZec4q kFuJdU7C81UAtuRrMP5gDWxwKZgtLaR84Nj4L6ENO1IH4d+nWmAzYdQAAbkyDW5rcqD84Ke0 BJsHp9xhdWmhiF/JDY6Y07d67KhLsMZo2FoPUgsi2DsyuGWSUCq4YUrH+cAFWJv6W8BjBzhn 0m8XucK+vCycDycDOLo8tN2kBrDzZcZ2+gzUDc8JbBth1GFYZ/Di6fNwsdKC81feA4cX9tpo zApzm59hPC2BaSlS3n0Izuv1wp2xM0srgMc0fDyQAfgHKgaw1diGq8H+wv/DngOgBU5MHBsV xrCnFMw9T1YexcYpwjxvRUfpgPWX9W2alluA4U+IEVAkkNlLWjSNwVJCrmLjo4wAkpjMUZIt t1KSUHn8A0YZfUMZF8mwRuBC4jInSWVJQ7CUCpPHMncZJoZR7qgC0s45ERzIDYLERybJGWrN fjllDstD8wkBk0WWgCq/qsnuadOcd2NBfgA7MSv7UXrUvvpKeojljjs35dVQ5Pq5YyDh8lh5 VvE+oJYEXvSXYf3vvuoDH/qqmq/Frh0b2fU99bT/l/c+qqYXet/VN7dLNB6Kzp5gtPnWrrKi fdTVo6bi+rAMZ8PlJ49gSlb+D0Dz6/VhAwAA X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrHIsWRmVeSWpSXmKPExsVy+t/xu7pr+rZEG8yYxWpxa905VovecyeZ LDbOWM9qcXz3UkaLK1/fs1nsfLCL3WLS/QksFi/uXWSx6H/8mtni/PkN7BZnm96wW2x6fI3V 4vKuOWwWM87vY7Lo33GQ1WLtkbvsFgs/bmWxuDv5CKPFjMkv2RyEPdbMW8PosWlVJ5vH9m8P WD3mnQz0uN99nMlj85J6j52T9jJ5HN91i92jb8sqRo/Pm+QCuKL0bIryS0tSFTLyi0tslaIN LYz0DC0t9IxMLPUMjc1jrYxMlfTtbFJSczLLUov07RL0Mu6desJa0C1dcej8FpYGxh7xLkYO DgkBE4lf53m7GDk5hASWMkp8/FYOYksIyEjMO9vHBmELS/y51gVkcwHVfGKU6Nt7mAUkwSZg KnH77iewIhEBZYm/E1cxghQxCzxklXi/sJMNZIGwgJfE1Y46kBoWAVWJFfNnsYPYvAIeEnOf 7WaBWCAncfNcJzOIzSngKbHm0C5WiIM8JL7+2sA4gZFvASPDKkaR1NLi3PTcYkO94sTc4tK8 dL3k/NxNjMC42nbs5+YdjJc2Bh9iFOBgVOLh3bFwc7QQa2JZcWXuIUYJDmYlEd6+RKAQb0pi ZVVqUX58UWlOavEhRlOgoyYyS4km5wNjPq8k3tDU0NzC0tDc2NzYzEJJnPe8QWWUkEB6Yklq dmpqQWoRTB8TB6dUA2P2Re1tM5ZLMiUdX2+7zct9Tlmz1jttG7kHIYJbelR3va4WtS+VTlru cn/fYT5d9oN2HJP2L7losmBSQO/MzHeiXAa3DjQsXNhglclpqyJn1PzzfmSawaa6C8svMF+U OxvxIabEPeTA42WuLb3ZjC1no6z+s/jLK0buk01mTVqXG7D9eFXQMiWW4oxEQy3mouJEAL9O 6frBAgAA Message-Id: <20181003094100eucas1p23bfb9604dbd50ee77f11a85d2c626471~aD9wOUXM61807118071eucas1p2b@eucas1p2.samsung.com> X-CMS-MailID: 20181003094100eucas1p23bfb9604dbd50ee77f11a85d2c626471 X-Msg-Generator: CA X-RootMTR: 20181003094100eucas1p23bfb9604dbd50ee77f11a85d2c626471 X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20181003094100eucas1p23bfb9604dbd50ee77f11a85d2c626471 References: <1538559644-30269-1-git-send-email-c.manszewski@samsung.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20181003_024114_828799_530525D5 X-CRM114-Status: GOOD ( 17.66 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Maarten Lankhorst , linux-samsung-soc@vger.kernel.org, Joonyoung Shim , Bartlomiej Zolnierkiewicz , Christoph Manszewski , Gustavo Padovan , Seung-Woo Kim , linux-kernel@vger.kernel.org, Krzysztof Kozlowski , Inki Dae , David Airlie , Kyungmin Park , Kukjin Kim , Andrzej Hajda , Lowry Li , Sean Paul , linux-arm-kernel@lists.infradead.org, Marek Szyprowski MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Currently blend mode is set accordingly to pixel format. Add pixel blend mode property and make that configurable. Decon hardware doesn't support premultiplied mode, chose coverage as default. Tested on TM2 with Exynos 5433 CPU, on top of exynos-drm-next using modetest. Signed-off-by: Christoph Manszewski --- Currently, the driver exposes the "premultiplied" option for pixel blend mode property, and handles it as "coverage". This is due to the fact, that "premultiplied" mode is mandatory and is used as default. The question is - how to correctly deal with hardare that doesn't support premultiplied mode? drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 29 ++++++++++++++++++++++----- drivers/gpu/drm/exynos/regs-decon5433.h | 1 + 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c index dff540160199..15609c9f2fda 100644 --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c @@ -84,12 +84,13 @@ static const enum drm_plane_type decon_win_types[WINDOWS_NR] = { [CURSON_WIN] = DRM_PLANE_TYPE_CURSOR, }; + static const unsigned int capabilities[WINDOWS_NR] = { EXYNOS_DRM_PLANE_CAP_WIN_BLEND, - EXYNOS_DRM_PLANE_CAP_WIN_BLEND, - EXYNOS_DRM_PLANE_CAP_WIN_BLEND, - EXYNOS_DRM_PLANE_CAP_WIN_BLEND, - EXYNOS_DRM_PLANE_CAP_WIN_BLEND, + EXYNOS_DRM_PLANE_CAP_WIN_BLEND | EXYNOS_DRM_PLANE_CAP_PIX_BLEND, + EXYNOS_DRM_PLANE_CAP_WIN_BLEND | EXYNOS_DRM_PLANE_CAP_PIX_BLEND, + EXYNOS_DRM_PLANE_CAP_WIN_BLEND | EXYNOS_DRM_PLANE_CAP_PIX_BLEND, + EXYNOS_DRM_PLANE_CAP_WIN_BLEND | EXYNOS_DRM_PLANE_CAP_PIX_BLEND, }; static inline void decon_set_bits(struct decon_context *ctx, u32 reg, u32 mask, @@ -276,6 +277,24 @@ static void decon_win_set_bldmod(struct decon_context *ctx, unsigned int win, unsigned int alpha = state->base.alpha; u32 win_alpha = alpha >> 8; u32 val = 0; + unsigned int pixel_alpha; + + if (fb->format->has_alpha) + pixel_alpha = state->base.pixel_blend_mode; + else + pixel_alpha = DRM_MODE_BLEND_PIXEL_NONE; + + switch (pixel_alpha) { + case DRM_MODE_BLEND_PIXEL_NONE: + break; + case DRM_MODE_BLEND_COVERAGE: + default: + val |= WINCONx_ALPHA_SEL_F; + val |= WINCONx_BLD_PIX_F; + val |= WINCONx_ALPHA_MUL_F; + break; + } + decon_set_bits(ctx, DECON_WINCONx(win), WINCONx_BLEND_MODE_MASK, val); if (alpha != DRM_BLEND_ALPHA_OPAQUE) { val = VIDOSD_Wx_ALPHA_R_F(win_alpha) | VIDOSD_Wx_ALPHA_G_F(win_alpha) | @@ -335,7 +354,7 @@ static void decon_win_set_pixfmt(struct decon_context *ctx, unsigned int win, val |= WINCONx_BURSTLEN_8WORD; } - writel(val, ctx->addr + DECON_WINCONx(win)); + decon_set_bits(ctx, DECON_WINCONx(win), ~WINCONx_BLEND_MODE_MASK, val); } static void decon_shadow_protect(struct decon_context *ctx, bool protect) diff --git a/drivers/gpu/drm/exynos/regs-decon5433.h b/drivers/gpu/drm/exynos/regs-decon5433.h index f42d8f0adf5d..17b7324922c1 100644 --- a/drivers/gpu/drm/exynos/regs-decon5433.h +++ b/drivers/gpu/drm/exynos/regs-decon5433.h @@ -117,6 +117,7 @@ #define WINCONx_BPPMODE_16BPP_A4444 (0xe << 2) #define WINCONx_ALPHA_SEL_F (1 << 1) #define WINCONx_ENWIN_F (1 << 0) +#define WINCONx_BLEND_MODE_MASK (0xc2) /* SHADOWCON */ #define SHADOWCON_PROTECT_MASK GENMASK(14, 10)