Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753062AbeAQNUf (ORCPT + 1 other); Wed, 17 Jan 2018 08:20:35 -0500 Received: from foss.arm.com ([217.140.101.70]:40354 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750888AbeAQNUe (ORCPT ); Wed, 17 Jan 2018 08:20:34 -0500 Date: Fri, 12 Jan 2018 17:06:36 +0000 From: Liviu Dudau To: Ayan Halder Cc: brian.starkey@arm.com, malidp@foss.arm.com, airlied@linux.ie, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, nd@arm.com Subject: Re: [PATCH] drm/arm/malidp: Disable pixel alpha blending for colors that do not have alpha Message-ID: <20180112170636.GE11192@e110455-lin.cambridge.arm.com> References: <1515774787-19324-1-git-send-email-ayan.halder@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1515774787-19324-1-git-send-email-ayan.halder@arm.com> User-Agent: Mutt/1.9.2 (2017-12-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: Hi Ayan, On Fri, Jan 12, 2018 at 04:33:07PM +0000, Ayan Halder wrote: > Mali dp needs to disable pixel alpha blending (use layer alpha blending) to > display color formats that do not contain alpha bits per pixel In the future, please mention any dependencies on other patches that are not part of a series. In this case one needs your other patch, "drm: add drm_format_alpha_bits". Anyway, looks good to me. Signed-off-by: Liviu Dudau Many thanks, Liviu > > Signed-off-by: Ayan Kumar Halder > --- > 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..4d7d564 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; > + u8 alpha_bits = plane->state->fb->format->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 (alpha_bits > 0) { > + > + /* > + * 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! / --------------- ¯\_(ツ)_/¯