diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2014-01-26 14:36:32 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2014-01-26 14:38:42 +0000 |
commit | 0b4c33f62c2d4a61b0b5e9184524c8ca273400b1 (patch) | |
tree | beddf50b21ee8b07dd14d98c40ca3330967bf7fe | |
parent | b5109e62cea170f3550588119d41a9bcf79789e5 (diff) |
igt/gem_concurrent_blit: Scale resource usage to RAM correctly
Note that we use twice the number of buffers, and so we need to restrict
num_buffers appropriately to fit within RAM.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=72255
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
-rw-r--r-- | tests/gem_concurrent_blit.c | 49 |
1 files changed, 33 insertions, 16 deletions
diff --git a/tests/gem_concurrent_blit.c b/tests/gem_concurrent_blit.c index 27bc795f..09616e57 100644 --- a/tests/gem_concurrent_blit.c +++ b/tests/gem_concurrent_blit.c @@ -54,27 +54,42 @@ static void prw_set_bo(drm_intel_bo *bo, uint32_t val, int width, int height) { - int size = width * height; - uint32_t *vaddr, *tmp; - - vaddr = tmp = malloc(size*4); - while (size--) - *vaddr++ = val; - drm_intel_bo_subdata(bo, 0, width*height*4, tmp); - free(tmp); + int size = width * height, i; + uint32_t *tmp; + + tmp = malloc(4*size); + if (tmp) { + for (i = 0; i < size; i++) + tmp[i] = val; + drm_intel_bo_subdata(bo, 0, 4*size, tmp); + free(tmp); + } else { + for (i = 0; i < size; i++) + drm_intel_bo_subdata(bo, 4*i, 4, &val); + } } static void prw_cmp_bo(drm_intel_bo *bo, uint32_t val, int width, int height) { - int size = width * height; - uint32_t *vaddr, *tmp; - - vaddr = tmp = malloc(size*4); - drm_intel_bo_get_subdata(bo, 0, size*4, tmp); - while (size--) - igt_assert(*vaddr++ == val); - free(tmp); + int size = width * height, i; + uint32_t *tmp; + + tmp = malloc(4*size); + if (tmp) { + memset(tmp, 0, 4*size); + do_or_die(drm_intel_bo_get_subdata(bo, 0, 4*size, tmp)); + for (i = 0; i < size; i++) + igt_assert(tmp[i] == val); + free(tmp); + } else { + uint32_t t; + for (i = 0; i < size; i++) { + t = 0; + do_or_die(drm_intel_bo_get_subdata(bo, 4*i, 4, &t)); + igt_assert(t == val); + } + } } static drm_intel_bo * @@ -370,6 +385,8 @@ igt_main max = intel_get_total_ram_mb() * 3 / 4; if (num_buffers > max) num_buffers = max; + num_buffers /= 2; + printf("using 2x%d buffers, each 1MiB\n", num_buffers); } for (i = 0; i < ARRAY_SIZE(access_modes); i++) |