From: Tvrtko Ursulin <tvrtko.ursu...@intel.com>

New home is more appropriate for this test.

At the same time tidy code a tiny bit.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursu...@intel.com>
---
 tests/gem_ctx_exec.c   | 75 +++++++-----------------------------------
 tests/gem_ctx_switch.c | 46 ++++++++++++++++++++++++++
 2 files changed, 58 insertions(+), 63 deletions(-)

diff --git a/tests/gem_ctx_exec.c b/tests/gem_ctx_exec.c
index b35ec9f64775..b9173e9e2b17 100644
--- a/tests/gem_ctx_exec.c
+++ b/tests/gem_ctx_exec.c
@@ -25,10 +25,6 @@
  *
  */
 
-/*
- * This test covers basic context switch functionality
- */
-
 #include "igt.h"
 #include <unistd.h>
 #include <stdlib.h>
@@ -45,34 +41,18 @@
 #include <drm.h>
 
 
-IGT_TEST_DESCRIPTION("Test basic context switch functionality.");
+IGT_TEST_DESCRIPTION("Test context batch execution.");
 
-/* Copied from gem_exec_nop.c */
 static int exec(int fd, uint32_t handle, int ring, int ctx_id)
 {
-       struct drm_i915_gem_execbuffer2 execbuf;
-       struct drm_i915_gem_exec_object2 gem_exec;
-
-       gem_exec.handle = handle;
-       gem_exec.relocation_count = 0;
-       gem_exec.relocs_ptr = 0;
-       gem_exec.alignment = 0;
-       gem_exec.offset = 0;
-       gem_exec.flags = 0;
-       gem_exec.rsvd1 = 0;
-       gem_exec.rsvd2 = 0;
-
-       execbuf.buffers_ptr = to_user_pointer(&gem_exec);
-       execbuf.buffer_count = 1;
-       execbuf.batch_start_offset = 0;
-       execbuf.batch_len = 8;
-       execbuf.cliprects_ptr = 0;
-       execbuf.num_cliprects = 0;
-       execbuf.DR1 = 0;
-       execbuf.DR4 = 0;
-       execbuf.flags = ring;
+       struct drm_i915_gem_exec_object2 obj = { .handle = handle };
+       struct drm_i915_gem_execbuffer2 execbuf = {
+               .buffers_ptr = to_user_pointer(&obj),
+               .buffer_count = 1,
+               .flags = ring,
+       };
+
        i915_execbuffer2_set_context_id(execbuf, ctx_id);
-       execbuf.rsvd2 = 0;
 
        return __gem_execbuf(fd, &execbuf);
 }
@@ -92,13 +72,11 @@ static void big_exec(int fd, uint32_t handle, int ring)
        igt_assert(gem_exec);
        memset(gem_exec, 0, (num_buffers + 1) * sizeof(*gem_exec));
 
-
        ctx_id1 = gem_context_create(fd);
        ctx_id2 = gem_context_create(fd);
 
        gem_exec[0].handle = handle;
 
-
        execbuf.buffers_ptr = to_user_pointer(gem_exec);
        execbuf.buffer_count = num_buffers + 1;
        execbuf.batch_start_offset = 0;
@@ -155,14 +133,13 @@ static void invalid_context(int fd, unsigned ring)
        igt_assert_eq(__gem_execbuf(fd, &execbuf), -ENOENT);
 }
 
-uint32_t handle;
-uint32_t batch[2] = {0, MI_BATCH_BUFFER_END};
-uint32_t ctx_id, ctx_id2;
-int fd;
-
 igt_main
 {
+       const uint32_t batch[2] = { 0, MI_BATCH_BUFFER_END };
        const struct intel_execution_engine *e;
+       uint32_t handle;
+       uint32_t ctx_id;
+       int fd;
 
        igt_fixture {
                fd = drm_open_driver_render(DRIVER_INTEL);
@@ -225,32 +202,4 @@ igt_main
 
                gem_context_destroy(fd, ctx_id);
        }
-
-       igt_subtest("lrc-lite-restore") {
-               int i, j;
-
-               /*
-                * Need 2 contexts to be able to replicate a lite restore,
-                * i.e. a running context is resubmitted.
-                */
-               ctx_id = gem_context_create(fd);
-               ctx_id2 = gem_context_create(fd);
-
-               /*
-                * Queue several small batchbuffers to be sure we'll send 
execlists
-                * with 2 valid context, and likely cause a lite restore when 
ctxB
-                * is resubmitted at the top of the new execlist.
-                */
-               for (i = 0; i < 20; i++) {
-                       for (j = 0; j < 200; j++) {
-                               igt_assert(exec(fd, handle, I915_EXEC_RENDER, 
ctx_id) == 0);
-                               igt_assert(exec(fd, handle, I915_EXEC_RENDER, 
ctx_id2) == 0);
-                       }
-
-                       gem_sync(fd, handle);
-               }
-
-               gem_context_destroy(fd, ctx_id);
-               gem_context_destroy(fd, ctx_id2);
-       }
 }
diff --git a/tests/gem_ctx_switch.c b/tests/gem_ctx_switch.c
index 1208cb8d7fe2..7ad7b31ea183 100644
--- a/tests/gem_ctx_switch.c
+++ b/tests/gem_ctx_switch.c
@@ -83,6 +83,20 @@ static int measure_qlen(int fd,
        return qlen;
 }
 
+static int exec(int fd, uint32_t handle, int ring, int ctx_id)
+{
+       struct drm_i915_gem_exec_object2 obj = { .handle = handle };
+       struct drm_i915_gem_execbuffer2 execbuf = {
+               .buffers_ptr = to_user_pointer(&obj),
+               .buffer_count = 1,
+               .flags = ring,
+       };
+
+       i915_execbuffer2_set_context_id(execbuf, ctx_id);
+
+       return __gem_execbuf(fd, &execbuf);
+}
+
 static void single(int fd, uint32_t handle,
                   const struct intel_execution_engine *e,
                   unsigned flags,
@@ -318,6 +332,38 @@ igt_main
        igt_subtest("basic-all-heavy")
                all(fd, heavy, 0, 5);
 
+       igt_subtest("lrc-lite-restore") {
+               uint32_t ctx[2];
+               int i, j;
+
+               /*
+                * Need 2 contexts to be able to replicate a lite restore,
+                * i.e. a running context is resubmitted.
+                */
+               ctx[0] = gem_context_create(fd);
+               ctx[1] = gem_context_create(fd);
+
+               /*
+                * Queue several small batchbuffers to be sure we'll send
+                * execlists with 2 valid context, and likely cause a lite
+                * restore when ctxB is resubmitted at the top of the new
+                * execlist.
+                */
+               for (i = 0; i < 20; i++) {
+                       for (j = 0; j < 200; j++) {
+                               igt_assert_eq(exec(fd, light, I915_EXEC_RENDER,
+                                                  ctx[0]), 0);
+                               igt_assert_eq(exec(fd, light, I915_EXEC_RENDER,
+                                                  ctx[1]), 0);
+                       }
+
+                       gem_sync(fd, light);
+               }
+
+               gem_context_destroy(fd, ctx[0]);
+               gem_context_destroy(fd, ctx[1]);
+       }
+
        igt_fixture {
                igt_stop_hang_detector();
                gem_close(fd, heavy);
-- 
2.17.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to