From: Shawn Sung <shawn.sung@mediatek.com>
To: Chun-Kuang Hu <chunkuang.hu@kernel.org>
Cc: Daniel Vetter <daniel@ffwll.ch>, Sean Paul <sean@poorly.run>,
Jason Chen <jason-ch.chen@mediatek.corp-partner.google.com>,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
CK Hu <ck.hu@mediatek.com>,
"Nancy . Lin" <nancy.lin@mediatek.com>,
linux-mediatek@lists.infradead.org,
Bibby Hsieh <bibby.hsieh@mediatek.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
Philipp Zabel <p.zabel@pengutronix.de>,
Hsiao Chien Sung <shawn.sung@mediatek.com>,
David Airlie <airlied@gmail.com>,
linux-arm-kernel@lists.infradead.org,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>
Subject: [PATCH v9 18/21] drm/mediatek: Support alpha blending in display driver
Date: Fri, 14 Jun 2024 10:46:17 +0800 [thread overview]
Message-ID: <20240614024620.19011-19-shawn.sung@mediatek.com> (raw)
In-Reply-To: <20240614024620.19011-1-shawn.sung@mediatek.com>
From: Hsiao Chien Sung <shawn.sung@mediatek.com>
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: CK Hu <ck.hu@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Signed-off-by: Hsiao Chien Sung <shawn.sung@mediatek.com>
---
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 713e17473930..9762bba23273 100644
--- a/drivers/gpu/drm/mediatek/mtk_plane.c
+++ b/drivers/gpu/drm/mediatek/mtk_plane.c
@@ -354,6 +354,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
next prev parent reply other threads:[~2024-06-14 2:48 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-14 2:45 [PATCH v9 00/21] Support IGT in display driver Shawn Sung
2024-06-14 2:46 ` [PATCH v9 01/21] soc: mediatek: Disable 9-bit alpha in ETHDR Shawn Sung
2024-06-14 2:46 ` [PATCH v9 02/21] drm/mediatek: Add OVL compatible name for MT8195 Shawn Sung
2024-06-14 2:46 ` [PATCH v9 03/21] drm/mediatek: Add missing plane settings when async update Shawn Sung
2024-06-14 2:46 ` [PATCH v9 04/21] drm/mediatek: Add DRM_MODE_ROTATE_0 to rotation property Shawn Sung
2024-06-14 2:46 ` [PATCH v9 05/21] drm/mediatek: Set DRM mode configs accordingly Shawn Sung
2024-06-14 2:46 ` [PATCH v9 06/21] drm/mediatek: Turn off the layers with zero width or height Shawn Sung
2024-06-14 2:46 ` [PATCH v9 07/21] drm/mediatek: Support more 10bit formats in OVL Shawn Sung
2024-06-14 2:46 ` [PATCH v9 08/21] drm/mediatek: Support RGBA8888 and RGBX8888 in OVL on MT8195 Shawn Sung
2024-06-14 2:46 ` [PATCH v9 09/21] drm/mediatek: Fix XRGB setting error in OVL Shawn Sung
2024-06-14 6:06 ` CK Hu (胡俊光)
2024-06-14 2:46 ` [PATCH v9 10/21] drm/mediatek: Fix XRGB setting error in Mixer Shawn Sung
2024-06-14 3:58 ` CK Hu (胡俊光)
2024-06-14 2:46 ` [PATCH v9 11/21] drm/mediatek: Add new color format MACROs in OVL Shawn Sung
2024-06-14 4:04 ` CK Hu (胡俊光)
2024-06-14 2:46 ` [PATCH v9 12/21] drm/mediatek: Support DRM plane alpha " Shawn Sung
2024-06-14 5:06 ` CK Hu (胡俊光)
2024-06-14 2:46 ` [PATCH v9 13/21] drm/mediatek: Support DRM plane alpha in Mixer Shawn Sung
2024-06-14 5:08 ` CK Hu (胡俊光)
2024-06-14 2:46 ` [PATCH v9 14/21] drm/mediatek: Support "None" blending in OVL Shawn Sung
2024-06-14 5:11 ` CK Hu (胡俊光)
2024-06-14 2:46 ` [PATCH v9 15/21] drm/mediatek: Support "None" blending in Mixer Shawn Sung
2024-06-14 5:13 ` CK Hu (胡俊光)
2024-06-14 2:46 ` [PATCH v9 16/21] drm/mediatek: Support "Pre-multiplied" blending in OVL Shawn Sung
2024-06-14 5:42 ` CK Hu (胡俊光)
2024-06-18 17:00 ` Jason-JH Lin (林睿祥)
2024-06-19 3:17 ` CK Hu (胡俊光)
2024-06-19 16:00 ` Jason-JH Lin (林睿祥)
2024-06-14 5:49 ` CK Hu (胡俊光)
2024-06-14 2:46 ` [PATCH v9 17/21] drm/mediatek: Support "Pre-multiplied" blending in Mixer Shawn Sung
2024-06-14 5:55 ` CK Hu (胡俊光)
2024-06-14 2:46 ` Shawn Sung [this message]
2024-06-14 2:46 ` [PATCH v9 19/21] drm/mediatek: Support CRC in display driver Shawn Sung
2024-06-14 2:46 ` [PATCH v9 20/21] drm/mediatek: Support CRC in OVL Shawn Sung
2024-06-14 2:46 ` [PATCH v9 21/21] drm/mediatek: Support CRC in OVL adaptor Shawn Sung
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240614024620.19011-19-shawn.sung@mediatek.com \
--to=shawn.sung@mediatek.com \
--cc=airlied@gmail.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=bibby.hsieh@mediatek.com \
--cc=chunkuang.hu@kernel.org \
--cc=ck.hu@mediatek.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=jason-ch.chen@mediatek.corp-partner.google.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=matthias.bgg@gmail.com \
--cc=nancy.lin@mediatek.com \
--cc=p.zabel@pengutronix.de \
--cc=sean@poorly.run \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox