[PATCH weston v3 3/4] libweston: Add check and fallback for linux/sync_file.h

Alexandros Frantzis alexandros.frantzis at collabora.com
Wed Sep 27 12:09:15 UTC 2017


The sync file functionality is required by the upcoming GPU render
timeline work, but it's only available in relatively new linux kernel
versions (4.7 and above).

This commit provides a "sanitized" version of the required sync file
definitions.  On systems that don't have the sync file header (due to
having an older kernel), we will be able to fall back to our own
definitions when building.

Signed-off-by: Alexandros Frantzis <alexandros.frantzis at collabora.com>
---

Changes in v3:
  - "Sanitize" fallback header file.

Changes in v2:
  - New patch.

 Makefile.am                  |  1 +
 configure.ac                 |  1 +
 libweston/weston-sync-file.h | 30 ++++++++++++++++++++++++++++++
 3 files changed, 32 insertions(+)
 create mode 100644 libweston/weston-sync-file.h

diff --git a/Makefile.am b/Makefile.am
index 58a5c596..9d99c694 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -334,6 +334,7 @@ gl_renderer_la_SOURCES =			\
 	libweston/gl-renderer.c			\
 	libweston/vertex-clipping.c		\
 	libweston/vertex-clipping.h		\
+	libweston/weston-sync-file.h		\
 	shared/helpers.h
 endif
 
diff --git a/configure.ac b/configure.ac
index 0ea7b703..c287fac6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -142,6 +142,7 @@ if test x$enable_egl = xyes; then
 	AC_DEFINE([ENABLE_EGL], [1], [Build Weston with EGL support])
 	PKG_CHECK_MODULES(EGL, [egl glesv2])
         PKG_CHECK_MODULES([EGL_TESTS], [egl glesv2 wayland-client wayland-egl])
+	AC_CHECK_HEADERS([linux/sync_file.h])
 fi
 
 COMPOSITOR_MODULES="$COMPOSITOR_MODULES xkbcommon >= 0.3.0"
diff --git a/libweston/weston-sync-file.h b/libweston/weston-sync-file.h
new file mode 100644
index 00000000..114e0b6e
--- /dev/null
+++ b/libweston/weston-sync-file.h
@@ -0,0 +1,30 @@
+/* Sync file Linux kernel UAPI */
+
+#ifndef WESTON_SYNC_FILE_H
+#define WESTON_SYNC_FILE_H
+
+#include <linux/ioctl.h>
+#include <linux/types.h>
+
+struct sync_fence_info {
+	char obj_name[32];
+	char driver_name[32];
+	__s32 status;
+	__u32 flags;
+	__u64 timestamp_ns;
+};
+
+struct sync_file_info {
+	char name[32];
+	__s32 status;
+	__u32 flags;
+	__u32 num_fences;
+	__u32 pad;
+
+	__u64 sync_fence_info;
+};
+
+#define SYNC_IOC_MAGIC '>'
+#define SYNC_IOC_FILE_INFO _IOWR(SYNC_IOC_MAGIC, 4, struct sync_file_info)
+
+#endif
-- 
2.14.1



More information about the wayland-devel mailing list