diff --git a/include/uapi/display/media/mmm_color_fmt.h b/include/uapi/display/media/mmm_color_fmt.h index 193933a069..28ca82184d 100644 --- a/include/uapi/display/media/mmm_color_fmt.h +++ b/include/uapi/display/media/mmm_color_fmt.h @@ -730,6 +730,41 @@ enum mmm_color_fmts { * + UV_Stride * UV_Scanlines, 4096) */ MMM_COLOR_FMT_P010, + /* Venus P010_512: + * YUV 4:2:0 image with a plane of 10 bit Y samples followed + * by an interleaved U/V plane containing 10 bit 2x2 subsampled + * colour difference samples. + * + * <-------- Y/UV_Stride --------> + * <------- Width -------> + * Y Y Y Y Y Y Y Y Y Y Y Y . . . . ^ ^ + * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | + * Y Y Y Y Y Y Y Y Y Y Y Y . . . . Height | + * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | Y_Scanlines + * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | + * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | + * Y Y Y Y Y Y Y Y Y Y Y Y . . . . | | + * Y Y Y Y Y Y Y Y Y Y Y Y . . . . V | + * . . . . . . . . . . . . . . . . | + * . . . . . . . . . . . . . . . . | + * . . . . . . . . . . . . . . . . | + * . . . . . . . . . . . . . . . . V + * U V U V U V U V U V U V . . . . ^ + * U V U V U V U V U V U V . . . . | + * U V U V U V U V U V U V . . . . | + * U V U V U V U V U V U V . . . . UV_Scanlines + * . . . . . . . . . . . . . . . . | + * . . . . . . . . . . . . . . . . V + * . . . . . . . . . . . . . . . . --> Buffer size alignment + * + * Y_Stride : Width * 2 aligned to 512 + * UV_Stride : Width * 2 aligned to 512 + * Y_Scanlines: Height aligned to 32 + * UV_Scanlines: Height/2 aligned to 16 + * Total size = align(Y_Stride * Y_Scanlines + * + UV_Stride * UV_Scanlines, 4096) + */ + MMM_COLOR_FMT_P010_512, /* Venus NV12_512: * YUV 4:2:0 image with a plane of 8 bit Y samples followed * by an interleaved U/V plane containing 8 bit 2x2 subsampled @@ -849,6 +884,9 @@ static inline unsigned int MMM_COLOR_FMT_Y_STRIDE(unsigned int color_fmt, alignment = 256; stride = MMM_COLOR_FMT_ALIGN(width * 2, alignment); break; + case MMM_COLOR_FMT_P010_512: + alignment = 512; + stride = MMM_COLOR_FMT_ALIGN(width * 2, alignment); default: break; } @@ -892,6 +930,10 @@ static inline unsigned int MMM_COLOR_FMT_UV_STRIDE(unsigned int color_fmt, alignment = 256; stride = MMM_COLOR_FMT_ALIGN(width * 2, alignment); break; + case MMM_COLOR_FMT_P010_512: + alignment = 512; + stride = MMM_COLOR_FMT_ALIGN(width * 2, alignment); + break; default: break; } @@ -921,6 +963,7 @@ static inline unsigned int MMM_COLOR_FMT_Y_SCANLINES(unsigned int color_fmt, case MMM_COLOR_FMT_NV12: case MMM_COLOR_FMT_NV21: case MMM_COLOR_FMT_NV12_UBWC: + case MMM_COLOR_FMT_P010_512: case MMM_COLOR_FMT_P010: alignment = 32; break; @@ -960,6 +1003,7 @@ static inline unsigned int MMM_COLOR_FMT_UV_SCANLINES(unsigned int color_fmt, case MMM_COLOR_FMT_NV21: case MMM_COLOR_FMT_NV12_BPP10_UBWC: case MMM_COLOR_FMT_P010_UBWC: + case MMM_COLOR_FMT_P010_512: case MMM_COLOR_FMT_P010: alignment = 16; break; @@ -1266,6 +1310,7 @@ static inline unsigned int MMM_COLOR_FMT_BUFFER_SIZE(unsigned int color_fmt, switch (color_fmt) { case MMM_COLOR_FMT_NV21: case MMM_COLOR_FMT_NV12: + case MMM_COLOR_FMT_P010_512: case MMM_COLOR_FMT_P010: case MMM_COLOR_FMT_NV12_512: y_plane = y_stride * y_sclines;