[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