Received: by 2002:ab2:6857:0:b0:1ef:ffd0:ce49 with SMTP id l23csp915854lqp; Thu, 21 Mar 2024 22:33:20 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXVwoZ/vLBlLnBBErg3NauiAIqbald+kbcFIUE202K8boP1Y5oQLlnmTNQ6gF0zGU8OMSNw+wqc6CM1fYmgUuNMIPZPQB3/MuctP6RyVQ== X-Google-Smtp-Source: AGHT+IH/S5INTl7tdE02MTukWTRhS3jmZAjSkJCDkDaxmgxzSzQAin5bdh+slBRkdrDmdEHRl7pN X-Received: by 2002:a05:6808:1491:b0:3c3:63c6:1263 with SMTP id e17-20020a056808149100b003c363c61263mr1656213oiw.31.1711085600741; Thu, 21 Mar 2024 22:33:20 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711085600; cv=pass; d=google.com; s=arc-20160816; b=AccWvy7xVZBKQFvTNLU4yHvH/0o9rTvAOKzS3xIEv1ZNZH+vo8TZJ7qr3tKU3ei4LZ NOUF9eiozPF0NFRTDbpTnAAZKTbF4BG3O9qhRbb5Goqx0Z3LB8dKQJudYdUq+iD0VKxB xE4hiEtwMbsR8+aXxMoXo9BsxOI4Av/p3CaLgwft6JKCxWcDDnWXFRASqpDUXm9UhPkt 8cFGUmKpz9IwPjoVWvXXnEZ+PHl4Jasxn421twyFnp+COK21c8v+GbfbtFM2mdyto5mL bW+bpP/618nMthcLSRgx/JGce2VnkFTRE/Dzw4VpBhp9fYDuL4oR5AT0gpVKG2QY/yqw jJ5g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=RouVurObgINoAKVs/K4CUT3NBt/SpL3/v0jwQBFaevg=; fh=cqg78MBO8cP6SLb/TWVgj1yGZGMGc3K34EILqL+DU6g=; b=k4EUhsQSZkBC8UWXTU51XCogVYH7q1fap/KSj/N6MAHzQYr/16Ni+tyqYV3Fbt9LV1 rj9wMFKs2RInR47/MDqYnYXtQkYRHnuiXKIAt4cmoDZxcqoUW24GV+9gop+JluZaXB+M 2FSTvqSn9sKaMSahPxsD60JBqGY+ra4cnKAMIHzD8N000Zby9KECQDXt4yYH1fzR9w0P StZlbTiBSCo3sf4q0ZcWBrAlX8+7aP3GJ9vqTUZxm0Hbb6NpCqe4eQ+BhoBnb8zvgUyT 8TBpUn91xBvNLb1gBKVoVygFHAVLyKwt4kw5JfDv4gLUzsuB1vfDbkAfcgudj7LI4Gu0 cSJQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=A89B3JkJ; arc=pass (i=1 spf=pass spfdomain=mediatek.com dkim=pass dkdomain=mediatek.com dmarc=pass fromdomain=mediatek.com); spf=pass (google.com: domain of linux-kernel+bounces-110951-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-110951-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=mediatek.com Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id c6-20020a63da06000000b005e4a7a59ed8si1250476pgh.548.2024.03.21.22.33.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 21 Mar 2024 22:33:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-110951-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=A89B3JkJ; arc=pass (i=1 spf=pass spfdomain=mediatek.com dkim=pass dkdomain=mediatek.com dmarc=pass fromdomain=mediatek.com); spf=pass (google.com: domain of linux-kernel+bounces-110951-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-110951-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=mediatek.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id CBC25B23D50 for ; Fri, 22 Mar 2024 05:30:44 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 536791F602; Fri, 22 Mar 2024 05:28:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b="A89B3JkJ" Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BD6A9BA3F for ; Fri, 22 Mar 2024 05:28:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.61.82.184 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711085326; cv=none; b=gKT8xqn+5cxjcpbsqqgyRy0teD0m3q7jkQhcNyAtryExxlVW2It9CM49Xm7ysQmaSkLYHc7221a9NyggGQufXvjZj0qUdQnOgT0tA04+ykVquMihSsD4xaXtWwOqOKiTdBo0aQDrP+zNWHaa3aO0RLB3lm9Gk20EEYOUjJiPrgw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711085326; c=relaxed/simple; bh=c4O9nE3qfTIRd5wdmUEckRW8qecD6dYiOaHPK9K8vuY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=JTbjrDacXbDKBvG3wyWL+3+LXbnwUKBq1RshN18L+qivZ1itL1BcKkP6OhiiB3iCiErjNxzufYyhujh9wkSPt5b4TrC8i4vc1znpU5pbtSRuvQkVjGtojvdMYsNIbXHSCa7K6e1Tna3105XcUtFUU4w3f2LgjvrA/JTcXeCeCMA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=mediatek.com; spf=pass smtp.mailfrom=mediatek.com; dkim=pass (1024-bit key) header.d=mediatek.com header.i=@mediatek.com header.b=A89B3JkJ; arc=none smtp.client-ip=210.61.82.184 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=mediatek.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=mediatek.com X-UUID: 058edcd6e80d11ee935d6952f98a51a9-20240322 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=RouVurObgINoAKVs/K4CUT3NBt/SpL3/v0jwQBFaevg=; b=A89B3JkJ+UP8X+C4i4fkgyLjiuDlDJ55NGJgEwSnh8enbmwAn0TwraLd/CgBynSthD7NwULfzGGDmGpfWl04Peu6u9gcIrtGc8ppKHGu6epMBPjFDEDjvKSrZxGR7gEREaTRmg7Hi0iCwPljBrNiNZNCzwqyjzWLuRgMX1vKhXE=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.37,REQID:8ce4baab-0389-4c8e-ae15-2282a28f5440,IP:0,U RL:0,TC:0,Content:0,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:0 X-CID-META: VersionHash:6f543d0,CLOUDID:b255cc81-4f93-4875-95e7-8c66ea833d57,B ulkID:nil,BulkQuantity:0,Recheck:0,SF:102,TC:nil,Content:0,EDM:-3,IP:nil,U RL:11|1,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES :1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0 X-CID-BVR: 0 X-CID-BAS: 0,_,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_ULN X-UUID: 058edcd6e80d11ee935d6952f98a51a9-20240322 Received: from mtkmbs13n2.mediatek.inc [(172.21.101.108)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 1447764527; Fri, 22 Mar 2024 13:28:32 +0800 Received: from mtkmbs13n2.mediatek.inc (172.21.101.108) by MTKMBS14N2.mediatek.inc (172.21.101.76) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Fri, 22 Mar 2024 13:28:31 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkmbs13n2.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.2.1118.26 via Frontend Transport; Fri, 22 Mar 2024 13:28:31 +0800 From: Shawn Sung To: Chun-Kuang Hu , AngeloGioacchino Del Regno CC: Philipp Zabel , David Airlie , Daniel Vetter , Matthias Brugger , Bibby Hsieh , CK Hu , "Nancy . Lin" , Fei Shao , Sean Paul , Jason Chen , , , , , "Hsiao Chien Sung" Subject: [PATCH v6 07/14] drm/mediatek: Support alpha blending in display driver Date: Fri, 22 Mar 2024 13:28:22 +0800 Message-ID: <20240322052829.9893-8-shawn.sung@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20240322052829.9893-1-shawn.sung@mediatek.com> References: <20240322052829.9893-1-shawn.sung@mediatek.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain X-TM-AS-Product-Ver: SMEX-14.0.0.3152-9.1.1006-23728.005 X-TM-AS-Result: No-10--8.474600-8.000000 X-TMASE-MatchedRID: zNyJSLgyXoKp2D+ysBQGeaMVgdN9w+TCKx5ICGp/WtHxxaAXDrCns61l cDruwbtbjztOl8irRXY5GvUK7HqDBwffi0zcbiljzuCAd7BUarYxmlBLt0TR1rFRmrhHzmfvJqo crulnRtHu8BTg/pveKiuTDqyOvc9SpfOBymEN+bxDiyuN5FvFNkyQ5fRSh265fmHrLgoJIlxAd9 sp7/hgkuWkFwqEeuyRMtootpa5vg8fE8yM4pjsDwtuKBGekqUpI/NGWt0UYPCFxaINuf8XsxMBt +JDyJKYtmVmHRhdAl+remNmdQKczsk2k+M2T95D X-TM-AS-User-Approved-Sender: No X-TM-AS-User-Blocked-Sender: No X-TMASE-Result: 10--8.474600-8.000000 X-TMASE-Version: SMEX-14.0.0.3152-9.1.1006-23728.005 X-TM-SNTS-SMTP: F50D86FC5B8506774D7D6CD3822AE2B6767D12BA02AAB699888BC3952AE58FDA2000:8 X-MTK: N From: Hsiao Chien Sung Support "Pre-multiplied" and "None" blend mode on MediaTek's chips by adding correct blend mode property when the planes init. Before this patch, only the "Coverage" mode (default) is supported. For more information, there are three pixel blend modes in DRM driver: "None", "Pre-multiplied", and "Coverage". To understand the difference between these modes, let's take a look at the following two approaches to do alpha blending: 1. Straight: dst.RGB = src.RGB * src.A + dst.RGB * (1 - src.A) This is straightforward and easy to understand, when the source layer is compositing with the destination layer, it's alpha will affect the result. This is also known as "post-multiplied", or "Coverage" mode. 2. Pre-multiplied: dst.RGB = src.RGB + dst.RGB * (1 - src.A) Since the source RGB have already multiplied its alpha, only destination RGB need to multiply it. This is the "Pre-multiplied" mode in DRM. For the "None" blend mode in DRM, it means the pixel alpha is ignored when compositing the layers, only the constant alpha for the composited layer will take effects. Reviewed-by: AngeloGioacchino Del Regno Reviewed-by: CK Hu Signed-off-by: Hsiao Chien Sung --- drivers/gpu/drm/mediatek/mtk_plane.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/gpu/drm/mediatek/mtk_plane.c b/drivers/gpu/drm/mediatek/mtk_plane.c index 1723d4333f371..5bf757a3ef202 100644 --- a/drivers/gpu/drm/mediatek/mtk_plane.c +++ b/drivers/gpu/drm/mediatek/mtk_plane.c @@ -346,6 +346,17 @@ int mtk_plane_init(struct drm_device *dev, struct drm_plane *plane, DRM_INFO("Create rotation property failed\n"); } + err = drm_plane_create_alpha_property(plane); + if (err) + DRM_ERROR("failed to create property: alpha\n"); + + err = drm_plane_create_blend_mode_property(plane, + BIT(DRM_MODE_BLEND_PREMULTI) | + BIT(DRM_MODE_BLEND_COVERAGE) | + BIT(DRM_MODE_BLEND_PIXEL_NONE)); + if (err) + DRM_ERROR("failed to create property: blend_mode\n"); + drm_plane_helper_add(plane, &mtk_plane_helper_funcs); return 0; -- 2.18.0