From c8f71ff5039264253c1cd5e795dc4fee0bbea996 Mon Sep 17 00:00:00 2001 From: Robert Mader Date: Mon, 23 Jun 2025 14:16:57 +0200 Subject: [PATCH] pixel-formats: Move FOURCC defines to weston-drm-fourcc.h MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Which is the correct place for them. Currently they cause warnings like: ``` /usr/include/libdrm/drm_fourcc.h:389:9: warning: ‘DRM_FORMAT_S010’ redefined ``` with libdrm >= 2.4.125. Fixes: 3dce9e8c2 (pixel-formats: Add Sx1x software decoder formats) Signed-off-by: Robert Mader --- libweston/pixel-formats.h | 29 -------------------- shared/weston-drm-fourcc.h | 54 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 29 deletions(-) diff --git a/libweston/pixel-formats.h b/libweston/pixel-formats.h index b94e26d30..8ea2c5eb4 100644 --- a/libweston/pixel-formats.h +++ b/libweston/pixel-formats.h @@ -28,35 +28,6 @@ #include #include -/* Included in libdrm 2.4.125 */ -#ifndef DRM_FORMAT_S010 -#define DRM_FORMAT_S010 fourcc_code ('S', '0', '1', '0') -#endif -#ifndef DRM_FORMAT_S210 -#define DRM_FORMAT_S210 fourcc_code ('S', '2', '1', '0') -#endif -#ifndef DRM_FORMAT_S410 -#define DRM_FORMAT_S410 fourcc_code ('S', '4', '1', '0') -#endif -#ifndef DRM_FORMAT_S012 -#define DRM_FORMAT_S012 fourcc_code ('S', '0', '1', '2') -#endif -#ifndef DRM_FORMAT_S212 -#define DRM_FORMAT_S212 fourcc_code ('S', '2', '1', '2') -#endif -#ifndef DRM_FORMAT_S412 -#define DRM_FORMAT_S412 fourcc_code ('S', '4', '1', '2') -#endif -#ifndef DRM_FORMAT_S016 -#define DRM_FORMAT_S016 fourcc_code ('S', '0', '1', '6') -#endif -#ifndef DRM_FORMAT_S216 -#define DRM_FORMAT_S216 fourcc_code ('S', '2', '1', '6') -#endif -#ifndef DRM_FORMAT_S416 -#define DRM_FORMAT_S416 fourcc_code ('S', '4', '1', '6') -#endif - /** * GL format information to create and manage texture and renderbuffer objects. */ diff --git a/shared/weston-drm-fourcc.h b/shared/weston-drm-fourcc.h index 81d6ef5e4..286886f6d 100644 --- a/shared/weston-drm-fourcc.h +++ b/shared/weston-drm-fourcc.h @@ -67,4 +67,58 @@ #define DRM_FORMAT_P030 fourcc_code('P', '0', '3', '0') /* 2x2 subsampled Cr:Cb plane 10 bits per channel packed */ #endif +/* + * 3 plane YCbCr LSB aligned + * In order to use these formats in a similar fashion to MSB aligned ones + * implementation can multiply the values by 2^6=64. For that reason the padding + * must only contain zeros. + * index 0 = Y plane, [15:0] z:Y [6:10] little endian + * index 1 = Cr plane, [15:0] z:Cr [6:10] little endian + * index 2 = Cb plane, [15:0] z:Cb [6:10] little endian + */ +#ifndef DRM_FORMAT_S010 +#define DRM_FORMAT_S010 fourcc_code('S', '0', '1', '0') /* 2x2 subsampled Cb (1) and Cr (2) planes 10 bits per channel */ +#endif +#ifndef DRM_FORMAT_S210 +#define DRM_FORMAT_S210 fourcc_code('S', '2', '1', '0') /* 2x1 subsampled Cb (1) and Cr (2) planes 10 bits per channel */ +#endif +#ifndef DRM_FORMAT_S410 +#define DRM_FORMAT_S410 fourcc_code('S', '4', '1', '0') /* non-subsampled Cb (1) and Cr (2) planes 10 bits per channel */ +#endif + +/* + * 3 plane YCbCr LSB aligned + * In order to use these formats in a similar fashion to MSB aligned ones + * implementation can multiply the values by 2^4=16. For that reason the padding + * must only contain zeros. + * index 0 = Y plane, [15:0] z:Y [4:12] little endian + * index 1 = Cr plane, [15:0] z:Cr [4:12] little endian + * index 2 = Cb plane, [15:0] z:Cb [4:12] little endian + */ +#ifndef DRM_FORMAT_S012 +#define DRM_FORMAT_S012 fourcc_code('S', '0', '1', '2') /* 2x2 subsampled Cb (1) and Cr (2) planes 12 bits per channel */ +#endif +#ifndef DRM_FORMAT_S212 +#define DRM_FORMAT_S212 fourcc_code('S', '2', '1', '2') /* 2x1 subsampled Cb (1) and Cr (2) planes 12 bits per channel */ +#endif +#ifndef DRM_FORMAT_S412 +#define DRM_FORMAT_S412 fourcc_code('S', '4', '1', '2') /* non-subsampled Cb (1) and Cr (2) planes 12 bits per channel */ +#endif + +/* + * 3 plane YCbCr + * index 0 = Y plane, [15:0] Y little endian + * index 1 = Cr plane, [15:0] Cr little endian + * index 2 = Cb plane, [15:0] Cb little endian + */ +#ifndef DRM_FORMAT_S016 +#define DRM_FORMAT_S016 fourcc_code('S', '0', '1', '6') /* 2x2 subsampled Cb (1) and Cr (2) planes 16 bits per channel */ +#endif +#ifndef DRM_FORMAT_S216 +#define DRM_FORMAT_S216 fourcc_code('S', '2', '1', '6') /* 2x1 subsampled Cb (1) and Cr (2) planes 16 bits per channel */ +#endif +#ifndef DRM_FORMAT_S416 +#define DRM_FORMAT_S416 fourcc_code('S', '4', '1', '6') /* non-subsampled Cb (1) and Cr (2) planes 16 bits per channel */ +#endif + #endif