From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on archive.lwn.net X-Spam-Level: X-Spam-Status: No, score=-6.0 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham autolearn_force=no version=3.4.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by archive.lwn.net (Postfix) with ESMTP id B31F57DBEB for ; Mon, 3 Dec 2018 11:32:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726273AbeLCLcp (ORCPT ); Mon, 3 Dec 2018 06:32:45 -0500 Received: from mail-eopbgr20052.outbound.protection.outlook.com ([40.107.2.52]:21376 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726328AbeLCLcp (ORCPT ); Mon, 3 Dec 2018 06:32:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dH0HviKmC/Vu8HUFZckW3p6Xx9+TL8TchyZ+aFdpbQ8=; b=nzY4qQdQVef7LBkxB4s3pOWdtle+BaRQtRBMZctFPAVw84itNWhwhRDnrGSvnohEdQdexsHHlRbrEkdP9Os09e0PkJ7u2yIyT01PJNNNIbpv3HE1y7x37EX4xJ3gsyvpHWs5HkLKFZO11bATYf9aY8C7+CgT9sOH4oSOJrEd4Zk= Received: from AM0PR08MB3891.eurprd08.prod.outlook.com (20.178.82.147) by AM0PR08MB3491.eurprd08.prod.outlook.com (20.177.108.222) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1382.18; Mon, 3 Dec 2018 11:31:55 +0000 Received: from AM0PR08MB3891.eurprd08.prod.outlook.com ([fe80::896a:710:2a8c:e2fa]) by AM0PR08MB3891.eurprd08.prod.outlook.com ([fe80::896a:710:2a8c:e2fa%6]) with mapi id 15.20.1382.020; Mon, 3 Dec 2018 11:31:55 +0000 From: Ayan Halder To: Ayan Halder , Liviu Dudau , Brian Starkey , "malidp@foss.arm.com" , "airlied@linux.ie" , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , "maxime.ripard@bootlin.com" , "sean@poorly.run" , "maarten.lankhorst@linux.intel.com" , "corbet@lwn.net" , "mchehab+samsung@kernel.org" , "gregkh@linuxfoundation.org" , "davem@davemloft.net" , "akpm@linux-foundation.org" , "nicolas.ferre@microchip.com" , "arnd@arndb.de" , "linux-doc@vger.kernel.org" CC: nd Subject: [RFC AFBC 01/12] drm/fourcc: Add AFBC yuv fourccs for Mali Thread-Topic: [RFC AFBC 01/12] drm/fourcc: Add AFBC yuv fourccs for Mali Thread-Index: AQHUivvLhdpemUHBzUiBjUfFvAvaaA== Date: Mon, 3 Dec 2018 11:31:55 +0000 Message-ID: <1543836703-8491-2-git-send-email-ayan.halder@arm.com> References: <1543836703-8491-1-git-send-email-ayan.halder@arm.com> In-Reply-To: <1543836703-8491-1-git-send-email-ayan.halder@arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0279.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a1::27) To AM0PR08MB3891.eurprd08.prod.outlook.com (2603:10a6:208:109::19) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Ayan.Halder@arm.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [217.140.106.55] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;AM0PR08MB3491;6:im3xltO+QvRTRNm9ZEDbV7hOO9j+jn7gVfJBN6bBYxkIIfHQCUHWt5m2GcHq6EqnvQUKpQPiCQfppY3nJi9q9rMhfKM0jlPQKTWaWnl6AnQoSA37wGf59iCojEiSDy7MnaKIsFKnbduXQPk2y7k3eLLetCTgrypPB/IjbNCEOkG3wXl876kB2Qt9HW37DfV0WynpK50iF2x0vYIha7MN/oMmpzv9CMA76VDMGDRsBbd4S68b+Qo8BbJenR+6bBqaxYneRqSrTsaonuMSAQ+1Ru7NYb6yVCPl6KnREYLoQU8ulclLcrfIG7wTpYKS2pIMqi1IJ6yE+LWQHrToCIo3VyIwKt7mS9agsyEM3F11nI8JOAsyOojc8awSfPUMtYcajjSyPCORlUnS00q/NzX2I91vHwGMtXTDuW6qnYfpmQuDaWnvNkIh5CD0cBlhfsLSQntxuh3RdoJZ47C/dS24dg==;5:ty1jcSNhQGBZARw+V4YRIEWaOtgeudYpZByFXk/FGbd3ewmuHPaw7u2Mh8MKowJhktmJ5mmCwg/P5n9/4ivMtfG21PdwmIXpgLOxmHi/hSeatnsv2K35ArsBUDJJoY976aUZALTXIigDbICHb2Z0Wgg5YzwJONs/Q9oVT11Z5QE=;7:K8GmGXUoW0ZD8AVYuq2cPitfYZpGjCJ+lPog2vFPWVKhQnoXePRQ1iLSPyBjyM4jVpVrC53kggqDx3YwzhUHwmg+Pq9w607LNdR88arb3mOCCM6xsntkFHpEIM0MYR+2gVMU3XwsB6zUU1G8pnyaZA== x-ms-office365-filtering-correlation-id: 16f270d2-6ee7-4667-0d5f-08d65912eda2 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020);SRVR:AM0PR08MB3491; x-ms-traffictypediagnostic: AM0PR08MB3491: nodisclaimer: True x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(10201501046)(3231455)(999002)(944501493)(52105112)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123562045)(20161123558120)(201708071742011)(7699051)(76991095);SRVR:AM0PR08MB3491;BCL:0;PCL:0;RULEID:;SRVR:AM0PR08MB3491; x-forefront-prvs: 08756AC3C8 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(396003)(39860400002)(376002)(136003)(346002)(366004)(199004)(189003)(99286004)(4326008)(71190400001)(97736004)(36756003)(4744004)(71200400001)(106356001)(6486002)(68736007)(72206003)(256004)(14454004)(66066001)(478600001)(7416002)(5660300001)(81166006)(8936002)(7736002)(25786009)(2201001)(81156014)(305945005)(3846002)(6116002)(26005)(102836004)(316002)(186003)(6436002)(11346002)(486006)(2906002)(2501003)(8676002)(14444005)(575784001)(966005)(2616005)(44832011)(476003)(6512007)(6306002)(105586002)(217873002)(53936002)(52116002)(446003)(386003)(6506007)(86362001)(110136005)(76176011)(21314003)(921003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:AM0PR08MB3491;H:AM0PR08MB3891.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: SI4qtplACuW/IXS/dGthB0E+90Lw8xp1V9HYPbRqXIDbDqN8MCNN4Ou8rzAkmVLbCNdEhfYNZaOSBW4xVoBOln4R0I9DF3E3ge0f927oA4nK/8HBLfU6g5Nv72MPLTF9wdIsMOj4nqqowwySxzqCpd2IEbRQlE4dO1P2jHatTWkBZho0iudSusIc1c5HLc4DxgEymE1pQRgLGKHgAIhC0fZr28xs5hPWatm33b7keLMtHlLeFQtbdg25A65ZN+AbCPusEsH1WanV5fUCOwFiuqrOSE0si90U/ayl+vf2gEcKWUqU3gCh5QyjLISyHjcdg0f2rfiFcV/IuIQx4g51lm5ebSh3IqHjK/G8EIZuCoI= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 16f270d2-6ee7-4667-0d5f-08d65912eda2 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Dec 2018 11:31:55.3809 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB3491 Sender: linux-doc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-doc@vger.kernel.org From: Brian Starkey As we look to enable AFBC using DRM format modifiers, we run into problems which we've historically handled via vendor-private details (i.e. gralloc, on Android). AFBC (as an encoding) is fully flexible, and for example YUV data can be encoded into 1, 2 or 3 encoded "planes", much like the linear equivalents. Component order is also meaningful, as AFBC doesn't necessarily care about what each "channel" of the data it encodes contains. Therefore ABGR8888 and RGBA8888 can be encoded in AFBC with different representations. Similarly, 'X' components may be encoded into AFBC streams in cases where a decoder expects to decode a 4th component. In addition, AFBC is a licensable IP, meaning that to support the ecosystem we need to ensure that _all_ AFBC users are able to describe the encodings that they need. This is much better achieved by preserving meaning in the fourcc codes when they are combined with an AFBC modifier. In essence, we want to use the modifier to describe the parameters of the AFBC encode/decode, and use the fourcc code to describe the data being encoded/decoded. To do anything different would be to introduce redundancy - we would need to duplicate in the modifier information which is _already_ conveyed clearly and non-ambigiously by a fourcc code. I hope that for RGB this is non-controversial. (BGRA8888 + MODIFIER_AFBC) is a different format from (RGBA8888 + MODIFIER_AFBC). Possibly more controversial is that (XBGR8888 + MODIFIER_AFBC) is different from (BGR888 + MODIFIER_AFBC). I understand that in some schemes it is not the case - but in AFBC it is so. Where we run into problems is where there are not already fourcc codes which represent the data which the AFBC encoder/decoder is processing. To that end, we want to introduce new fourcc codes to describe the data being encoded/decoded, in the places where none of the existing fourcc codes are applicable. Where we don't support an equivalent non-compressed layout, or where no "obvious" linear layout exists, we are proposing adding fourcc codes which have no associated linear layout - because any layout we proposed would be completely arbitrary. Some formats are following the naming conventions from [2]. The summary of the new formats is: DRM_FORMAT_VUY888 - Packed 8-bit YUV 444. Y followed by U then V. DRM_FORMAT_VUY101010 - Packed 10-bit YUV 444. Y followed by U then V. No defined linear encoding. DRM_FORMAT_Y210 - Packed 10-bit YUV 422. Y followed by U (then Y) then V. 10-bit samples in 16-bit words. DRM_FORMAT_Y410 - Packed 10-bit YUV 444, with 2-bit alpha. DRM_FORMAT_P210 - Semi-planar 10-bit YUV 422. Y plane, followed by interleaved U-then-V plane. 10-bit samples in 16-bit words. DRM_FORMAT_YUV420_8BIT - Packed 8-bit YUV 420. Y followed by U then V. No defined linear encoding DRM_FORMAT_YUV420_10BIT - Packed 10-bit YUV 420. Y followed by U then V. No defined linear encoding Please also note that in the absence of AFBC, we would still need to add Y410, Y210 and P210. Full rationale follows: YUV 444 8-bit, 1-plane ---------------------- The currently defined AYUV format encodes a 4th alpha component, which makes it unsuitable for representing a 3-component YUV 444 AFBC stream. The proposed[1] XYUV format which is supported by Mali-DP in linear layout is also unsuitable, because the component order is the opposite of the AFBC version, and it encodes a 4th 'X' component. DRM_FORMAT_VUY888 is the "obvious" format for a 3-component, packed, YUV 444 8-bit format, with the component order which our HW expects to encode/decode. It conforms to the same naming convention as the existing packed YUV 444 format. The naming here is meant to be consistent with DRM_FORMAT_AYUV and DRM_FORMAT_XYUV[1] YUV 444 10-bit, 1-plane ----------------------- There is no currently-defined YUV 444 10-bit format in drm_fourcc.h, irrespective of number of planes. The proposed[1] XVYU2101010 format which is supported by Mali-DP in linear layout uses the wrong component order, and also encodes a 4th 'X' component, which doesn't match the AFBC version of YUV 444 10-bit which we support. DRM_FORMAT_Y410 is the same layout as XVYU2101010, but with 2 bits of alpha. This format is supported with linear layout by Mali GPUs. The naming follows[2]. There is no "obvious" linear encoding for a 3-component 10:10:10 packed format, and so DRM_FORMAT_VUY101010 defines a component order, but not a bit encoding. Again, the naming is meant to be consistent with DRM_FORMAT_AYUV. YUV 422 8-bit, 1-plane ---------------------- The existing DRM_FORMAT_YUYV (and the other component orders) are single-planar YUV 422 8-bit formats. Following the convention of the component orders of the RGB formats, YUYV has the correct component order for our AFBC encoding (Y followed by U followed by V). We can use YUYV for AFBC YUV 422 8-bit. YUV 422 10-bit, 1-plane ----------------------- There is no currently-defined YUV 422 10-bit format in drm_fourcc.h DRM_FORMAT_Y210 is analogous to YUYV, but with 10-bits per sample packed into the upper 10-bits of 16-bit samples. This format is supported in both linear and AFBC by Mali GPUs. YUV 422 10-bit, 2-plane ----------------------- The recently defined DRM_FORMAT_P010 format is a 10-bit semi-planar YUV 420 format, which has the correct component ordering for an AFBC 2-plane YUV 420 buffer. The linear layout contains meaningless padding bits, which will not be encoded in an AFBC stream. YUV 420 8-bit, 1-plane ---------------------- There is no currently defined single-planar YUV 420, 8-bit format in drm_fourcc.h. There's differing opinions on whether using the existing fourcc-implied n_planes where possible is a good idea or not when using modifiers. For me, it's much more "obvious" to use NV12 for 2-plane AFBC and YUV420 for 3-plane AFBC. This keeps the aforementioned separation between the AFBC codec settings (in the modifier) and the pixel data format (in the fourcc). With different vendors using AFBC, this helps to ensure that there is no confusion in interoperation. It also ensures that the AFBC modifiers describe AFBC itself (which is a licensable component), and not implementation details which are not defined by AFBC. The proposed[1] X0L0 format which Mali-DP supports with Linear layout is unsuitable, as it contains a 4th 'X' component, and our AFBC decoder expects only 3 components. To that end, we propose a new YUV 420 8-bit format. There is no "obvious" linear encoding for a 3-component 8:8:8, 420, packed format, and so DRM_FORMAT_YUV420_8BIT defines a component order, but not a bit encoding. I'm happy to hear different naming suggestions. YUV 420 8-bit, 2-, 3-plane -------------------------- These already exist, we can use NV12 and YUV420. YUV 420 10-bit, 1-plane ----------------------- As above, no current definition exists, and X0L2 encodes a 4th 'X' channel. Analogous to DRM_FORMAT_YUV420_8BIT, we define DRM_FORMAT_YUV420_10BIT. [1] https://lists.freedesktop.org/archives/dri-devel/2018-July/184598.html [2] https://docs.microsoft.com/en-us/windows/desktop/medfound/10-bit-and-16= -bit-yuv-video-formats Changes since RFC v1: - Fix confusing subsampling vs bit-depth X:X:X notation in descriptions (danvet) - Rename DRM_FORMAT_AVYU1101010 to DRM_FORMAT_Y410 (Lisa Wu) - Add drm_format_info structures for the new formats, using the new 'bpp' field for those with non-integer bytes-per-pixel - Rebase, including Juha-Pekka Heikkila's format definitions Signed-off-by: Brian Starkey Reviewed-by: Liviu Dudau --- drivers/gpu/drm/drm_fourcc.c | 10 ++++++++++ include/uapi/drm/drm_fourcc.h | 16 +++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c index d45a3a4..6b7a62e 100644 --- a/drivers/gpu/drm/drm_fourcc.c +++ b/drivers/gpu/drm/drm_fourcc.c @@ -225,10 +225,14 @@ const struct drm_format_info *__drm_format_info(u32 f= ormat) { .format =3D DRM_FORMAT_UYVY, .depth =3D 0, .num_planes =3D 1, .cpp = =3D { 2, 0, 0 }, .hsub =3D 2, .vsub =3D 1, .is_yuv =3D true }, { .format =3D DRM_FORMAT_VYUY, .depth =3D 0, .num_planes =3D 1, .cpp = =3D { 2, 0, 0 }, .hsub =3D 2, .vsub =3D 1, .is_yuv =3D true }, { .format =3D DRM_FORMAT_XYUV8888, .depth =3D 0, .num_planes =3D 1, .cp= p =3D { 4, 0, 0 }, .hsub =3D 1, .vsub =3D 1, .is_yuv =3D true }, + { .format =3D DRM_FORMAT_Y210, .depth =3D 0, .num_planes =3D 1, .cpp = =3D { 4, 0, 0 }, .hsub =3D 2, .vsub =3D 1, .is_yuv =3D true }, + { .format =3D DRM_FORMAT_VUY888, .depth =3D 0, .num_planes =3D= 1, .cpp =3D { 3, 0, 0 }, .hsub =3D 1, .vsub =3D 1, .is_yuv =3D true }, + { .format =3D DRM_FORMAT_Y410, .depth =3D 0, .num_planes =3D= 1, .cpp =3D { 4, 0, 0 }, .hsub =3D 1, .vsub =3D 1, .has_alpha =3D true, .i= s_yuv =3D true }, { .format =3D DRM_FORMAT_AYUV, .depth =3D 0, .num_planes =3D 1, .cpp = =3D { 4, 0, 0 }, .hsub =3D 1, .vsub =3D 1, .has_alpha =3D true, .is_yuv =3D= true }, { .format =3D DRM_FORMAT_P010, .depth =3D 0, .num_planes =3D 2, .cpp = =3D { 2, 4, 0 }, .hsub =3D 2, .vsub =3D 2, .is_yuv =3D true }, { .format =3D DRM_FORMAT_P012, .depth =3D 0, .num_planes =3D 2, .cpp = =3D { 2, 4, 0 }, .hsub =3D 2, .vsub =3D 2, .is_yuv =3D true }, { .format =3D DRM_FORMAT_P016, .depth =3D 0, .num_planes =3D 2, .cpp = =3D { 2, 4, 0 }, .hsub =3D 2, .vsub =3D 2, .is_yuv =3D true }, + { .format =3D DRM_FORMAT_P210, .depth =3D 0, .num_planes =3D 2, .cpp = =3D { 2, 4, 0 }, .hsub =3D 2, .vsub =3D 1, .is_yuv =3D true }, { .format =3D DRM_FORMAT_Y0L0, .depth =3D 0, .num_planes =3D 1, .char_per_block =3D { 8, 0, 0 }, .block_w =3D { 2, 0, 0 }, .block_h = =3D { 2, 0, 0 }, .hsub =3D 2, .vsub =3D 2, .has_alpha =3D true, .is_yuv =3D true }, @@ -241,6 +245,12 @@ const struct drm_format_info *__drm_format_info(u32 fo= rmat) { .format =3D DRM_FORMAT_X0L2, .depth =3D 0, .num_planes =3D 1, .char_per_block =3D { 8, 0, 0 }, .block_w =3D { 2, 0, 0 }, .block_h = =3D { 2, 0, 0 }, .hsub =3D 2, .vsub =3D 2, .is_yuv =3D true }, + { .format =3D DRM_FORMAT_VUY101010, .depth =3D 0, .num_planes =3D 1, + .cpp =3D { 0, 0, 0 }, .hsub =3D 1, .vsub =3D 1, .is_yuv =3D true }, + { .format =3D DRM_FORMAT_YUV420_8BIT, .depth =3D 0, .num_planes =3D= 1, + .cpp =3D { 0, 0, 0 }, .hsub =3D 2, .vsub =3D 2, .is_yuv =3D true }, + { .format =3D DRM_FORMAT_YUV420_10BIT, .depth =3D 0, .num_planes =3D= 1, + .cpp =3D { 0, 0, 0 }, .hsub =3D 2, .vsub =3D 2, .is_yuv =3D true }, }; =20 unsigned int i; diff --git a/include/uapi/drm/drm_fourcc.h b/include/uapi/drm/drm_fourcc.h index c6e4598..71b2bc7 100644 --- a/include/uapi/drm/drm_fourcc.h +++ b/include/uapi/drm/drm_fourcc.h @@ -149,9 +149,13 @@ extern "C" { #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 */ +#define DRM_FORMAT_Y210 fourcc_code('Y', '2', '1', '0') /* [63:0] Cr0:0:Y= 1:0:Cb0:0:Y0:0 10:6:10:6:10:6:10:6 little endian */ =20 #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_XYUV8888 fourcc_code('X', 'Y', 'U', 'V') /* [31:0] X:Y:= Cb:Cr 8:8:8:8 little endian */ +#define DRM_FORMAT_VUY888 fourcc_code('V', 'U', '2', '4') /* [23:0] Cr:Cb:= Y 8:8:8 little endian */ +#define DRM_FORMAT_Y410 fourcc_code('Y', '4', '1', '0') /* [31:0] A:Cr:Y:= Cb 2:10:10:10 little endian */ +#define DRM_FORMAT_VUY101010 fourcc_code('V', 'U', '3', '0') /* Y followed= by U then V, 10:10:10. Non-linear modifier only */ =20 /* * packed YCbCr420 2x2 tiled formats @@ -168,6 +172,15 @@ extern "C" { #define DRM_FORMAT_X0L2 fourcc_code('X', '0', 'L', '2') =20 /* + * 1-plane YUV 4:2:0 + * In these formats, the component ordering is specified (Y, followed by U + * then V), but the exact Linear layout is undefined. + * These formats can only be used with a non-Linear modifier. + */ +#define DRM_FORMAT_YUV420_8BIT fourcc_code('Y', 'U', '0', '8') +#define DRM_FORMAT_YUV420_10BIT fourcc_code('Y', 'U', '1', '0') + +/* * 2 plane RGB + A * index 0 =3D RGB plane, same format as the corresponding non _A8 format = has * index 1 =3D A plane, [7:0] A @@ -201,6 +214,7 @@ extern "C" { * component xxx msb Y [xxx:16-xxx] * index 1 =3D Cr:Cb plane, [31:0] Cr:Cb little endian [xxx:16-xxx:xxx:16-= xxx] */ +#define DRM_FORMAT_P210 fourcc_code('P', '2', '1', '0') /* 2x1 subsampled= Cr:Cb plane, 10 bit per channel */ #define DRM_FORMAT_P010 fourcc_code('P', '0', '1', '0') /* 2x2 subsampled= Cr:Cb plane, 10 bit per channel */ #define DRM_FORMAT_P012 fourcc_code('P', '0', '1', '2') /* 2x2 subsampled= Cr:Cb plane, 12 bit per channel */ #define DRM_FORMAT_P016 fourcc_code('P', '0', '1', '6') /* 2x2 subsampled= Cr:Cb plane, 16 bit per channel */ --=20 2.7.4 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ayan Halder Subject: [RFC AFBC 01/12] drm/fourcc: Add AFBC yuv fourccs for Mali Date: Mon, 3 Dec 2018 11:31:55 +0000 Message-ID: <1543836703-8491-2-git-send-email-ayan.halder@arm.com> References: <1543836703-8491-1-git-send-email-ayan.halder@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20083.outbound.protection.outlook.com [40.107.2.83]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7724389CD8 for ; Mon, 3 Dec 2018 11:31:58 +0000 (UTC) In-Reply-To: <1543836703-8491-1-git-send-email-ayan.halder@arm.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ayan Halder , Liviu Dudau , Brian Starkey , "malidp@foss.arm.com" , "airlied@linux.ie" , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , "maxime.ripard@bootlin.com" , "sean@poorly.run" , "maarten.lankhorst@linux.intel.com" , "corbet@lwn.net" , "mchehab+samsung@kernel.org" , "gregkh@linuxfoundation.org" , "davem@davemloft.net" , "akpm@linux-foundation.org" , "nicolas.ferre@microchip.com" , "arnd@arndb.de" , "linux-doc@vger.kernel.org" Cc: nd List-Id: dri-devel@lists.freedesktop.org RnJvbTogQnJpYW4gU3RhcmtleSA8YnJpYW4uc3RhcmtleUBhcm0uY29tPgoKQXMgd2UgbG9vayB0 byBlbmFibGUgQUZCQyB1c2luZyBEUk0gZm9ybWF0IG1vZGlmaWVycywgd2UgcnVuIGludG8KcHJv YmxlbXMgd2hpY2ggd2UndmUgaGlzdG9yaWNhbGx5IGhhbmRsZWQgdmlhIHZlbmRvci1wcml2YXRl IGRldGFpbHMKKGkuZS4gZ3JhbGxvYywgb24gQW5kcm9pZCkuCgpBRkJDIChhcyBhbiBlbmNvZGlu ZykgaXMgZnVsbHkgZmxleGlibGUsIGFuZCBmb3IgZXhhbXBsZSBZVVYgZGF0YSBjYW4KYmUgZW5j b2RlZCBpbnRvIDEsIDIgb3IgMyBlbmNvZGVkICJwbGFuZXMiLCBtdWNoIGxpa2UgdGhlIGxpbmVh cgplcXVpdmFsZW50cy4gQ29tcG9uZW50IG9yZGVyIGlzIGFsc28gbWVhbmluZ2Z1bCwgYXMgQUZC QyBkb2Vzbid0Cm5lY2Vzc2FyaWx5IGNhcmUgYWJvdXQgd2hhdCBlYWNoICJjaGFubmVsIiBvZiB0 aGUgZGF0YSBpdCBlbmNvZGVzCmNvbnRhaW5zLiBUaGVyZWZvcmUgQUJHUjg4ODggYW5kIFJHQkE4 ODg4IGNhbiBiZSBlbmNvZGVkIGluIEFGQkMgd2l0aApkaWZmZXJlbnQgcmVwcmVzZW50YXRpb25z LiBTaW1pbGFybHksICdYJyBjb21wb25lbnRzIG1heSBiZSBlbmNvZGVkCmludG8gQUZCQyBzdHJl YW1zIGluIGNhc2VzIHdoZXJlIGEgZGVjb2RlciBleHBlY3RzIHRvIGRlY29kZSBhIDR0aApjb21w b25lbnQuCgpJbiBhZGRpdGlvbiwgQUZCQyBpcyBhIGxpY2Vuc2FibGUgSVAsIG1lYW5pbmcgdGhh dCB0byBzdXBwb3J0IHRoZQplY29zeXN0ZW0gd2UgbmVlZCB0byBlbnN1cmUgdGhhdCBfYWxsXyBB RkJDIHVzZXJzIGFyZSBhYmxlIHRvIGRlc2NyaWJlCnRoZSBlbmNvZGluZ3MgdGhhdCB0aGV5IG5l ZWQuIFRoaXMgaXMgbXVjaCBiZXR0ZXIgYWNoaWV2ZWQgYnkKcHJlc2VydmluZyBtZWFuaW5nIGlu IHRoZSBmb3VyY2MgY29kZXMgd2hlbiB0aGV5IGFyZSBjb21iaW5lZCB3aXRoIGFuCkFGQkMgbW9k aWZpZXIuCgpJbiBlc3NlbmNlLCB3ZSB3YW50IHRvIHVzZSB0aGUgbW9kaWZpZXIgdG8gZGVzY3Jp YmUgdGhlIHBhcmFtZXRlcnMgb2YKdGhlIEFGQkMgZW5jb2RlL2RlY29kZSwgYW5kIHVzZSB0aGUg Zm91cmNjIGNvZGUgdG8gZGVzY3JpYmUgdGhlIGRhdGEKYmVpbmcgZW5jb2RlZC9kZWNvZGVkLgoK VG8gZG8gYW55dGhpbmcgZGlmZmVyZW50IHdvdWxkIGJlIHRvIGludHJvZHVjZSByZWR1bmRhbmN5 IC0gd2Ugd291bGQKbmVlZCB0byBkdXBsaWNhdGUgaW4gdGhlIG1vZGlmaWVyIGluZm9ybWF0aW9u IHdoaWNoIGlzIF9hbHJlYWR5Xwpjb252ZXllZCBjbGVhcmx5IGFuZCBub24tYW1iaWdpb3VzbHkg YnkgYSBmb3VyY2MgY29kZS4KCkkgaG9wZSB0aGF0IGZvciBSR0IgdGhpcyBpcyBub24tY29udHJv dmVyc2lhbC4KKEJHUkE4ODg4ICsgTU9ESUZJRVJfQUZCQykgaXMgYSBkaWZmZXJlbnQgZm9ybWF0 IGZyb20KKFJHQkE4ODg4ICsgTU9ESUZJRVJfQUZCQykuCgpQb3NzaWJseSBtb3JlIGNvbnRyb3Zl cnNpYWwgaXMgdGhhdCAoWEJHUjg4ODggKyBNT0RJRklFUl9BRkJDKQppcyBkaWZmZXJlbnQgZnJv bSAoQkdSODg4ICsgTU9ESUZJRVJfQUZCQykuIEkgdW5kZXJzdGFuZCB0aGF0IGluIHNvbWUKc2No ZW1lcyBpdCBpcyBub3QgdGhlIGNhc2UgLSBidXQgaW4gQUZCQyBpdCBpcyBzby4KCldoZXJlIHdl IHJ1biBpbnRvIHByb2JsZW1zIGlzIHdoZXJlIHRoZXJlIGFyZSBub3QgYWxyZWFkeSBmb3VyY2Mg Y29kZXMKd2hpY2ggcmVwcmVzZW50IHRoZSBkYXRhIHdoaWNoIHRoZSBBRkJDIGVuY29kZXIvZGVj b2RlciBpcyBwcm9jZXNzaW5nLgpUbyB0aGF0IGVuZCwgd2Ugd2FudCB0byBpbnRyb2R1Y2UgbmV3 IGZvdXJjYyBjb2RlcyB0byBkZXNjcmliZSB0aGUKZGF0YSBiZWluZyBlbmNvZGVkL2RlY29kZWQs IGluIHRoZSBwbGFjZXMgd2hlcmUgbm9uZSBvZiB0aGUgZXhpc3RpbmcKZm91cmNjIGNvZGVzIGFy ZSBhcHBsaWNhYmxlLgoKV2hlcmUgd2UgZG9uJ3Qgc3VwcG9ydCBhbiBlcXVpdmFsZW50IG5vbi1j b21wcmVzc2VkIGxheW91dCwgb3Igd2hlcmUKbm8gIm9idmlvdXMiIGxpbmVhciBsYXlvdXQgZXhp c3RzLCB3ZSBhcmUgcHJvcG9zaW5nIGFkZGluZyBmb3VyY2MKY29kZXMgd2hpY2ggaGF2ZSBubyBh c3NvY2lhdGVkIGxpbmVhciBsYXlvdXQgLSBiZWNhdXNlIGFueSBsYXlvdXQgd2UKcHJvcG9zZWQg d291bGQgYmUgY29tcGxldGVseSBhcmJpdHJhcnkuCgpTb21lIGZvcm1hdHMgYXJlIGZvbGxvd2lu ZyB0aGUgbmFtaW5nIGNvbnZlbnRpb25zIGZyb20gWzJdLgoKVGhlIHN1bW1hcnkgb2YgdGhlIG5l dyBmb3JtYXRzIGlzOgogRFJNX0ZPUk1BVF9WVVk4ODggLSBQYWNrZWQgOC1iaXQgWVVWIDQ0NC4g WSBmb2xsb3dlZCBieSBVIHRoZW4gVi4KIERSTV9GT1JNQVRfVlVZMTAxMDEwIC0gUGFja2VkIDEw LWJpdCBZVVYgNDQ0LiBZIGZvbGxvd2VkIGJ5IFUgdGhlbgogICAgICAgICAgICAgICAgICAgICAg ICBWLiBObyBkZWZpbmVkIGxpbmVhciBlbmNvZGluZy4KIERSTV9GT1JNQVRfWTIxMCAtIFBhY2tl ZCAxMC1iaXQgWVVWIDQyMi4gWSBmb2xsb3dlZCBieSBVICh0aGVuIFkpCiAgICAgICAgICAgICAg ICAgICB0aGVuIFYuIDEwLWJpdCBzYW1wbGVzIGluIDE2LWJpdCB3b3Jkcy4KIERSTV9GT1JNQVRf WTQxMCAtIFBhY2tlZCAxMC1iaXQgWVVWIDQ0NCwgd2l0aCAyLWJpdCBhbHBoYS4KIERSTV9GT1JN QVRfUDIxMCAtIFNlbWktcGxhbmFyIDEwLWJpdCBZVVYgNDIyLiBZIHBsYW5lLCBmb2xsb3dlZCBi eQogICAgICAgICAgICAgICAgICAgaW50ZXJsZWF2ZWQgVS10aGVuLVYgcGxhbmUuIDEwLWJpdCBz YW1wbGVzIGluCiAgICAgICAgICAgICAgICAgICAxNi1iaXQgd29yZHMuCiBEUk1fRk9STUFUX1lV VjQyMF84QklUIC0gUGFja2VkIDgtYml0IFlVViA0MjAuIFkgZm9sbG93ZWQgYnkgVSB0aGVuCiAg ICAgICAgICAgICAgICAgICAgICAgICAgVi4gTm8gZGVmaW5lZCBsaW5lYXIgZW5jb2RpbmcKIERS TV9GT1JNQVRfWVVWNDIwXzEwQklUIC0gUGFja2VkIDEwLWJpdCBZVVYgNDIwLiBZIGZvbGxvd2Vk IGJ5IFUKICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBWLiBObyBkZWZpbmVkIGxpbmVh ciBlbmNvZGluZwoKUGxlYXNlIGFsc28gbm90ZSB0aGF0IGluIHRoZSBhYnNlbmNlIG9mIEFGQkMs IHdlIHdvdWxkIHN0aWxsIG5lZWQgdG8KYWRkIFk0MTAsIFkyMTAgYW5kIFAyMTAuCgpGdWxsIHJh dGlvbmFsZSBmb2xsb3dzOgoKWVVWIDQ0NCA4LWJpdCwgMS1wbGFuZQotLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiBUaGUgY3VycmVudGx5IGRlZmluZWQgQVlVViBmb3JtYXQgZW5jb2RlcyBhIDR0aCBh bHBoYSBjb21wb25lbnQsCiB3aGljaCBtYWtlcyBpdCB1bnN1aXRhYmxlIGZvciByZXByZXNlbnRp bmcgYSAzLWNvbXBvbmVudCBZVVYgNDQ0CiBBRkJDIHN0cmVhbS4KCiBUaGUgcHJvcG9zZWRbMV0g WFlVViBmb3JtYXQgd2hpY2ggaXMgc3VwcG9ydGVkIGJ5IE1hbGktRFAgaW4gbGluZWFyCiBsYXlv dXQgaXMgYWxzbyB1bnN1aXRhYmxlLCBiZWNhdXNlIHRoZSBjb21wb25lbnQgb3JkZXIgaXMgdGhl CiBvcHBvc2l0ZSBvZiB0aGUgQUZCQyB2ZXJzaW9uLCBhbmQgaXQgZW5jb2RlcyBhIDR0aCAnWCcg Y29tcG9uZW50LgoKIERSTV9GT1JNQVRfVlVZODg4IGlzIHRoZSAib2J2aW91cyIgZm9ybWF0IGZv ciBhIDMtY29tcG9uZW50LCBwYWNrZWQsCiBZVVYgNDQ0IDgtYml0IGZvcm1hdCwgd2l0aCB0aGUg Y29tcG9uZW50IG9yZGVyIHdoaWNoIG91ciBIVyBleHBlY3RzIHRvCiBlbmNvZGUvZGVjb2RlLiBJ dCBjb25mb3JtcyB0byB0aGUgc2FtZSBuYW1pbmcgY29udmVudGlvbiBhcyB0aGUKIGV4aXN0aW5n IHBhY2tlZCBZVVYgNDQ0IGZvcm1hdC4KIFRoZSBuYW1pbmcgaGVyZSBpcyBtZWFudCB0byBiZSBj b25zaXN0ZW50IHdpdGggRFJNX0ZPUk1BVF9BWVVWIGFuZAogRFJNX0ZPUk1BVF9YWVVWWzFdCgpZ VVYgNDQ0IDEwLWJpdCwgMS1wbGFuZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogVGhlcmUgaXMg bm8gY3VycmVudGx5LWRlZmluZWQgWVVWIDQ0NCAxMC1iaXQgZm9ybWF0IGluCiBkcm1fZm91cmNj LmgsIGlycmVzcGVjdGl2ZSBvZiBudW1iZXIgb2YgcGxhbmVzLgoKIFRoZSBwcm9wb3NlZFsxXSBY VllVMjEwMTAxMCBmb3JtYXQgd2hpY2ggaXMgc3VwcG9ydGVkIGJ5IE1hbGktRFAgaW4KIGxpbmVh ciBsYXlvdXQgdXNlcyB0aGUgd3JvbmcgY29tcG9uZW50IG9yZGVyLCBhbmQgYWxzbyBlbmNvZGVz IGEgNHRoCiAnWCcgY29tcG9uZW50LCB3aGljaCBkb2Vzbid0IG1hdGNoIHRoZSBBRkJDIHZlcnNp b24gb2YgWVVWIDQ0NAogMTAtYml0IHdoaWNoIHdlIHN1cHBvcnQuCgogRFJNX0ZPUk1BVF9ZNDEw IGlzIHRoZSBzYW1lIGxheW91dCBhcyBYVllVMjEwMTAxMCwgYnV0IHdpdGggMiBiaXRzIG9mCiBh bHBoYS4gIFRoaXMgZm9ybWF0IGlzIHN1cHBvcnRlZCB3aXRoIGxpbmVhciBsYXlvdXQgYnkgTWFs aSBHUFVzLiBUaGUKIG5hbWluZyBmb2xsb3dzWzJdLgoKIFRoZXJlIGlzIG5vICJvYnZpb3VzIiBs aW5lYXIgZW5jb2RpbmcgZm9yIGEgMy1jb21wb25lbnQgMTA6MTA6MTAKIHBhY2tlZCBmb3JtYXQs IGFuZCBzbyBEUk1fRk9STUFUX1ZVWTEwMTAxMCBkZWZpbmVzIGEgY29tcG9uZW50CiBvcmRlciwg YnV0IG5vdCBhIGJpdCBlbmNvZGluZy4gQWdhaW4sIHRoZSBuYW1pbmcgaXMgbWVhbnQgdG8gYmUK IGNvbnNpc3RlbnQgd2l0aCBEUk1fRk9STUFUX0FZVVYuCgpZVVYgNDIyIDgtYml0LCAxLXBsYW5l Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFRoZSBleGlzdGluZyBEUk1fRk9STUFUX1lVWVYgKGFu ZCB0aGUgb3RoZXIgY29tcG9uZW50IG9yZGVycykgYXJlCiBzaW5nbGUtcGxhbmFyIFlVViA0MjIg OC1iaXQgZm9ybWF0cy4gRm9sbG93aW5nIHRoZSBjb252ZW50aW9uIG9mCiB0aGUgY29tcG9uZW50 IG9yZGVycyBvZiB0aGUgUkdCIGZvcm1hdHMsIFlVWVYgaGFzIHRoZSBjb3JyZWN0CiBjb21wb25l bnQgb3JkZXIgZm9yIG91ciBBRkJDIGVuY29kaW5nIChZIGZvbGxvd2VkIGJ5IFUgZm9sbG93ZWQg YnkKIFYpLiBXZSBjYW4gdXNlIFlVWVYgZm9yIEFGQkMgWVVWIDQyMiA4LWJpdC4KCllVViA0MjIg MTAtYml0LCAxLXBsYW5lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBUaGVyZSBpcyBubyBjdXJy ZW50bHktZGVmaW5lZCBZVVYgNDIyIDEwLWJpdCBmb3JtYXQgaW4gZHJtX2ZvdXJjYy5oCgogRFJN X0ZPUk1BVF9ZMjEwIGlzIGFuYWxvZ291cyB0byBZVVlWLCBidXQgd2l0aCAxMC1iaXRzIHBlciBz YW1wbGUKIHBhY2tlZCBpbnRvIHRoZSB1cHBlciAxMC1iaXRzIG9mIDE2LWJpdCBzYW1wbGVzLiBU aGlzIGZvcm1hdCBpcwogc3VwcG9ydGVkIGluIGJvdGggbGluZWFyIGFuZCBBRkJDIGJ5IE1hbGkg R1BVcy4KCllVViA0MjIgMTAtYml0LCAyLXBsYW5lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBU aGUgcmVjZW50bHkgZGVmaW5lZCBEUk1fRk9STUFUX1AwMTAgZm9ybWF0IGlzIGEgMTAtYml0IHNl bWktcGxhbmFyCiBZVVYgNDIwIGZvcm1hdCwgd2hpY2ggaGFzIHRoZSBjb3JyZWN0IGNvbXBvbmVu dCBvcmRlcmluZyBmb3IgYW4gQUZCQwogMi1wbGFuZSBZVVYgNDIwIGJ1ZmZlci4gVGhlIGxpbmVh ciBsYXlvdXQgY29udGFpbnMgbWVhbmluZ2xlc3MgcGFkZGluZwogYml0cywgd2hpY2ggd2lsbCBu b3QgYmUgZW5jb2RlZCBpbiBhbiBBRkJDIHN0cmVhbS4KCllVViA0MjAgOC1iaXQsIDEtcGxhbmUK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogVGhlcmUgaXMgbm8gY3VycmVudGx5IGRlZmluZWQgc2lu Z2xlLXBsYW5hciBZVVYgNDIwLCA4LWJpdCBmb3JtYXQKIGluIGRybV9mb3VyY2MuaC4gVGhlcmUn cyBkaWZmZXJpbmcgb3BpbmlvbnMgb24gd2hldGhlciB1c2luZyB0aGUKIGV4aXN0aW5nIGZvdXJj Yy1pbXBsaWVkIG5fcGxhbmVzIHdoZXJlIHBvc3NpYmxlIGlzIGEgZ29vZCBpZGVhIG9yCiBub3Qg d2hlbiB1c2luZyBtb2RpZmllcnMuCgogRm9yIG1lLCBpdCdzIG11Y2ggbW9yZSAib2J2aW91cyIg dG8gdXNlIE5WMTIgZm9yIDItcGxhbmUgQUZCQyBhbmQKIFlVVjQyMCBmb3IgMy1wbGFuZSBBRkJD LiBUaGlzIGtlZXBzIHRoZSBhZm9yZW1lbnRpb25lZCBzZXBhcmF0aW9uCiBiZXR3ZWVuIHRoZSBB RkJDIGNvZGVjIHNldHRpbmdzIChpbiB0aGUgbW9kaWZpZXIpIGFuZCB0aGUgcGl4ZWwgZGF0YQog Zm9ybWF0IChpbiB0aGUgZm91cmNjKS4gV2l0aCBkaWZmZXJlbnQgdmVuZG9ycyB1c2luZyBBRkJD LCB0aGlzIGhlbHBzCiB0byBlbnN1cmUgdGhhdCB0aGVyZSBpcyBubyBjb25mdXNpb24gaW4gaW50 ZXJvcGVyYXRpb24uIEl0IGFsc28KIGVuc3VyZXMgdGhhdCB0aGUgQUZCQyBtb2RpZmllcnMgZGVz Y3JpYmUgQUZCQyBpdHNlbGYgKHdoaWNoIGlzIGEKIGxpY2Vuc2FibGUgY29tcG9uZW50KSwgYW5k IG5vdCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHdoaWNoIGFyZSBub3QKIGRlZmluZWQgYnkgQUZC Qy4KCiBUaGUgcHJvcG9zZWRbMV0gWDBMMCBmb3JtYXQgd2hpY2ggTWFsaS1EUCBzdXBwb3J0cyB3 aXRoIExpbmVhciBsYXlvdXQKIGlzIHVuc3VpdGFibGUsIGFzIGl0IGNvbnRhaW5zIGEgNHRoICdY JyBjb21wb25lbnQsIGFuZCBvdXIgQUZCQwogZGVjb2RlciBleHBlY3RzIG9ubHkgMyBjb21wb25l bnRzLgoKIFRvIHRoYXQgZW5kLCB3ZSBwcm9wb3NlIGEgbmV3IFlVViA0MjAgOC1iaXQgZm9ybWF0 LiBUaGVyZSBpcyBubwogIm9idmlvdXMiIGxpbmVhciBlbmNvZGluZyBmb3IgYSAzLWNvbXBvbmVu dCA4Ojg6OCwgNDIwLCBwYWNrZWQgZm9ybWF0LAogYW5kIHNvIERSTV9GT1JNQVRfWVVWNDIwXzhC SVQgZGVmaW5lcyBhIGNvbXBvbmVudCBvcmRlciwgYnV0IG5vdCBhCiBiaXQgZW5jb2RpbmcuIEkn bSBoYXBweSB0byBoZWFyIGRpZmZlcmVudCBuYW1pbmcgc3VnZ2VzdGlvbnMuCgpZVVYgNDIwIDgt Yml0LCAyLSwgMy1wbGFuZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogVGhlc2UgYWxyZWFk eSBleGlzdCwgd2UgY2FuIHVzZSBOVjEyIGFuZCBZVVY0MjAuCgpZVVYgNDIwIDEwLWJpdCwgMS1w bGFuZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQXMgYWJvdmUsIG5vIGN1cnJlbnQgZGVmaW5p dGlvbiBleGlzdHMsIGFuZCBYMEwyIGVuY29kZXMgYSA0dGggJ1gnCiBjaGFubmVsLgoKIEFuYWxv Z291cyB0byBEUk1fRk9STUFUX1lVVjQyMF84QklULCB3ZSBkZWZpbmUgRFJNX0ZPUk1BVF9ZVVY0 MjBfMTBCSVQuCgpbMV0gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZXMvZHJp LWRldmVsLzIwMTgtSnVseS8xODQ1OTguaHRtbApbMl0gaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5j b20vZW4tdXMvd2luZG93cy9kZXNrdG9wL21lZGZvdW5kLzEwLWJpdC1hbmQtMTYtYml0LXl1di12 aWRlby1mb3JtYXRzCgpDaGFuZ2VzIHNpbmNlIFJGQyB2MToKIC0gRml4IGNvbmZ1c2luZyBzdWJz YW1wbGluZyB2cyBiaXQtZGVwdGggWDpYOlggbm90YXRpb24gaW4KICAgZGVzY3JpcHRpb25zIChk YW52ZXQpCiAtIFJlbmFtZSBEUk1fRk9STUFUX0FWWVUxMTAxMDEwIHRvIERSTV9GT1JNQVRfWTQx MCAoTGlzYSBXdSkKIC0gQWRkIGRybV9mb3JtYXRfaW5mbyBzdHJ1Y3R1cmVzIGZvciB0aGUgbmV3 IGZvcm1hdHMsIHVzaW5nIHRoZQogICBuZXcgJ2JwcCcgZmllbGQgZm9yIHRob3NlIHdpdGggbm9u LWludGVnZXIgYnl0ZXMtcGVyLXBpeGVsCiAtIFJlYmFzZSwgaW5jbHVkaW5nIEp1aGEtUGVra2Eg SGVpa2tpbGEncyBmb3JtYXQgZGVmaW5pdGlvbnMKClNpZ25lZC1vZmYtYnk6IEJyaWFuIFN0YXJr ZXkgPGJyaWFuLnN0YXJrZXlAYXJtLmNvbT4KUmV2aWV3ZWQtYnk6IExpdml1IER1ZGF1IDxsaXZp dS5kdWRhdUBhcm0uY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fZm91cmNjLmMgIHwgMTAg KysrKysrKysrKwogaW5jbHVkZS91YXBpL2RybS9kcm1fZm91cmNjLmggfCAxNiArKysrKysrKysr KysrKystCiAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvdXJjYy5jIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9mb3VyY2MuYwppbmRleCBkNDVhM2E0Li42YjdhNjJlIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2ZvdXJjYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZm91cmNj LmMKQEAgLTIyNSwxMCArMjI1LDE0IEBAIGNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKl9f ZHJtX2Zvcm1hdF9pbmZvKHUzMiBmb3JtYXQpCiAJCXsgLmZvcm1hdCA9IERSTV9GT1JNQVRfVVlW WSwJCS5kZXB0aCA9IDAsICAubnVtX3BsYW5lcyA9IDEsIC5jcHAgPSB7IDIsIDAsIDAgfSwgLmhz dWIgPSAyLCAudnN1YiA9IDEsIC5pc195dXYgPSB0cnVlIH0sCiAJCXsgLmZvcm1hdCA9IERSTV9G T1JNQVRfVllVWSwJCS5kZXB0aCA9IDAsICAubnVtX3BsYW5lcyA9IDEsIC5jcHAgPSB7IDIsIDAs IDAgfSwgLmhzdWIgPSAyLCAudnN1YiA9IDEsIC5pc195dXYgPSB0cnVlIH0sCiAJCXsgLmZvcm1h dCA9IERSTV9GT1JNQVRfWFlVVjg4ODgsCS5kZXB0aCA9IDAsICAubnVtX3BsYW5lcyA9IDEsIC5j cHAgPSB7IDQsIDAsIDAgfSwgLmhzdWIgPSAxLCAudnN1YiA9IDEsIC5pc195dXYgPSB0cnVlIH0s CisJCXsgLmZvcm1hdCA9IERSTV9GT1JNQVRfWTIxMCwJCS5kZXB0aCA9IDAsICAubnVtX3BsYW5l cyA9IDEsIC5jcHAgPSB7IDQsIDAsIDAgfSwgLmhzdWIgPSAyLCAudnN1YiA9IDEsIC5pc195dXYg PSB0cnVlIH0sCisJCXsgLmZvcm1hdCA9IERSTV9GT1JNQVRfVlVZODg4LCAgICAgICAgICAuZGVw dGggPSAwLCAgLm51bV9wbGFuZXMgPSAxLCAuY3BwID0geyAzLCAwLCAwIH0sIC5oc3ViID0gMSwg LnZzdWIgPSAxLCAuaXNfeXV2ID0gdHJ1ZSB9LAorCQl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX1k0 MTAsICAgICAgICAgICAgLmRlcHRoID0gMCwgIC5udW1fcGxhbmVzID0gMSwgLmNwcCA9IHsgNCwg MCwgMCB9LCAuaHN1YiA9IDEsIC52c3ViID0gMSwgLmhhc19hbHBoYSA9IHRydWUsIC5pc195dXYg PSB0cnVlIH0sCiAJCXsgLmZvcm1hdCA9IERSTV9GT1JNQVRfQVlVViwJCS5kZXB0aCA9IDAsICAu bnVtX3BsYW5lcyA9IDEsIC5jcHAgPSB7IDQsIDAsIDAgfSwgLmhzdWIgPSAxLCAudnN1YiA9IDEs IC5oYXNfYWxwaGEgPSB0cnVlLCAuaXNfeXV2ID0gdHJ1ZSB9LAogCQl7IC5mb3JtYXQgPSBEUk1f Rk9STUFUX1AwMTAsCQkuZGVwdGggPSAwLCAgLm51bV9wbGFuZXMgPSAyLCAuY3BwID0geyAyLCA0 LCAwIH0sIC5oc3ViID0gMiwgLnZzdWIgPSAyLCAuaXNfeXV2ID0gdHJ1ZSAgfSwKIAkJeyAuZm9y bWF0ID0gRFJNX0ZPUk1BVF9QMDEyLAkJLmRlcHRoID0gMCwgIC5udW1fcGxhbmVzID0gMiwgLmNw cCA9IHsgMiwgNCwgMCB9LCAuaHN1YiA9IDIsIC52c3ViID0gMiwgLmlzX3l1diA9IHRydWUgIH0s CiAJCXsgLmZvcm1hdCA9IERSTV9GT1JNQVRfUDAxNiwJCS5kZXB0aCA9IDAsICAubnVtX3BsYW5l cyA9IDIsIC5jcHAgPSB7IDIsIDQsIDAgfSwgLmhzdWIgPSAyLCAudnN1YiA9IDIsIC5pc195dXYg PSB0cnVlICB9LAorCQl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX1AyMTAsCQkuZGVwdGggPSAwLCAg Lm51bV9wbGFuZXMgPSAyLCAuY3BwID0geyAyLCA0LCAwIH0sIC5oc3ViID0gMiwgLnZzdWIgPSAx LCAuaXNfeXV2ID0gdHJ1ZSAgfSwKIAkJeyAuZm9ybWF0ID0gRFJNX0ZPUk1BVF9ZMEwwLAkJLmRl cHRoID0gMCwgIC5udW1fcGxhbmVzID0gMSwKIAkJICAuY2hhcl9wZXJfYmxvY2sgPSB7IDgsIDAs IDAgfSwgLmJsb2NrX3cgPSB7IDIsIDAsIDAgfSwgLmJsb2NrX2ggPSB7IDIsIDAsIDAgfSwKIAkJ ICAuaHN1YiA9IDIsIC52c3ViID0gMiwgLmhhc19hbHBoYSA9IHRydWUsIC5pc195dXYgPSB0cnVl IH0sCkBAIC0yNDEsNiArMjQ1LDEyIEBAIGNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gKl9f ZHJtX2Zvcm1hdF9pbmZvKHUzMiBmb3JtYXQpCiAJCXsgLmZvcm1hdCA9IERSTV9GT1JNQVRfWDBM MiwJCS5kZXB0aCA9IDAsICAubnVtX3BsYW5lcyA9IDEsCiAJCSAgLmNoYXJfcGVyX2Jsb2NrID0g eyA4LCAwLCAwIH0sIC5ibG9ja193ID0geyAyLCAwLCAwIH0sIC5ibG9ja19oID0geyAyLCAwLCAw IH0sCiAJCSAgLmhzdWIgPSAyLCAudnN1YiA9IDIsIC5pc195dXYgPSB0cnVlIH0sCisJCXsgLmZv cm1hdCA9IERSTV9GT1JNQVRfVlVZMTAxMDEwLAkuZGVwdGggPSAwLCAgLm51bV9wbGFuZXMgPSAx LAorCQkgIC5jcHAgPSB7IDAsIDAsIDAgfSwgLmhzdWIgPSAxLCAudnN1YiA9IDEsIC5pc195dXYg PSB0cnVlIH0sCisJCXsgLmZvcm1hdCA9IERSTV9GT1JNQVRfWVVWNDIwXzhCSVQsICAgICAuZGVw dGggPSAwLCAgLm51bV9wbGFuZXMgPSAxLAorCQkgIC5jcHAgPSB7IDAsIDAsIDAgfSwgLmhzdWIg PSAyLCAudnN1YiA9IDIsIC5pc195dXYgPSB0cnVlIH0sCisJCXsgLmZvcm1hdCA9IERSTV9GT1JN QVRfWVVWNDIwXzEwQklULCAgICAuZGVwdGggPSAwLCAgLm51bV9wbGFuZXMgPSAxLAorCQkgIC5j cHAgPSB7IDAsIDAsIDAgfSwgLmhzdWIgPSAyLCAudnN1YiA9IDIsIC5pc195dXYgPSB0cnVlIH0s CiAJfTsKIAogCXVuc2lnbmVkIGludCBpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9k cm1fZm91cmNjLmggYi9pbmNsdWRlL3VhcGkvZHJtL2RybV9mb3VyY2MuaAppbmRleCBjNmU0NTk4 Li43MWIyYmM3IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2RybV9mb3VyY2MuaAorKysg Yi9pbmNsdWRlL3VhcGkvZHJtL2RybV9mb3VyY2MuaApAQCAtMTQ5LDkgKzE0OSwxMyBAQCBleHRl cm4gIkMiIHsKICNkZWZpbmUgRFJNX0ZPUk1BVF9ZVllVCQlmb3VyY2NfY29kZSgnWScsICdWJywg J1knLCAnVScpIC8qIFszMTowXSBDYjA6WTE6Q3IwOlkwIDg6ODo4OjggbGl0dGxlIGVuZGlhbiAq LwogI2RlZmluZSBEUk1fRk9STUFUX1VZVlkJCWZvdXJjY19jb2RlKCdVJywgJ1knLCAnVicsICdZ JykgLyogWzMxOjBdIFkxOkNyMDpZMDpDYjAgODo4Ojg6OCBsaXR0bGUgZW5kaWFuICovCiAjZGVm aW5lIERSTV9GT1JNQVRfVllVWQkJZm91cmNjX2NvZGUoJ1YnLCAnWScsICdVJywgJ1knKSAvKiBb MzE6MF0gWTE6Q2IwOlkwOkNyMCA4Ojg6ODo4IGxpdHRsZSBlbmRpYW4gKi8KKyNkZWZpbmUgRFJN X0ZPUk1BVF9ZMjEwCQlmb3VyY2NfY29kZSgnWScsICcyJywgJzEnLCAnMCcpIC8qIFs2MzowXSBD cjA6MDpZMTowOkNiMDowOlkwOjAgMTA6NjoxMDo2OjEwOjY6MTA6NiBsaXR0bGUgZW5kaWFuICov CiAKICNkZWZpbmUgRFJNX0ZPUk1BVF9BWVVWCQlmb3VyY2NfY29kZSgnQScsICdZJywgJ1UnLCAn VicpIC8qIFszMTowXSBBOlk6Q2I6Q3IgODo4Ojg6OCBsaXR0bGUgZW5kaWFuICovCi0jZGVmaW5l IERSTV9GT1JNQVRfWFlVVjg4ODgJCWZvdXJjY19jb2RlKCdYJywgJ1knLCAnVScsICdWJykgLyog WzMxOjBdIFg6WTpDYjpDciA4Ojg6ODo4IGxpdHRsZSBlbmRpYW4gKi8KKyNkZWZpbmUgRFJNX0ZP Uk1BVF9YWVVWODg4OAlmb3VyY2NfY29kZSgnWCcsICdZJywgJ1UnLCAnVicpIC8qIFszMTowXSBY Olk6Q2I6Q3IgODo4Ojg6OCBsaXR0bGUgZW5kaWFuICovCisjZGVmaW5lIERSTV9GT1JNQVRfVlVZ ODg4CWZvdXJjY19jb2RlKCdWJywgJ1UnLCAnMicsICc0JykgLyogWzIzOjBdIENyOkNiOlkgODo4 OjggbGl0dGxlIGVuZGlhbiAqLworI2RlZmluZSBEUk1fRk9STUFUX1k0MTAJCWZvdXJjY19jb2Rl KCdZJywgJzQnLCAnMScsICcwJykgLyogWzMxOjBdIEE6Q3I6WTpDYiAyOjEwOjEwOjEwIGxpdHRs ZSBlbmRpYW4gKi8KKyNkZWZpbmUgRFJNX0ZPUk1BVF9WVVkxMDEwMTAJZm91cmNjX2NvZGUoJ1Yn LCAnVScsICczJywgJzAnKSAvKiBZIGZvbGxvd2VkIGJ5IFUgdGhlbiBWLCAxMDoxMDoxMC4gTm9u LWxpbmVhciBtb2RpZmllciBvbmx5ICovCiAKIC8qCiAgKiBwYWNrZWQgWUNiQ3I0MjAgMngyIHRp bGVkIGZvcm1hdHMKQEAgLTE2OCw2ICsxNzIsMTUgQEAgZXh0ZXJuICJDIiB7CiAjZGVmaW5lIERS TV9GT1JNQVRfWDBMMgkJZm91cmNjX2NvZGUoJ1gnLCAnMCcsICdMJywgJzInKQogCiAvKgorICog MS1wbGFuZSBZVVYgNDoyOjAKKyAqIEluIHRoZXNlIGZvcm1hdHMsIHRoZSBjb21wb25lbnQgb3Jk ZXJpbmcgaXMgc3BlY2lmaWVkIChZLCBmb2xsb3dlZCBieSBVCisgKiB0aGVuIFYpLCBidXQgdGhl IGV4YWN0IExpbmVhciBsYXlvdXQgaXMgdW5kZWZpbmVkLgorICogVGhlc2UgZm9ybWF0cyBjYW4g b25seSBiZSB1c2VkIHdpdGggYSBub24tTGluZWFyIG1vZGlmaWVyLgorICovCisjZGVmaW5lIERS TV9GT1JNQVRfWVVWNDIwXzhCSVQJZm91cmNjX2NvZGUoJ1knLCAnVScsICcwJywgJzgnKQorI2Rl ZmluZSBEUk1fRk9STUFUX1lVVjQyMF8xMEJJVAlmb3VyY2NfY29kZSgnWScsICdVJywgJzEnLCAn MCcpCisKKy8qCiAgKiAyIHBsYW5lIFJHQiArIEEKICAqIGluZGV4IDAgPSBSR0IgcGxhbmUsIHNh bWUgZm9ybWF0IGFzIHRoZSBjb3JyZXNwb25kaW5nIG5vbiBfQTggZm9ybWF0IGhhcwogICogaW5k ZXggMSA9IEEgcGxhbmUsIFs3OjBdIEEKQEAgLTIwMSw2ICsyMTQsNyBAQCBleHRlcm4gIkMiIHsK ICAqIGNvbXBvbmVudCB4eHggbXNiIFkgW3h4eDoxNi14eHhdCiAgKiBpbmRleCAxID0gQ3I6Q2Ig cGxhbmUsIFszMTowXSBDcjpDYiBsaXR0bGUgZW5kaWFuIFt4eHg6MTYteHh4Onh4eDoxNi14eHhd CiAgKi8KKyNkZWZpbmUgRFJNX0ZPUk1BVF9QMjEwCQlmb3VyY2NfY29kZSgnUCcsICcyJywgJzEn LCAnMCcpIC8qIDJ4MSBzdWJzYW1wbGVkIENyOkNiIHBsYW5lLCAxMCBiaXQgcGVyIGNoYW5uZWwg Ki8KICNkZWZpbmUgRFJNX0ZPUk1BVF9QMDEwCQlmb3VyY2NfY29kZSgnUCcsICcwJywgJzEnLCAn MCcpIC8qIDJ4MiBzdWJzYW1wbGVkIENyOkNiIHBsYW5lLCAxMCBiaXQgcGVyIGNoYW5uZWwgKi8K ICNkZWZpbmUgRFJNX0ZPUk1BVF9QMDEyCQlmb3VyY2NfY29kZSgnUCcsICcwJywgJzEnLCAnMicp IC8qIDJ4MiBzdWJzYW1wbGVkIENyOkNiIHBsYW5lLCAxMiBiaXQgcGVyIGNoYW5uZWwgKi8KICNk ZWZpbmUgRFJNX0ZPUk1BVF9QMDE2CQlmb3VyY2NfY29kZSgnUCcsICcwJywgJzEnLCAnNicpIC8q IDJ4MiBzdWJzYW1wbGVkIENyOkNiIHBsYW5lLCAxNiBiaXQgcGVyIGNoYW5uZWwgKi8KLS0gCjIu Ny40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK