[PATCH i-g-t v1 1/2] lib/igt_fb: Add helpers to identify planar and packed YUV formats
Reddy Guddati, Santhosh
santhosh.reddy.guddati at intel.com
Thu Jul 17 03:59:05 UTC 2025
Hi Rama,
On 16-07-2025 03:38, Naladala Ramanaidu wrote:
> Add new helper logic to distinguish between planar/semi-planar and
> packed YUV formats. This classification enables more efficient test
> coverage by reducing iterations in IGT, allowing tests to focus on
> relevant format groups based on their memory layout.
>
> Signed-off-by: Naladala Ramanaidu <ramanaidu.naladala at intel.com>
> ---
> lib/igt_fb.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++
> lib/igt_fb.h | 2 ++
> 2 files changed, 59 insertions(+)
>
> diff --git a/lib/igt_fb.c b/lib/igt_fb.c
> index 9fc1bfc65..f68aeaf42 100644
> --- a/lib/igt_fb.c
> +++ b/lib/igt_fb.c
> @@ -5044,6 +5044,63 @@ bool igt_format_is_yuv(uint32_t drm_format)
> }
> }
>
> +/**
> + * igt_format_is_planaryuv:
> + * @drm_format: drm fourcc
> + *
> + * This functions returns if @drm_format is planar/semi-planar YUV formats.
> + */
> +
> +bool igt_format_is_planaryuv(uint32_t drm_format)
> +{
> + switch (drm_format) {
> + case DRM_FORMAT_YUV420:
> + case DRM_FORMAT_YUV422:
> + case DRM_FORMAT_YVU420:
> + case DRM_FORMAT_YVU422:
> + case DRM_FORMAT_NV12:
> + case DRM_FORMAT_NV16:
> + case DRM_FORMAT_NV21:
> + case DRM_FORMAT_NV61:
> + case DRM_FORMAT_P010:
> + case DRM_FORMAT_P012:
> + case DRM_FORMAT_P016:
> + return true;
> + default:
> + return false;
> + }
> +}
> +
> +/**
> + * igt_format_is_yuv:
> + * @drm_format: drm fourcc
> + *
> + * This functions returns if @drm_format is packed YUV formats.
> + */
> +
> +bool igt_format_is_packedyuv(uint32_t drm_format)
> +{
> + switch (drm_format) {
> + case DRM_FORMAT_Y210:
> + case DRM_FORMAT_Y212:
> + case DRM_FORMAT_Y216:
> + case DRM_FORMAT_XVYU2101010:
> + case DRM_FORMAT_XVYU12_16161616:
> + case DRM_FORMAT_XVYU16161616:
> + case DRM_FORMAT_Y410:
> + case DRM_FORMAT_Y412:
> + case DRM_FORMAT_Y416:
> + case DRM_FORMAT_YUYV:
> + case DRM_FORMAT_YVYU:
> + case DRM_FORMAT_UYVY:
> + case DRM_FORMAT_VYUY:
> + case DRM_FORMAT_XYUV8888:
> + return true;
> + default:
> + return false;
> + }
> +}
> +
> /**
> * igt_format_is_fp16
> * @drm_format: drm fourcc
> diff --git a/lib/igt_fb.h b/lib/igt_fb.h
> index d5aa1e88a..ace02a960 100644
> --- a/lib/igt_fb.h
> +++ b/lib/igt_fb.h
> @@ -220,6 +220,8 @@ const char *igt_format_str(uint32_t drm_format);
> bool igt_fb_supported_format(uint32_t drm_format);
> bool igt_format_is_yuv(uint32_t drm_format);
> bool igt_format_is_yuv_semiplanar(uint32_t format);
> +bool igt_format_is_planaryuv(uint32_t drm_format);
> +bool igt_format_is_packedyuv(uint32_t drm_format);
>> to be consistant with existing naming convention,could you please
consider renaming to igt_format_is_planar_yuv?>
> uint32_t igt_drm_format_str_to_format(const char *drm_format);
>
More information about the igt-dev
mailing list