[Intel-gfx] [PATCH igt v2 2/5] igt/gem_workarounds: Also exercise fresh contexts not the persistent default
Chris Wilson
chris at chris-wilson.co.uk
Wed Oct 4 14:25:11 UTC 2017
v2: Actually exercise the new context
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
---
tests/gem_workarounds.c | 35 +++++++++++++++++++++++++++--------
1 file changed, 27 insertions(+), 8 deletions(-)
diff --git a/tests/gem_workarounds.c b/tests/gem_workarounds.c
index c669a5cd..234fef0a 100644
--- a/tests/gem_workarounds.c
+++ b/tests/gem_workarounds.c
@@ -87,7 +87,7 @@ static bool write_only(const uint32_t addr)
#define MI_STORE_REGISTER_MEM (0x24 << 23)
-static int workaround_fail_count(int fd)
+static int workaround_fail_count(int fd, uint32_t ctx)
{
struct drm_i915_gem_exec_object2 obj[2];
struct drm_i915_gem_relocation_entry *reloc;
@@ -131,6 +131,7 @@ static int workaround_fail_count(int fd)
memset(&execbuf, 0, sizeof(execbuf));
execbuf.buffers_ptr = to_user_pointer(obj);
execbuf.buffer_count = 2;
+ execbuf.rsvd1 = ctx;
gem_execbuf(fd, &execbuf);
gem_set_domain(fd, obj[0].handle, I915_GEM_DOMAIN_CPU, 0);
@@ -167,9 +168,15 @@ 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)
{
- igt_assert_eq(workaround_fail_count(fd), 0);
+ uint32_t ctx = 0;
+
+ if (flags & CONTEXT)
+ ctx = gem_context_create(fd);
+
+ igt_assert_eq(workaround_fail_count(fd, ctx), 0);
switch (op) {
case GPU_RESET:
@@ -181,13 +188,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);
+ igt_assert_eq(workaround_fail_count(fd, ctx), 0);
+
+ if (ctx)
+ gem_context_destroy(fd, ctx);
}
igt_main
@@ -233,11 +243,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);
}
--
2.14.2
More information about the Intel-gfx
mailing list