[PATCH i-g-t v1 1/2] lib/igt_fb: Add helpers to identify planar and packed YUV formats
Naladala Ramanaidu
ramanaidu.naladala at intel.com
Tue Jul 15 22:08:09 UTC 2025
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);
uint32_t igt_drm_format_str_to_format(const char *drm_format);
--
2.43.0
More information about the igt-dev
mailing list