OSDN Git Service

drm: drm_fourcc: add NV15, Q410, Q401 YUV formats
authorBen Davis <ben.davis@arm.com>
Mon, 1 Jun 2020 16:28:17 +0000 (17:28 +0100)
committerLiviu Dudau <Liviu.Dudau@arm.com>
Fri, 19 Jun 2020 12:33:40 +0000 (13:33 +0100)
commit94b292b277343190175d39172c903c0c5fb814f1
tree717d75b1547f0aa6f46dce19cdf681d898c28538
parent114427b8927a4def2942b2b886f7e4aeae289ccb
drm: drm_fourcc: add NV15, Q410, Q401 YUV formats

DRM_FORMAT_NV15 is a 2 plane format suitable for linear and 16x16
block-linear memory layouts (DRM_FORMAT_MOD_SAMSUNG_16_16_TILE). The
format is similar to P010 with 4:2:0 sub-sampling but has no padding
between components. Instead, luminance and chrominance samples are
grouped into 4s so that each group is packed into an integer number
of bytes:

YYYY = UVUV = 4 * 10 bits = 40 bits = 5 bytes

The '15' suffix refers to the optimum effective bits per pixel which is
achieved when the total number of luminance samples is a multiple of 8.

Q410 and Q401 are both 3 plane non-subsampled formats with 16 bits per
component, but only 10 bits are used and 6 are padded. 'Q' is chosen
as the first letter to denote 3 plane YUV444, (and is the next letter
along from P which is usually 2 plane).

V2: Updated block_w of NV15 to {4, 2, 0}
V3: Updated commit message to include specific modifier name

NV15:
Tested-by: Jonas Karlman <jonas@kwiboo.se>
Reviewed-by: Brian Starkey <brian.starkey@arm.com>
Signed-off-by: Ben Davis <ben.davis@arm.com>
Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200601162817.18230-1-ben.davis@arm.com
drivers/gpu/drm/drm_fourcc.c
include/uapi/drm/drm_fourcc.h