Message ID | 1461832839-5838-1-git-send-email-fabien.dessenne@st.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, Apr 28, 2016 at 10:40:39AM +0200, Fabien Dessenne wrote: > With NV12, NV21, NV16 and NV61 formats, the size of one pixel from the > UV plane (plane #1) is one byte. > > Indeed, these pixel formats use 4:2:x chroma subsampling: the chroma > pixels are sampled at half the luma: for 2 pixels, there are 1 Cb + > 1 Cr = 2 bytes. You just said it, it's 2 bytes. NAK > So for plane #1, the correct size is actually 1 byte per pixel. > > Signed-off-by: Fabien Dessenne <fabien.dessenne@st.com> > --- > drivers/gpu/drm/drm_crtc.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c > index 3313f7e..572c6fa 100644 > --- a/drivers/gpu/drm/drm_crtc.c > +++ b/drivers/gpu/drm/drm_crtc.c > @@ -5618,10 +5618,6 @@ int drm_format_plane_cpp(uint32_t format, int plane) > case DRM_FORMAT_UYVY: > case DRM_FORMAT_VYUY: > return 2; > - case DRM_FORMAT_NV12: > - case DRM_FORMAT_NV21: > - case DRM_FORMAT_NV16: > - case DRM_FORMAT_NV61: > case DRM_FORMAT_NV24: > case DRM_FORMAT_NV42: > return plane ? 2 : 1; > @@ -5635,6 +5631,10 @@ int drm_format_plane_cpp(uint32_t format, int plane) > case DRM_FORMAT_YVU422: > case DRM_FORMAT_YUV444: > case DRM_FORMAT_YVU444: > + case DRM_FORMAT_NV12: > + case DRM_FORMAT_NV21: > + case DRM_FORMAT_NV16: > + case DRM_FORMAT_NV61: > return 1; > default: > drm_fb_get_bpp_depth(format, &depth, &bpp); > -- > 1.9.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel
diff --git a/drivers/gpu/drm/drm_crtc.c b/drivers/gpu/drm/drm_crtc.c index 3313f7e..572c6fa 100644 --- a/drivers/gpu/drm/drm_crtc.c +++ b/drivers/gpu/drm/drm_crtc.c @@ -5618,10 +5618,6 @@ int drm_format_plane_cpp(uint32_t format, int plane) case DRM_FORMAT_UYVY: case DRM_FORMAT_VYUY: return 2; - case DRM_FORMAT_NV12: - case DRM_FORMAT_NV21: - case DRM_FORMAT_NV16: - case DRM_FORMAT_NV61: case DRM_FORMAT_NV24: case DRM_FORMAT_NV42: return plane ? 2 : 1; @@ -5635,6 +5631,10 @@ int drm_format_plane_cpp(uint32_t format, int plane) case DRM_FORMAT_YVU422: case DRM_FORMAT_YUV444: case DRM_FORMAT_YVU444: + case DRM_FORMAT_NV12: + case DRM_FORMAT_NV21: + case DRM_FORMAT_NV16: + case DRM_FORMAT_NV61: return 1; default: drm_fb_get_bpp_depth(format, &depth, &bpp);
With NV12, NV21, NV16 and NV61 formats, the size of one pixel from the UV plane (plane #1) is one byte. Indeed, these pixel formats use 4:2:x chroma subsampling: the chroma pixels are sampled at half the luma: for 2 pixels, there are 1 Cb + 1 Cr = 2 bytes. So for plane #1, the correct size is actually 1 byte per pixel. Signed-off-by: Fabien Dessenne <fabien.dessenne@st.com> --- drivers/gpu/drm/drm_crtc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)