[PATCH igt 3/7] igt/gem_workarounds: Also exercise fresh contexts not the persistent default

Chris Wilson
2017-09-29T15:26:54Z

tests/gem_workarounds.c | 28 +++++++++++++++++++++++-----
1 file changed, 23 insertions(+), 5 deletions(-)

diff --git a/tests/gem_workarounds.c b/tests/gem_workarounds.c
index 074ffc0c..62c10877 100644
--- a/tests/gem_workarounds.c
+++ b/tests/gem_workarounds.c
@@ -166,8 +166,14 @@ static int workaround_fail_count(int fd)
return fail_count;
}

-static void check_workarounds(int fd, enum operation op)
+#define CONTEXT 0x1
+static void check_workarounds(int fd, enum operation op, unsigned int flags)
{
+ uint32_t ctx = 0;
+
+ if (flags & CONTEXT)
+ ctx = gem_context_create(fd);
+
igt_assert_eq(workaround_fail_count(fd), 0);

switch (op) {
@@ -180,13 +186,16 @@ static void check_workarounds(int fd, enum operation op)
break;

case SIMPLE_READ:
- return;
+ break;

default:
igt_assert(0);
}

igt_assert_eq(workaround_fail_count(fd), 0);
+
+ if (ctx)
+ gem_context_destroy(fd, ctx);
}

igt_main
@@ -232,11 +241,20 @@ igt_main
}

igt_subtest("basic-read")
- check_workarounds(device, SIMPLE_READ);
+ check_workarounds(device, SIMPLE_READ, 0);
+
+ igt_subtest("basic-read-context")
+ check_workarounds(device, SIMPLE_READ, CONTEXT);

igt_subtest("reset")
- check_workarounds(device, GPU_RESET);
+ check_workarounds(device, GPU_RESET, 0);
+
+ igt_subtest("reset-context")
+ check_workarounds(device, GPU_RESET, CONTEXT);

igt_subtest("suspend-resume")
- check_workarounds(device, SUSPEND_RESUME);
+ check_workarounds(device, SUSPEND_RESUME, 0);
+
+ igt_subtest("suspend-resume-context")
+ check_workarounds(device, SUSPEND_RESUME, CONTEXT);
}