diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2016-02-29 21:15:01 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2016-11-09 09:43:36 +0000 |
commit | cfc8d6903f91c787630eef2676fcad93d62e1bff (patch) | |
tree | 88173f6bac29e58bc935bd20bba9d41056c2e095 | |
parent | 6ba1f98707756eada82328cd2739a3b815382715 (diff) |
igt/gem_exec_parse: Exercise lots of different allocation sizes
Try and exercise the batch-pool vs shrinker.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r-- | tests/gem_exec_parse.c | 37 |
1 files changed, 37 insertions, 0 deletions
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<<i)) << 12; + execbuf.batch_len = (1ull<<(12+i)) - 8 - execbuf.batch_start_offset; + gem_execbuf(fd, &execbuf); + } + + for (i = 0; i < ARRAY_SIZE(obj); i++) { + gem_sync(fd, obj[i].handle); + gem_close(fd, obj[i].handle); + } +} + uint32_t handle; int fd; @@ -503,6 +536,10 @@ igt_main } } + igt_subtest("basic-allocation") { + test_allocations(fd); + } + igt_subtest("registers") { uint32_t lri_bad[] = { MI_LOAD_REGISTER_IMM, |