mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-10 01:16:18 +00:00
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>
This commit is contained in:
parent
b5109e62ce
commit
0b4c33f62c
@ -54,27 +54,42 @@
|
|||||||
static void
|
static void
|
||||||
prw_set_bo(drm_intel_bo *bo, uint32_t val, int width, int height)
|
prw_set_bo(drm_intel_bo *bo, uint32_t val, int width, int height)
|
||||||
{
|
{
|
||||||
int size = width * height;
|
int size = width * height, i;
|
||||||
uint32_t *vaddr, *tmp;
|
uint32_t *tmp;
|
||||||
|
|
||||||
vaddr = tmp = malloc(size*4);
|
tmp = malloc(4*size);
|
||||||
while (size--)
|
if (tmp) {
|
||||||
*vaddr++ = val;
|
for (i = 0; i < size; i++)
|
||||||
drm_intel_bo_subdata(bo, 0, width*height*4, tmp);
|
tmp[i] = val;
|
||||||
free(tmp);
|
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
|
static void
|
||||||
prw_cmp_bo(drm_intel_bo *bo, uint32_t val, int width, int height)
|
prw_cmp_bo(drm_intel_bo *bo, uint32_t val, int width, int height)
|
||||||
{
|
{
|
||||||
int size = width * height;
|
int size = width * height, i;
|
||||||
uint32_t *vaddr, *tmp;
|
uint32_t *tmp;
|
||||||
|
|
||||||
vaddr = tmp = malloc(size*4);
|
tmp = malloc(4*size);
|
||||||
drm_intel_bo_get_subdata(bo, 0, size*4, tmp);
|
if (tmp) {
|
||||||
while (size--)
|
memset(tmp, 0, 4*size);
|
||||||
igt_assert(*vaddr++ == val);
|
do_or_die(drm_intel_bo_get_subdata(bo, 0, 4*size, tmp));
|
||||||
free(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 *
|
static drm_intel_bo *
|
||||||
@ -370,6 +385,8 @@ igt_main
|
|||||||
max = intel_get_total_ram_mb() * 3 / 4;
|
max = intel_get_total_ram_mb() * 3 / 4;
|
||||||
if (num_buffers > max)
|
if (num_buffers > max)
|
||||||
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++)
|
for (i = 0; i < ARRAY_SIZE(access_modes); i++)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user