Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp2129866ybf; Mon, 2 Mar 2020 02:34:31 -0800 (PST) X-Google-Smtp-Source: APXvYqytRLSnaUQoYrngsceWNSjnyFQZTzdKAIWo2M3MuO9V0MRLG21c62EvJgIV1clcDmg1KEbv X-Received: by 2002:a9d:aa7:: with SMTP id 36mr12966862otq.52.1583145271462; Mon, 02 Mar 2020 02:34:31 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583145271; cv=none; d=google.com; s=arc-20160816; b=b7naeD6Mj1wUQ405FdoecmnQDJSBC8vCfVhI1BelOdA5cMJSFlLYTTK80JndHwdmvO pzzCqXr0H00mhEDmsOWf7qoHppY/qegn0zkA9pBjsThVRayA/kRVUriEA6VY/RA52o7i lfL9PLDdQEspR4hMyTi0b1e1SbSGXaxnarfqK0MzrnKAShu9T7eDT85jQaUunoGHoOfg o9JA2od49cKWyvtISnitPy6sPoBq6sJ800NFvI21OTjO5rwmrdEaZV7aeq2t40PoNqUe t/W1DRrQa5buYjZmO+YFzRTZzo8nPlP7+30hAFldbS3J9ct+/JYTCe3oWvSW1m7vKvze GTbQ== 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:message-id:date :subject:cc:to:from:dkim-signature; bh=a42O4KV4bEmBFQrB6svb5MCsREuatuBAEWKoVrmbJO0=; b=bv05cSf5stO4bhltNkjOz6AF9j8vG2gBoselDN0VHL4qTNhf38tkR88oDwOGbC0wnT A7xFepF8tWIZ2K9vM4/3O4ZDWP06os1WWhAA35qkxTjBEZYP33vlN5UPDQ3NjGW0uz4w fhHowV+ZNfbKKIsrzBSUCZx+LTekKpZ1DKV4/Q+BagDg5+g2EI5UQQY0jUs37KgOUDip s8g2pbDbzoTb3eA/CmYXLWTqvjo4823ReUsJGviFZ5N6/3uX23W5/aZR6zdjeFuWmVk3 VjWLzQMo1BjqH/tdAIuqMDeJury7i3bAiZ8PorVgyu2Lqq0c+yuG74G+IDYL32KZVfrS Odcw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=cWTcWZAI; 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 t10si6567220otd.219.2020.03.02.02.34.19; Mon, 02 Mar 2020 02:34:31 -0800 (PST) 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=cWTcWZAI; 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 S1727470AbgCBKcm (ORCPT + 99 others); Mon, 2 Mar 2020 05:32:42 -0500 Received: from mail-lj1-f193.google.com ([209.85.208.193]:41161 "EHLO mail-lj1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727032AbgCBKcd (ORCPT ); Mon, 2 Mar 2020 05:32:33 -0500 Received: by mail-lj1-f193.google.com with SMTP id u26so10969945ljd.8 for ; Mon, 02 Mar 2020 02:32:32 -0800 (PST) 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; bh=a42O4KV4bEmBFQrB6svb5MCsREuatuBAEWKoVrmbJO0=; b=cWTcWZAIYzjyX4csJQI8qpY9zS6H5etvZc0N+Mrjfy88j2LDsNnKBZ2r9ZOt7c0ee1 Z3l7UAHxFeonp5mJo00Zi1tUpr3Q/MWTk56CuJWDaegT83D6Bi0DGPOjReSz7hCi6jBE D1//q/27Sh7NMHJX5zt+R9JW3R799Sc4ccu9n1NERTb5xBYG8OxenY6BJ6X/M4AGPh8W 9DWOReMKA3aRztFwCRoDvEgY7PBSzMnehaXPgokPEiuCHiVc22zv0RugHl5TZ9VdZx/I PGFVb8zFCYwHgI8Jlgq+dw1zf0KLMSd/EOqh3KN/r12jgXFGrbk7J3MxjBTxjPXTxY2F pPsQ== 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; bh=a42O4KV4bEmBFQrB6svb5MCsREuatuBAEWKoVrmbJO0=; b=NYt4llZ6JOR3xdhKqybACbb2Jna0ClshSjtoRYQw17fkFDcCfYMMheQD/h6TwGq8D4 6ras96vpwALnuTtHzQNWiKzNbuXa37HXrcWkC52AgqwPZMRp5gyKL2/wvt/niFMq+hP6 hWFskqhdqQjwYJ7wVkxn19yUpQexjKKo1agmlKvxjoVgRydLeKtCwAvzDESwphg+/v/u 6IkPpNyxe+GBEtdqQHoTysRPtXBcqo3R08yMm2NhZ7R+HoSVYNCTF5ZQy/wkdOtVYcFl uiSIn6LHAlVrmlUa7I1dMDXXgHDpWB2k+RjiXAJdUOvZEcYRYeUjojrSmS8kfebW29k7 JDLQ== X-Gm-Message-State: ANhLgQ2Uf3kNQWh5Mq+F8eJg/ca6f0x7IAYTQwWHTKgCW7l/z/5uyD94 fGS8Y7AWoirdY4FR6YImmZk= X-Received: by 2002:a05:651c:cf:: with SMTP id 15mr11454597ljr.288.1583145151835; Mon, 02 Mar 2020 02:32:31 -0800 (PST) Received: from localhost.localdomain ([149.255.131.2]) by smtp.gmail.com with ESMTPSA id n21sm3895328lfh.2.2020.03.02.02.32.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2020 02:32:31 -0800 (PST) From: Roman Stratiienko To: jernej.skrabec@siol.net, mripard@kernel.org, wens@csie.org Cc: airlied@linux.ie, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, Roman Stratiienko Subject: [PATCH v4 4/4] RFC: drm/sun4i: Process alpha channel of most bottom layer Date: Mon, 2 Mar 2020 12:31:38 +0200 Message-Id: <20200302103138.17916-5-r.stratiienko@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200302103138.17916-1-r.stratiienko@gmail.com> References: <.> <20200302103138.17916-1-r.stratiienko@gmail.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Allwinner display engine blender consists of 3 pipelined blending units. PIPE0->\ BLD0-\ PIPE1->/ BLD1-\ PIPE2->------/ BLD2->OUT PIPE3->------------/ This pipeline produces incorrect composition if PIPE0 buffer has alpha. Correct solution is to add one more blending step and mix PIPE0 with background, but it is not supported by the hardware. Use premultiplied alpha buffer of PIPE0 overlay channel as is. In this case we got same effect as mixing PIPE0 with black background. Signed-off-by: Roman Stratiienko --- v4: - Initial version, depends on other unmerged patches in the patchset. --- drivers/gpu/drm/sun4i/sun8i_ui_layer.c | 2 +- drivers/gpu/drm/sun4i/sun8i_vi_layer.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c index dd6145f80c36..d94f4d8b9128 100644 --- a/drivers/gpu/drm/sun4i/sun8i_ui_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_ui_layer.c @@ -106,7 +106,7 @@ static void sun8i_ui_layer_update_alpha(struct sun8i_mixer *mixer, int channel, regmap_update_bits(mixer->engine.regs, SUN8I_MIXER_BLEND_PREMULTIPLY(bld_base), SUN8I_MIXER_BLEND_PREMULTIPLY_EN(zpos), - SUN8I_MIXER_BLEND_PREMULTIPLY_EN(zpos)); + zpos ? SUN8I_MIXER_BLEND_PREMULTIPLY_EN(zpos) : 0); } static int sun8i_ui_layer_update_coord(struct sun8i_mixer *mixer, int channel, diff --git a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c index e6d8a539614f..68a6843db4ab 100644 --- a/drivers/gpu/drm/sun4i/sun8i_vi_layer.c +++ b/drivers/gpu/drm/sun4i/sun8i_vi_layer.c @@ -108,7 +108,7 @@ static void sun8i_vi_layer_update_alpha(struct sun8i_mixer *mixer, int channel, regmap_update_bits(mixer->engine.regs, SUN8I_MIXER_BLEND_PREMULTIPLY(bld_base), SUN8I_MIXER_BLEND_PREMULTIPLY_EN(zpos), - (mixer->cfg->is_de3) ? + (zpos != 0 && mixer->cfg->is_de3) ? SUN8I_MIXER_BLEND_PREMULTIPLY_EN(zpos) : 0); } -- 2.17.1