Multiple pixels can be grouped as a single unit and form a 'macro-pixel'.
This is to model formats where multiple pixels are stored together
in a specific way, likely byte-algined. For example, if 3 - 10 bit
pixels are stored in 32 bit, the 32 bit stroage can be treated as
a single macro-pixel with 3 pixels. This aligns non-byte addressable
formats with drm core where bpp is expected to be multiple of 8 bit.

Add 'ppm', pixels per macro-pixel, to note how many pixels are grouped
in a macro-pixel. 'bpm', bits per macro-pixel, specifies how many bits
are in a macro-pixel as there can be some extra padding bits.

Signed-off-by: Hyun Kwon <hyun.k...@xilinx.com>
---
v2
- Introduce macro-pixel over scaling factors
---
---
 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 b891fe0..8fc1e35 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 }, .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 
},
+               { .format = DRM_FORMAT_C8,              .depth = 8,  
.num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .ppm =  { 1, 0, 0 }, 
.bpm = { 8, 0, 0 },  .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_RGB332,          .depth = 8,  
.num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .ppm =  { 1, 0, 0 }, 
.bpm = { 8, 0, 0 },  .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_BGR233,          .depth = 8,  
.num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .ppm =  { 1, 0, 0 }, 
.bpm = { 8, 0, 0 },  .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_XRGB4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_XBGR4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_RGBX4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_BGRX4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_ARGB4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_ABGR4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_RGBA4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_BGRA4444,        .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_XRGB1555,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_XBGR1555,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_RGBX5551,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_BGRX5551,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_ARGB1555,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_ABGR1555,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_RGBA5551,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_BGRA5551,        .depth = 15, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_RGB565,          .depth = 16, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_BGR565,          .depth = 16, 
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_RGB888,          .depth = 24, 
.num_planes = 1, .cpp = { 3, 0, 0 }, .bpp = { 24, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 24, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_BGR888,          .depth = 24, 
.num_planes = 1, .cpp = { 3, 0, 0 }, .bpp = { 24, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 24, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_XRGB8888,        .depth = 24, 
.num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .ppm =  { 1, 0, 0 }, 
.bpm = { 8, 0, 0 },  .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_XBGR8888,        .depth = 24, 
.num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .ppm =  { 1, 0, 0 }, 
.bpm = { 8, 0, 0 },  .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_RGBX8888,        .depth = 24, 
.num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .ppm =  { 1, 0, 0 }, 
.bpm = { 8, 0, 0 },  .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_BGRX8888,        .depth = 24, 
.num_planes = 1, .cpp = { 1, 0, 0 }, .bpp = { 8, 0, 0 },  .ppm =  { 1, 0, 0 }, 
.bpm = { 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 }, .ppm =  { 1, 1, 0 }, 
.bpm = { 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 }, .ppm =  { 1, 1, 0 }, 
.bpm = { 16, 8, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_XRGB2101010,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 32, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_XBGR2101010,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 32, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_RGBX1010102,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 32, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_BGRX1010102,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 32, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_ARGB2101010,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 32, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_ABGR2101010,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 32, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_RGBA1010102,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 32, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_BGRA1010102,     .depth = 30, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 32, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_ARGB8888,        .depth = 32, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 32, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_ABGR8888,        .depth = 32, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 32, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_RGBA8888,        .depth = 32, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 32, 0, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_BGRA8888,        .depth = 32, 
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 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 }, .ppm =  { 1, 1, 0 }, 
.bpm = { 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 }, .ppm =  { 1, 1, 0 }, 
.bpm = { 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 }, .ppm =  { 1, 1, 0 }, 
.bpm = { 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 }, .ppm =  { 1, 1, 0 }, 
.bpm = { 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 }, .ppm =  { 1, 1, 0 }, 
.bpm = { 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 }, .ppm =  { 1, 1, 0 }, 
.bpm = { 32, 8, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_YUV410,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .ppm =  { 1, 1, 1 }, 
.bpm = { 8, 8, 8 },  .hsub = 4, .vsub = 4 },
+               { .format = DRM_FORMAT_YVU410,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .ppm =  { 1, 1, 1 }, 
.bpm = { 8, 8, 8 },  .hsub = 4, .vsub = 4 },
+               { .format = DRM_FORMAT_YUV411,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .ppm =  { 1, 1, 1 }, 
.bpm = { 8, 8, 8 },  .hsub = 4, .vsub = 1 },
+               { .format = DRM_FORMAT_YVU411,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .ppm =  { 1, 1, 1 }, 
.bpm = { 8, 8, 8 },  .hsub = 4, .vsub = 1 },
+               { .format = DRM_FORMAT_YUV420,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .ppm =  { 1, 1, 1 }, 
.bpm = { 8, 8, 8 },  .hsub = 2, .vsub = 2 },
+               { .format = DRM_FORMAT_YVU420,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .ppm =  { 1, 1, 1 }, 
.bpm = { 8, 8, 8 },  .hsub = 2, .vsub = 2 },
+               { .format = DRM_FORMAT_YUV422,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .ppm =  { 1, 1, 1 }, 
.bpm = { 8, 8, 8 },  .hsub = 2, .vsub = 1 },
+               { .format = DRM_FORMAT_YVU422,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .ppm =  { 1, 1, 1 }, 
.bpm = { 8, 8, 8 },  .hsub = 2, .vsub = 1 },
+               { .format = DRM_FORMAT_YUV444,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .ppm =  { 1, 1, 1 }, 
.bpm = { 8, 8, 8 },  .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_YVU444,          .depth = 0,  
.num_planes = 3, .cpp = { 1, 1, 1 }, .bpp = { 8, 8, 8 },  .ppm =  { 1, 1, 1 }, 
.bpm = { 8, 8, 8 },  .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_NV12,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .bpp = { 8, 16, 0 }, .ppm =  { 1, 1, 0 }, 
.bpm = { 8, 16, 0 }, .hsub = 2, .vsub = 2 },
+               { .format = DRM_FORMAT_NV21,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .bpp = { 8, 16, 0 }, .ppm =  { 1, 1, 0 }, 
.bpm = { 8, 16, 0 }, .hsub = 2, .vsub = 2 },
+               { .format = DRM_FORMAT_NV16,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .bpp = { 8, 16, 0 }, .ppm =  { 1, 1, 0 }, 
.bpm = { 8, 16, 0 }, .hsub = 2, .vsub = 1 },
+               { .format = DRM_FORMAT_NV61,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .bpp = { 8, 16, 0 }, .ppm =  { 1, 1, 0 }, 
.bpm = { 8, 16, 0 }, .hsub = 2, .vsub = 1 },
+               { .format = DRM_FORMAT_NV24,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .bpp = { 8, 16, 0 }, .ppm =  { 1, 1, 0 }, 
.bpm = { 8, 16, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_NV42,            .depth = 0,  
.num_planes = 2, .cpp = { 1, 2, 0 }, .bpp = { 8, 16, 0 }, .ppm =  { 1, 1, 0 }, 
.bpm = { 8, 16, 0 }, .hsub = 1, .vsub = 1 },
+               { .format = DRM_FORMAT_YUYV,            .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 2, .vsub = 1 },
+               { .format = DRM_FORMAT_YVYU,            .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 2, .vsub = 1 },
+               { .format = DRM_FORMAT_UYVY,            .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 2, .vsub = 1 },
+               { .format = DRM_FORMAT_VYUY,            .depth = 0,  
.num_planes = 1, .cpp = { 2, 0, 0 }, .bpp = { 16, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 16, 0, 0 }, .hsub = 2, .vsub = 1 },
+               { .format = DRM_FORMAT_AYUV,            .depth = 0,  
.num_planes = 1, .cpp = { 4, 0, 0 }, .bpp = { 32, 0, 0 }, .ppm =  { 1, 0, 0 }, 
.bpm = { 32, 0, 0 }, .hsub = 1, .vsub = 1 },
        };
 
        unsigned int i;
diff --git a/include/drm/drm_fourcc.h b/include/drm/drm_fourcc.h
index 752bd43..64038e9 100644
--- a/include/drm/drm_fourcc.h
+++ b/include/drm/drm_fourcc.h
@@ -37,6 +37,13 @@ struct drm_mode_fb_cmd2;
  * @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)
+ * @ppm: Number of pixels per macro-pixel (per plane). A macro-pixel is
+ *     composed of multiple pixels, possibly with some padding bits
+ *     around pixels. For example, some 10 bit format has 3 components
+ *     in every 32 bit, where 3 10bit components are followed by 2 bit padding.
+ * @bpm: Number of bits per macro-pixel (per plane). Bits per macro-pixel.
+ *     The value is different from bpp * ppm if a macro-pixel has
+ *     extra padding bits.
  * @hsub: Horizontal chroma subsampling factor
  * @vsub: Vertical chroma subsampling factor
  */
@@ -46,6 +53,8 @@ struct drm_format_info {
        u8 num_planes;
        u8 cpp[3];
        u8 bpp[3];
+       u8 ppm[3];
+       u8 bpm[3];
        u8 hsub;
        u8 vsub;
 };
-- 
2.7.4

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

Reply via email to