From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Yulia Garbovich <yulia.garbovich@arm.com>
Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
maarten.lankhorst@linux.intel.com, mripard@kernel.org,
tzimmermann@suse.de, airlied@gmail.com, daniel@ffwll.ch,
liviu.dudau@arm.com, rosen.zhelev@arm.com, nd@arm.com
Subject: Re: [PATCH] drm: drm_fourcc: adding 10/12/14 bit formats
Date: Fri, 30 Aug 2024 14:35:21 +0300 [thread overview]
Message-ID: <ZtGuedfBo4RZDCL2@intel.com> (raw)
In-Reply-To: <20240829102038.2274242-1-yulia.garbovich@arm.com>
On Thu, Aug 29, 2024 at 01:20:38PM +0300, Yulia Garbovich wrote:
> Adding the following formats
> - DRM_FORMAT_RX106
> - DRM_FORMAT_GXRX106106
> - DRM_FORMAT_RX124
> - DRM_FORMAT_GXRX124124
> - DRM_FORMAT_AXBXGXRX124124124124
> - DRM_FORMAT_RX142
> - DRM_FORMAT_GXRX142142
> - DRM_FORMAT_AXBXGXRX142142142142
>
> They are useful for communicating Bayer data between ISPs and GPU by emulating GL_R16UI and GL_RG16UI formats
> Signed-off-by: Yulia Garbovich <yulia.garbovich@arm.com>
> ---
> drivers/gpu/drm/drm_fourcc.c | 8 +++++
> include/uapi/drm/drm_fourcc.h | 61 +++++++++++++++++++++++++++++++++--
> 2 files changed, 67 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c
> index 193cf8ed7912..cd5f467edfeb 100644
> --- a/drivers/gpu/drm/drm_fourcc.c
> +++ b/drivers/gpu/drm/drm_fourcc.c
> @@ -170,6 +170,9 @@ const struct drm_format_info *__drm_format_info(u32 format)
> { .format = DRM_FORMAT_R8, .depth = 8, .num_planes = 1, .cpp = { 1, 0, 0 }, .hsub = 1, .vsub = 1 },
> { .format = DRM_FORMAT_R10, .depth = 10, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> { .format = DRM_FORMAT_R12, .depth = 12, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> + { .format = DRM_FORMAT_RX106, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> + { .format = DRM_FORMAT_RX124, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> + { .format = DRM_FORMAT_RX142, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> { .format = DRM_FORMAT_RGB332, .depth = 8, .num_planes = 1, .cpp = { 1, 0, 0 }, .hsub = 1, .vsub = 1 },
> { .format = DRM_FORMAT_BGR233, .depth = 8, .num_planes = 1, .cpp = { 1, 0, 0 }, .hsub = 1, .vsub = 1 },
> { .format = DRM_FORMAT_XRGB4444, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> @@ -200,6 +203,9 @@ const struct drm_format_info *__drm_format_info(u32 format)
> { .format = DRM_FORMAT_XBGR8888, .depth = 24, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> { .format = DRM_FORMAT_RGBX8888, .depth = 24, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> { .format = DRM_FORMAT_BGRX8888, .depth = 24, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> + { .format = DRM_FORMAT_GXRX106106, .depth = 0, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> + { .format = DRM_FORMAT_GXRX124124, .depth = 0, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> + { .format = DRM_FORMAT_GXRX142142, .depth = 0, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> { .format = DRM_FORMAT_RGB565_A8, .depth = 24, .num_planes = 2, .cpp = { 2, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true },
> { .format = DRM_FORMAT_BGR565_A8, .depth = 24, .num_planes = 2, .cpp = { 2, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true },
> { .format = DRM_FORMAT_XRGB2101010, .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> @@ -219,6 +225,8 @@ const struct drm_format_info *__drm_format_info(u32 format)
> { .format = DRM_FORMAT_ARGB16161616F, .depth = 0, .num_planes = 1, .cpp = { 8, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true },
> { .format = DRM_FORMAT_ABGR16161616F, .depth = 0, .num_planes = 1, .cpp = { 8, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true },
> { .format = DRM_FORMAT_AXBXGXRX106106106106, .depth = 0, .num_planes = 1, .cpp = { 8, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true },
> + { .format = DRM_FORMAT_AXBXGXRX124124124124, .depth = 0, .num_planes = 1, .cpp = { 8, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true },
> + { .format = DRM_FORMAT_AXBXGXRX142142142142, .depth = 0, .num_planes = 1, .cpp = { 8, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true },
> { .format = DRM_FORMAT_XRGB16161616, .depth = 0, .num_planes = 1, .cpp = { 8, 0, 0 }, .hsub = 1, .vsub = 1 },
> { .format = DRM_FORMAT_XBGR16161616, .depth = 0, .num_planes = 1, .cpp = { 8, 0, 0 }, .hsub = 1, .vsub = 1 },
> { .format = DRM_FORMAT_ARGB16161616, .depth = 0, .num_planes = 1, .cpp = { 8, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true },
> diff --git a/include/uapi/drm/drm_fourcc.h b/include/uapi/drm/drm_fourcc.h
> index 84d502e42961..30d0f4b6247a 100644
> --- a/include/uapi/drm/drm_fourcc.h
> +++ b/include/uapi/drm/drm_fourcc.h
> @@ -146,6 +146,24 @@ extern "C" {
> /* 12 bpp Red (direct relationship between channel value and brightness) */
> #define DRM_FORMAT_R12 fourcc_code('R', '1', '2', ' ') /* [15:0] x:R 4:12 little endian */
>
> +/*
> + * 1-component 16 bpp format that has a 10-bit R component in the top 10 bits of the word
> + * in bytes 0..1 with the bottom 6 bits of the word unused
> + */
> +#define DRM_FORMAT_RX106 fourcc_code('R', '0', '1', '0') /* [15:0] R:x 10:6 */
All drm formats are supposed to have explicit endianness.
> +
> +/*
> + * 1-component 16 bpp format that has a 12-bit R component in the top 12 bits of the word
> + * in bytes 0..1 with the bottom 4 bits of the word unused
> + */
> +#define DRM_FORMAT_RX124 fourcc_code('R', '0', '1', '2') /* [15:0] R:x 12:4 */
> +
> +/*
> + * 1-component 16 bpp format that has a 14-bit R component in the top 14 bits of the word
> + * in bytes 0..1 with the bottom 2 bits of the word unused
> + */
> +#define DRM_FORMAT_RX142 fourcc_code('R', '0', '1', '4') /* [15:0] R:x 14:2 */
> +
> /* 16 bpp Red (direct relationship between channel value and brightness) */
> #define DRM_FORMAT_R16 fourcc_code('R', '1', '6', ' ') /* [15:0] R little endian */
>
> @@ -157,6 +175,27 @@ extern "C" {
> #define DRM_FORMAT_RG1616 fourcc_code('R', 'G', '3', '2') /* [31:0] R:G 16:16 little endian */
> #define DRM_FORMAT_GR1616 fourcc_code('G', 'R', '3', '2') /* [31:0] G:R 16:16 little endian */
>
> + /*
> + * 2-component 32bpp format that has a 10-bit R component in the top 10 bits of the word
> + * in bytes 0..1, and a 10-bit G component in the top 10 bits of the word in bytes 2..3,
> + * with the bottom 6 bits of each word unused.
> + */
> +#define DRM_FORMAT_GXRX106106 fourcc_code('G', 'R', '1', '0') /* [31:0] G:x:R:x 10:6:10:6 */
> +
> +/*
> + * 2-component 32bpp format that has a 12-bit R component in the top 12 bits of the word
> + * in bytes 0..1, and a 12-bit G component in the top 12 bits of the word in bytes 2..3,
> + * with the bottom 4 bits of each word unused.
> + */
> +#define DRM_FORMAT_GXRX124124 fourcc_code('G', 'R', '1', '2') /* [31:0] G:x:R:x 12:4:12:4 */
> +
> +/*
> + * 2-component 32bpp format that has a 14-bit R component in the top 14 bits of the word
> + * in bytes 0..1, and a 14-bit G component in the top 14 bits of the word in bytes 2..3,
> + * with the bottom 2 bits of each word unused.
> + */
> +#define DRM_FORMAT_GXRX142142 fourcc_code('G', 'R', '1', '4') /* [31:0] G:x:R:x 14:2:14:2 */
> +
> /* 8 bpp RGB */
> #define DRM_FORMAT_RGB332 fourcc_code('R', 'G', 'B', '8') /* [7:0] R:G:B 3:3:2 */
> #define DRM_FORMAT_BGR233 fourcc_code('B', 'G', 'R', '8') /* [7:0] B:G:R 2:3:3 */
> @@ -229,11 +268,29 @@ extern "C" {
> #define DRM_FORMAT_ABGR16161616F fourcc_code('A', 'B', '4', 'H') /* [63:0] A:B:G:R 16:16:16:16 little endian */
>
> /*
> - * RGBA format with 10-bit components packed in 64-bit per pixel, with 6 bits
> - * of unused padding per component:
> + * 4-component, 64bpp format that has a 10-bit R component in the top 10 bits of the word in bytes 0..1,
> + * a 10-bit G component in the top 10 bits of the word in bytes 2..3, a 10-bit B component in the top 10 bits of the word
> + * in bytes 4..5, and a 10-bit A component in the top 10 bits of the word in bytes 6..7,
> + * with the bottom 6 bits of each word unused.
> */
> #define DRM_FORMAT_AXBXGXRX106106106106 fourcc_code('A', 'B', '1', '0') /* [63:0] A:x:B:x:G:x:R:x 10:6:10:6:10:6:10:6 little endian */
>
> +/*
> + * 4-component, 64bpp format that has a 12-bit R component in the top 12bits of the word in bytes 0..1,
> + * a 12-bit G component in the top 12 bits of the word in bytes 2..3, a 12-bit B component in the top 12 bits of the word
> + * in bytes 4..5, and a 12-bit A component in the top 12 bits of the word in bytes 6..7,
> + * with the bottom 4 bits of each word unused.
> + */
> +#define DRM_FORMAT_AXBXGXRX124124124124 fourcc_code('A', 'B', '1', '2') /* [63:0] A:x:B:x:G:x:R:x 12:4:12:4:12:4:12:4 */
> +
> +/*
> + * 4-component, 64bpp format that has a 14-bit R component in the top 14 bits of the word in bytes 0..1,
> + * a 14-bit G component in the top 14 bits of the word in bytes 2..3, a 14-bit B component in the top 14 bits of the word
> + * in bytes 4..5, and a 14-bit A component in the top 14 bits of the word in bytes 6..7,
> + * with the bottom 2 bits of each word unused.
> + */
> +#define DRM_FORMAT_AXBXGXRX142142142142 fourcc_code('A', 'B', '1', '4') /* [63:0] A:x:B:x:G:x:R:x 14:2:14:2:14:2:14:2 */
> +
> /* packed YCbCr */
> #define DRM_FORMAT_YUYV fourcc_code('Y', 'U', 'Y', 'V') /* [31:0] Cr0:Y1:Cb0:Y0 8:8:8:8 little endian */
> #define DRM_FORMAT_YVYU fourcc_code('Y', 'V', 'Y', 'U') /* [31:0] Cb0:Y1:Cr0:Y0 8:8:8:8 little endian */
> --
> 2.34.1
--
Ville Syrjälä
Intel
prev parent reply other threads:[~2024-08-30 11:35 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-29 10:20 [PATCH] drm: drm_fourcc: adding 10/12/14 bit formats Yulia Garbovich
2024-08-30 11:35 ` Ville Syrjälä [this message]
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=ZtGuedfBo4RZDCL2@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=airlied@gmail.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=liviu.dudau@arm.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=nd@arm.com \
--cc=rosen.zhelev@arm.com \
--cc=tzimmermann@suse.de \
--cc=yulia.garbovich@arm.com \
/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.