Commit 41c8c210 authored by Paul Kocialkowski's avatar Paul Kocialkowski Committed by Maxime Ripard

drm/fourcc: Add format info helpers for checking YUV planes disposition

It is often useful to check whether the DRM format info retrieved from
the DRM framebuffer matches a specific YUV planes disposition.

This introduces helpers to quickly check that a provided format info
matches a YUV format with a specific disposition, in commonly-used
terminology.

The intent of providing helpers taking the format info instead of the
fourcc alone is to avoid the overhead of iterating through all formats
when the whole format info structure is available. As a result, these
helpers are very simple so they are made inline.
Signed-off-by: default avatarPaul Kocialkowski <paul.kocialkowski@bootlin.com>
Reviewed-by: default avatarMaxime Ripard <maxime.ripard@bootlin.com>
Signed-off-by: default avatarMaxime Ripard <maxime.ripard@bootlin.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190118145133.21281-2-paul.kocialkowski@bootlin.com
parent 07633840
...@@ -143,6 +143,48 @@ struct drm_format_name_buf { ...@@ -143,6 +143,48 @@ struct drm_format_name_buf {
char str[32]; char str[32];
}; };
/**
* drm_format_info_is_yuv_packed - check that the format info matches a YUV
* format with data laid in a single plane
* @info: format info
*
* Returns:
* A boolean indicating whether the format info matches a packed YUV format.
*/
static inline bool
drm_format_info_is_yuv_packed(const struct drm_format_info *info)
{
return info->is_yuv && info->num_planes == 1;
}
/**
* drm_format_info_is_yuv_semiplanar - check that the format info matches a YUV
* format with data laid in two planes (luminance and chrominance)
* @info: format info
*
* Returns:
* A boolean indicating whether the format info matches a semiplanar YUV format.
*/
static inline bool
drm_format_info_is_yuv_semiplanar(const struct drm_format_info *info)
{
return info->is_yuv && info->num_planes == 2;
}
/**
* drm_format_info_is_yuv_planar - check that the format info matches a YUV
* format with data laid in three planes (one for each YUV component)
* @info: format info
*
* Returns:
* A boolean indicating whether the format info matches a planar YUV format.
*/
static inline bool
drm_format_info_is_yuv_planar(const struct drm_format_info *info)
{
return info->is_yuv && info->num_planes == 3;
}
const struct drm_format_info *__drm_format_info(u32 format); const struct drm_format_info *__drm_format_info(u32 format);
const struct drm_format_info *drm_format_info(u32 format); const struct drm_format_info *drm_format_info(u32 format);
const struct drm_format_info * const struct drm_format_info *
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment