drm_format_plane_width_bytes() calculates and returns the number of bytes for given width of specified format. The calculation uses the macro pixel information to avoid bit level rounding. Signed-off-by: Hyun Kwon <hyun.kwon@xxxxxxxxxx> --- v2 - This function is added --- --- drivers/gpu/drm/drm_fourcc.c | 22 ++++++++++++++++++++++ include/drm/drm_fourcc.h | 2 ++ 2 files changed, 24 insertions(+) diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c index 8fc1e35..2070276 100644 --- a/drivers/gpu/drm/drm_fourcc.c +++ b/drivers/gpu/drm/drm_fourcc.c @@ -376,3 +376,25 @@ int drm_format_plane_height(int height, uint32_t format, int plane) return height / info->vsub; } EXPORT_SYMBOL(drm_format_plane_height); + +/** + * drm_format_plane_width_bytes - bytes of the given width of the plane + * @info: DRM format information + * @plane: plane index + * @width: width to get the number of bytes + * + * Returns: + * The bytes of @width of @plane. + */ +int drm_format_plane_width_bytes(const struct drm_format_info *info, + int plane, int width) +{ + int width_bits; + + if (!info || plane >= info->num_planes) + return 0; + + width_bits = DIV_ROUND_UP(width * info->bpm[plane], info->ppm[plane]); + return DIV_ROUND_UP(width_bits, 8); +} +EXPORT_SYMBOL(drm_format_plane_width_bytes); diff --git a/include/drm/drm_fourcc.h b/include/drm/drm_fourcc.h index 64038e9..1eafeb9 100644 --- a/include/drm/drm_fourcc.h +++ b/include/drm/drm_fourcc.h @@ -80,6 +80,8 @@ int drm_format_horz_chroma_subsampling(uint32_t format); int drm_format_vert_chroma_subsampling(uint32_t format); int drm_format_plane_width(int width, uint32_t format, int plane); int drm_format_plane_height(int height, uint32_t format, int plane); +int drm_format_plane_width_bytes(const struct drm_format_info *info, + int plane, int width); const char *drm_get_format_name(uint32_t format, struct drm_format_name_buf *buf); #endif /* __DRM_FOURCC_H__ */ -- 2.7.4 _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel