All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ayan Halder <ayan.halder@arm.com>
To: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	Boris Brezillon <boris.brezillon@free-electrons.com>,
	Seung-Woo Kim <sw0312.kim@samsung.com>,
	linux-kernel@vger.kernel.org,
	Kyungmin Park <kyungmin.park@samsung.com>,
	Chen-Yu Tsai <wens@csie.org>,
	dri-devel@lists.freedesktop.org,
	Daniel Vetter <daniel.vetter@intel.com>,
	thomas@vitsch.nl, linux-arm-kernel@lists.infradead.org,
	Mark Yao <mark.yao@rock-chips.com>,
	nd@arm.com
Subject: Re: [PATCH 01/19] drm/fourcc: Add a function to tell if the format embeds alpha
Date: Tue, 16 Jan 2018 10:37:59 +0000	[thread overview]
Message-ID: <20180116103759.GB28269@arm.com> (raw)
In-Reply-To: <20180109132833.petfgnh3fvbbvosv@flea>

On Tue, Jan 09, 2018 at 02:28:33PM +0100, Maxime Ripard wrote:
> Hi Laurent,
> 
> On Tue, Jan 09, 2018 at 02:29:58PM +0200, Laurent Pinchart wrote:
> > On Tuesday, 9 January 2018 12:56:20 EET Maxime Ripard wrote:
> > > There's a bunch of drivers that duplicate the same function to know if a
> > > particular format embeds an alpha component or not.
> > > 
> > > Let's create a helper to avoid duplicating that logic.
> > > 
> > > Cc: Boris Brezillon <boris.brezillon@free-electrons.com>
> > > Cc: Eric Anholt <eric@anholt.net>
> > > Cc: Inki Dae <inki.dae@samsung.com>
> > > Cc: Joonyoung Shim <jy0922.shim@samsung.com>
> > > Cc: Kyungmin Park <kyungmin.park@samsung.com>
> > > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > Cc: Mark Yao <mark.yao@rock-chips.com>
> > > Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
> > > Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> > > ---
> > >  drivers/gpu/drm/drm_fourcc.c | 43 +++++++++++++++++++++++++++++++++++++-
> > >  include/drm/drm_fourcc.h     |  1 +-
> > >  2 files changed, 44 insertions(+)
> > > 
> > > diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c
> > > index 9c0152df45ad..6e6227d6a46b 100644
> > > --- a/drivers/gpu/drm/drm_fourcc.c
> > > +++ b/drivers/gpu/drm/drm_fourcc.c
> > > @@ -348,3 +348,46 @@ int drm_format_plane_height(int height, uint32_t
> > > format, int plane) return height / info->vsub;
> > >  }
> > >  EXPORT_SYMBOL(drm_format_plane_height);
> > > +
> > > +/**
> > > + * drm_format_has_alpha - get whether the format embeds an alpha component
> > > + * @format: pixel format (DRM_FORMAT_*)
> > > + *
> > > + * Returns:
> > > + * true if the format embeds an alpha component, false otherwise.
> > > + */
> > > +bool drm_format_has_alpha(uint32_t format)
> > > +{
> > > +	switch (format) {
> > > +	case DRM_FORMAT_ARGB4444:
> > > +	case DRM_FORMAT_ABGR4444:
> > > +	case DRM_FORMAT_RGBA4444:
> > > +	case DRM_FORMAT_BGRA4444:
> > > +	case DRM_FORMAT_ARGB1555:
> > > +	case DRM_FORMAT_ABGR1555:
> > > +	case DRM_FORMAT_RGBA5551:
> > > +	case DRM_FORMAT_BGRA5551:
> > > +	case DRM_FORMAT_ARGB8888:
> > > +	case DRM_FORMAT_ABGR8888:
> > > +	case DRM_FORMAT_RGBA8888:
> > > +	case DRM_FORMAT_BGRA8888:
> > > +	case DRM_FORMAT_ARGB2101010:
> > > +	case DRM_FORMAT_ABGR2101010:
> > > +	case DRM_FORMAT_RGBA1010102:
> > > +	case DRM_FORMAT_BGRA1010102:
> > > +	case DRM_FORMAT_AYUV:
> > > +	case DRM_FORMAT_XRGB8888_A8:
> > > +	case DRM_FORMAT_XBGR8888_A8:
> > > +	case DRM_FORMAT_RGBX8888_A8:
> > > +	case DRM_FORMAT_BGRX8888_A8:
> > > +	case DRM_FORMAT_RGB888_A8:
> > > +	case DRM_FORMAT_BGR888_A8:
> > > +	case DRM_FORMAT_RGB565_A8:
> > > +	case DRM_FORMAT_BGR565_A8:
> > > +		return true;
> > > +
> > > +	default:
> > > +		return false;
> > > +	}
> > > +}
> > > +EXPORT_SYMBOL(drm_format_has_alpha);
> > 
> > How about adding the information to struct drm_format_info instead ? 
> > drm_format_has_alpha() could then be implemented as
> > 
> > bool drm_format_has_alpha(uint32_t format)
> > {
> > 	const struct drm_format_info *info;
> > 
> > 	info = drm_format_info(format);
> > 	return info ? info->has_alpha : false;
> > }
> 
> I considered it, and wasn't too sure about if adding more fields to
> drm_format_info was ok. I can definitely do it that way.\
Are you going to send an updated patch with the change mentioned here.
Or should I update my patch (https://patchwork.kernel.org/patch/10161023/)
and change the type of '.alpha' to boolean to denote if the color
format has an alpha channel or not.
> 
> > although drivers should really use the drm_framebuffer::format field directly 
> > in most cases, so the helper might not be needed at all.
> 
> The drivers converted in my serie shouldn't be too hard to convert to
> use drm_format_info directly, so that can be removed as well.
> 
> Maxime
> 
> -- 
> Maxime Ripard, Free Electrons
> Embedded Linux and Kernel engineering
> http://free-electrons.com



> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: Ayan Halder <ayan.halder@arm.com>
To: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
	Boris Brezillon <boris.brezillon@free-electrons.com>,
	nd@arm.com, Seung-Woo Kim <sw0312.kim@samsung.com>,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	Kyungmin Park <kyungmin.park@samsung.com>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Mark Yao <mark.yao@rock-chips.com>,
	Daniel Vetter <daniel.vetter@intel.com>,
	Chen-Yu Tsai <wens@csie.org>,
	linux-arm-kernel@lists.infradead.org, thomas@vitsch.nl
Subject: Re: [PATCH 01/19] drm/fourcc: Add a function to tell if the format embeds alpha
Date: Tue, 16 Jan 2018 10:37:59 +0000	[thread overview]
Message-ID: <20180116103759.GB28269@arm.com> (raw)
In-Reply-To: <20180109132833.petfgnh3fvbbvosv@flea>

On Tue, Jan 09, 2018 at 02:28:33PM +0100, Maxime Ripard wrote:
> Hi Laurent,
> 
> On Tue, Jan 09, 2018 at 02:29:58PM +0200, Laurent Pinchart wrote:
> > On Tuesday, 9 January 2018 12:56:20 EET Maxime Ripard wrote:
> > > There's a bunch of drivers that duplicate the same function to know if a
> > > particular format embeds an alpha component or not.
> > > 
> > > Let's create a helper to avoid duplicating that logic.
> > > 
> > > Cc: Boris Brezillon <boris.brezillon@free-electrons.com>
> > > Cc: Eric Anholt <eric@anholt.net>
> > > Cc: Inki Dae <inki.dae@samsung.com>
> > > Cc: Joonyoung Shim <jy0922.shim@samsung.com>
> > > Cc: Kyungmin Park <kyungmin.park@samsung.com>
> > > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > > Cc: Mark Yao <mark.yao@rock-chips.com>
> > > Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
> > > Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> > > ---
> > >  drivers/gpu/drm/drm_fourcc.c | 43 +++++++++++++++++++++++++++++++++++++-
> > >  include/drm/drm_fourcc.h     |  1 +-
> > >  2 files changed, 44 insertions(+)
> > > 
> > > diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c
> > > index 9c0152df45ad..6e6227d6a46b 100644
> > > --- a/drivers/gpu/drm/drm_fourcc.c
> > > +++ b/drivers/gpu/drm/drm_fourcc.c
> > > @@ -348,3 +348,46 @@ int drm_format_plane_height(int height, uint32_t
> > > format, int plane) return height / info->vsub;
> > >  }
> > >  EXPORT_SYMBOL(drm_format_plane_height);
> > > +
> > > +/**
> > > + * drm_format_has_alpha - get whether the format embeds an alpha component
> > > + * @format: pixel format (DRM_FORMAT_*)
> > > + *
> > > + * Returns:
> > > + * true if the format embeds an alpha component, false otherwise.
> > > + */
> > > +bool drm_format_has_alpha(uint32_t format)
> > > +{
> > > +	switch (format) {
> > > +	case DRM_FORMAT_ARGB4444:
> > > +	case DRM_FORMAT_ABGR4444:
> > > +	case DRM_FORMAT_RGBA4444:
> > > +	case DRM_FORMAT_BGRA4444:
> > > +	case DRM_FORMAT_ARGB1555:
> > > +	case DRM_FORMAT_ABGR1555:
> > > +	case DRM_FORMAT_RGBA5551:
> > > +	case DRM_FORMAT_BGRA5551:
> > > +	case DRM_FORMAT_ARGB8888:
> > > +	case DRM_FORMAT_ABGR8888:
> > > +	case DRM_FORMAT_RGBA8888:
> > > +	case DRM_FORMAT_BGRA8888:
> > > +	case DRM_FORMAT_ARGB2101010:
> > > +	case DRM_FORMAT_ABGR2101010:
> > > +	case DRM_FORMAT_RGBA1010102:
> > > +	case DRM_FORMAT_BGRA1010102:
> > > +	case DRM_FORMAT_AYUV:
> > > +	case DRM_FORMAT_XRGB8888_A8:
> > > +	case DRM_FORMAT_XBGR8888_A8:
> > > +	case DRM_FORMAT_RGBX8888_A8:
> > > +	case DRM_FORMAT_BGRX8888_A8:
> > > +	case DRM_FORMAT_RGB888_A8:
> > > +	case DRM_FORMAT_BGR888_A8:
> > > +	case DRM_FORMAT_RGB565_A8:
> > > +	case DRM_FORMAT_BGR565_A8:
> > > +		return true;
> > > +
> > > +	default:
> > > +		return false;
> > > +	}
> > > +}
> > > +EXPORT_SYMBOL(drm_format_has_alpha);
> > 
> > How about adding the information to struct drm_format_info instead ? 
> > drm_format_has_alpha() could then be implemented as
> > 
> > bool drm_format_has_alpha(uint32_t format)
> > {
> > 	const struct drm_format_info *info;
> > 
> > 	info = drm_format_info(format);
> > 	return info ? info->has_alpha : false;
> > }
> 
> I considered it, and wasn't too sure about if adding more fields to
> drm_format_info was ok. I can definitely do it that way.\
Are you going to send an updated patch with the change mentioned here.
Or should I update my patch (https://patchwork.kernel.org/patch/10161023/)
and change the type of '.alpha' to boolean to denote if the color
format has an alpha channel or not.
> 
> > although drivers should really use the drm_framebuffer::format field directly 
> > in most cases, so the helper might not be needed at all.
> 
> The drivers converted in my serie shouldn't be too hard to convert to
> use drm_format_info directly, so that can be removed as well.
> 
> Maxime
> 
> -- 
> Maxime Ripard, Free Electrons
> Embedded Linux and Kernel engineering
> http://free-electrons.com



> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  parent reply	other threads:[~2018-01-16 10:38 UTC|newest]

Thread overview: 125+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-09 10:56 [PATCH 00/19] drm/sun4i: Support more planes, zpos and plane-wide alpha Maxime Ripard
2018-01-09 10:56 ` Maxime Ripard
2018-01-09 10:56 ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 01/19] drm/fourcc: Add a function to tell if the format embeds alpha Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 12:26   ` Boris Brezillon
2018-01-09 12:26     ` Boris Brezillon
2018-01-09 12:29   ` Laurent Pinchart
2018-01-09 12:29     ` Laurent Pinchart
2018-01-09 12:29     ` Laurent Pinchart
2018-01-09 13:28     ` Maxime Ripard
2018-01-09 13:28       ` Maxime Ripard
2018-01-09 13:28       ` Maxime Ripard
2018-01-15 15:47       ` Ayan Halder
2018-01-15 15:47         ` Ayan Halder
2018-01-15 15:47         ` Ayan Halder
2018-01-16 20:17         ` Maxime Ripard
2018-01-17 17:55           ` Ayan Halder
2018-01-16 10:37       ` Ayan Halder [this message]
2018-01-16 10:37         ` Ayan Halder
2018-01-09 10:56 ` [PATCH 02/19] drm/atmel-hlcdc: Use the alpha format helper Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 12:27   ` Boris Brezillon
2018-01-09 12:27     ` Boris Brezillon
2018-01-09 12:27     ` Boris Brezillon
2018-01-09 10:56 ` [PATCH 03/19] drm/exynos: " Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-12  1:20   ` Inki Dae
2018-01-12  1:20     ` Inki Dae
2018-01-09 10:56 ` [PATCH 04/19] drm/rockchip: " Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-16  0:42   ` Sandy Huang
2018-01-16  0:42     ` Sandy Huang
2018-01-16  0:42     ` Sandy Huang
2018-01-09 10:56 ` [PATCH 05/19] drm/vc4: " Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 12:34   ` Daniel Vetter
2018-01-09 12:34     ` Daniel Vetter
2018-01-09 12:34     ` Daniel Vetter
2018-01-09 17:34   ` Eric Anholt
2018-01-09 17:34     ` Eric Anholt
2018-01-09 17:34     ` Eric Anholt
2018-01-09 10:56 ` [PATCH 06/19] drm/blend: Add a generic alpha property Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 12:31   ` Boris Brezillon
2018-01-09 12:31     ` Boris Brezillon
2018-01-09 12:31     ` Boris Brezillon
2018-01-09 12:32   ` Daniel Vetter
2018-01-09 12:32     ` Daniel Vetter
2018-01-09 12:32     ` Daniel Vetter
2018-01-09 13:53     ` Maxime Ripard
2018-01-09 13:53       ` Maxime Ripard
2018-01-09 13:53       ` Maxime Ripard
2018-01-09 14:28       ` Daniel Vetter
2018-01-09 14:28         ` Daniel Vetter
2018-01-09 14:28         ` Daniel Vetter
2018-01-11 15:58         ` Maxime Ripard
2018-01-11 15:58           ` Maxime Ripard
2018-01-11 15:58           ` Maxime Ripard
2018-01-11 16:36           ` Daniel Vetter
2018-01-11 16:36             ` Daniel Vetter
2018-01-11 16:36             ` Daniel Vetter
2018-01-11 18:34             ` Laurent Pinchart
2018-01-11 18:34               ` Laurent Pinchart
2018-01-11 18:34               ` Laurent Pinchart
2018-01-17  9:20               ` Maxime Ripard
2018-01-17  9:20                 ` Maxime Ripard
2018-01-17  9:20                 ` Maxime Ripard
2018-01-17  9:30                 ` Daniel Vetter
2018-01-17  9:30                   ` Daniel Vetter
2018-01-17  9:30                   ` Daniel Vetter
2018-01-09 12:34   ` Laurent Pinchart
2018-01-09 12:34     ` Laurent Pinchart
2018-01-09 13:59     ` Maxime Ripard
2018-01-09 13:59       ` Maxime Ripard
2018-01-09 13:59       ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 07/19] drm/atmel-hclcdc: Convert to the new " Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 12:31   ` Boris Brezillon
2018-01-09 12:31     ` Boris Brezillon
2018-01-09 12:31     ` Boris Brezillon
2018-01-09 10:56 ` [PATCH 08/19] drm/rcar-du: " Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 12:37   ` Laurent Pinchart
2018-01-09 12:37     ` Laurent Pinchart
2018-01-09 12:37     ` Laurent Pinchart
2018-01-09 10:56 ` [PATCH 09/19] drm/sun4i: backend: Fix structure indentation Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 10/19] drm/sun4i: backend: Fix define typo Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 11/19] drm/sun4i: framebuffer: Add a custom atomic_check Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 12/19] drm/sun4i: backend: Move the coord function in the shared part Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 13/19] drm/sun4i: backend: Set a default zpos in our reset hook Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 14/19] drm/sun4i: backend: Add support for zpos Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 15/19] drm/sun4i: backend: Check for the number of alpha planes Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 16/19] drm/sun4i: backend: Assign the pipes automatically Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 17/19] drm/sun4i: backend: Make zpos configurable Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 18/19] drm/sun4i: Add support for plane alpha Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56 ` [PATCH 19/19] drm/sun4i: backend: Remove ARGB spoofing Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard
2018-01-09 10:56   ` Maxime Ripard

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=20180116103759.GB28269@arm.com \
    --to=ayan.halder@arm.com \
    --cc=boris.brezillon@free-electrons.com \
    --cc=daniel.vetter@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=kyungmin.park@samsung.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.yao@rock-chips.com \
    --cc=maxime.ripard@free-electrons.com \
    --cc=nd@arm.com \
    --cc=sw0312.kim@samsung.com \
    --cc=thomas.petazzoni@free-electrons.com \
    --cc=thomas@vitsch.nl \
    --cc=wens@csie.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.