On Thu, Jan 25, 2018 at 06:03:58PM -0800, Hyun Kwon wrote:
> 'cpp' doesn't work for any format where component size is not byte aligned.
> Add 'bpp' to have a bit level information. Add a meesage to
> drm_format_plane_cpp() to indicate that the returned cpp would be
> rounded for non byte aligned formats.
> 
> Signed-off-by: Hyun Kwon <hyun.k...@xilinx.com>

With the macropixel concept, do we really need bpp still? Macropixels
should be enough for basic framebuffer checking in the core at least.
-Daniel

> ---
> v2
> - Introduce bpp
> ---
> ---
>  drivers/gpu/drm/drm_fourcc.c | 164 
> +++++++++++++++++++++++++------------------
>  include/drm/drm_fourcc.h     |   3 +
>  2 files changed, 99 insertions(+), 68 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c
> index 9c0152d..b891fe0 100644
> --- a/drivers/gpu/drm/drm_fourcc.c
> +++ b/drivers/gpu/drm/drm_fourcc.c
> @@ -105,74 +105,74 @@ EXPORT_SYMBOL(drm_get_format_name);
>  const struct drm_format_info *__drm_format_info(u32 format)
>  {
>       static const struct drm_format_info formats[] = {
> -             { .format = DRM_FORMAT_C8,              .depth = 8,  
> .num_planes = 1, .cpp = { 1, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_RGB332,          .depth = 8,  
> .num_planes = 1, .cpp = { 1, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_BGR233,          .depth = 8,  
> .num_planes = 1, .cpp = { 1, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_XRGB4444,        .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_XBGR4444,        .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_RGBX4444,        .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_BGRX4444,        .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_ARGB4444,        .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_ABGR4444,        .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_RGBA4444,        .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_BGRA4444,        .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_XRGB1555,        .depth = 15, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_XBGR1555,        .depth = 15, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_RGBX5551,        .depth = 15, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_BGRX5551,        .depth = 15, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_ARGB1555,        .depth = 15, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_ABGR1555,        .depth = 15, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_RGBA5551,        .depth = 15, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_BGRA5551,        .depth = 15, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_RGB565,          .depth = 16, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_BGR565,          .depth = 16, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_RGB888,          .depth = 24, 
> .num_planes = 1, .cpp = { 3, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_BGR888,          .depth = 24, 
> .num_planes = 1, .cpp = { 3, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_XRGB8888,        .depth = 24, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_XBGR8888,        .depth = 24, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_RGBX8888,        .depth = 24, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_BGRX8888,        .depth = 24, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_RGB565_A8,       .depth = 24, 
> .num_planes = 2, .cpp = { 2, 1, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_BGR565_A8,       .depth = 24, 
> .num_planes = 2, .cpp = { 2, 1, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_XRGB2101010,     .depth = 30, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_XBGR2101010,     .depth = 30, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_RGBX1010102,     .depth = 30, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_BGRX1010102,     .depth = 30, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_ARGB2101010,     .depth = 30, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_ABGR2101010,     .depth = 30, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_RGBA1010102,     .depth = 30, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_BGRA1010102,     .depth = 30, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_ARGB8888,        .depth = 32, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_ABGR8888,        .depth = 32, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_RGBA8888,        .depth = 32, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_BGRA8888,        .depth = 32, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_RGB888_A8,       .depth = 32, 
> .num_planes = 2, .cpp = { 3, 1, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_BGR888_A8,       .depth = 32, 
> .num_planes = 2, .cpp = { 3, 1, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_XRGB8888_A8,     .depth = 32, 
> .num_planes = 2, .cpp = { 4, 1, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_XBGR8888_A8,     .depth = 32, 
> .num_planes = 2, .cpp = { 4, 1, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_RGBX8888_A8,     .depth = 32, 
> .num_planes = 2, .cpp = { 4, 1, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_BGRX8888_A8,     .depth = 32, 
> .num_planes = 2, .cpp = { 4, 1, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_YUV410,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 4, .vsub = 4 },
> -             { .format = DRM_FORMAT_YVU410,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 4, .vsub = 4 },
> -             { .format = DRM_FORMAT_YUV411,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 4, .vsub = 1 },
> -             { .format = DRM_FORMAT_YVU411,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 4, .vsub = 1 },
> -             { .format = DRM_FORMAT_YUV420,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 2, .vsub = 2 },
> -             { .format = DRM_FORMAT_YVU420,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 2, .vsub = 2 },
> -             { .format = DRM_FORMAT_YUV422,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 2, .vsub = 1 },
> -             { .format = DRM_FORMAT_YVU422,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 2, .vsub = 1 },
> -             { .format = DRM_FORMAT_YUV444,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_YVU444,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_NV12,            .depth = 0,  
> .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 2 },
> -             { .format = DRM_FORMAT_NV21,            .depth = 0,  
> .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 2 },
> -             { .format = DRM_FORMAT_NV16,            .depth = 0,  
> .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 1 },
> -             { .format = DRM_FORMAT_NV61,            .depth = 0,  
> .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 1 },
> -             { .format = DRM_FORMAT_NV24,            .depth = 0,  
> .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_NV42,            .depth = 0,  
> .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 1, .vsub = 1 },
> -             { .format = DRM_FORMAT_YUYV,            .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 1 },
> -             { .format = DRM_FORMAT_YVYU,            .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 1 },
> -             { .format = DRM_FORMAT_UYVY,            .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 1 },
> -             { .format = DRM_FORMAT_VYUY,            .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 1 },
> -             { .format = DRM_FORMAT_AYUV,            .depth = 0,  
> .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },
> +             { .format = DRM_FORMAT_C8,              .depth = 8,  
> .num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_RGB332,          .depth = 8,  
> .num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_BGR233,          .depth = 8,  
> .num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_XRGB4444,        .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_XBGR4444,        .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_RGBX4444,        .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_BGRX4444,        .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_ARGB4444,        .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_ABGR4444,        .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_RGBA4444,        .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_BGRA4444,        .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_XRGB1555,        .depth = 15, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_XBGR1555,        .depth = 15, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_RGBX5551,        .depth = 15, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_BGRX5551,        .depth = 15, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_ARGB1555,        .depth = 15, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_ABGR1555,        .depth = 15, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_RGBA5551,        .depth = 15, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_BGRA5551,        .depth = 15, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_RGB565,          .depth = 16, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_BGR565,          .depth = 16, 
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_RGB888,          .depth = 24, 
> .num_planes = 1, .cpp = { 3, 0, 0 }, .bpp = { 24, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_BGR888,          .depth = 24, 
> .num_planes = 1, .cpp = { 3, 0, 0 }, .bpp = { 24, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_XRGB8888,        .depth = 24, 
> .num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_XBGR8888,        .depth = 24, 
> .num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_RGBX8888,        .depth = 24, 
> .num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_BGRX8888,        .depth = 24, 
> .num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_RGB565_A8,       .depth = 24, 
> .num_planes = 2, .cpp = { 2, 1, 0 }, .bpp = { 16, 8, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_BGR565_A8,       .depth = 24, 
> .num_planes = 2, .cpp = { 2, 1, 0 }, .bpp = { 16, 8, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_XRGB2101010,     .depth = 30, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_XBGR2101010,     .depth = 30, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_RGBX1010102,     .depth = 30, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_BGRX1010102,     .depth = 30, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_ARGB2101010,     .depth = 30, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_ABGR2101010,     .depth = 30, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_RGBA1010102,     .depth = 30, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_BGRA1010102,     .depth = 30, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_ARGB8888,        .depth = 32, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_ABGR8888,        .depth = 32, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_RGBA8888,        .depth = 32, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_BGRA8888,        .depth = 32, 
> .num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_RGB888_A8,       .depth = 32, 
> .num_planes = 2, .cpp = { 4, 1, 0 }, .bpp = { 24, 8, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_BGR888_A8,       .depth = 32, 
> .num_planes = 2, .cpp = { 4, 1, 0 }, .bpp = { 24, 8, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_XRGB8888_A8,     .depth = 32, 
> .num_planes = 2, .cpp = { 4, 1, 0 }, .bpp = { 32, 8, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_XBGR8888_A8,     .depth = 32, 
> .num_planes = 2, .cpp = { 4, 1, 0 }, .bpp = { 32, 8, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_RGBX8888_A8,     .depth = 32, 
> .num_planes = 2, .cpp = { 4, 1, 0 }, .bpp = { 32, 8, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_BGRX8888_A8,     .depth = 32, 
> .num_planes = 2, .cpp = { 4, 1, 0 }, .bpp = { 32, 8, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_YUV410,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 4, .vsub = 
> 4 },
> +             { .format = DRM_FORMAT_YVU410,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 4, .vsub = 
> 4 },
> +             { .format = DRM_FORMAT_YUV411,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 4, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_YVU411,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 4, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_YUV420,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 2, .vsub = 
> 2 },
> +             { .format = DRM_FORMAT_YVU420,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 2, .vsub = 
> 2 },
> +             { .format = DRM_FORMAT_YUV422,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 2, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_YVU422,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 2, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_YUV444,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_YVU444,          .depth = 0,  
> .num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_NV12,            .depth = 0,  
> .num_planes = 2, .cpp = { 1, 2, 0 }, .bpp = { 8, 16, 0 }, .hsub = 2, .vsub = 
> 2 },
> +             { .format = DRM_FORMAT_NV21,            .depth = 0,  
> .num_planes = 2, .cpp = { 1, 2, 0 }, .bpp = { 8, 16, 0 }, .hsub = 2, .vsub = 
> 2 },
> +             { .format = DRM_FORMAT_NV16,            .depth = 0,  
> .num_planes = 2, .cpp = { 1, 2, 0 }, .bpp = { 8, 16, 0 }, .hsub = 2, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_NV61,            .depth = 0,  
> .num_planes = 2, .cpp = { 1, 2, 0 }, .bpp = { 8, 16, 0 }, .hsub = 2, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_NV24,            .depth = 0,  
> .num_planes = 2, .cpp = { 1, 2, 0 }, .bpp = { 8, 16, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_NV42,            .depth = 0,  
> .num_planes = 2, .cpp = { 1, 2, 0 }, .bpp = { 8, 16, 0 }, .hsub = 1, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_YUYV,            .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 2, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_YVYU,            .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 2, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_UYVY,            .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 2, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_VYUY,            .depth = 0,  
> .num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .hsub = 2, .vsub = 
> 1 },
> +             { .format = DRM_FORMAT_AYUV,            .depth = 0,  
> .num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .hsub = 1, .vsub = 
> 1 },
>       };
>  
>       unsigned int i;
> @@ -248,6 +248,26 @@ int drm_format_num_planes(uint32_t format)
>  EXPORT_SYMBOL(drm_format_num_planes);
>  
>  /**
> + * drm_format_plane_bpp - determine the bits per pixel value
> + * @format: pixel format (DRM_FORMAT_*)
> + * @plane: plane index
> + *
> + * Returns:
> + * The bits per pixel value for the specified plane.
> + */
> +int drm_format_plane_bpp(uint32_t format, int plane)
> +{
> +     const struct drm_format_info *info;
> +
> +     info = drm_format_info(format);
> +     if (!info || plane >= info->num_planes)
> +             return 0;
> +
> +     return info->bpp[plane];
> +}
> +EXPORT_SYMBOL(drm_format_plane_bpp);
> +
> +/**
>   * drm_format_plane_cpp - determine the bytes per pixel value
>   * @format: pixel format (DRM_FORMAT_*)
>   * @plane: plane index
> @@ -263,6 +283,14 @@ int drm_format_plane_cpp(uint32_t format, int plane)
>       if (!info || plane >= info->num_planes)
>               return 0;
>  
> +     if (info->bpp[plane] % 8) {
> +             struct drm_format_name_buf buf;
> +
> +             DRM_INFO("cpp is off as bpp isn't byte-aligned: format: %s, 
> plane %d, cpp: %u, bpp: %u",
> +                       drm_get_format_name(format, &buf), plane,
> +                       info->cpp[plane], info->bpp[plane]);
> +     }
> +
>       return info->cpp[plane];
>  }
>  EXPORT_SYMBOL(drm_format_plane_cpp);
> diff --git a/include/drm/drm_fourcc.h b/include/drm/drm_fourcc.h
> index 6942e84..752bd43 100644
> --- a/include/drm/drm_fourcc.h
> +++ b/include/drm/drm_fourcc.h
> @@ -36,6 +36,7 @@ struct drm_mode_fb_cmd2;
>   *   use in new code and set to 0 for new formats.
>   * @num_planes: Number of color planes (1 to 3)
>   * @cpp: Number of bytes per pixel (per plane)
> + * @bpp: Number of bits per pixel (per plane)
>   * @hsub: Horizontal chroma subsampling factor
>   * @vsub: Vertical chroma subsampling factor
>   */
> @@ -44,6 +45,7 @@ struct drm_format_info {
>       u8 depth;
>       u8 num_planes;
>       u8 cpp[3];
> +     u8 bpp[3];
>       u8 hsub;
>       u8 vsub;
>  };
> @@ -63,6 +65,7 @@ drm_get_format_info(struct drm_device *dev,
>                   const struct drm_mode_fb_cmd2 *mode_cmd);
>  uint32_t drm_mode_legacy_fb_format(uint32_t bpp, uint32_t depth);
>  int drm_format_num_planes(uint32_t format);
> +int drm_format_plane_bpp(uint32_t format, int plane);
>  int drm_format_plane_cpp(uint32_t format, int plane);
>  int drm_format_horz_chroma_subsampling(uint32_t format);
>  int drm_format_vert_chroma_subsampling(uint32_t format);
> -- 
> 2.7.4
> 

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to