From: Daniel Vetter <daniel@ffwll.ch>
To: Philipp Zabel <p.zabel@pengutronix.de>
Cc: kernel@pengutronix.de, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 6/7] drm: add RGB formats with separate alpha plane
Date: Tue, 19 May 2015 18:52:25 +0200 [thread overview]
Message-ID: <20150519165225.GQ15256@phenom.ffwll.local> (raw)
In-Reply-To: <1432051561-24744-7-git-send-email-p.zabel@pengutronix.de>
On Tue, May 19, 2015 at 06:06:00PM +0200, Philipp Zabel wrote:
> Some hardware can read the alpha components separately and then
> conditionally fetch color components only for non-zero alpha values.
> This patch adds fourcc definitions for two-plane RGB formats with an
> 8-bit alpha channel on a second plane.
>
> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
> ---
> drivers/gpu/drm/drm_crtc.c | 35 +++++++++++++++++++++++++++++++++++
> include/uapi/drm/drm_fourcc.h | 14 ++++++++++++++
> 2 files changed, 49 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c
> index 3007b44..2ac0d7c 100644
> --- a/drivers/gpu/drm/drm_crtc.c
> +++ b/drivers/gpu/drm/drm_crtc.c
> @@ -3245,6 +3245,14 @@ static int format_check(const struct drm_mode_fb_cmd2 *r)
> case DRM_FORMAT_YVU422:
> case DRM_FORMAT_YUV444:
> case DRM_FORMAT_YVU444:
> + 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 0;
> default:
> DRM_DEBUG_KMS("invalid pixel format %s\n",
> @@ -5198,11 +5206,15 @@ void drm_fb_get_bpp_depth(uint32_t format, unsigned int *depth,
> break;
> case DRM_FORMAT_RGB565:
> case DRM_FORMAT_BGR565:
> + case DRM_FORMAT_RGB565_A8:
> + case DRM_FORMAT_BGR565_A8:
> *depth = 16;
> *bpp = 16;
> break;
> case DRM_FORMAT_RGB888:
> case DRM_FORMAT_BGR888:
> + case DRM_FORMAT_RGB888_A8:
> + case DRM_FORMAT_BGR888_A8:
> *depth = 24;
> *bpp = 24;
> break;
> @@ -5210,6 +5222,10 @@ void drm_fb_get_bpp_depth(uint32_t format, unsigned int *depth,
> case DRM_FORMAT_XBGR8888:
> case DRM_FORMAT_RGBX8888:
> case DRM_FORMAT_BGRX8888:
> + case DRM_FORMAT_XRGB8888_A8:
> + case DRM_FORMAT_XBGR8888_A8:
> + case DRM_FORMAT_RGBX8888_A8:
> + case DRM_FORMAT_BGRX8888_A8:
> *depth = 24;
> *bpp = 32;
> break;
Please drop the above two hunks, these functions are only for backwards
compat with drivers from the addfb1 days. Modern drivers should only use
the format tags directly. Extending the plane_cpp function like you do
below is enough.
Maybe we should add a WARN_ON(num_planes(format) != 0) to the top of this
and a comment that this is for legacy stuff only.
lgtm otherwise.
-Daniel
> @@ -5268,6 +5284,14 @@ int drm_format_num_planes(uint32_t format)
> case DRM_FORMAT_NV61:
> case DRM_FORMAT_NV24:
> case DRM_FORMAT_NV42:
> + case DRM_FORMAT_RGB565_A8:
> + case DRM_FORMAT_BGR565_A8:
> + case DRM_FORMAT_RGB888_A8:
> + case DRM_FORMAT_BGR888_A8:
> + case DRM_FORMAT_XRGB8888_A8:
> + case DRM_FORMAT_XBGR8888_A8:
> + case DRM_FORMAT_RGBX8888_A8:
> + case DRM_FORMAT_BGRX8888_A8:
> return 2;
> default:
> return 1;
> @@ -5315,6 +5339,17 @@ int drm_format_plane_cpp(uint32_t format, int plane)
> case DRM_FORMAT_YUV444:
> case DRM_FORMAT_YVU444:
> return 1;
> + case DRM_FORMAT_RGB565_A8:
> + case DRM_FORMAT_BGR565_A8:
> + return plane ? 1 : 2;
> + case DRM_FORMAT_RGB888_A8:
> + case DRM_FORMAT_BGR888_A8:
> + return plane ? 1 : 3;
> + case DRM_FORMAT_XRGB8888_A8:
> + case DRM_FORMAT_XBGR8888_A8:
> + case DRM_FORMAT_RGBX8888_A8:
> + case DRM_FORMAT_BGRX8888_A8:
> + return plane ? 1 : 4;
> default:
> drm_fb_get_bpp_depth(format, &depth, &bpp);
> return bpp >> 3;
> diff --git a/include/uapi/drm/drm_fourcc.h b/include/uapi/drm/drm_fourcc.h
> index 0773582..48d6ec8 100644
> --- a/include/uapi/drm/drm_fourcc.h
> +++ b/include/uapi/drm/drm_fourcc.h
> @@ -96,6 +96,20 @@
> #define DRM_FORMAT_AYUV fourcc_code('A', 'Y', 'U', 'V') /* [31:0] A:Y:Cb:Cr 8:8:8:8 little endian */
>
> /*
> + * 2 plane RGB + A
> + * index 0 = RGB plane
> + * index 1 = A plane
> + */
> +#define DRM_FORMAT_XRGB8888_A8 fourcc_code('X', 'R', 'A', '8')
> +#define DRM_FORMAT_XBGR8888_A8 fourcc_code('X', 'B', 'A', '8')
> +#define DRM_FORMAT_RGBX8888_A8 fourcc_code('R', 'X', 'A', '8')
> +#define DRM_FORMAT_BGRX8888_A8 fourcc_code('B', 'X', 'A', '8')
> +#define DRM_FORMAT_RGB888_A8 fourcc_code('R', '8', 'A', '8')
> +#define DRM_FORMAT_BGR888_A8 fourcc_code('B', '8', 'A', '8')
> +#define DRM_FORMAT_RGB565_A8 fourcc_code('R', '5', 'A', '8')
> +#define DRM_FORMAT_BGR565_A8 fourcc_code('B', '5', 'A', '8')
> +
> +/*
> * 2 plane YCbCr
> * index 0 = Y plane, [7:0] Y
> * index 1 = Cr:Cb plane, [15:0] Cr:Cb little endian
> --
> 2.1.4
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2015-05-19 16:50 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-19 16:05 [PATCH 0/7] imx-drm: additional alpha transparency formats Philipp Zabel
2015-05-19 16:05 ` [PATCH 1/7] gpu: ipu-v3: Add support for 15-bit RGB with 1-bit alpha formats Philipp Zabel
2015-05-19 16:05 ` [PATCH 2/7] drm/imx: " Philipp Zabel
2015-05-19 16:05 ` [PATCH 3/7] gpu: ipu-v3: add support for RGBX8888 and RGBA8888 pixel formats Philipp Zabel
2015-05-19 16:05 ` [PATCH 4/7] gpu: ipu-v3: add support for separate alpha channels Philipp Zabel
2015-05-19 16:05 ` [PATCH 5/7] drm/imx: ipuv3-plane: enable support for RGBX8888 and RGBA8888 pixel formats Philipp Zabel
2015-05-19 16:06 ` [PATCH 6/7] drm: add RGB formats with separate alpha plane Philipp Zabel
2015-05-19 16:52 ` Daniel Vetter [this message]
2015-05-20 10:50 ` Philipp Zabel
2015-05-20 12:58 ` Daniel Vetter
2015-05-20 14:07 ` Ville Syrjälä
2015-05-20 14:54 ` Philipp Zabel
2015-05-20 15:09 ` Daniel Vetter
2015-05-19 16:06 ` [PATCH 7/7] drm/imx: ipuv3-plane: add support for separate alpha planes Philipp Zabel
2015-05-19 16:58 ` Daniel Vetter
2015-05-20 10:51 ` Philipp Zabel
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=20150519165225.GQ15256@phenom.ffwll.local \
--to=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=kernel@pengutronix.de \
--cc=p.zabel@pengutronix.de \
/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