Hi Inki, W dniu 12.09.2018 o 01:54, Inki Dae pisze: > Hi Marek and Andrzej, > > 2018년 08월 10일 22:29에 Marek Szyprowski 이(가) 쓴 글: >> From: Andrzej Pietrasiewicz <andrzej.p@xxxxxxxxxxx> >> >> Add support for 16x16 tiled formats: NV12/NV21, YUYV and YUV420. >> <snip> >> >> -static u32 scaler_get_format(u32 drm_fmt) >> +struct scaler_format { >> + u32 drm_fmt; >> + u32 internal_fmt; >> + u32 chroma_tile_w; >> + u32 chroma_tile_h; >> +}; >> + >> +static const struct scaler_format scaler_formats[] = { >> + { DRM_FORMAT_NV12, SCALER_YUV420_2P_UV, 8, 8 }, >> + { DRM_FORMAT_NV21, SCALER_YUV420_2P_VU, 8, 8 }, >> + { DRM_FORMAT_YUV420, SCALER_YUV420_3P, 8, 8 }, >> + { DRM_FORMAT_YUYV, SCALER_YUV422_1P_YUYV, 16, 16 }, >> + { DRM_FORMAT_UYVY, SCALER_YUV422_1P_UYVY, 16, 16 }, >> + { DRM_FORMAT_YVYU, SCALER_YUV422_1P_YVYU, 16, 16 }, >> + { DRM_FORMAT_NV16, SCALER_YUV422_2P_UV, 8, 16 }, >> + { DRM_FORMAT_NV61, SCALER_YUV422_2P_VU, 8, 16 }, >> + { DRM_FORMAT_YUV422, SCALER_YUV422_3P, 8, 16 }, >> + { DRM_FORMAT_NV24, SCALER_YUV444_2P_UV, 16, 16 }, >> + { DRM_FORMAT_NV42, SCALER_YUV444_2P_VU, 16, 16 }, >> + { DRM_FORMAT_YUV444, SCALER_YUV444_3P, 16, 16 }, >> + { DRM_FORMAT_RGB565, SCALER_RGB_565, 0, 0 }, >> + { DRM_FORMAT_XRGB1555, SCALER_ARGB1555, 0, 0 }, >> + { DRM_FORMAT_ARGB1555, SCALER_ARGB1555, 0, 0 }, >> + { DRM_FORMAT_XRGB4444, SCALER_ARGB4444, 0, 0 }, >> + { DRM_FORMAT_ARGB4444, SCALER_ARGB4444, 0, 0 }, >> + { DRM_FORMAT_XRGB8888, SCALER_ARGB8888, 0, 0 }, >> + { DRM_FORMAT_ARGB8888, SCALER_ARGB8888, 0, 0 }, >> + { DRM_FORMAT_RGBX8888, SCALER_RGBA8888, 0, 0 }, >> + { DRM_FORMAT_RGBA8888, SCALER_RGBA8888, 0, 0 }, > > Seems the tile size of each format you declared above is wrong. > According to data sheet for Exynos5420/5422/5433, each plane has different tile size. > I.e., SACLE_YUV420_2P_UV/VU has two planes, and Y plane has 16 x 16 tile size but U and V plane have 8 x 8 tile size each other. > > However, above declaration has only one tile size true, but the members of struct scaler_format are called _____chroma_____tile_w/h > and it means that each plane has always same tile size. this conclusion is not justified > And also RGB formats have 16 x 16 tile size in tile mode but you declared it as 0. The data sheet says, that all formats have the same Y/RGB tile size and it is always 16x16. That is why only chroma tile size is remembered, because only chroma tile size can be different between formats. RGB formats don't have any chroma component, hence zero chroma_tile_w/h. Regards, Andrzej