From cfc8d6903f91c787630eef2676fcad93d62e1bff Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Mon, 29 Feb 2016 21:15:01 +0000 Subject: igt/gem_exec_parse: Exercise lots of different allocation sizes Try and exercise the batch-pool vs shrinker. Signed-off-by: Chris Wilson --- tests/gem_exec_parse.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/tests/gem_exec_parse.c b/tests/gem_exec_parse.c index a39db3e0..2739b2c2 100644 --- a/tests/gem_exec_parse.c +++ b/tests/gem_exec_parse.c @@ -408,6 +408,39 @@ static void stray_lri(int fd, uint32_t handle) igt_assert_eq_u32(intel_register_read(OACONTROL), 0xdeadbeef); } +static void test_allocations(int fd) +{ + uint32_t bbe = MI_BATCH_BUFFER_END; + struct drm_i915_gem_execbuffer2 execbuf; + struct drm_i915_gem_exec_object2 obj[17]; + int i, j; + + intel_require_memory(2, 1ull<<(12 + ARRAY_SIZE(obj)), CHECK_RAM); + + memset(obj, 0, sizeof(obj)); + for (i = 0; i < ARRAY_SIZE(obj); i++) { + obj[i].handle = gem_create(fd, 1ull<<(12 + i)); + gem_write(fd, obj[i].handle, (1ull<<(12+i)) - 8 - sizeof(bbe), + &bbe, sizeof(bbe)); + } + + memset(&execbuf, 0, sizeof(execbuf)); + execbuf.buffer_count = 1; + for (j = 0; j < 16384; j++) { + igt_progress("allocations ", j, 16384); + i = rand() % ARRAY_SIZE(obj); + execbuf.buffers_ptr = (uintptr_t)&obj[i]; + execbuf.batch_start_offset = (rand() % (1ull<