Cover all engines with the engine map API. Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> --- tests/i915/gem_exec_suspend.c | 69 +++++++++++++---------------------- 1 file changed, 25 insertions(+), 44 deletions(-) diff --git a/tests/i915/gem_exec_suspend.c b/tests/i915/gem_exec_suspend.c index 42b0ab705..a31dd6625 100644 --- a/tests/i915/gem_exec_suspend.c +++ b/tests/i915/gem_exec_suspend.c @@ -31,7 +31,6 @@ #include <unistd.h> #include "i915/gem.h" -#include "i915/gem_ring.h" #include "igt.h" #include "igt_dummyload.h" #include "igt_gt.h" @@ -51,7 +50,7 @@ #define CACHED (1<<8) #define HANG (2<<8) -static void run_test(int fd, unsigned ring, unsigned flags); +static void run_test(int fd, unsigned engine, unsigned flags); static void check_bo(int fd, uint32_t handle) { @@ -68,24 +67,7 @@ static void check_bo(int fd, uint32_t handle) static void test_all(int fd, unsigned flags) { - for_each_physical_ring(e, fd) - if (gem_can_store_dword(fd, eb_ring(e))) - run_test(fd, eb_ring(e), flags & ~0xff); -} - -static bool has_semaphores(int fd) -{ - struct drm_i915_getparam gp; - int val = -1; - - memset(&gp, 0, sizeof(gp)); - gp.param = I915_PARAM_HAS_SEMAPHORES; - gp.value = &val; - - drmIoctl(fd, DRM_IOCTL_I915_GETPARAM, &gp); - errno = 0; - - return val > 0; + run_test(fd, ALL_ENGINES, flags & ~0xff); } static void run_test(int fd, unsigned engine, unsigned flags) @@ -101,25 +83,13 @@ static void run_test(int fd, unsigned engine, unsigned flags) nengine = 0; if (engine == ALL_ENGINES) { - /* If we don't have semaphores, then every ring switch - * will result in a CPU stall until the previous write - * has finished. This is likely to hide any issue with - * the GPU being active across the suspend (because the - * GPU is then unlikely to be active!) - */ - if (has_semaphores(fd)) { - for_each_physical_ring(e, fd) { - if (gem_can_store_dword(fd, eb_ring(e))) - engines[nengine++] = eb_ring(e); - } - } else { - igt_require(gem_has_ring(fd, 0)); - igt_require(gem_can_store_dword(fd, 0)); - engines[nengine++] = 0; + const struct intel_execution_engine2 *e; + + __for_each_physical_engine(fd, e) { + if (gem_class_can_store_dword(fd, e->class)) + engines[nengine++] = e->flags; } } else { - igt_require(gem_has_ring(fd, engine)); - igt_require(gem_can_store_dword(fd, engine)); engines[nengine++] = engine; } igt_require(nengine); @@ -301,7 +271,7 @@ igt_main { "-S4", HIBERNATE }, { NULL, 0 } }, *m; - const struct intel_execution_ring *e; + const struct intel_execution_engine2 *e; igt_hang_t hang; int fd; @@ -326,12 +296,23 @@ igt_main igt_subtest("basic-S4") run_test(fd, ALL_ENGINES, HIBERNATE); - for (e = intel_execution_rings; e->name; e++) { - for (m = modes; m->suffix; m++) { - igt_subtest_f("%s-uncached%s", e->name, m->suffix) - run_test(fd, eb_ring(e), m->mode | UNCACHED); - igt_subtest_f("%s-cached%s", e->name, m->suffix) - run_test(fd, eb_ring(e), m->mode | CACHED); + for (m = modes; m->suffix; m++) { + igt_subtest_with_dynamic_f("uncached-%s", m->suffix) { + __for_each_physical_engine(fd, e) { + if (!gem_class_can_store_dword(fd, e->class)) + continue; + igt_dynamic_f("%s", e->name) + run_test(fd, e->flags, m->mode | UNCACHED); + } + } + + igt_subtest_with_dynamic_f("cached-%s", m->suffix) { + __for_each_physical_engine(fd, e) { + if (!gem_class_can_store_dword(fd, e->class)) + continue; + igt_dynamic_f("%s", e->name) + run_test(fd, e->flags, m->mode | CACHED); + } } } -- 2.30.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx