summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2016-02-29 21:15:01 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2016-11-09 09:43:36 +0000
commitcfc8d6903f91c787630eef2676fcad93d62e1bff (patch)
tree88173f6bac29e58bc935bd20bba9d41056c2e095
parent6ba1f98707756eada82328cd2739a3b815382715 (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.c37
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,