Re: [PATCH v2 04/10] drm/fourcc: Add DRM_FORMAT_Y10_LE32

From: Tomi Valkeinen
Date: Wed Jan 15 2025 - 07:42:33 EST


Hi,

On 15/01/2025 14:33, Geert Uytterhoeven wrote:
Hi Tomi,

On Wed, Jan 15, 2025 at 12:11 PM Tomi Valkeinen
<tomi.valkeinen@xxxxxxxxxxxxxxxx> wrote:
On 15/01/2025 12:33, Geert Uytterhoeven wrote:
On Wed, Jan 15, 2025 at 10:04 AM Tomi Valkeinen
<tomi.valkeinen@xxxxxxxxxxxxxxxx> wrote:
Add Y10_LE32, a 10 bit greyscale format, with 3 pixels packed into
32-bit container.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@xxxxxxxxxxxxxxxx>

Thanks for your patch!

--- a/include/uapi/drm/drm_fourcc.h
+++ b/include/uapi/drm/drm_fourcc.h
@@ -408,6 +408,7 @@ extern "C" {
/* Greyscale formats */

#define DRM_FORMAT_Y8 fourcc_code('G', 'R', 'E', 'Y') /* 8-bit Y-only */
+#define DRM_FORMAT_Y10_LE32 fourcc_code('Y', 'P', 'A', '4') /* [31:0] x:Y2:Y1:Y0 2:10:10:10 little endian */

R10_LE32? Or R10_PA4?

Can we discuss the "R" vs "Y" question under the cover letter? There's
some more context about it in there.

Sorry, hadn't read the cover letter. I got attracted by "Y8" and "Y10".

I took the "LE32" from Gstreamer's format. Maybe it's a bit pointless.

I don't know if it makes sense to add the fourcc to the DRM format name.
The fourcc is very limited. Rather, we could, say, have
DRM_FORMAT_Y10_PACKED_32 (or "R", if you insist =).

Does LE32 have a meaning? My first guess just reading the subject
was wrong ("little endian 32-bit" ;-)

I'm not sure I follow. It's little-endian. The pixel group/unit is a
32-bit number, where the leftmost pixel on the screen is in bits 9-0,
and the padding is in bits 31-30, and stored in memory as little-endian.

Ah, the "LE" applies to the pixels inside each word.

No, to the 32-bit container.

DRM formats stored in memory are always little-endian, unless the
DRM_FORMAT_BIG_ENDIAN bit is set, which is what I was hinting
at...

Indeed you're right. The "LE" is pointless. So back to the bike-shedding about the name =).

Tomi