Message ID | 20241204-xilinx-formats-v1-4-0bf2c5147db1@ideasonboard.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | drm: Add new pixel formats for Xilinx Zynqmp | expand |
Hi, On 04/12/2024 11:31, Tomi Valkeinen wrote: > Add Y10_LE32, a 10 bit greyscale format, with 3 pixels packed into > 32-bit container. > > Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> > --- > drivers/gpu/drm/drm_fourcc.c | 4 ++++ > include/uapi/drm/drm_fourcc.h | 1 + > 2 files changed, 5 insertions(+) > > diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c > index d721d9fdbe98..6048e0a191dc 100644 > --- a/drivers/gpu/drm/drm_fourcc.c > +++ b/drivers/gpu/drm/drm_fourcc.c > @@ -327,6 +327,10 @@ const struct drm_format_info *__drm_format_info(u32 format) > .num_planes = 2, .char_per_block = { 4, 8, 0 }, > .block_w = { 3, 3, 0 }, .block_h = { 1, 1, 0 }, .hsub = 2, > .vsub = 1, .is_yuv = true }, > + { .format = DRM_FORMAT_Y10_LE32, .depth = 0, > + .num_planes = 1, .char_per_block = { 4, 0, 0 }, > + .block_w = { 3, 0, 0 }, .block_h = { 1, 0, 0 }, .hsub = 1, > + .vsub = 1, .is_yuv = true }, > }; > > unsigned int i; > diff --git a/include/uapi/drm/drm_fourcc.h b/include/uapi/drm/drm_fourcc.h > index f79ee3b93f09..82f255eb3d1b 100644 > --- a/include/uapi/drm/drm_fourcc.h > +++ b/include/uapi/drm/drm_fourcc.h > @@ -408,6 +408,7 @@ extern "C" { > /* Greyscale formats */ > > #define DRM_FORMAT_Y8 fourcc_code('G', 'R', 'E', 'Y') /* 8-bit Y-only */ > +#define DRM_FORMAT_Y10_LE32 fourcc_code('Y', '1', '0', 'P') /* [31:0] x:Y2:Y1:Y0 2:10:10:10 little endian */ I realized that V4L2 already has "Y10P" fourcc: V4L2_PIX_FMT_Y10P, which is MIPI CSI style packed 10-bit format. While it's not strictly speaking a problem, maybe it's best to try to avoid overlapping fourccs. So... "Y04P"? I'm being a bit inventive here =). 0 would be for "10". 4 as in 4 bytes. P for packed. Tomi
diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c index d721d9fdbe98..6048e0a191dc 100644 --- a/drivers/gpu/drm/drm_fourcc.c +++ b/drivers/gpu/drm/drm_fourcc.c @@ -327,6 +327,10 @@ const struct drm_format_info *__drm_format_info(u32 format) .num_planes = 2, .char_per_block = { 4, 8, 0 }, .block_w = { 3, 3, 0 }, .block_h = { 1, 1, 0 }, .hsub = 2, .vsub = 1, .is_yuv = true }, + { .format = DRM_FORMAT_Y10_LE32, .depth = 0, + .num_planes = 1, .char_per_block = { 4, 0, 0 }, + .block_w = { 3, 0, 0 }, .block_h = { 1, 0, 0 }, .hsub = 1, + .vsub = 1, .is_yuv = true }, }; unsigned int i; diff --git a/include/uapi/drm/drm_fourcc.h b/include/uapi/drm/drm_fourcc.h index f79ee3b93f09..82f255eb3d1b 100644 --- a/include/uapi/drm/drm_fourcc.h +++ b/include/uapi/drm/drm_fourcc.h @@ -408,6 +408,7 @@ extern "C" { /* Greyscale formats */ #define DRM_FORMAT_Y8 fourcc_code('G', 'R', 'E', 'Y') /* 8-bit Y-only */ +#define DRM_FORMAT_Y10_LE32 fourcc_code('Y', '1', '0', 'P') /* [31:0] x:Y2:Y1:Y0 2:10:10:10 little endian */ /* * Format Modifiers:
Add Y10_LE32, a 10 bit greyscale format, with 3 pixels packed into 32-bit container. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> --- drivers/gpu/drm/drm_fourcc.c | 4 ++++ include/uapi/drm/drm_fourcc.h | 1 + 2 files changed, 5 insertions(+)