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

Commit 923b6721 authored by Alan Kwong's avatar Alan Kwong Committed by Steve Cohen
Browse files

msm: sde: add P010 Venus support for rotator



Add P010 Venus support for v4l2 offline rotator.
P010 Venus format has additional stride requirements
over P010 linear format.

Change-Id: Id1c786b56422447cf5a4633848a9fb35f02727b7
Signed-off-by: default avatarAlan Kwong <akwong@codeaurora.org>
parent 37132a93
Loading
Loading
Loading
Loading
+26 −1
Original line number Diff line number Diff line
@@ -84,6 +84,16 @@
		.is_ubwc = isubwc,				\
	}

#define FMT_YUV10_COMMON(fmt)					\
		.format = (fmt),				\
		.is_yuv = 1,					\
		.bits = {					\
			[C2_R_Cr] = SDE_COLOR_8BIT,		\
			[C0_G_Y] = SDE_COLOR_8BIT,		\
			[C1_B_Cb] = SDE_COLOR_8BIT,		\
		},						\
		.alpha_enable = 0

#define FMT_YUV_COMMON(fmt)					\
		.format = (fmt),				\
		.is_yuv = 1,					\
@@ -643,7 +653,7 @@ static struct sde_mdp_format_params sde_mdp_format_map[] = {
		0, C2_R_Cr, C1_B_Cb, SDE_MDP_COMPRESS_NONE),

	{
		FMT_YUV_COMMON(SDE_PIX_FMT_Y_CBCR_H2V2_P010),
		FMT_YUV10_COMMON(SDE_PIX_FMT_Y_CBCR_H2V2_P010),
		.description = "SDE/Y_CBCR_H2V2_P010",
		.flag = 0,
		.fetch_planes = SDE_MDP_PLANE_PSEUDO_PLANAR,
@@ -657,6 +667,21 @@ static struct sde_mdp_format_params sde_mdp_format_map[] = {
		.unpack_align_msb = 1,
		.is_ubwc = SDE_MDP_COMPRESS_NONE,
	},
	{
		FMT_YUV10_COMMON(SDE_PIX_FMT_Y_CBCR_H2V2_P010_VENUS),
		.description = "SDE/Y_CBCR_H2V2_P010_VENUS",
		.flag = 0,
		.fetch_planes = SDE_MDP_PLANE_PSEUDO_PLANAR,
		.chroma_sample = SDE_MDP_CHROMA_420,
		.unpack_count = 2,
		.bpp = 2,
		.frame_format = SDE_MDP_FMT_LINEAR,
		.pixel_mode = SDE_MDP_PIXEL_10BIT,
		.element = { C1_B_Cb, C2_R_Cr },
		.unpack_tight = 0,
		.unpack_align_msb = 1,
		.is_ubwc = SDE_MDP_COMPRESS_NONE,
	},
	{
		FMT_YUV_COMMON(SDE_PIX_FMT_Y_CBCR_H2V2_TP10),
		.description = "SDE/Y_CBCR_H2V2_TP10",
+2 −0
Original line number Diff line number Diff line
@@ -311,6 +311,7 @@ static const u32 sde_hw_rotator_v4_inpixfmts[] = {
	SDE_PIX_FMT_RGBA_1010102_UBWC,
	SDE_PIX_FMT_RGBX_1010102_UBWC,
	SDE_PIX_FMT_Y_CBCR_H2V2_P010,
	SDE_PIX_FMT_Y_CBCR_H2V2_P010_VENUS,
	SDE_PIX_FMT_Y_CBCR_H2V2_TP10,
	SDE_PIX_FMT_Y_CBCR_H2V2_TP10_UBWC,
	SDE_PIX_FMT_Y_CBCR_H2V2_P010_UBWC,
@@ -391,6 +392,7 @@ static const u32 sde_hw_rotator_v4_outpixfmts[] = {
	SDE_PIX_FMT_RGBA_1010102_UBWC,
	SDE_PIX_FMT_RGBX_1010102_UBWC,
	SDE_PIX_FMT_Y_CBCR_H2V2_P010,
	SDE_PIX_FMT_Y_CBCR_H2V2_P010_VENUS,
	SDE_PIX_FMT_Y_CBCR_H2V2_TP10,
	SDE_PIX_FMT_Y_CBCR_H2V2_TP10_UBWC,
	SDE_PIX_FMT_Y_CBCR_H2V2_P010_UBWC,
+20 −3
Original line number Diff line number Diff line
@@ -350,10 +350,27 @@ int sde_mdp_get_plane_sizes(struct sde_mdp_format_params *fmt, u32 w, u32 h,
			ps->plane_size[0] = w * h * bpp;
			ps->ystride[0] = w * bpp;
		} else if (fmt->format == SDE_PIX_FMT_Y_CBCR_H2V2_VENUS ||
				fmt->format == SDE_PIX_FMT_Y_CRCB_H2V2_VENUS) {
			fmt->format == SDE_PIX_FMT_Y_CRCB_H2V2_VENUS ||
			fmt->format == SDE_PIX_FMT_Y_CBCR_H2V2_P010_VENUS) {

			int cf;

			switch (fmt->format) {
			case SDE_PIX_FMT_Y_CBCR_H2V2_VENUS:
				cf = COLOR_FMT_NV12;
				break;
			case SDE_PIX_FMT_Y_CRCB_H2V2_VENUS:
				cf = COLOR_FMT_NV21;
				break;
			case SDE_PIX_FMT_Y_CBCR_H2V2_P010_VENUS:
				cf = COLOR_FMT_P010;
				break;
			default:
				SDEROT_ERR("unknown color format %d\n",
						fmt->format);
				return -EINVAL;
			}

			int cf = (fmt->format == SDE_PIX_FMT_Y_CBCR_H2V2_VENUS)
					? COLOR_FMT_NV12 : COLOR_FMT_NV21;
			ps->num_planes = 2;
			ps->ystride[0] = VENUS_Y_STRIDE(cf, w);
			ps->ystride[1] = VENUS_UV_STRIDE(cf, w);
+2 −0
Original line number Diff line number Diff line
@@ -61,6 +61,8 @@
#define SDE_PIX_FMT_RGBA_1010102_UBWC	V4L2_PIX_FMT_SDE_RGBA_1010102_UBWC
#define SDE_PIX_FMT_RGBX_1010102_UBWC	V4L2_PIX_FMT_SDE_RGBX_1010102_UBWC
#define SDE_PIX_FMT_Y_CBCR_H2V2_P010	V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_P010
#define SDE_PIX_FMT_Y_CBCR_H2V2_P010_VENUS \
	V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_P010_VENUS
#define SDE_PIX_FMT_Y_CBCR_H2V2_TP10	V4L2_PIX_FMT_SDE_Y_CBCR_H2V2_TP10
#define SDE_PIX_FMT_Y_CBCR_H2V2_TP10_UBWC	V4L2_PIX_FMT_NV12_TP10_UBWC
#define SDE_PIX_FMT_Y_CBCR_H2V2_P010_UBWC	V4L2_PIX_FMT_NV12_P010_UBWC