summaryrefslogtreecommitdiff
path: root/tests/i915/gem_busy.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2020-03-31 15:47:56 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2020-04-01 16:27:45 +0100
commit12884a28a90c5e3a1caf5798f3e3421466e11d5a (patch)
tree4bbbd3b5cfd06d2ab3b65a070d6ad9af3ebe2070 /tests/i915/gem_busy.c
parent4950b5745d43d92cd66c7a34f8836f8c3248fb97 (diff)
i915/gem_busy: Dynamic active engine tests
Use igt_subtest_with_dynamic for the flexible approach to engine dependent test discovery. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Acked-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Diffstat (limited to 'tests/i915/gem_busy.c')
-rw-r--r--tests/i915/gem_busy.c87
1 files changed, 41 insertions, 46 deletions
diff --git a/tests/i915/gem_busy.c b/tests/i915/gem_busy.c
index ddaca12f..64e6fe6b 100644
--- a/tests/i915/gem_busy.c
+++ b/tests/i915/gem_busy.c
@@ -310,6 +310,7 @@ static void close_race(int fd)
{
const unsigned int ncpus = sysconf(_SC_NPROCESSORS_ONLN);
const unsigned int nhandles = gem_measure_ring_inflight(fd, ALL_ENGINES, 0) / 2;
+ const struct intel_execution_engine2 *e;
unsigned int engines[16], nengine;
unsigned long *control;
uint32_t *handles;
@@ -324,8 +325,8 @@ static void close_race(int fd)
*/
nengine = 0;
- for_each_engine(e, fd)
- engines[nengine++] = eb_ring(e);
+ __for_each_physical_engine(fd, e)
+ engines[nengine++] = e->flags;
igt_require(nengine);
control = mmap(NULL, 4096, PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0);
@@ -467,9 +468,19 @@ static void all(int i915)
const struct intel_execution_engine2 *e;
__for_each_physical_engine(i915, e)
- basic(i915, e, 0);
+ igt_fork(child, 1) basic(i915, e, 0);
+ igt_waitchildren();
}
+#define test_each_engine(T, i915, e) \
+ igt_subtest_with_dynamic(T) __for_each_physical_engine(i915, e) \
+ igt_dynamic_f("%s", (e)->name)
+
+#define test_each_engine_store(T, i915, e) \
+ igt_subtest_with_dynamic(T) __for_each_physical_engine(i915, e) \
+ for_each_if (gem_class_can_store_dword(i915, (e)->class)) \
+ igt_dynamic_f("%s", (e)->name)
+
igt_main
{
const struct intel_execution_engine2 *e;
@@ -478,8 +489,6 @@ igt_main
igt_fixture {
fd = drm_open_driver_master(DRIVER_INTEL);
igt_require_gem(fd);
- igt_require(gem_class_can_store_dword(fd,
- I915_ENGINE_CLASS_RENDER));
}
igt_subtest_group {
@@ -487,14 +496,14 @@ igt_main
igt_fork_hang_detector(fd);
}
- igt_subtest("busy-all") {
- gem_quiescent_gpu(fd);
- all(fd);
- }
+ igt_subtest_with_dynamic("busy") {
+ igt_dynamic("all") {
+ gem_quiescent_gpu(fd);
+ all(fd);
+ }
- __for_each_physical_engine(fd, e) {
- igt_subtest_group {
- igt_subtest_f("busy-%s", e->name) {
+ __for_each_physical_engine(fd, e) {
+ igt_dynamic_f("%s", e->name) {
gem_quiescent_gpu(fd);
basic(fd, e, 0);
}
@@ -507,24 +516,16 @@ igt_main
gem_require_mmap_wc(fd);
}
- __for_each_physical_engine(fd, e) {
- igt_subtest_f("extended-%s", e->name) {
- igt_require(gem_class_can_store_dword(fd,
- e->class));
- gem_quiescent_gpu(fd);
- one(fd, e, 0);
- gem_quiescent_gpu(fd);
- }
+ test_each_engine_store("extended", fd, e) {
+ gem_quiescent_gpu(fd);
+ one(fd, e, 0);
+ gem_quiescent_gpu(fd);
}
- __for_each_physical_engine(fd, e) {
- igt_subtest_f("extended-parallel-%s", e->name) {
- igt_require(gem_class_can_store_dword(fd, e->class));
-
- gem_quiescent_gpu(fd);
- one(fd, e, PARALLEL);
- gem_quiescent_gpu(fd);
- }
+ test_each_engine_store("parallel", fd, e) {
+ gem_quiescent_gpu(fd);
+ one(fd, e, PARALLEL);
+ gem_quiescent_gpu(fd);
}
}
@@ -534,9 +535,10 @@ igt_main
igt_require(has_semaphores(fd));
}
- __for_each_physical_engine(fd, e) {
- igt_subtest_f("extended-semaphore-%s", e->name)
- semaphore(fd, e);
+ test_each_engine("semaphore", fd, e) {
+ gem_quiescent_gpu(fd);
+ semaphore(fd, e);
+ gem_quiescent_gpu(fd);
}
}
@@ -555,13 +557,10 @@ igt_main
hang = igt_allow_hang(fd, 0, 0);
}
- __for_each_physical_engine(fd, e) {
- igt_subtest_f("%shang-%s",
- e->class == I915_ENGINE_CLASS_RENDER
- ? "basic-" : "", e->name) {
- gem_quiescent_gpu(fd);
- basic(fd, e, HANG);
- }
+ test_each_engine("hang", fd, e) {
+ gem_quiescent_gpu(fd);
+ basic(fd, e, HANG);
+ gem_quiescent_gpu(fd);
}
igt_subtest_group {
@@ -570,14 +569,10 @@ igt_main
gem_require_mmap_wc(fd);
}
- __for_each_physical_engine(fd, e) {
- igt_subtest_f("extended-hang-%s", e->name) {
- igt_require(gem_class_can_store_dword(fd, e->class));
-
- gem_quiescent_gpu(fd);
- one(fd, e, HANG);
- gem_quiescent_gpu(fd);
- }
+ test_each_engine_store("hang-extended", fd, e) {
+ gem_quiescent_gpu(fd);
+ one(fd, e, HANG);
+ gem_quiescent_gpu(fd);
}
}