Exercise lite-restore (re-submit a context that is currently running), by queueing several small batchbuffers. This test helps to validate WaIdleLiteRestore. Signed-off-by: Michel Thierry <michel.thierry@xxxxxxxxx> --- tests/gem_ctx_exec.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/tests/gem_ctx_exec.c b/tests/gem_ctx_exec.c index 43b38a2..3df939c 100644 --- a/tests/gem_ctx_exec.c +++ b/tests/gem_ctx_exec.c @@ -155,7 +155,7 @@ static void big_exec(int fd, uint32_t handle, int ring) uint32_t handle; uint32_t batch[2] = {0, MI_BATCH_BUFFER_END}; -uint32_t ctx_id; +uint32_t ctx_id, ctx_id2; int fd; igt_main @@ -215,4 +215,32 @@ 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); + } } -- 2.3.5 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx