2021-09-03 10:54:21

by Raphael Gallais-Pou

[permalink] [raw]
Subject: [PATCH] drm/stm: ltdc: add layer alpha support

Android Hardware Composer supports alpha values applied to layers.
Enabling non-opaque layers for the STM CRTC could help offload GPU
resources for screen composition.

Signed-off-by: Raphael Gallais-Pou <[email protected]>
---
drivers/gpu/drm/stm/ltdc.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/stm/ltdc.c b/drivers/gpu/drm/stm/ltdc.c
index 195de30eb90c..e0fef8bacfa8 100644
--- a/drivers/gpu/drm/stm/ltdc.c
+++ b/drivers/gpu/drm/stm/ltdc.c
@@ -845,7 +845,7 @@ static void ltdc_plane_atomic_update(struct drm_plane *plane,
LXCFBLR_CFBLL | LXCFBLR_CFBP, val);

/* Specifies the constant alpha value */
- val = CONSTA_MAX;
+ val = newstate->alpha >> 8;
reg_update_bits(ldev->regs, LTDC_L1CACR + lofs, LXCACR_CONSTA, val);

/* Specifies the blending factors */
@@ -997,6 +997,8 @@ static struct drm_plane *ltdc_plane_create(struct drm_device *ddev,

drm_plane_helper_add(plane, &ltdc_plane_helper_funcs);

+ drm_plane_create_alpha_property(plane);
+
DRM_DEBUG_DRIVER("plane:%d created\n", plane->base.id);

return plane;
--
2.17.1


2021-09-07 06:56:35

by Yannick Fertre

[permalink] [raw]
Subject: Re: [PATCH] drm/stm: ltdc: add layer alpha support

Hi Raphael,
thanks for the patch.

Acked-by: Yannick Fertre <[email protected]>
Reviewed-by: Yannick Fertre <[email protected]>

On 9/3/21 10:58 AM, Raphael GALLAIS-POU - foss wrote:
> Android Hardware Composer supports alpha values applied to layers.
> Enabling non-opaque layers for the STM CRTC could help offload GPU
> resources for screen composition.
>
> Signed-off-by: Raphael Gallais-Pou <[email protected]>
> ---
> drivers/gpu/drm/stm/ltdc.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/stm/ltdc.c b/drivers/gpu/drm/stm/ltdc.c
> index 195de30eb90c..e0fef8bacfa8 100644
> --- a/drivers/gpu/drm/stm/ltdc.c
> +++ b/drivers/gpu/drm/stm/ltdc.c
> @@ -845,7 +845,7 @@ static void ltdc_plane_atomic_update(struct drm_plane *plane,
> LXCFBLR_CFBLL | LXCFBLR_CFBP, val);
>
> /* Specifies the constant alpha value */
> - val = CONSTA_MAX;
> + val = newstate->alpha >> 8;
> reg_update_bits(ldev->regs, LTDC_L1CACR + lofs, LXCACR_CONSTA, val);
>
> /* Specifies the blending factors */
> @@ -997,6 +997,8 @@ static struct drm_plane *ltdc_plane_create(struct drm_device *ddev,
>
> drm_plane_helper_add(plane, &ltdc_plane_helper_funcs);
>
> + drm_plane_create_alpha_property(plane);
> +
> DRM_DEBUG_DRIVER("plane:%d created\n", plane->base.id);
>
> return plane;
>