mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-10 01:16:18 +00:00
tests/gem_(linear|tiled)_blits: Repeat whilst being interrupted
Since these two tests exercise a working set larger than aperture, they require stalls which are prone to being interrupted - so interrupt them and check that everything still works.
This commit is contained in:
parent
faf2a0223c
commit
ae452e327a
@ -176,30 +176,11 @@ check_bo(int fd, uint32_t handle, uint32_t val)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
static void run_test(int fd, int count)
|
||||||
{
|
{
|
||||||
uint32_t *handle, *start_val;
|
uint32_t *handle, *start_val;
|
||||||
uint32_t start = 0;
|
uint32_t start = 0;
|
||||||
int i, fd, count;
|
int i;
|
||||||
|
|
||||||
fd = drm_open_any();
|
|
||||||
|
|
||||||
count = 0;
|
|
||||||
if (argc > 1)
|
|
||||||
count = atoi(argv[1]);
|
|
||||||
if (count == 0)
|
|
||||||
count = 3 * gem_aperture_size(fd) / (1024*1024) / 2;
|
|
||||||
else if (count < 2) {
|
|
||||||
fprintf(stderr, "count must be >= 2\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (count > intel_get_total_ram_mb() * 9 / 10) {
|
|
||||||
count = intel_get_total_ram_mb() * 9 / 10;
|
|
||||||
printf("not enough RAM to run test, reducing buffer count\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("Using %d 1MiB buffers\n", count);
|
|
||||||
|
|
||||||
handle = malloc(sizeof(uint32_t)*count*2);
|
handle = malloc(sizeof(uint32_t)*count*2);
|
||||||
start_val = handle + count;
|
start_val = handle + count;
|
||||||
@ -247,8 +228,43 @@ int main(int argc, char **argv)
|
|||||||
copy(fd, handle[dst], handle[src]);
|
copy(fd, handle[dst], handle[src]);
|
||||||
start_val[dst] = start_val[src];
|
start_val[dst] = start_val[src];
|
||||||
}
|
}
|
||||||
for (i = 0; i < count; i++)
|
for (i = 0; i < count; i++) {
|
||||||
check_bo(fd, handle[i], start_val[i]);
|
check_bo(fd, handle[i], start_val[i]);
|
||||||
|
gem_close(fd, handle[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
free(handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
int fd, count;
|
||||||
|
|
||||||
|
fd = drm_open_any();
|
||||||
|
|
||||||
|
count = 0;
|
||||||
|
if (argc > 1)
|
||||||
|
count = atoi(argv[1]);
|
||||||
|
if (count == 0)
|
||||||
|
count = 3 * gem_aperture_size(fd) / (1024*1024) / 2;
|
||||||
|
else if (count < 2) {
|
||||||
|
fprintf(stderr, "count must be >= 2\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count > intel_get_total_ram_mb() * 9 / 10) {
|
||||||
|
count = intel_get_total_ram_mb() * 9 / 10;
|
||||||
|
printf("not enough RAM to run test, reducing buffer count\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Using %d 1MiB buffers\n", count);
|
||||||
|
|
||||||
|
run_test(fd, count);
|
||||||
|
|
||||||
|
/* and repeat under the rude interrupter */
|
||||||
|
drmtest_fork_signal_helper();
|
||||||
|
run_test(fd, count);
|
||||||
|
drmtest_stop_signal_helper();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -117,41 +117,16 @@ check_bo(drm_intel_bo *bo, uint32_t start_val)
|
|||||||
drm_intel_bo_unreference(linear_bo);
|
drm_intel_bo_unreference(linear_bo);
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
static void run_test(int count)
|
||||||
{
|
{
|
||||||
drm_intel_bo **bo;
|
drm_intel_bo **bo;
|
||||||
uint32_t *bo_start_val;
|
uint32_t *bo_start_val;
|
||||||
uint32_t start = 0;
|
uint32_t start = 0;
|
||||||
int i, fd, count;
|
int i;
|
||||||
|
|
||||||
fd = drm_open_any();
|
|
||||||
|
|
||||||
count = 0;
|
|
||||||
if (argc > 1)
|
|
||||||
count = atoi(argv[1]);
|
|
||||||
if (count == 0) {
|
|
||||||
count = 3 * gem_aperture_size(fd) / (1024*1024) / 2;
|
|
||||||
count += (count & 1) == 0;
|
|
||||||
} else if (count < 2) {
|
|
||||||
fprintf(stderr, "count must be >= 2\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (count > intel_get_total_ram_mb() * 9 / 10) {
|
|
||||||
count = intel_get_total_ram_mb() * 9 / 10;
|
|
||||||
printf("not enough RAM to run test, reducing buffer count\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("Using %d 1MiB buffers\n", count);
|
|
||||||
|
|
||||||
bo = malloc(sizeof(drm_intel_bo *)*count);
|
bo = malloc(sizeof(drm_intel_bo *)*count);
|
||||||
bo_start_val = malloc(sizeof(uint32_t)*count);
|
bo_start_val = malloc(sizeof(uint32_t)*count);
|
||||||
|
|
||||||
bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
|
|
||||||
drm_intel_bufmgr_gem_enable_reuse(bufmgr);
|
|
||||||
drm_intel_bufmgr_gem_set_vma_cache_size(bufmgr, 32);
|
|
||||||
batch = intel_batchbuffer_alloc(bufmgr, intel_get_drm_devid(fd));
|
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
bo[i] = create_bo(start);
|
bo[i] = create_bo(start);
|
||||||
bo_start_val[i] = start;
|
bo_start_val[i] = start;
|
||||||
@ -200,14 +175,50 @@ int main(int argc, char **argv)
|
|||||||
intel_copy_bo(batch, bo[dst], bo[src], width, height);
|
intel_copy_bo(batch, bo[dst], bo[src], width, height);
|
||||||
bo_start_val[dst] = bo_start_val[src];
|
bo_start_val[dst] = bo_start_val[src];
|
||||||
}
|
}
|
||||||
for (i = 0; i < count; i++)
|
|
||||||
check_bo(bo[i], bo_start_val[i]);
|
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
|
check_bo(bo[i], bo_start_val[i]);
|
||||||
drm_intel_bo_unreference(bo[i]);
|
drm_intel_bo_unreference(bo[i]);
|
||||||
bo[i] = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free(bo);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
int fd, count;
|
||||||
|
|
||||||
|
fd = drm_open_any();
|
||||||
|
|
||||||
|
count = 0;
|
||||||
|
if (argc > 1)
|
||||||
|
count = atoi(argv[1]);
|
||||||
|
if (count == 0) {
|
||||||
|
count = 3 * gem_aperture_size(fd) / (1024*1024) / 2;
|
||||||
|
count += (count & 1) == 0;
|
||||||
|
} else if (count < 2) {
|
||||||
|
fprintf(stderr, "count must be >= 2\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count > intel_get_total_ram_mb() * 9 / 10) {
|
||||||
|
count = intel_get_total_ram_mb() * 9 / 10;
|
||||||
|
printf("not enough RAM to run test, reducing buffer count\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Using %d 1MiB buffers\n", count);
|
||||||
|
|
||||||
|
bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
|
||||||
|
drm_intel_bufmgr_gem_enable_reuse(bufmgr);
|
||||||
|
drm_intel_bufmgr_gem_set_vma_cache_size(bufmgr, 32);
|
||||||
|
batch = intel_batchbuffer_alloc(bufmgr, intel_get_drm_devid(fd));
|
||||||
|
|
||||||
|
run_test(count);
|
||||||
|
|
||||||
|
/* and again whilst being rudely interrupted */
|
||||||
|
drmtest_fork_signal_helper();
|
||||||
|
run_test(count);
|
||||||
|
drmtest_stop_signal_helper();
|
||||||
|
|
||||||
intel_batchbuffer_free(batch);
|
intel_batchbuffer_free(batch);
|
||||||
drm_intel_bufmgr_destroy(bufmgr);
|
drm_intel_bufmgr_destroy(bufmgr);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user