From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B0AEDC5475B for ; Fri, 1 Mar 2024 09:22:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Content-ID:In-Reply-To: References:Message-ID:Date:Subject:CC:To:From:Reply-To:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=s+MTIYJYFTiFH2Q2J0UFXueiEZgOgrwIXw8fplPX78E=; b=blhrpsX4DEeTc8 U7/38MwT1CsVux9ksRUEyOBvrDhsWjbR6U2ZqQsCAAfx507i88UukN9eF7bWmrMtl9R2zQ1DW0WTp zDTPLqiTy8L4E1PKTD3T1X7O3j3Ydp/5Y0Fb/jc3WlueA0VLBFI1ut5wHFV1l/z24slnnntzIpKcf HtEZ5d+3eXEY8wbhQA93osHnPsGJ6usJRWPrkqoW1f+ULkazBesKAOXDEnUb09rmYqOQt9o3eZ6dl DnRNaoor9Xod0nq/rzj9va6WPTPUYIyA0A+Kma9UcIEvahczT9UEIAWokRlupQfUjynWRUPLGZ3Lp /5Iqu7IKGv5Rkdz/SyUw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rfz5p-0000000H7uP-0rLD; Fri, 01 Mar 2024 09:22:13 +0000 Received: from mailgw02.mediatek.com ([216.200.240.185]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rfz5h-0000000H7rl-1BxA; Fri, 01 Mar 2024 09:22:11 +0000 X-UUID: 2893da4ed7ad11eeb5c2bb47f3c01139-20240301 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=MIME-Version:Content-Transfer-Encoding:Content-ID:Content-Type:In-Reply-To:References:Message-ID:Date:Subject:CC:To:From; bh=PYh94f3ceMR4NbL7GGlR5bnRh4a6lP5iUC6Nk4IMxHA=; b=FQshSu64MF7xXwoPk71wRrO93rdAAukRSYR5YLEQ9dum6m87xmrlrkD99/zC7bUFqH8BnHCYtRHolWfKygYOsIoSsGKMdbTSsG4VurANbdLjhh3dviGFnBBTpTYo0dwgxGlDIlpTBQYYKtrq+o6ST0O2RapbAADHKPqZbK/8+XM=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.37,REQID:69d9fa2f-9d6e-49bb-b717-0ce36c548e63,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:6c3c7f84-8d4f-477b-89d2-1e3bdbef96d1,B ulkID:nil,BulkQuantity:0,Recheck:0,SF:102,TC:nil,Content:0,EDM:-3,IP:nil,U RL:0,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 X-UUID: 2893da4ed7ad11eeb5c2bb47f3c01139-20240301 Received: from mtkmbs11n1.mediatek.inc [(172.21.101.185)] by mailgw02.mediatek.com (envelope-from ) (musrelay.mediatek.com ESMTP with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 66209230; Fri, 01 Mar 2024 02:22:00 -0700 Received: from mtkmbs10n2.mediatek.inc (172.21.101.183) by mtkmbs11n1.mediatek.inc (172.21.101.185) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.26; Fri, 1 Mar 2024 17:01:36 +0800 Received: from APC01-SG2-obe.outbound.protection.outlook.com (172.21.101.237) by mtkmbs10n2.mediatek.inc (172.21.101.183) with Microsoft SMTP Server id 15.2.1118.26 via Frontend Transport; Fri, 1 Mar 2024 17:01:35 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F5TS1Qoido0kvEmpl13O4cFBbF24faDHTFTVkWKw/qRxPKWuzIvf4sDoA25OwiMawVI0Q56G1E/c3KviapxIQ1/zeYgibKbGspzGW2lFL2IaQIww7xYbxzeeryAuWkhnz6jjAf0Jt0LmEFNcr6a0tojtBo4cgC+0pJLENUIqa5ayv9AD44mB3xFofXlnFHfQuavRmw7lSybE0u27ELqTk/7RlXwAujYl0tRV6NG/k9uK5EYuAwmuv/7pRVAoDE4NCx2Kqn3UAXFS3YF2r746HL8Xvu07F6N8G49wWdx8xXsgW4xOAnShed+/OIE5vqdmkvNaMdewSCqXYN4TQCsr2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PYh94f3ceMR4NbL7GGlR5bnRh4a6lP5iUC6Nk4IMxHA=; b=XlN2gFLlTVy9UT5zeGa5U82hq5aM5f4STfN8AHmQCjbv2QHxAd4IKN2uPYnrbBwtmTNDaeVFt+VJOHri1k+CPOi+7nn+tkXTLbfTtYMVsr4hzMigy07kxOFSTasK7hggBbPstmx54W2qT6swd4Qorv6pa5ogtjDV4MkdMDj+TDGF8XKTjT0GInx5GRueOzlAqNK6TLyjgVLpm/t1Sn6v/S24Xv/UlWk4VethQQn87Spu0ZgogPv6HFw5xm+Tllzp255J1hfdwRD8j1BbLrXx+b0aOrbezj5pW39fnn0XCUKHcnHqq6klEoQKtsWrXgJuNDxL5l+hAP1xhGrALXHc0A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mediatek.com; dmarc=pass action=none header.from=mediatek.com; dkim=pass header.d=mediatek.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mediateko365.onmicrosoft.com; s=selector2-mediateko365-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PYh94f3ceMR4NbL7GGlR5bnRh4a6lP5iUC6Nk4IMxHA=; b=Kan20sAvygt1Kk8l3BE8/jmKQpnBeDrVnYBvVIo+gTG4qFXe1CB8xz1YpWbpzci7QcisY9M38007Dhvzj7KhYmYnYNyJa+GLFy0WxtvJx+BW5jyfvYO//HQ+P/GEQqGhvI7nUUa+CsdCZXG2WHt73y6qT3yUMbMoqf6XppbvB08= Received: from TYZPR03MB6624.apcprd03.prod.outlook.com (2603:1096:400:1f4::13) by SEYPR03MB8177.apcprd03.prod.outlook.com (2603:1096:101:1ae::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.41; Fri, 1 Mar 2024 09:01:33 +0000 Received: from TYZPR03MB6624.apcprd03.prod.outlook.com ([fe80::b705:ea58:46d:e98d]) by TYZPR03MB6624.apcprd03.prod.outlook.com ([fe80::b705:ea58:46d:e98d%4]) with mapi id 15.20.7316.039; Fri, 1 Mar 2024 09:01:33 +0000 From: =?utf-8?B?Q0sgSHUgKOiDoeS/iuWFiSk=?= To: =?utf-8?B?U2hhd24gU3VuZyAo5a6L5a2d6KyZKQ==?= , "angelogioacchino.delregno@collabora.com" , "chunkuang.hu@kernel.org" CC: "linux-mediatek@lists.infradead.org" , "linux-kernel@vger.kernel.org" , =?utf-8?B?QmliYnkgSHNpZWggKOisnea/n+mBoCk=?= , "jason-ch.chen@mediatek.corp-partner.google.com" , =?utf-8?B?TmFuY3kgTGluICjmnpfmrKPonqIp?= , "daniel@ffwll.ch" , "p.zabel@pengutronix.de" , "seanpaul@chromium.org" , "dri-devel@lists.freedesktop.org" , "airlied@gmail.com" , "linux-arm-kernel@lists.infradead.org" , "matthias.bgg@gmail.com" , "fshao@chromium.org" Subject: Re: [PATCH v5 08/13] drm/mediatek: Support alpha blending in OVL Thread-Topic: [PATCH v5 08/13] drm/mediatek: Support alpha blending in OVL Thread-Index: AQHaX/dw+6jgE8RwzEyDstn5tQCgv7Eiri0A Date: Fri, 1 Mar 2024 09:01:33 +0000 Message-ID: References: <20240215101119.12629-1-shawn.sung@mediatek.com> <20240215101119.12629-9-shawn.sung@mediatek.com> In-Reply-To: <20240215101119.12629-9-shawn.sung@mediatek.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=mediatek.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYZPR03MB6624:EE_|SEYPR03MB8177:EE_ x-ms-office365-filtering-correlation-id: 31f6783c-b766-45a6-6678-08dc39ce3138 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: MNeykoBWXGSZ+oV+4OiJm/jKoKO5ktaM85/H/ywSsXwUsTwDuAZM9suVGHRz6G+IiV7/+xVwekXjHA+6gwt+dO6HM6BxPUiFl09NK9lG76f7RZ0kUhMgoc9Rn5jFHPjLHyZBdO6kiSqbcoiHhSzC3qBWJnU2iFevNrzQ1xKr0phcrFQswVGp5niTFp56iKU2b0JurV8DDbcQg7I3hQ0bfCVYL7cc8qtIXrB0mNb1JvtEwbhs8E9IuJBNz4N/Glfc+x+qihqds48F9D9uuXCxBYnAoYBsfSqvye0VhiC0UVQSkbdlk+y4lnVQZauWaxNTxwacccLiJWG9iy+jMziaCDUKN0iEPoIs/tXRYxqGVj56yOnZX+CtjshWFOV3nJtIr48ISj4ZNQKZ+dwNdkcirwxKvw4BA0l7/yea50wc4I5UzYMyt2HLeTDgNKU97GLddrtVS72z4AOmIY0n74c9v65FCSODNiyJiGe+sTF0Nza6ASFsXZFDov6vVlH/u2ias8VOnLAPh/cn9cySCgRMf6jEqIEk35hCXiWR7yvff5tD/urLe33vtGX0/SgOIFpAkGNXjzB64Y5Ry90O0cZhMjp4Vb0unLxcPmGdkiqxnWzPfoB8l1Vpg/9vwpTx/4mqgV/lXvsPk5aDkQcBEPLpSDdV2HrG6fLQMBdx5bM3JQTknW81IVAtZik8x02x/h9soUs5+O80Ea86naV47fpaw9q/I9Gfi0hbhGjk0kTeb2U= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYZPR03MB6624.apcprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(38070700009);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZC8xREdKcnZrbFhuUlV4VlVDZzg5aE1vN2oxRityZ2NaSHdmdDZSa216R3BL?= =?utf-8?B?bFN4YVN3T2xrMVhtaWt3bFFwOTdrdWF6Mm1FR25DUHpBM0xKd0N4TVJDZmRM?= =?utf-8?B?QWdOaDE0T3UwbW5wN3poZ09YWTkzQUV2VTU3bFNUdVNoYWFoTVBnTVpkTWRM?= =?utf-8?B?RkE2MlNKZjNLVXRvRTB5dTM1YmJjUmJDWW1obC9lZVRkOXJvQzlxRGZ2SEwz?= =?utf-8?B?ZE1PQ0cwOE1NZUR2YjBTWmNGaE45MGtuc0JrblFpWCtEblNsaXE0bDhnOGVv?= =?utf-8?B?YjNpMDJCOFhPMVlGZWxRV3JOU3JxV1VTYmlscFFmWXk2M3JPdFZKUUJ4Y2RC?= =?utf-8?B?SkU1TlVlUUpmTE9WTHllR21VWWQ4cjNxV3NPeDl6SmZ4TmlxWTl6YW9tMkZF?= =?utf-8?B?S01xc1VuSHgwUEVBSitMSnVxYjBFSk1GT2xTaEJ4SFhlem9oOVpDM21yQU9U?= =?utf-8?B?QktMaGRBYllEVGxnbi9ONWxoN0I5UTMxZGU2QXEwVDFKaThoSi9XQUtjR0RC?= =?utf-8?B?dk84SEVWMUNrRy80bXNaSWthajlMdEl4ZGx0QjV4TEJrS1pXT1lnd1dBclA3?= =?utf-8?B?VmgrRjRCNnNBR0czK1NBWXpDSkxZOG0vRS9DWkNrTnFwZDFyV1MwR2t6WDhY?= =?utf-8?B?Rm5xbDk5K0tCaHFvTXlxeUNpcWdGUDdzazlWUEx2eGJtSnhSM2ptMnBVZVpM?= =?utf-8?B?K3AxVDdEK04vN0xva21JVUlPU2lHQ2hITmpIM1lYMmZ4cm83dnFKNHRadDJq?= =?utf-8?B?NDB5Tkk5RWZtY1FpdFlZaWsreVl2OVE3TGd2U085VnQwZFAxY2lOdUk1WlRz?= =?utf-8?B?QVFYRTB2dGV4a09oUzZzT3pWNXAzT0FpWlp5OTROS3lZRG5ZK1ZWcXZtUDl2?= =?utf-8?B?WlJTM1VpN1RIWmtiOVJBWEZWK29ubW9RWXEyZHBteXljZHg1a1hDL0NsSEc2?= =?utf-8?B?eTljUlJ5T1g4Y1BvYlhBTVMwZXZZZVF0RGxYZVYwQThFVG40Rno3WGd1dFNJ?= =?utf-8?B?Sm1Ma0NkTjdubWo0eHB6ay9aRFhUbG55b2syVDZYektNekFCbEN1SVZRM1JX?= =?utf-8?B?ZTA5Q1FlUGZRanorVXAvbjJOazFpODdsbkk2dzRhbWtsTXJDYjFmQi8ycjJJ?= =?utf-8?B?UmtuYVFVNEhUelF2d0FGUlVCZXAyajBxY2pGVkNRTjA4eFRnUjlBWDladFZy?= =?utf-8?B?QUpNV2xmaG1ONnplMFBVaFl4dTV5SkdGSjdKUFV3aUxxRDEzNXk3aUVCWU0z?= =?utf-8?B?NU5sM1hBWTJ5VTZXaE5rcDJZWWFsNUxaWTBtUURqMmt0elA2TzBtQ0pXekVK?= =?utf-8?B?dGd4bE9QNFIzN2NyQXpyNEVOWUlPbHJ4V25IU0JpR1kyRm5tenVSeGk3UVhF?= =?utf-8?B?ZDQ5M1UxUGFSTk92OHVpNzhDMmg0TWZqRkVJMFVjYlhkQXAyeExvK0RvWnVy?= =?utf-8?B?b3pFaXB5dVBFTDhQeW1nMkRKQU14NXAwZ204MmcvSnRLQjc3aHEwcW94djZE?= =?utf-8?B?SEh4REN6SmRnUzJGOVJaVDFRc01vMW5nS0RaOThSZ1dPYzIxOGwvZmtkQXlj?= =?utf-8?B?RURicTM0Uy85ZStsa21NM0lybVZ3WXk5K2FYUlp5aUhyb1VQOEVrQmk2bGtq?= =?utf-8?B?a3JpYWRBTUE5Q21GOElXVUpkSHdmNU9rd1dRbExiMDA1amIzVjV4b2gvVEhP?= =?utf-8?B?cG9NeU5WenhlenczclcxamlKemJ4aVo0Ui9ZcmU0RUhwVExialc0T0tBUkpD?= =?utf-8?B?UG1yczVTdGJLY1NRbUFGakRRL3Exb1AxOGFuRXNBTVZHdU1qd2lWVGw3NWE5?= =?utf-8?B?UmpUV0NkcmJTRndRMzlrdmNNdmo4MzdPekJOUXZnZXlwSUNkcFFNR0JveU51?= =?utf-8?B?b2tBQ2xCczJBWDNIVi81Q1FTRWI2TFZ1VGo1eFB1YzBpd1F6c2pYTzA4WUZV?= =?utf-8?B?WUJOeWJzRExPQnRDQzNBZldBb1Z6SzZWUk9FaDlJMElKTjRIYVhhZVU2Zm4r?= =?utf-8?B?Z01oMzIxQWJxN1Z1RlJNYnBGQ0VsaTVCeGFhYXI3YmkrMUR4a3YwRkVORzRy?= =?utf-8?B?MllyUnJ4WHh1Q3JsTTJEM1ZBUnZvcENWV291T3dIK2IxS3d0c1ZOTGpsMjBw?= =?utf-8?Q?rus4kxCXlSoLEUncPkfdvi+F1?= Content-ID: <2FC0A245E1651B4EBF30ED1B0CBEBA73@apcprd03.prod.outlook.com> MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYZPR03MB6624.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 31f6783c-b766-45a6-6678-08dc39ce3138 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Mar 2024 09:01:33.1548 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a7687ede-7a6b-4ef6-bace-642f677fbe31 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: akgHRgN+l95+yBQq49alQ3nUvh6Jba0STgJztviEBIHfdk00Trf1mVONmt8wq7UeVucJoAqdnn1kRa7YyEjFTA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEYPR03MB8177 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240301_012205_889125_4AE8AE7E X-CRM114-Status: GOOD ( 18.61 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi, Hsiao-chien: On Thu, 2024-02-15 at 18:11 +0800, Hsiao Chien Sung wrote: > Support "Pre-multiplied" and "None" blend mode on MediaTek's chips. > Before this patch, only the "Coverage" mode is supported. > > Please refer to the description of the commit > "drm/mediatek: Support alpha blending in display driver" > for more information. Separate this patch into pre-multiplied patch and none patch. Regards, CK > > Signed-off-by: Hsiao Chien Sung > --- > drivers/gpu/drm/mediatek/mtk_disp_ovl.c | 83 +++++++++++++++++++++ > ---- > 1 file changed, 72 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/mediatek/mtk_disp_ovl.c > b/drivers/gpu/drm/mediatek/mtk_disp_ovl.c > index c42fce38a35eb..98c989fddcc08 100644 > --- a/drivers/gpu/drm/mediatek/mtk_disp_ovl.c > +++ b/drivers/gpu/drm/mediatek/mtk_disp_ovl.c > @@ -39,6 +39,7 @@ > #define DISP_REG_OVL_PITCH_MSB(n) (0x0040 + 0x20 * (n)) > #define OVL_PITCH_MSB_2ND_SUBBUF BIT(16) > #define DISP_REG_OVL_PITCH(n) (0x0044 + 0x20 > * (n)) > +#define OVL_CONST_BLEND BIT(28) > #define DISP_REG_OVL_RDMA_CTRL(n) (0x00c0 + 0x20 * (n)) > #define DISP_REG_OVL_RDMA_GMC(n) (0x00c8 + 0x20 * (n)) > #define DISP_REG_OVL_ADDR_MT2701 0x0040 > @@ -52,13 +53,16 @@ > #define GMC_THRESHOLD_HIGH ((1 << GMC_THRESHOLD_BITS) / 4) > #define GMC_THRESHOLD_LOW ((1 << GMC_THRESHOLD_BITS) / 8) > > +#define OVL_CON_CLRFMT_MAN BIT(23) > #define OVL_CON_BYTE_SWAP BIT(24) > -#define OVL_CON_MTX_YUV_TO_RGB (6 << 16) > +#define OVL_CON_RGB_SWAP BIT(25) > #define OVL_CON_CLRFMT_RGB (1 << 12) > #define OVL_CON_CLRFMT_RGBA8888 (2 << 12) > #define OVL_CON_CLRFMT_ARGB8888 (3 << 12) > #define OVL_CON_CLRFMT_UYVY (4 << 12) > #define OVL_CON_CLRFMT_YUYV (5 << 12) > +#define OVL_CON_MTX_YUV_TO_RGB (6 << 16) > +#define OVL_CON_CLRFMT_PARGB8888 (OVL_CON_CLRFMT_ARGB8888 | > OVL_CON_CLRFMT_MAN) > #define OVL_CON_CLRFMT_RGB565(ovl) ((ovl)->data->fmt_rgb565_is_0 ? > \ > 0 : OVL_CON_CLRFMT_RGB) > #define OVL_CON_CLRFMT_RGB888(ovl) ((ovl)->data->fmt_rgb565_is_0 ? > \ > @@ -72,6 +76,22 @@ > #define OVL_CON_VIRT_FLIP BIT(9) > #define OVL_CON_HORZ_FLIP BIT(10) > > +static inline bool is_10bit_rgb(u32 fmt) > +{ > + switch (fmt) { > + case DRM_FORMAT_XRGB2101010: > + case DRM_FORMAT_ARGB2101010: > + case DRM_FORMAT_RGBX1010102: > + case DRM_FORMAT_RGBA1010102: > + case DRM_FORMAT_XBGR2101010: > + case DRM_FORMAT_ABGR2101010: > + case DRM_FORMAT_BGRX1010102: > + case DRM_FORMAT_BGRA1010102: > + return true; > + } > + return false; > +} > + > static const u32 mt8173_formats[] = { > DRM_FORMAT_XRGB8888, > DRM_FORMAT_ARGB8888, > @@ -89,12 +109,20 @@ static const u32 mt8173_formats[] = { > static const u32 mt8195_formats[] = { > DRM_FORMAT_XRGB8888, > DRM_FORMAT_ARGB8888, > + DRM_FORMAT_XRGB2101010, > DRM_FORMAT_ARGB2101010, > DRM_FORMAT_BGRX8888, > DRM_FORMAT_BGRA8888, > + DRM_FORMAT_BGRX1010102, > DRM_FORMAT_BGRA1010102, > DRM_FORMAT_ABGR8888, > DRM_FORMAT_XBGR8888, > + DRM_FORMAT_XBGR2101010, > + DRM_FORMAT_ABGR2101010, > + DRM_FORMAT_RGBX8888, > + DRM_FORMAT_RGBA8888, > + DRM_FORMAT_RGBX1010102, > + DRM_FORMAT_RGBA1010102, > DRM_FORMAT_RGB888, > DRM_FORMAT_BGR888, > DRM_FORMAT_RGB565, > @@ -254,9 +282,7 @@ static void mtk_ovl_set_bit_depth(struct device > *dev, int idx, u32 format, > reg = readl(ovl->regs + DISP_REG_OVL_CLRFMT_EXT); > reg &= ~OVL_CON_CLRFMT_BIT_DEPTH_MASK(idx); > > - if (format == DRM_FORMAT_RGBA1010102 || > - format == DRM_FORMAT_BGRA1010102 || > - format == DRM_FORMAT_ARGB2101010) > + if (is_10bit_rgb(format)) > bit_depth = OVL_CON_CLRFMT_10_BIT; > > reg |= OVL_CON_CLRFMT_BIT_DEPTH(bit_depth, idx); > @@ -274,7 +300,13 @@ void mtk_ovl_config(struct device *dev, unsigned > int w, > if (w != 0 && h != 0) > mtk_ddp_write_relaxed(cmdq_pkt, h << 16 | w, &ovl- > >cmdq_reg, ovl->regs, > DISP_REG_OVL_ROI_SIZE); > - mtk_ddp_write_relaxed(cmdq_pkt, 0x0, &ovl->cmdq_reg, ovl->regs, > DISP_REG_OVL_ROI_BGCLR); > + > + /* > + * The background color should be opaque black (ARGB), > + * otherwise there will be no effect with alpha blend > + */ > + mtk_ddp_write_relaxed(cmdq_pkt, 0xff000000, &ovl->cmdq_reg, > + ovl->regs, DISP_REG_OVL_ROI_BGCLR); > > mtk_ddp_write(cmdq_pkt, 0x1, &ovl->cmdq_reg, ovl->regs, > DISP_REG_OVL_RST); > mtk_ddp_write(cmdq_pkt, 0x0, &ovl->cmdq_reg, ovl->regs, > DISP_REG_OVL_RST); > @@ -352,7 +384,8 @@ void mtk_ovl_layer_off(struct device *dev, > unsigned int idx, > DISP_REG_OVL_RDMA_CTRL(idx)); > } > > -static unsigned int ovl_fmt_convert(struct mtk_disp_ovl *ovl, > unsigned int fmt) > +static unsigned int ovl_fmt_convert(struct mtk_disp_ovl *ovl, > unsigned int fmt, > + unsigned int blend_mode) > { > /* The return value in switch "MEM_MODE_INPUT_FORMAT_XXX" > * is defined in mediatek HW data sheet. > @@ -371,17 +404,37 @@ static unsigned int ovl_fmt_convert(struct > mtk_disp_ovl *ovl, unsigned int fmt) > return OVL_CON_CLRFMT_RGB888(ovl) | OVL_CON_BYTE_SWAP; > case DRM_FORMAT_RGBX8888: > case DRM_FORMAT_RGBA8888: > + return blend_mode == DRM_MODE_BLEND_COVERAGE ? > + OVL_CON_CLRFMT_ARGB8888 : > + OVL_CON_CLRFMT_PARGB8888; > + case DRM_FORMAT_RGBX1010102: > + case DRM_FORMAT_RGBA1010102: > return OVL_CON_CLRFMT_ARGB8888; > case DRM_FORMAT_BGRX8888: > case DRM_FORMAT_BGRA8888: > + return OVL_CON_BYTE_SWAP | > + (blend_mode == DRM_MODE_BLEND_COVERAGE ? > + OVL_CON_CLRFMT_ARGB8888 : > + OVL_CON_CLRFMT_PARGB8888); > + case DRM_FORMAT_BGRX1010102: > case DRM_FORMAT_BGRA1010102: > return OVL_CON_CLRFMT_ARGB8888 | OVL_CON_BYTE_SWAP; > case DRM_FORMAT_XRGB8888: > case DRM_FORMAT_ARGB8888: > + return blend_mode == DRM_MODE_BLEND_COVERAGE ? > + OVL_CON_CLRFMT_RGBA8888 : > + OVL_CON_CLRFMT_PARGB8888; > + case DRM_FORMAT_XRGB2101010: > case DRM_FORMAT_ARGB2101010: > return OVL_CON_CLRFMT_RGBA8888; > case DRM_FORMAT_XBGR8888: > case DRM_FORMAT_ABGR8888: > + return OVL_CON_RGB_SWAP | > + (blend_mode == DRM_MODE_BLEND_COVERAGE ? > + OVL_CON_CLRFMT_RGBA8888 : > + OVL_CON_CLRFMT_PARGB8888); > + case DRM_FORMAT_XBGR2101010: > + case DRM_FORMAT_ABGR2101010: > return OVL_CON_CLRFMT_RGBA8888 | OVL_CON_BYTE_SWAP; > case DRM_FORMAT_UYVY: > return OVL_CON_CLRFMT_UYVY | OVL_CON_MTX_YUV_TO_RGB; > @@ -403,6 +456,8 @@ void mtk_ovl_layer_config(struct device *dev, > unsigned int idx, > unsigned int fmt = pending->format; > unsigned int offset = (pending->y << 16) | pending->x; > unsigned int src_size = (pending->height << 16) | pending- > >width; > + unsigned int blend_mode = state->base.pixel_blend_mode; > + unsigned int ignore_pixel_alpha = 0; > unsigned int con; > bool is_afbc = pending->modifier != DRM_FORMAT_MOD_LINEAR; > union overlay_pitch { > @@ -420,9 +475,15 @@ void mtk_ovl_layer_config(struct device *dev, > unsigned int idx, > return; > } > > - con = ovl_fmt_convert(ovl, fmt); > - if (state->base.fb && state->base.fb->format->has_alpha) > - con |= OVL_CON_AEN | OVL_CON_ALPHA; > + con = ovl_fmt_convert(ovl, fmt, blend_mode); > + if (state->base.fb) { > + con |= OVL_CON_AEN; > + con |= state->base.alpha & OVL_CON_ALPHA; > + } > + > + if (blend_mode == DRM_MODE_BLEND_PIXEL_NONE || > + (state->base.fb && !state->base.fb->format->has_alpha)) > + ignore_pixel_alpha = OVL_CONST_BLEND; > > if (pending->rotation & DRM_MODE_REFLECT_Y) { > con |= OVL_CON_VIRT_FLIP; > @@ -439,8 +500,8 @@ void mtk_ovl_layer_config(struct device *dev, > unsigned int idx, > > mtk_ddp_write_relaxed(cmdq_pkt, con, &ovl->cmdq_reg, ovl->regs, > DISP_REG_OVL_CON(idx)); > - mtk_ddp_write_relaxed(cmdq_pkt, overlay_pitch.split_pitch.lsb, > &ovl->cmdq_reg, ovl->regs, > - DISP_REG_OVL_PITCH(idx)); > + mtk_ddp_write_relaxed(cmdq_pkt, overlay_pitch.split_pitch.lsb | > ignore_pixel_alpha, > + &ovl->cmdq_reg, ovl->regs, > DISP_REG_OVL_PITCH(idx)); > mtk_ddp_write_relaxed(cmdq_pkt, src_size, &ovl->cmdq_reg, ovl- > >regs, > DISP_REG_OVL_SRC_SIZE(idx)); > mtk_ddp_write_relaxed(cmdq_pkt, offset, &ovl->cmdq_reg, ovl- > >regs, _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel