Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ab3b8db5 authored by Amit Shekhar's avatar Amit Shekhar
Browse files

uapi: Fix linear color format alignment



Fix linear color format alignment. Alignment follows:
Y_Stride: Width should be aligned to 512.
UV_Stride: Width should be aligned to 512.
Y_Scanlines: Height should be aligned to 512.
UV_Scanlines: Height/2 should be aligned to 256.

Change-Id: Id858b656746b574a2b2ef0db6de5478e73eeb136
Signed-off-by: default avatarAmit Shekhar <ashekhar@codeaurora.org>
parent 0d1c79d7
Loading
Loading
Loading
Loading
+9 −1
Original line number Original line Diff line number Diff line
@@ -480,7 +480,15 @@ struct msm_vidc_format_constraint dec_pix_format_constraints[] = {
		.fourcc = V4L2_PIX_FMT_NV12,
		.fourcc = V4L2_PIX_FMT_NV12,
		.num_planes = 2,
		.num_planes = 2,
		.y_max_stride = 8192,
		.y_max_stride = 8192,
		.y_buffer_alignment = 256,
		.y_buffer_alignment = 512,
		.uv_max_stride = 8192,
		.uv_buffer_alignment = 256,
	},
	{
		.fourcc = V4L2_PIX_FMT_NV21,
		.num_planes = 2,
		.y_max_stride = 8192,
		.y_buffer_alignment = 512,
		.uv_max_stride = 8192,
		.uv_max_stride = 8192,
		.uv_buffer_alignment = 256,
		.uv_buffer_alignment = 256,
	},
	},
+9 −1
Original line number Original line Diff line number Diff line
@@ -1015,7 +1015,15 @@ struct msm_vidc_format_constraint enc_pix_format_constraints[] = {
		.fourcc = V4L2_PIX_FMT_NV12,
		.fourcc = V4L2_PIX_FMT_NV12,
		.num_planes = 2,
		.num_planes = 2,
		.y_max_stride = 8192,
		.y_max_stride = 8192,
		.y_buffer_alignment = 256,
		.y_buffer_alignment = 512,
		.uv_max_stride = 8192,
		.uv_buffer_alignment = 256,
	},
	{
		.fourcc = V4L2_PIX_FMT_NV21,
		.num_planes = 2,
		.y_max_stride = 8192,
		.y_buffer_alignment = 512,
		.uv_max_stride = 8192,
		.uv_max_stride = 8192,
		.uv_buffer_alignment = 256,
		.uv_buffer_alignment = 256,
	},
	},
+24 −24
Original line number Original line Diff line number Diff line
@@ -40,10 +40,10 @@ enum color_fmts {
	 * . . . . . . . . . . . . . . . .  V
	 * . . . . . . . . . . . . . . . .  V
	 * . . . . . . . . . . . . . . . .  --> Buffer size alignment
	 * . . . . . . . . . . . . . . . .  --> Buffer size alignment
	 *
	 *
	 * Y_Stride : Width aligned to 128
	 * Y_Stride : Width aligned to 512
	 * UV_Stride : Width aligned to 128
	 * UV_Stride : Width aligned to 512
	 * Y_Scanlines: Height aligned to 32
	 * Y_Scanlines: Height aligned to 512
	 * UV_Scanlines: Height/2 aligned to 16
	 * UV_Scanlines: Height/2 aligned to 256
	 * Total size = align(Y_Stride * Y_Scanlines
	 * Total size = align(Y_Stride * Y_Scanlines
	 *          + UV_Stride * UV_Scanlines, 4096)
	 *          + UV_Stride * UV_Scanlines, 4096)
	 */
	 */
@@ -75,10 +75,10 @@ enum color_fmts {
	 * . . . . . . . . . . . . . . . .  V
	 * . . . . . . . . . . . . . . . .  V
	 * . . . . . . . . . . . . . . . .  --> Padding & Buffer size alignment
	 * . . . . . . . . . . . . . . . .  --> Padding & Buffer size alignment
	 *
	 *
	 * Y_Stride : Width aligned to 128
	 * Y_Stride : Width aligned to 512
	 * UV_Stride : Width aligned to 128
	 * UV_Stride : Width aligned to 512
	 * Y_Scanlines: Height aligned to 32
	 * Y_Scanlines: Height aligned to 512
	 * UV_Scanlines: Height/2 aligned to 16
	 * UV_Scanlines: Height/2 aligned to 256
	 * Total size = align(Y_Stride * Y_Scanlines
	 * Total size = align(Y_Stride * Y_Scanlines
	 *          + UV_Stride * UV_Scanlines, 4096)
	 *          + UV_Stride * UV_Scanlines, 4096)
	 */
	 */
@@ -775,16 +775,16 @@ static inline unsigned int VENUS_Y_STRIDE(unsigned int color_fmt,
		goto invalid_input;
		goto invalid_input;


	switch (color_fmt) {
	switch (color_fmt) {
	case COLOR_FMT_NV21:
	case COLOR_FMT_NV12:
	case COLOR_FMT_NV12:
	case COLOR_FMT_NV12_UBWC:
	case COLOR_FMT_NV21:
		alignment = 128;
		stride = MSM_MEDIA_ALIGN(width, alignment);
		break;
	case COLOR_FMT_NV12_512:
	case COLOR_FMT_NV12_512:
		alignment = 512;
		alignment = 512;
		stride = MSM_MEDIA_ALIGN(width, alignment);
		stride = MSM_MEDIA_ALIGN(width, alignment);
		break;
		break;
	case COLOR_FMT_NV12_UBWC:
		alignment = 128;
		stride = MSM_MEDIA_ALIGN(width, alignment);
		break;
	case COLOR_FMT_NV12_BPP10_UBWC:
	case COLOR_FMT_NV12_BPP10_UBWC:
		alignment = 256;
		alignment = 256;
		stride = MSM_MEDIA_ALIGN(width, 192);
		stride = MSM_MEDIA_ALIGN(width, 192);
@@ -820,14 +820,14 @@ static inline unsigned int VENUS_UV_STRIDE(unsigned int color_fmt,
	switch (color_fmt) {
	switch (color_fmt) {
	case COLOR_FMT_NV21:
	case COLOR_FMT_NV21:
	case COLOR_FMT_NV12:
	case COLOR_FMT_NV12:
	case COLOR_FMT_NV12_UBWC:
		alignment = 128;
		stride = MSM_MEDIA_ALIGN(width, alignment);
		break;
	case COLOR_FMT_NV12_512:
	case COLOR_FMT_NV12_512:
		alignment = 512;
		alignment = 512;
		stride = MSM_MEDIA_ALIGN(width, alignment);
		stride = MSM_MEDIA_ALIGN(width, alignment);
		break;
		break;
	case COLOR_FMT_NV12_UBWC:
		alignment = 128;
		stride = MSM_MEDIA_ALIGN(width, alignment);
		break;
	case COLOR_FMT_NV12_BPP10_UBWC:
	case COLOR_FMT_NV12_BPP10_UBWC:
		alignment = 256;
		alignment = 256;
		stride = MSM_MEDIA_ALIGN(width, 192);
		stride = MSM_MEDIA_ALIGN(width, 192);
@@ -861,15 +861,15 @@ static inline unsigned int VENUS_Y_SCANLINES(unsigned int color_fmt,
		goto invalid_input;
		goto invalid_input;


	switch (color_fmt) {
	switch (color_fmt) {
	case COLOR_FMT_NV21:
	case COLOR_FMT_NV12:
	case COLOR_FMT_NV12:
	case COLOR_FMT_NV21:
	case COLOR_FMT_NV12_512:
		alignment = 512;
		break;
	case COLOR_FMT_NV12_UBWC:
	case COLOR_FMT_NV12_UBWC:
	case COLOR_FMT_P010:
	case COLOR_FMT_P010:
		alignment = 32;
		alignment = 32;
		break;
		break;
	case COLOR_FMT_NV12_512:
		alignment = 512;
		break;
	case COLOR_FMT_NV12_BPP10_UBWC:
	case COLOR_FMT_NV12_BPP10_UBWC:
	case COLOR_FMT_P010_UBWC:
	case COLOR_FMT_P010_UBWC:
		alignment = 16;
		alignment = 16;
@@ -900,14 +900,14 @@ static inline unsigned int VENUS_UV_SCANLINES(unsigned int color_fmt,
	switch (color_fmt) {
	switch (color_fmt) {
	case COLOR_FMT_NV21:
	case COLOR_FMT_NV21:
	case COLOR_FMT_NV12:
	case COLOR_FMT_NV12:
	case COLOR_FMT_NV12_512:
		alignment = 256;
		break;
	case COLOR_FMT_NV12_BPP10_UBWC:
	case COLOR_FMT_NV12_BPP10_UBWC:
	case COLOR_FMT_P010_UBWC:
	case COLOR_FMT_P010_UBWC:
	case COLOR_FMT_P010:
	case COLOR_FMT_P010:
		alignment = 16;
		alignment = 16;
		break;
		break;
	case COLOR_FMT_NV12_512:
		alignment = 256;
		break;
	case COLOR_FMT_NV12_UBWC:
	case COLOR_FMT_NV12_UBWC:
		alignment = 32;
		alignment = 32;
		break;
		break;