[PATCH weston] clients/weston-info: print unknown formats better

Pekka Paalanen ppaalanen at gmail.com
Mon Feb 20 13:47:57 UTC 2017


From: Pekka Paalanen <pekka.paalanen at collabora.co.uk>

Don't just dump the raw 32-bit values, try to interpret it as a DRM
fourcc too.

This prints properly the formats YUYV, NV12 and YU12 supported by
Weston.

Signed-off-by: Pekka Paalanen <pekka.paalanen at collabora.co.uk>
---
 clients/weston-info.c | 29 ++++++++++++++++++++++++++++-
 1 file changed, 28 insertions(+), 1 deletion(-)

diff --git a/clients/weston-info.c b/clients/weston-info.c
index 712346a..ab12947 100644
--- a/clients/weston-info.c
+++ b/clients/weston-info.c
@@ -30,6 +30,8 @@
 #include <stdlib.h>
 #include <string.h>
 #include <time.h>
+#include <assert.h>
+#include <ctype.h>
 
 #include <wayland-client.h>
 
@@ -240,9 +242,33 @@ print_output_info(void *data)
 	}
 }
 
+static char
+bits2graph(uint32_t value, unsigned bitoffset)
+{
+	int c = (value >> bitoffset) & 0xff;
+
+	if (isgraph(c) || isspace(c))
+		return c;
+
+	return '?';
+}
+
+static void
+fmt2str(uint32_t format, char *str, int len)
+{
+	int i;
+
+	assert(len >= 5);
+
+	for (i = 0; i < 4; i++)
+		str[i] = bits2graph(format, i * 8);
+	str[i] = '\0';
+}
+
 static void
 print_shm_info(void *data)
 {
+	char str[6];
 	struct shm_info *shm = data;
 	struct shm_format *format;
 
@@ -262,7 +288,8 @@ print_shm_info(void *data)
 			printf(" RGB565");
 			break;
 		default:
-			printf(" unknown(%08x)", format->format);
+			fmt2str(format->format, str, sizeof(str));
+			printf(" '%s'(0x%08x)", str, format->format);
 			break;
 		}
 
-- 
2.10.2



More information about the wayland-devel mailing list