Message ID | 20180821183004.6775-3-alexandru-cosmin.gheorghe@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add Mali DP non-compressed pixel formats | expand |
On Tue, Aug 21, 2018 at 07:30:01PM +0100, Alexandru Gheorghe wrote: > Add two new fields(tile_w and tile_h) to drm_format_info, which > represent the horizontal and vertical sizes of a tile in tiled > formats. > This fields will be used by the next patch to add support in drm > core for handling framebuffer restrictions and to correctly handle > source cropping. > > Additionally, since I was touching drm_format_info table I decided to > break the lines to the 80 characters limit, they were already getting > out of hand, but let's not focus on that, I don't have any problem > going back to the original line sizes or style them other way, if > someone wants me to. > > Signed-off-by: Alexandru Gheorghe <alexandru-cosmin.gheorghe@arm.com> > --- > drivers/gpu/drm/drm_fourcc.c | 352 +++++++++++++++++++++++++++-------- > include/drm/drm_fourcc.h | 4 + > 2 files changed, 281 insertions(+), 75 deletions(-) > > diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c > index 18bb960e9943..f55cd93ba2d0 100644 > --- a/drivers/gpu/drm/drm_fourcc.c > +++ b/drivers/gpu/drm/drm_fourcc.c > @@ -105,81 +105,283 @@ 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, .has_alpha = true }, > - { .format = DRM_FORMAT_ABGR4444, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .format = DRM_FORMAT_RGBA4444, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .format = DRM_FORMAT_BGRA4444, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .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, .has_alpha = true }, > - { .format = DRM_FORMAT_ABGR1555, .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .format = DRM_FORMAT_RGBA5551, .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .format = DRM_FORMAT_BGRA5551, .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .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, .has_alpha = true }, > - { .format = DRM_FORMAT_BGR565_A8, .depth = 24, .num_planes = 2, .cpp = { 2, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .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, .has_alpha = true }, > - { .format = DRM_FORMAT_ABGR2101010, .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .format = DRM_FORMAT_RGBA1010102, .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .format = DRM_FORMAT_BGRA1010102, .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .format = DRM_FORMAT_ARGB8888, .depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .format = DRM_FORMAT_ABGR8888, .depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .format = DRM_FORMAT_RGBA8888, .depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .format = DRM_FORMAT_BGRA8888, .depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .format = DRM_FORMAT_RGB888_A8, .depth = 32, .num_planes = 2, .cpp = { 3, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .format = DRM_FORMAT_BGR888_A8, .depth = 32, .num_planes = 2, .cpp = { 3, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .format = DRM_FORMAT_XRGB8888_A8, .depth = 32, .num_planes = 2, .cpp = { 4, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .format = DRM_FORMAT_XBGR8888_A8, .depth = 32, .num_planes = 2, .cpp = { 4, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .format = DRM_FORMAT_RGBX8888_A8, .depth = 32, .num_planes = 2, .cpp = { 4, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .format = DRM_FORMAT_BGRX8888_A8, .depth = 32, .num_planes = 2, .cpp = { 4, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, > - { .format = DRM_FORMAT_YUV410, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 4, .vsub = 4, .is_yuv = true }, > - { .format = DRM_FORMAT_YVU410, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 4, .vsub = 4, .is_yuv = true }, > - { .format = DRM_FORMAT_YUV411, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 4, .vsub = 1, .is_yuv = true }, > - { .format = DRM_FORMAT_YVU411, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 4, .vsub = 1, .is_yuv = true }, > - { .format = DRM_FORMAT_YUV420, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 2, .vsub = 2, .is_yuv = true }, > - { .format = DRM_FORMAT_YVU420, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 2, .vsub = 2, .is_yuv = true }, > - { .format = DRM_FORMAT_YUV422, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 2, .vsub = 1, .is_yuv = true }, > - { .format = DRM_FORMAT_YVU422, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 2, .vsub = 1, .is_yuv = true }, > - { .format = DRM_FORMAT_YUV444, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 1, .vsub = 1, .is_yuv = true }, > - { .format = DRM_FORMAT_YVU444, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 1, .vsub = 1, .is_yuv = true }, > - { .format = DRM_FORMAT_NV12, .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 2, .is_yuv = true }, > - { .format = DRM_FORMAT_NV21, .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 2, .is_yuv = true }, > - { .format = DRM_FORMAT_NV16, .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 1, .is_yuv = true }, > - { .format = DRM_FORMAT_NV61, .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 1, .is_yuv = true }, > - { .format = DRM_FORMAT_NV24, .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 1, .vsub = 1, .is_yuv = true }, > - { .format = DRM_FORMAT_NV42, .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 1, .vsub = 1, .is_yuv = true }, > - { .format = DRM_FORMAT_YUYV, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 1, .is_yuv = true }, > - { .format = DRM_FORMAT_YVYU, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 1, .is_yuv = true }, > - { .format = DRM_FORMAT_UYVY, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 1, .is_yuv = true }, > - { .format = DRM_FORMAT_VYUY, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 1, .is_yuv = true }, > - { .format = DRM_FORMAT_AYUV, .depth = 0, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true, .is_yuv = true }, > - { .format = DRM_FORMAT_XYUV8888, .depth = 0, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .is_yuv = true }, > - { .format = DRM_FORMAT_XVYU2101010, .depth = 0, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .is_yuv = true }, > - { .format = DRM_FORMAT_Y0L0, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 2, .has_alpha = true, .is_yuv = true }, > - { .format = DRM_FORMAT_X0L0, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 2, .is_yuv = true }, > - { .format = DRM_FORMAT_Y0L2, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 2, .has_alpha = true, .is_yuv = true }, > - { .format = DRM_FORMAT_X0L2, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 2, .is_yuv = true }, > - { .format = DRM_FORMAT_P010, .depth = 0, .num_planes = 2, .cpp = { 2, 4, 0 }, .hsub = 2, .vsub = 2, .is_yuv = true }, > + { .format = DRM_FORMAT_C8, > + .depth = 8, .num_planes = 1, .cpp = { 1, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_RGB332, > + .depth = 8, .num_planes = 1, .cpp = { 1, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_BGR233, > + .depth = 8, .num_planes = 1, .cpp = { 1, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_XRGB4444, > + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_XBGR4444, > + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_RGBX4444, > + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_BGRX4444, > + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_ARGB4444, > + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_ABGR4444, > + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_RGBA4444, > + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_BGRA4444, > + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_XRGB1555, > + .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_XBGR1555, > + .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_RGBX5551, > + .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_BGRX5551, > + .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, }, > + { .format = DRM_FORMAT_ARGB1555, > + .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_ABGR1555, > + .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_RGBA5551, > + .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_BGRA5551, > + .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_RGB565, > + .depth = 16, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_BGR565, > + .depth = 16, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_RGB888, > + .depth = 24, .num_planes = 1, .cpp = { 3, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_BGR888, > + .depth = 24, .num_planes = 1, .cpp = { 3, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_XRGB8888, > + .depth = 24, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_XBGR8888, > + .depth = 24, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_RGBX8888, > + .depth = 24, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_BGRX8888, > + .depth = 24, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_RGB565_A8, > + .depth = 24, .num_planes = 2, .cpp = { 2, 1, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_BGR565_A8, > + .depth = 24, .num_planes = 2, .cpp = { 2, 1, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_XRGB2101010, > + .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_XBGR2101010, > + .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_RGBX1010102, > + .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_BGRX1010102, > + .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, > + { .format = DRM_FORMAT_ARGB2101010, > + .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_ABGR2101010, > + .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_RGBA1010102, > + .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_BGRA1010102, > + .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_ARGB8888, > + .depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_ABGR8888, > + .depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_RGBA8888, > + .depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_BGRA8888, > + .depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_RGB888_A8, > + .depth = 32, .num_planes = 2, .cpp = { 3, 1, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_BGR888_A8, > + .depth = 32, .num_planes = 2, .cpp = { 3, 1, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_XRGB8888_A8, > + .depth = 32, .num_planes = 2, .cpp = { 4, 1, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_XBGR8888_A8, > + .depth = 32, .num_planes = 2, .cpp = { 4, 1, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_RGBX8888_A8, > + .depth = 32, .num_planes = 2, .cpp = { 4, 1, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_BGRX8888_A8, > + .depth = 32, .num_planes = 2, .cpp = { 4, 1, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true }, > + { .format = DRM_FORMAT_YUV410, > + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, > + .hsub = 4, .vsub = 4, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_YVU410, > + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, > + .hsub = 4, .vsub = 4, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_YUV411, > + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, > + .hsub = 4, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_YVU411, > + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, > + .hsub = 4, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_YUV420, > + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, > + .hsub = 2, .vsub = 2, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_YVU420, > + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, > + .hsub = 2, .vsub = 2, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_YUV422, > + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, > + .hsub = 2, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_YVU422, > + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, > + .hsub = 2, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_YUV444, > + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_YVU444, > + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_NV12, > + .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, > + .hsub = 2, .vsub = 2, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_NV21, > + .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, > + .hsub = 2, .vsub = 2, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_NV16, > + .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, > + .hsub = 2, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_NV61, > + .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, > + .hsub = 2, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_NV24, > + .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_NV42, > + .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_YUYV, > + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 2, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_YVYU, > + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 2, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_UYVY, > + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 2, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_VYUY, > + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 2, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_AYUV, > + .depth = 0, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .has_alpha = true, .is_yuv = true }, > + { .format = DRM_FORMAT_XYUV8888, > + .depth = 0, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_XVYU2101010, > + .depth = 0, .num_planes = 1, .cpp = { 4, 0, 0 }, > + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > + { .format = DRM_FORMAT_Y0L0, > + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 2, .vsub = 2, .tile_w = 2, .tile_h = 2, > + .has_alpha = true, .is_yuv = true }, > + { .format = DRM_FORMAT_X0L0, > + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 2, .vsub = 2, .tile_w = 2, .tile_h = 2, > + .is_yuv = true }, > + { .format = DRM_FORMAT_Y0L2, > + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 2, .vsub = 2, .tile_w = 2, .tile_h = 2, > + .has_alpha = true, .is_yuv = true }, > + { .format = DRM_FORMAT_X0L2, > + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, > + .hsub = 2, .vsub = 2, .tile_w = 2, .tile_h = 2, > + .is_yuv = true }, > + { .format = DRM_FORMAT_P010, > + .depth = 0, .num_planes = 2, .cpp = { 2, 4, 0 }, > + .hsub = 2, .vsub = 2, .tile_w = 1, .tile_h = 1, > + .is_yuv = true }, > }; > > unsigned int i; > diff --git a/include/drm/drm_fourcc.h b/include/drm/drm_fourcc.h > index f9c15845f465..41681cf2b140 100644 > --- a/include/drm/drm_fourcc.h > +++ b/include/drm/drm_fourcc.h > @@ -38,6 +38,8 @@ struct drm_mode_fb_cmd2; > * @cpp: Number of bytes per pixel (per plane) > * @hsub: Horizontal chroma subsampling factor > * @vsub: Vertical chroma subsampling factor > + * @tile_w: Width of a tile in pixels, for non-tiled formats this should be 1 > + * @tile_h: Height of a tile in pixels, for non-tiled formats this should be 1 I think switching to inline struct members would be good. Also I think we need more details here about the units. Is this in pixels or in bytes? Also would be good to be really clear in how tiles related to cpp. Or should we want to redefine cpp as characters_per_tile? I also think that we should encode that "0 means 1", simply for a more compact table. -Daniel > * @has_alpha: Does the format embeds an alpha component? > * @is_yuv: Is it a YUV format? > */ > @@ -48,6 +50,8 @@ struct drm_format_info { > u8 cpp[3]; > u8 hsub; > u8 vsub; > + u8 tile_w; > + u8 tile_h; > bool has_alpha; > bool is_yuv; > }; > -- > 2.18.0 >
diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c index 18bb960e9943..f55cd93ba2d0 100644 --- a/drivers/gpu/drm/drm_fourcc.c +++ b/drivers/gpu/drm/drm_fourcc.c @@ -105,81 +105,283 @@ 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, .has_alpha = true }, - { .format = DRM_FORMAT_ABGR4444, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .format = DRM_FORMAT_RGBA4444, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .format = DRM_FORMAT_BGRA4444, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .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, .has_alpha = true }, - { .format = DRM_FORMAT_ABGR1555, .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .format = DRM_FORMAT_RGBA5551, .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .format = DRM_FORMAT_BGRA5551, .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .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, .has_alpha = true }, - { .format = DRM_FORMAT_BGR565_A8, .depth = 24, .num_planes = 2, .cpp = { 2, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .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, .has_alpha = true }, - { .format = DRM_FORMAT_ABGR2101010, .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .format = DRM_FORMAT_RGBA1010102, .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .format = DRM_FORMAT_BGRA1010102, .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .format = DRM_FORMAT_ARGB8888, .depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .format = DRM_FORMAT_ABGR8888, .depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .format = DRM_FORMAT_RGBA8888, .depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .format = DRM_FORMAT_BGRA8888, .depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .format = DRM_FORMAT_RGB888_A8, .depth = 32, .num_planes = 2, .cpp = { 3, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .format = DRM_FORMAT_BGR888_A8, .depth = 32, .num_planes = 2, .cpp = { 3, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .format = DRM_FORMAT_XRGB8888_A8, .depth = 32, .num_planes = 2, .cpp = { 4, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .format = DRM_FORMAT_XBGR8888_A8, .depth = 32, .num_planes = 2, .cpp = { 4, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .format = DRM_FORMAT_RGBX8888_A8, .depth = 32, .num_planes = 2, .cpp = { 4, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .format = DRM_FORMAT_BGRX8888_A8, .depth = 32, .num_planes = 2, .cpp = { 4, 1, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true }, - { .format = DRM_FORMAT_YUV410, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 4, .vsub = 4, .is_yuv = true }, - { .format = DRM_FORMAT_YVU410, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 4, .vsub = 4, .is_yuv = true }, - { .format = DRM_FORMAT_YUV411, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 4, .vsub = 1, .is_yuv = true }, - { .format = DRM_FORMAT_YVU411, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 4, .vsub = 1, .is_yuv = true }, - { .format = DRM_FORMAT_YUV420, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 2, .vsub = 2, .is_yuv = true }, - { .format = DRM_FORMAT_YVU420, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 2, .vsub = 2, .is_yuv = true }, - { .format = DRM_FORMAT_YUV422, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 2, .vsub = 1, .is_yuv = true }, - { .format = DRM_FORMAT_YVU422, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 2, .vsub = 1, .is_yuv = true }, - { .format = DRM_FORMAT_YUV444, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 1, .vsub = 1, .is_yuv = true }, - { .format = DRM_FORMAT_YVU444, .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, .hsub = 1, .vsub = 1, .is_yuv = true }, - { .format = DRM_FORMAT_NV12, .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 2, .is_yuv = true }, - { .format = DRM_FORMAT_NV21, .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 2, .is_yuv = true }, - { .format = DRM_FORMAT_NV16, .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 1, .is_yuv = true }, - { .format = DRM_FORMAT_NV61, .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 2, .vsub = 1, .is_yuv = true }, - { .format = DRM_FORMAT_NV24, .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 1, .vsub = 1, .is_yuv = true }, - { .format = DRM_FORMAT_NV42, .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, .hsub = 1, .vsub = 1, .is_yuv = true }, - { .format = DRM_FORMAT_YUYV, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 1, .is_yuv = true }, - { .format = DRM_FORMAT_YVYU, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 1, .is_yuv = true }, - { .format = DRM_FORMAT_UYVY, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 1, .is_yuv = true }, - { .format = DRM_FORMAT_VYUY, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 1, .is_yuv = true }, - { .format = DRM_FORMAT_AYUV, .depth = 0, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true, .is_yuv = true }, - { .format = DRM_FORMAT_XYUV8888, .depth = 0, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .is_yuv = true }, - { .format = DRM_FORMAT_XVYU2101010, .depth = 0, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .is_yuv = true }, - { .format = DRM_FORMAT_Y0L0, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 2, .has_alpha = true, .is_yuv = true }, - { .format = DRM_FORMAT_X0L0, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 2, .is_yuv = true }, - { .format = DRM_FORMAT_Y0L2, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 2, .has_alpha = true, .is_yuv = true }, - { .format = DRM_FORMAT_X0L2, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 2, .is_yuv = true }, - { .format = DRM_FORMAT_P010, .depth = 0, .num_planes = 2, .cpp = { 2, 4, 0 }, .hsub = 2, .vsub = 2, .is_yuv = true }, + { .format = DRM_FORMAT_C8, + .depth = 8, .num_planes = 1, .cpp = { 1, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_RGB332, + .depth = 8, .num_planes = 1, .cpp = { 1, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_BGR233, + .depth = 8, .num_planes = 1, .cpp = { 1, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_XRGB4444, + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_XBGR4444, + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_RGBX4444, + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_BGRX4444, + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_ARGB4444, + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_ABGR4444, + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_RGBA4444, + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_BGRA4444, + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_XRGB1555, + .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_XBGR1555, + .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_RGBX5551, + .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_BGRX5551, + .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, }, + { .format = DRM_FORMAT_ARGB1555, + .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_ABGR1555, + .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_RGBA5551, + .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_BGRA5551, + .depth = 15, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_RGB565, + .depth = 16, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_BGR565, + .depth = 16, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_RGB888, + .depth = 24, .num_planes = 1, .cpp = { 3, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_BGR888, + .depth = 24, .num_planes = 1, .cpp = { 3, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_XRGB8888, + .depth = 24, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_XBGR8888, + .depth = 24, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_RGBX8888, + .depth = 24, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_BGRX8888, + .depth = 24, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_RGB565_A8, + .depth = 24, .num_planes = 2, .cpp = { 2, 1, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_BGR565_A8, + .depth = 24, .num_planes = 2, .cpp = { 2, 1, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_XRGB2101010, + .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_XBGR2101010, + .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_RGBX1010102, + .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_BGRX1010102, + .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1 }, + { .format = DRM_FORMAT_ARGB2101010, + .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_ABGR2101010, + .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_RGBA1010102, + .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_BGRA1010102, + .depth = 30, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_ARGB8888, + .depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_ABGR8888, + .depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_RGBA8888, + .depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_BGRA8888, + .depth = 32, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_RGB888_A8, + .depth = 32, .num_planes = 2, .cpp = { 3, 1, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_BGR888_A8, + .depth = 32, .num_planes = 2, .cpp = { 3, 1, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_XRGB8888_A8, + .depth = 32, .num_planes = 2, .cpp = { 4, 1, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_XBGR8888_A8, + .depth = 32, .num_planes = 2, .cpp = { 4, 1, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_RGBX8888_A8, + .depth = 32, .num_planes = 2, .cpp = { 4, 1, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_BGRX8888_A8, + .depth = 32, .num_planes = 2, .cpp = { 4, 1, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true }, + { .format = DRM_FORMAT_YUV410, + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, + .hsub = 4, .vsub = 4, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_YVU410, + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, + .hsub = 4, .vsub = 4, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_YUV411, + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, + .hsub = 4, .vsub = 1, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_YVU411, + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, + .hsub = 4, .vsub = 1, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_YUV420, + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, + .hsub = 2, .vsub = 2, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_YVU420, + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, + .hsub = 2, .vsub = 2, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_YUV422, + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, + .hsub = 2, .vsub = 1, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_YVU422, + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, + .hsub = 2, .vsub = 1, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_YUV444, + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_YVU444, + .depth = 0, .num_planes = 3, .cpp = { 1, 1, 1 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_NV12, + .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, + .hsub = 2, .vsub = 2, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_NV21, + .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, + .hsub = 2, .vsub = 2, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_NV16, + .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, + .hsub = 2, .vsub = 1, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_NV61, + .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, + .hsub = 2, .vsub = 1, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_NV24, + .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_NV42, + .depth = 0, .num_planes = 2, .cpp = { 1, 2, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_YUYV, + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 2, .vsub = 1, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_YVYU, + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 2, .vsub = 1, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_UYVY, + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 2, .vsub = 1, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_VYUY, + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 2, .vsub = 1, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_AYUV, + .depth = 0, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .has_alpha = true, .is_yuv = true }, + { .format = DRM_FORMAT_XYUV8888, + .depth = 0, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_XVYU2101010, + .depth = 0, .num_planes = 1, .cpp = { 4, 0, 0 }, + .hsub = 1, .vsub = 1, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, + { .format = DRM_FORMAT_Y0L0, + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 2, .vsub = 2, .tile_w = 2, .tile_h = 2, + .has_alpha = true, .is_yuv = true }, + { .format = DRM_FORMAT_X0L0, + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 2, .vsub = 2, .tile_w = 2, .tile_h = 2, + .is_yuv = true }, + { .format = DRM_FORMAT_Y0L2, + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 2, .vsub = 2, .tile_w = 2, .tile_h = 2, + .has_alpha = true, .is_yuv = true }, + { .format = DRM_FORMAT_X0L2, + .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, + .hsub = 2, .vsub = 2, .tile_w = 2, .tile_h = 2, + .is_yuv = true }, + { .format = DRM_FORMAT_P010, + .depth = 0, .num_planes = 2, .cpp = { 2, 4, 0 }, + .hsub = 2, .vsub = 2, .tile_w = 1, .tile_h = 1, + .is_yuv = true }, }; unsigned int i; diff --git a/include/drm/drm_fourcc.h b/include/drm/drm_fourcc.h index f9c15845f465..41681cf2b140 100644 --- a/include/drm/drm_fourcc.h +++ b/include/drm/drm_fourcc.h @@ -38,6 +38,8 @@ struct drm_mode_fb_cmd2; * @cpp: Number of bytes per pixel (per plane) * @hsub: Horizontal chroma subsampling factor * @vsub: Vertical chroma subsampling factor + * @tile_w: Width of a tile in pixels, for non-tiled formats this should be 1 + * @tile_h: Height of a tile in pixels, for non-tiled formats this should be 1 * @has_alpha: Does the format embeds an alpha component? * @is_yuv: Is it a YUV format? */ @@ -48,6 +50,8 @@ struct drm_format_info { u8 cpp[3]; u8 hsub; u8 vsub; + u8 tile_w; + u8 tile_h; bool has_alpha; bool is_yuv; };
Add two new fields(tile_w and tile_h) to drm_format_info, which represent the horizontal and vertical sizes of a tile in tiled formats. This fields will be used by the next patch to add support in drm core for handling framebuffer restrictions and to correctly handle source cropping. Additionally, since I was touching drm_format_info table I decided to break the lines to the 80 characters limit, they were already getting out of hand, but let's not focus on that, I don't have any problem going back to the original line sizes or style them other way, if someone wants me to. Signed-off-by: Alexandru Gheorghe <alexandru-cosmin.gheorghe@arm.com> --- drivers/gpu/drm/drm_fourcc.c | 352 +++++++++++++++++++++++++++-------- include/drm/drm_fourcc.h | 4 + 2 files changed, 281 insertions(+), 75 deletions(-)