[PATCH v2 1/5] drm/fourcc: Add new fourcc for malidp uncompressed formats
Juha-Pekka Heikkilä
juha-pekka.heikkila at intel.com
Wed Aug 22 10:59:23 UTC 2018
On 22.08.2018 13:50, Alexandru-Cosmin Gheorghe wrote:
> Hi,
>
> On Wed, Aug 22, 2018 at 01:39:16PM +0300, Juha-Pekka Heikkilä wrote:
>>
>> On 22.08.2018 12:40, Daniel Vetter wrote:
>>> On Tue, Aug 21, 2018 at 8:30 PM, Alexandru Gheorghe
>>> <alexandru-cosmin.gheorghe at arm.com> wrote:
>>>> Malidp implements a number of yuv buffer formats which are not
>>>> currently described in drm_fourcc.h.
>>>> This adds those definitions and describes their memory layout.
>>>>
>>>> Signed-off-by: Alexandru Gheorghe <alexandru-cosmin.gheorghe at arm.com>
>>>
>>> We're working on adding at least some of these for i915 too. Adding
>>> the relevant people, to make sure we end up with agreeing drm_fourcc.h
>>> codes.
>>>
>>> JP, Swati, please take a look at this and review.
>>>
>>> Thanks, Daniel
>>>
>>>> ---
>>>> drivers/gpu/drm/drm_fourcc.c | 7 +++++++
>>>> include/uapi/drm/drm_fourcc.h | 27 ++++++++++++++++++++++++++-
>>>> 2 files changed, 33 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c
>>>> index 35c1e2742c27..18bb960e9943 100644
>>>> --- a/drivers/gpu/drm/drm_fourcc.c
>>>> +++ b/drivers/gpu/drm/drm_fourcc.c
>>>> @@ -173,6 +173,13 @@ const struct drm_format_info *__drm_format_info(u32 format)
>>>> { .format = DRM_FORMAT_UYVY, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 1, .is_yuv = true },
>>>> { .format = DRM_FORMAT_VYUY, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 1, .is_yuv = true },
>>>> { .format = DRM_FORMAT_AYUV, .depth = 0, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .has_alpha = true, .is_yuv = true },
>>>> + { .format = DRM_FORMAT_XYUV8888, .depth = 0, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .is_yuv = true },
>>>> + { .format = DRM_FORMAT_XVYU2101010, .depth = 0, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1, .is_yuv = true },
>>>> + { .format = DRM_FORMAT_Y0L0, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 2, .has_alpha = true, .is_yuv = true },
>>>> + { .format = DRM_FORMAT_X0L0, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 2, .is_yuv = true },
>>>> + { .format = DRM_FORMAT_Y0L2, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 2, .has_alpha = true, .is_yuv = true },
>>>> + { .format = DRM_FORMAT_X0L2, .depth = 0, .num_planes = 1, .cpp = { 2, 0, 0 }, .hsub = 2, .vsub = 2, .is_yuv = true },
>>>> + { .format = DRM_FORMAT_P010, .depth = 0, .num_planes = 2, .cpp = { 2, 4, 0 }, .hsub = 2, .vsub = 2, .is_yuv = true },
>>>> };
>>>>
>>>> unsigned int i;
>>>> diff --git a/include/uapi/drm/drm_fourcc.h b/include/uapi/drm/drm_fourcc.h
>>>> index 21c50b39596f..5e01fbcd7a30 100644
>>>> --- a/include/uapi/drm/drm_fourcc.h
>>>> +++ b/include/uapi/drm/drm_fourcc.h
>>>> @@ -141,13 +141,31 @@ extern "C" {
>>>> #define DRM_FORMAT_RGBA1010102 fourcc_code('R', 'A', '3', '0') /* [31:0] R:G:B:A 10:10:10:2 little endian */
>>>> #define DRM_FORMAT_BGRA1010102 fourcc_code('B', 'A', '3', '0') /* [31:0] B:G:R:A 10:10:10:2 little endian */
>>>>
>>>> -/* packed YCbCr */
>>>> +/* packed YCbCr422 */
>>>> #define DRM_FORMAT_YUYV fourcc_code('Y', 'U', 'Y', 'V') /* [31:0] Cr0:Y1:Cb0:Y0 8:8:8:8 little endian */
>>>> #define DRM_FORMAT_YVYU fourcc_code('Y', 'V', 'Y', 'U') /* [31:0] Cb0:Y1:Cr0:Y0 8:8:8:8 little endian */
>>>> #define DRM_FORMAT_UYVY fourcc_code('U', 'Y', 'V', 'Y') /* [31:0] Y1:Cr0:Y0:Cb0 8:8:8:8 little endian */
>>>> #define DRM_FORMAT_VYUY fourcc_code('V', 'Y', 'U', 'Y') /* [31:0] Y1:Cb0:Y0:Cr0 8:8:8:8 little endian */
>>>>
>>>> +/* packed YCbCr444 */
>>>> #define DRM_FORMAT_AYUV fourcc_code('A', 'Y', 'U', 'V') /* [31:0] A:Y:Cb:Cr 8:8:8:8 little endian */
>>>> +#define DRM_FORMAT_XYUV8888 fourcc_code('X', 'Y', 'U', 'V') /* [31:0] X:Y:Cb:Cr 8:8:8:8 little endian */
>>>> +#define DRM_FORMAT_XVYU2101010 fourcc_code('X', 'V', '3', '0') /* [31:0] X:Cr:Y:Cb 2:10:10:10 little endian */
>>>> +
>>>> +/*
>>>> + * packed YCbCr420 2x2 tiled formats
>>>> + * first 64 bits will contain Y,Cb,Cr components for a 2x2 tile
>>>> + */
>>>> +
>>>> +/* [63:0] A3:A2:Y3:0:Cr0:0:Y2:0:A1:A0:Y1:0:Cb0:0:Y0:0 1:1:8:2:8:2:8:2:1:1:8:2:8:2:8:2 little endian */
>>>> +#define DRM_FORMAT_Y0L0 fourcc_code('Y', '0', 'L', '0')
>>>> +/* [63:0] X3:X2:Y3:0:Cr0:0:Y2:0:X1:X0:Y1:0:Cb0:0:Y0:0 1:1:8:2:8:2:8:2:1:1:8:2:8:2:8:2 little endian */
>>>> +#define DRM_FORMAT_X0L0 fourcc_code('X', '0', 'L', '0')
>>>> +
>>>> +/* [63:0] A3:A2:Y3:Cr0:Y2:A1:A0:Y1:Cb0:Y0 1:1:10:10:10:1:1:10:10:10 little endian */
>>>> +#define DRM_FORMAT_Y0L2 fourcc_code('Y', '0', 'L', '2')
>>>> +/* [63:0] X3:X2:Y3:Cr0:Y2:X1:X0:Y1:Cb0:Y0 1:1:10:10:10:1:1:10:10:10 little endian */
>>>> +#define DRM_FORMAT_X0L2 fourcc_code('X', '0', 'L', '2')
>>>>
>>>> /*
>>>> * 2 plane RGB + A
>>>> @@ -177,6 +195,13 @@ extern "C" {
>>>> #define DRM_FORMAT_NV24 fourcc_code('N', 'V', '2', '4') /* non-subsampled Cr:Cb plane */
>>>> #define DRM_FORMAT_NV42 fourcc_code('N', 'V', '4', '2') /* non-subsampled Cb:Cr plane */
>>>>
>>>> +/*
>>>> + * Each sample packed into the top 10 bits of a 16-bit word.
>>>> + * Y plane: [63:0] Y3:0:Y2:0:Y1:0:Y0:0, 10:6:10:6:10:6:10:6
>>>> + * CrCb plane: [63:0] Cr2:0:Cb2:0:Cr0:0:Cb0:0, 10:6:10:6:10:6:10:6
>>>> + */
>>
>> There are more of these P01X formats than just P010 so above description
>> should be written taking that into account. You can see my version here:
>> https://lists.freedesktop.org/archives/dri-devel/2018-August/186590.html
>>
>> Maybe you can use my patch for this part?
>
> Nothing against that, I'm more than happy to rebase my series when that
> gets merged.
>
> I see your patch had been already reviewed, anything holding it back
> from getting merged in drm-misc-next ?
I don't think there's anything really blocking it. Nobody just acted on
it and I don't have access to do that. :)
/Juha-Pekka
---------------------------------------------------------------------
Intel Finland Oy
Registered Address: PL 281, 00181 Helsinki
Business Identity Code: 0357606 - 4
Domiciled in Helsinki
This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
More information about the dri-devel
mailing list