summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/igt_gt.h9
-rw-r--r--tests/gem_exec_suspend.c8
2 files changed, 13 insertions, 4 deletions
diff --git a/lib/igt_gt.h b/lib/igt_gt.h
index ad993c1b..dfe1cfb3 100644
--- a/lib/igt_gt.h
+++ b/lib/igt_gt.h
@@ -100,4 +100,13 @@ extern const struct intel_execution_engine {
unsigned flags;
} intel_execution_engines[];
+#define for_if(expr__) if (!(expr__)) {} else
+
+#define for_each_engine(fd__, flags__) \
+ for (const struct intel_execution_engine *e__ = intel_execution_engines;\
+ e__->name; \
+ e__++) \
+ for_if (gem_has_ring(fd, flags__ = e__->exec_id | e__->flags))
+
+
#endif /* IGT_GT_H */
diff --git a/tests/gem_exec_suspend.c b/tests/gem_exec_suspend.c
index f468ff4a..86cf644a 100644
--- a/tests/gem_exec_suspend.c
+++ b/tests/gem_exec_suspend.c
@@ -53,10 +53,10 @@ static void check_bo(int fd, uint32_t handle)
static void test_all(int fd)
{
- const struct intel_execution_engine *e;
- for (e = intel_execution_engines; e->name; e++)
- if (gem_has_ring(fd, e->exec_id | e->flags))
- run_test(fd, e->exec_id | e->flags, NOSLEEP);
+ unsigned engine;
+
+ for_each_engine(fd, engine)
+ run_test(fd, engine, NOSLEEP);
}
static void run_test(int fd, unsigned ring, enum mode mode)