[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20180124103053.GK11908@e110455-lin.cambridge.arm.com>
Date: Wed, 24 Jan 2018 10:30:53 +0000
From: Liviu Dudau <liviu.dudau@....com>
To: Ayan Kumar Halder <ayan.halder@....com>
Cc: brian.starkey@....com, malidp@...s.arm.com, airlied@...ux.ie,
dri-devel@...ts.freedesktop.org, linux-kernel@...r.kernel.org,
nd@....com
Subject: Re: [PATCH v2] drm/arm/malidp: Disable pixel alpha blending for
colors that do not have alpha
On Tue, Jan 23, 2018 at 04:49:29PM +0000, Ayan Kumar Halder wrote:
> From: Ayan Halder <ayan.halder@....com>
>
> Mali dp needs to disable pixel alpha blending (use layer alpha blending) to
> display color formats that do not contain alpha bits per pixel
>
> This patch depends on:
>
> "[PATCH v2 01/19] drm/fourcc: Add a alpha field to drm_format_info"
>
> Signed-off-by: Ayan Kumar Halder <ayan.halder@....com>
Hi Ayan,
Thanks for the updated v2. I'll drop the v1 from my tree and use this
one once Maxime's patches are in drm-misc.
For this patch:
Acked-by: Liviu Dudau <liviu.dudau@....com>
Best regards,
Liviu
> ---
> Change in v2:
> - Use struct drm_format_info->has_alpha (boolean) to determine if a color
> format has alpha channel
>
> drivers/gpu/drm/arm/malidp_planes.c | 27 ++++++++++++++++++++++-----
> 1 file changed, 22 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/arm/malidp_planes.c b/drivers/gpu/drm/arm/malidp_planes.c
> index e741979..3b445d9 100644
> --- a/drivers/gpu/drm/arm/malidp_planes.c
> +++ b/drivers/gpu/drm/arm/malidp_planes.c
> @@ -35,6 +35,9 @@
> #define LAYER_COMP_MASK (0x3 << 12)
> #define LAYER_COMP_PIXEL (0x3 << 12)
> #define LAYER_COMP_PLANE (0x2 << 12)
> +#define LAYER_ALPHA_OFFSET (16)
> +#define LAYER_ALPHA_MASK (0xff)
> +#define LAYER_ALPHA(x) (((x) & LAYER_ALPHA_MASK) << LAYER_ALPHA_OFFSET)
> #define MALIDP_LAYER_COMPOSE 0x008
> #define MALIDP_LAYER_SIZE 0x00c
> #define LAYER_H_VAL(x) (((x) & 0x1fff) << 0)
> @@ -268,6 +271,7 @@ static void malidp_de_plane_update(struct drm_plane *plane,
> struct malidp_plane_state *ms = to_malidp_plane_state(plane->state);
> u32 src_w, src_h, dest_w, dest_h, val;
> int i;
> + bool format_has_alpha = plane->state->fb->format->has_alpha;
>
> mp = to_malidp_plane(plane);
>
> @@ -319,12 +323,25 @@ static void malidp_de_plane_update(struct drm_plane *plane,
> if (plane->state->rotation & DRM_MODE_REFLECT_Y)
> val |= LAYER_V_FLIP;
>
> - /*
> - * always enable pixel alpha blending until we have a way to change
> - * blend modes
> - */
> val &= ~LAYER_COMP_MASK;
> - val |= LAYER_COMP_PIXEL;
> + if (format_has_alpha) {
> +
> + /*
> + * always enable pixel alpha blending until we have a way
> + * to change blend modes
> + */
> + val |= LAYER_COMP_PIXEL;
> + } else {
> +
> + /*
> + * do not enable pixel alpha blending as the color channel
> + * does not have any alpha information
> + */
> + val |= LAYER_COMP_PLANE;
> +
> + /* Set layer alpha coefficient to 0xff ie fully opaque */
> + val |= LAYER_ALPHA(0xff);
> + }
>
> val &= ~LAYER_FLOWCFG(LAYER_FLOWCFG_MASK);
> if (plane->state->crtc) {
> --
> 2.7.4
>
--
====================
| I would like to |
| fix the world, |
| but they're not |
| giving me the |
\ source code! /
---------------
¯\_(ツ)_/¯
Powered by blists - more mailing lists