From: Satish Kumar Nagireddy <satish.nagireddy.nagire...@xilinx.com>

'cpp_scale' can be used as a multiplying factor to calculate
bytes per component based on color format.
For eg. scaling factor of YUV420 8 bit format is 1
        so multiplying factor is 1 (8/8)
        scaling factor of YUV420 10 bit format is 1.25 (10/8)

'padding_scale' can be used as a multiplying factor to calculate
actual width of video according to color format.
For eg. padding factor of YUV420 8 bit format: 8 bits per 1 component
        no padding bits here, so multiplying factor is 1
        padding factor of YUV422 10 bit format: 32 bits per 3 components
        each component is 10 bit and the factor is 32/30

Signed-off-by: Satish Kumar Nagireddy <satis...@xilinx.com>
Signed-off-by: Hyun Kwon <hyun.k...@xilinx.com>
---
 drivers/gpu/drm/drm_fourcc.c | 136 +++++++++++++++++++++----------------------
 include/drm/drm_fourcc.h     |   9 +++
 2 files changed, 77 insertions(+), 68 deletions(-)

diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c
index 9c0152d..52afb5e 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 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_RGB332,          .depth = 8,  
.num_planes = 1, .cpp = { 1, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_BGR233,          .depth = 8,  
.num_planes = 1, .cpp = { 1, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_XRGB4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_XBGR4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_RGBX4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_BGRX4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_ARGB4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_ABGR4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_RGBA4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_BGRA4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_XRGB1555,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_XBGR1555,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_RGBX5551,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_BGRX5551,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_ARGB1555,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_ABGR1555,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_RGBA5551,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_BGRA5551,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_RGB565,          .depth = 16, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_BGR565,          .depth = 16, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_RGB888,          .depth = 24, 
.num_planes = 1, .cpp = { 3, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_BGR888,          .depth = 24, 
.num_planes = 1, .cpp = { 3, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_XRGB8888,        .depth = 24, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_XBGR8888,        .depth = 24, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_RGBX8888,        .depth = 24, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_BGRX8888,        .depth = 24, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_RGB565_A8,       .depth = 24, 
.num_planes = 2, .cpp = { 2, 1, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_BGR565_A8,       .depth = 24, 
.num_planes = 2, .cpp = { 2, 1, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_XRGB2101010,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_XBGR2101010,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_RGBX1010102,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_BGRX1010102,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_ARGB2101010,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_ABGR2101010,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_RGBA1010102,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_BGRA1010102,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_ARGB8888,        .depth = 32, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_ABGR8888,        .depth = 32, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_RGBA8888,        .depth = 32, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_BGRA8888,        .depth = 32, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_RGB888_A8,       .depth = 32, 
.num_planes = 2, .cpp = { 3, 1, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_BGR888_A8,       .depth = 32, 
.num_planes = 2, .cpp = { 3, 1, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_XRGB8888_A8,     .depth = 32, 
.num_planes = 2, .cpp = { 4, 1, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_XBGR8888_A8,     .depth = 32, 
.num_planes = 2, .cpp = { 4, 1, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_RGBX8888_A8,     .depth = 32, 
.num_planes = 2, .cpp = { 4, 1, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_BGRX8888_A8,     .depth = 32, 
.num_planes = 2, .cpp = { 4, 1, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_YUV410,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .cpp_scale = { 1, 1 }, .hsub = 4, .vsub = 
4, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_YVU410,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .cpp_scale = { 1, 1 }, .hsub = 4, .vsub = 
4, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_YUV411,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .cpp_scale = { 1, 1 }, .hsub = 4, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_YVU411,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .cpp_scale = { 1, 1 }, .hsub = 4, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_YUV420,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .cpp_scale = { 1, 1 }, .hsub = 2, .vsub = 
2, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_YVU420,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .cpp_scale = { 1, 1 }, .hsub = 2, .vsub = 
2, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_YUV422,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .cpp_scale = { 1, 1 }, .hsub = 2, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_YVU422,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .cpp_scale = { 1, 1 }, .hsub = 2, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_YUV444,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_YVU444,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_NV12,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .cpp_scale = { 1, 1 }, .hsub = 2, .vsub = 
2, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_NV21,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .cpp_scale = { 1, 1 }, .hsub = 2, .vsub = 
2, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_NV16,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .cpp_scale = { 1, 1 }, .hsub = 2, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_NV61,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .cpp_scale = { 1, 1 }, .hsub = 2, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_NV24,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_NV42,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_YUYV,            .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 2, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_YVYU,            .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 2, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_UYVY,            .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 2, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_VYUY,            .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 2, .vsub = 
1, .padding_scale = { 1, 1 } },
+               { .format = DRM_FORMAT_AYUV,            .depth = 0,  
.num_planes = 1, .cpp = { 4, 0, 0 }, .cpp_scale = { 1, 1 }, .hsub = 1, .vsub = 
1, .padding_scale = { 1, 1 } },
        };
 
        unsigned int i;
diff --git a/include/drm/drm_fourcc.h b/include/drm/drm_fourcc.h
index 6942e84..0202d19 100644
--- a/include/drm/drm_fourcc.h
+++ b/include/drm/drm_fourcc.h
@@ -36,16 +36,25 @@ 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)
+ * @cpp_scale: { numerator, denominator }. Scaling factor for
+ *     non 8bit aligned formats. For instance, { 10, 8 } can be used for
+ *     10 bit component / pixel formats.
  * @hsub: Horizontal chroma subsampling factor
  * @vsub: Vertical chroma subsampling factor
+ * @padding_scale: { numerator, denominator }. Scaling factor for
+ *     padding. This can be used for formats with padding bits after
+ *     multiple pixels / components. For instance, if there are 2 bit
+ *     padding after 3 10bit components, the value should be { 32, 30 }.
  */
 struct drm_format_info {
        u32 format;
        u8 depth;
        u8 num_planes;
        u8 cpp[3];
+       u8 cpp_scale[2];
        u8 hsub;
        u8 vsub;
+       u8 padding_scale[2];
 };
 
 /**
-- 
2.7.4

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to