[PATCH libdrm v2 05/10] modetest: Fix printing of big-endian fourcc values
Geert Uytterhoeven
geert at linux-m68k.org
Fri Jul 8 18:21:44 UTC 2022
Big-endian fourcc values have the MSB set, as that is the
DRM_FORMAT_BIG_ENDIAN flag. Hence printing the last byte unmodified
leads to weird characters.
Fix this by stripping the DRM_FORMAT_BIG_ENDIAN flag, and appending "be"
for big-endian formats.
Sample impact:
Planes:
id crtc fb CRTC x,y x,y gamma size possible crtcs
32 34 36 0,0 0,0 0 0x00000001
- formats: C1 C2 C4 C8 RG16 RG1� XR24
+ formats: C1 C2 C4 C8 RG16 RG16be XR24
props:
8 type:
flags: immutable enum
enums: Overlay=0 Primary=1 Cursor=2
value: 1
30 IN_FORMATS:
flags: immutable blob
blobs:
value:
00000001000000000000000700000018
00000001000000382020314320203243
202034432020384336314752b6314752
3432525800000000000000000000007f
00000000000000000000000000000000
in_formats blob decoded:
C1 : LINEAR
C2 : LINEAR
C4 : LINEAR
C8 : LINEAR
RG16: LINEAR
- RG1�: LINEAR
+ RG16be: LINEAR
XR24: LINEAR
Signed-off-by: Geert Uytterhoeven <geert at linux-m68k.org>
---
v2:
- New.
---
tests/modetest/modetest.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c
index 1d87046f0fdfaf24..f70043d1e6815497 100644
--- a/tests/modetest/modetest.c
+++ b/tests/modetest/modetest.c
@@ -198,11 +198,15 @@ static bit_name_fn(mode_flag)
static void dump_fourcc(uint32_t fourcc)
{
- printf(" %c%c%c%c",
+ bool be = fourcc & DRM_FORMAT_BIG_ENDIAN;
+
+ fourcc &= ~DRM_FORMAT_BIG_ENDIAN;
+ printf(" %c%c%c%c%s",
fourcc,
fourcc >> 8,
fourcc >> 16,
- fourcc >> 24);
+ fourcc >> 24,
+ be ? "be" : "");
}
static void dump_encoders(struct device *dev)
--
2.25.1
More information about the dri-devel
mailing list