Add igt_require_sw_sync to provide tests to skip if sw_sync support isn't
available on the host machine.

Signed-off-by: Robert Foss <[email protected]>
Reviewed-by: Tomeu Vizoso <[email protected]>
---
 lib/sw_sync.c | 22 ++++++++++++++++++++++
 lib/sw_sync.h |  1 +
 2 files changed, 23 insertions(+)

diff --git a/lib/sw_sync.c b/lib/sw_sync.c
index a2168f78..d4ecc898 100644
--- a/lib/sw_sync.c
+++ b/lib/sw_sync.c
@@ -194,3 +194,25 @@ int sync_fence_count_status(int fd, int status)
        igt_assert_f(count >= 0, "No fences with supplied status found");
        return count;
 }
+
+static bool kernel_has_sw_sync(void)
+{
+       bool err;
+
+       igt_ignore_warn(system("/sbin/modprobe -s r sw_sync"));
+
+       err = false;
+       if (access(DEVFS_SW_SYNC, R_OK | W_OK) < 0) {
+               char buf[128];
+
+               snprintf(buf, sizeof(buf), "%s/sw_sync", igt_debugfs_mount());
+               err = access(DEBUGFS_SW_SYNC, R_OK | W_OK) < 0;
+       }
+
+       return !err;
+}
+
+void igt_require_sw_sync(void)
+{
+       igt_require(kernel_has_sw_sync());
+}
diff --git a/lib/sw_sync.h b/lib/sw_sync.h
index cea5a603..82af3378 100644
--- a/lib/sw_sync.h
+++ b/lib/sw_sync.h
@@ -39,6 +39,7 @@ int sync_merge(int fd1, int fd2);
 int sync_wait(int fence, int timeout);
 int sync_fence_count(int fd);
 int sync_fence_count_status(int fd, int status);
+void igt_require_sw_sync(void);
 
 #endif
 
-- 
2.11.0

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to