mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-11 18:06:13 +00:00
igt/gem_concurrent_blit: Deglobalify num_buffers
More num_buffers onto the local struct passed down into the tests to avoid the issue with having to modify the global value inside the tests leading to hilarity if the test asserts. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
aed69b56d4
commit
094e0cbabb
@ -54,18 +54,18 @@ IGT_TEST_DESCRIPTION("Test of pread/pwrite/mmap behavior when writing to active"
|
|||||||
" buffers.");
|
" buffers.");
|
||||||
|
|
||||||
int fd, devid, gen;
|
int fd, devid, gen;
|
||||||
struct intel_batchbuffer *batch;
|
|
||||||
int all;
|
int all;
|
||||||
int pass;
|
int pass;
|
||||||
|
|
||||||
struct buffers {
|
struct buffers {
|
||||||
const struct access_mode *mode;
|
const struct access_mode *mode;
|
||||||
drm_intel_bufmgr *bufmgr;
|
drm_intel_bufmgr *bufmgr;
|
||||||
|
struct intel_batchbuffer *batch;
|
||||||
drm_intel_bo **src, **dst;
|
drm_intel_bo **src, **dst;
|
||||||
drm_intel_bo *snoop, *spare;
|
drm_intel_bo *snoop, *spare;
|
||||||
uint32_t *tmp;
|
uint32_t *tmp;
|
||||||
int width, height, size;
|
int width, height, size;
|
||||||
int count;
|
int count, num_buffers;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define MIN_BUFFERS 3
|
#define MIN_BUFFERS 3
|
||||||
@ -284,6 +284,8 @@ userptr_cmp_bo(struct buffers *b, drm_intel_bo *bo, uint32_t val)
|
|||||||
static void
|
static void
|
||||||
userptr_release_bo(drm_intel_bo *bo)
|
userptr_release_bo(drm_intel_bo *bo)
|
||||||
{
|
{
|
||||||
|
igt_assert(bo->virtual);
|
||||||
|
|
||||||
munmap(bo->virtual, bo->size);
|
munmap(bo->virtual, bo->size);
|
||||||
bo->virtual = NULL;
|
bo->virtual = NULL;
|
||||||
|
|
||||||
@ -388,6 +390,7 @@ static void
|
|||||||
dmabuf_release_bo(drm_intel_bo *bo)
|
dmabuf_release_bo(drm_intel_bo *bo)
|
||||||
{
|
{
|
||||||
struct dmabuf *dmabuf = bo->virtual;
|
struct dmabuf *dmabuf = bo->virtual;
|
||||||
|
igt_assert(dmabuf);
|
||||||
|
|
||||||
munmap(dmabuf->map, bo->size);
|
munmap(dmabuf->map, bo->size);
|
||||||
close(dmabuf->fd);
|
close(dmabuf->fd);
|
||||||
@ -468,6 +471,8 @@ wc_create_bo(drm_intel_bufmgr *bufmgr, int width, int height)
|
|||||||
static void
|
static void
|
||||||
wc_release_bo(drm_intel_bo *bo)
|
wc_release_bo(drm_intel_bo *bo)
|
||||||
{
|
{
|
||||||
|
igt_assert(bo->virtual);
|
||||||
|
|
||||||
munmap(bo->virtual, bo->size);
|
munmap(bo->virtual, bo->size);
|
||||||
bo->virtual = NULL;
|
bo->virtual = NULL;
|
||||||
|
|
||||||
@ -668,15 +673,17 @@ const struct access_mode {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
int num_buffers;
|
|
||||||
igt_render_copyfunc_t rendercopy;
|
igt_render_copyfunc_t rendercopy;
|
||||||
|
|
||||||
static void *buffers_init(struct buffers *data,
|
static void buffers_init(struct buffers *data,
|
||||||
const struct access_mode *mode,
|
const struct access_mode *mode,
|
||||||
int width, int height,
|
int num_buffers,
|
||||||
int _fd, int enable_reuse)
|
int width, int height,
|
||||||
|
int _fd, int enable_reuse)
|
||||||
{
|
{
|
||||||
|
memset(data, 0, sizeof(*data));
|
||||||
data->mode = mode;
|
data->mode = mode;
|
||||||
|
data->num_buffers = num_buffers;
|
||||||
data->count = 0;
|
data->count = 0;
|
||||||
|
|
||||||
data->width = width;
|
data->width = width;
|
||||||
@ -694,15 +701,17 @@ static void *buffers_init(struct buffers *data,
|
|||||||
|
|
||||||
if (enable_reuse)
|
if (enable_reuse)
|
||||||
drm_intel_bufmgr_gem_enable_reuse(data->bufmgr);
|
drm_intel_bufmgr_gem_enable_reuse(data->bufmgr);
|
||||||
return intel_batchbuffer_alloc(data->bufmgr, devid);
|
data->batch = intel_batchbuffer_alloc(data->bufmgr, devid);
|
||||||
|
igt_assert(data->batch);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void buffers_destroy(struct buffers *data)
|
static void buffers_destroy(struct buffers *data)
|
||||||
{
|
{
|
||||||
if (data->count == 0)
|
int count = data->count;
|
||||||
|
if (count == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (int i = 0; i < data->count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
data->mode->release_bo(data->src[i]);
|
data->mode->release_bo(data->src[i]);
|
||||||
data->mode->release_bo(data->dst[i]);
|
data->mode->release_bo(data->dst[i]);
|
||||||
}
|
}
|
||||||
@ -711,13 +720,14 @@ static void buffers_destroy(struct buffers *data)
|
|||||||
data->count = 0;
|
data->count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void buffers_create(struct buffers *data,
|
static void buffers_create(struct buffers *data)
|
||||||
int count)
|
|
||||||
{
|
{
|
||||||
|
int count = data->num_buffers;
|
||||||
int width = data->width, height = data->height;
|
int width = data->width, height = data->height;
|
||||||
igt_assert(data->bufmgr);
|
igt_assert(data->bufmgr);
|
||||||
|
|
||||||
buffers_destroy(data);
|
buffers_destroy(data);
|
||||||
|
igt_assert(data->count == 0);
|
||||||
|
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
data->src[i] =
|
data->src[i] =
|
||||||
@ -739,12 +749,11 @@ static void buffers_fini(struct buffers *data)
|
|||||||
|
|
||||||
free(data->tmp);
|
free(data->tmp);
|
||||||
free(data->src);
|
free(data->src);
|
||||||
data->src = NULL;
|
|
||||||
data->dst = NULL;
|
|
||||||
|
|
||||||
intel_batchbuffer_free(batch);
|
intel_batchbuffer_free(data->batch);
|
||||||
drm_intel_bufmgr_destroy(data->bufmgr);
|
drm_intel_bufmgr_destroy(data->bufmgr);
|
||||||
data->bufmgr = NULL;
|
|
||||||
|
memset(data, 0, sizeof(*data));
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef void (*do_copy)(struct buffers *b, drm_intel_bo *dst, drm_intel_bo *src);
|
typedef void (*do_copy)(struct buffers *b, drm_intel_bo *dst, drm_intel_bo *src);
|
||||||
@ -768,7 +777,7 @@ static void render_copy_bo(struct buffers *b, drm_intel_bo *dst, drm_intel_bo *s
|
|||||||
drm_intel_bo_get_tiling(dst, &d.tiling, &swizzle);
|
drm_intel_bo_get_tiling(dst, &d.tiling, &swizzle);
|
||||||
drm_intel_bo_get_tiling(src, &s.tiling, &swizzle);
|
drm_intel_bo_get_tiling(src, &s.tiling, &swizzle);
|
||||||
|
|
||||||
rendercopy(batch, NULL,
|
rendercopy(b->batch, NULL,
|
||||||
&s, 0, 0,
|
&s, 0, 0,
|
||||||
b->width, b->height,
|
b->width, b->height,
|
||||||
&d, 0, 0);
|
&d, 0, 0);
|
||||||
@ -776,7 +785,7 @@ static void render_copy_bo(struct buffers *b, drm_intel_bo *dst, drm_intel_bo *s
|
|||||||
|
|
||||||
static void blt_copy_bo(struct buffers *b, drm_intel_bo *dst, drm_intel_bo *src)
|
static void blt_copy_bo(struct buffers *b, drm_intel_bo *dst, drm_intel_bo *src)
|
||||||
{
|
{
|
||||||
intel_blt_copy(batch,
|
intel_blt_copy(b->batch,
|
||||||
src, 0, 0, 4*b->width,
|
src, 0, 0, 4*b->width,
|
||||||
dst, 0, 0, 4*b->width,
|
dst, 0, 0, 4*b->width,
|
||||||
b->width, b->height, 32);
|
b->width, b->height, 32);
|
||||||
@ -1244,32 +1253,26 @@ static void __run_forked(struct buffers *buffers,
|
|||||||
do_hang do_hang_func)
|
do_hang do_hang_func)
|
||||||
|
|
||||||
{
|
{
|
||||||
const int old_num_buffers = num_buffers;
|
int _num_buffers = buffers->num_buffers;
|
||||||
|
|
||||||
num_buffers /= num_children;
|
_num_buffers /= num_children;
|
||||||
num_buffers += MIN_BUFFERS;
|
_num_buffers += MIN_BUFFERS;
|
||||||
|
|
||||||
igt_fork(child, num_children) {
|
igt_fork(child, num_children) {
|
||||||
/* recreate process local variables */
|
/* recreate process local variables */
|
||||||
buffers->count = 0;
|
|
||||||
fd = drm_open_driver(DRIVER_INTEL);
|
fd = drm_open_driver(DRIVER_INTEL);
|
||||||
|
buffers_init(buffers, buffers->mode, _num_buffers,
|
||||||
|
buffers->width, buffers->height,
|
||||||
|
fd, true);
|
||||||
|
|
||||||
batch = buffers_init(buffers, buffers->mode,
|
buffers_create(buffers);
|
||||||
buffers->width, buffers->height,
|
|
||||||
fd, true);
|
|
||||||
|
|
||||||
buffers_create(buffers, num_buffers);
|
|
||||||
for (pass = 0; pass < loops; pass++)
|
for (pass = 0; pass < loops; pass++)
|
||||||
do_test_func(buffers, do_copy_func, do_hang_func);
|
do_test_func(buffers, do_copy_func, do_hang_func);
|
||||||
pass = 0;
|
pass = 0;
|
||||||
|
|
||||||
buffers_fini(buffers);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
igt_waitchildren();
|
igt_waitchildren();
|
||||||
igt_assert_eq(intel_detect_and_clear_missed_interrupts(fd), 0);
|
igt_assert_eq(intel_detect_and_clear_missed_interrupts(fd), 0);
|
||||||
|
|
||||||
num_buffers = old_num_buffers;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void run_forked(struct buffers *buffers,
|
static void run_forked(struct buffers *buffers,
|
||||||
@ -1336,6 +1339,7 @@ static void rcs_require(void)
|
|||||||
static void
|
static void
|
||||||
run_basic_modes(const char *prefix,
|
run_basic_modes(const char *prefix,
|
||||||
const struct access_mode *mode,
|
const struct access_mode *mode,
|
||||||
|
const int num_buffers,
|
||||||
const char *suffix,
|
const char *suffix,
|
||||||
run_wrap run_wrap_func)
|
run_wrap run_wrap_func)
|
||||||
{
|
{
|
||||||
@ -1369,27 +1373,27 @@ run_basic_modes(const char *prefix,
|
|||||||
struct buffers buffers;
|
struct buffers buffers;
|
||||||
|
|
||||||
igt_fixture
|
igt_fixture
|
||||||
batch = buffers_init(&buffers, mode,
|
buffers_init(&buffers, mode, num_buffers,
|
||||||
512, 512, fd,
|
512, 512, fd,
|
||||||
run_wrap_func != run_child);
|
run_wrap_func != run_child);
|
||||||
|
|
||||||
igt_subtest_f("%s-%s-%s-sanitycheck0%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
igt_subtest_f("%s-%s-%s-sanitycheck0%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
||||||
p->require();
|
p->require();
|
||||||
buffers_create(&buffers, num_buffers);
|
buffers_create(&buffers);
|
||||||
run_wrap_func(&buffers, do_basic0,
|
run_wrap_func(&buffers, do_basic0,
|
||||||
p->copy, h->hang);
|
p->copy, h->hang);
|
||||||
}
|
}
|
||||||
|
|
||||||
igt_subtest_f("%s-%s-%s-sanitycheck1%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
igt_subtest_f("%s-%s-%s-sanitycheck1%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
||||||
p->require();
|
p->require();
|
||||||
buffers_create(&buffers, num_buffers);
|
buffers_create(&buffers);
|
||||||
run_wrap_func(&buffers, do_basic1,
|
run_wrap_func(&buffers, do_basic1,
|
||||||
p->copy, h->hang);
|
p->copy, h->hang);
|
||||||
}
|
}
|
||||||
|
|
||||||
igt_subtest_f("%s-%s-%s-sanitycheckN%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
igt_subtest_f("%s-%s-%s-sanitycheckN%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
||||||
p->require();
|
p->require();
|
||||||
buffers_create(&buffers, num_buffers);
|
buffers_create(&buffers);
|
||||||
run_wrap_func(&buffers, do_basicN,
|
run_wrap_func(&buffers, do_basicN,
|
||||||
p->copy, h->hang);
|
p->copy, h->hang);
|
||||||
}
|
}
|
||||||
@ -1397,7 +1401,7 @@ run_basic_modes(const char *prefix,
|
|||||||
/* try to overwrite the source values */
|
/* try to overwrite the source values */
|
||||||
igt_subtest_f("%s-%s-%s-overwrite-source-one%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
igt_subtest_f("%s-%s-%s-overwrite-source-one%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
||||||
p->require();
|
p->require();
|
||||||
buffers_create(&buffers, num_buffers);
|
buffers_create(&buffers);
|
||||||
run_wrap_func(&buffers,
|
run_wrap_func(&buffers,
|
||||||
do_overwrite_source__one,
|
do_overwrite_source__one,
|
||||||
p->copy, h->hang);
|
p->copy, h->hang);
|
||||||
@ -1405,7 +1409,7 @@ run_basic_modes(const char *prefix,
|
|||||||
|
|
||||||
igt_subtest_f("%s-%s-%s-overwrite-source%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
igt_subtest_f("%s-%s-%s-overwrite-source%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
||||||
p->require();
|
p->require();
|
||||||
buffers_create(&buffers, num_buffers);
|
buffers_create(&buffers);
|
||||||
run_wrap_func(&buffers,
|
run_wrap_func(&buffers,
|
||||||
do_overwrite_source,
|
do_overwrite_source,
|
||||||
p->copy, h->hang);
|
p->copy, h->hang);
|
||||||
@ -1413,7 +1417,7 @@ run_basic_modes(const char *prefix,
|
|||||||
|
|
||||||
igt_subtest_f("%s-%s-%s-overwrite-source-read-bcs%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
igt_subtest_f("%s-%s-%s-overwrite-source-read-bcs%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
||||||
p->require();
|
p->require();
|
||||||
buffers_create(&buffers, num_buffers);
|
buffers_create(&buffers);
|
||||||
run_wrap_func(&buffers,
|
run_wrap_func(&buffers,
|
||||||
do_overwrite_source_read_bcs,
|
do_overwrite_source_read_bcs,
|
||||||
p->copy, h->hang);
|
p->copy, h->hang);
|
||||||
@ -1422,7 +1426,7 @@ run_basic_modes(const char *prefix,
|
|||||||
igt_subtest_f("%s-%s-%s-overwrite-source-read-rcs%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
igt_subtest_f("%s-%s-%s-overwrite-source-read-rcs%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
||||||
p->require();
|
p->require();
|
||||||
igt_require(rendercopy);
|
igt_require(rendercopy);
|
||||||
buffers_create(&buffers, num_buffers);
|
buffers_create(&buffers);
|
||||||
run_wrap_func(&buffers,
|
run_wrap_func(&buffers,
|
||||||
do_overwrite_source_read_rcs,
|
do_overwrite_source_read_rcs,
|
||||||
p->copy, h->hang);
|
p->copy, h->hang);
|
||||||
@ -1430,7 +1434,7 @@ run_basic_modes(const char *prefix,
|
|||||||
|
|
||||||
igt_subtest_f("%s-%s-%s-overwrite-source-rev%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
igt_subtest_f("%s-%s-%s-overwrite-source-rev%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
||||||
p->require();
|
p->require();
|
||||||
buffers_create(&buffers, num_buffers);
|
buffers_create(&buffers);
|
||||||
run_wrap_func(&buffers,
|
run_wrap_func(&buffers,
|
||||||
do_overwrite_source__rev,
|
do_overwrite_source__rev,
|
||||||
p->copy, h->hang);
|
p->copy, h->hang);
|
||||||
@ -1440,7 +1444,7 @@ run_basic_modes(const char *prefix,
|
|||||||
igt_subtest_f("%s-%s-%s-intermix-rcs%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
igt_subtest_f("%s-%s-%s-intermix-rcs%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
||||||
p->require();
|
p->require();
|
||||||
igt_require(rendercopy);
|
igt_require(rendercopy);
|
||||||
buffers_create(&buffers, num_buffers);
|
buffers_create(&buffers);
|
||||||
run_wrap_func(&buffers,
|
run_wrap_func(&buffers,
|
||||||
do_intermix_rcs,
|
do_intermix_rcs,
|
||||||
p->copy, h->hang);
|
p->copy, h->hang);
|
||||||
@ -1448,7 +1452,7 @@ run_basic_modes(const char *prefix,
|
|||||||
igt_subtest_f("%s-%s-%s-intermix-bcs%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
igt_subtest_f("%s-%s-%s-intermix-bcs%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
||||||
p->require();
|
p->require();
|
||||||
igt_require(rendercopy);
|
igt_require(rendercopy);
|
||||||
buffers_create(&buffers, num_buffers);
|
buffers_create(&buffers);
|
||||||
run_wrap_func(&buffers,
|
run_wrap_func(&buffers,
|
||||||
do_intermix_bcs,
|
do_intermix_bcs,
|
||||||
p->copy, h->hang);
|
p->copy, h->hang);
|
||||||
@ -1456,7 +1460,7 @@ run_basic_modes(const char *prefix,
|
|||||||
igt_subtest_f("%s-%s-%s-intermix-both%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
igt_subtest_f("%s-%s-%s-intermix-both%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
||||||
p->require();
|
p->require();
|
||||||
igt_require(rendercopy);
|
igt_require(rendercopy);
|
||||||
buffers_create(&buffers, num_buffers);
|
buffers_create(&buffers);
|
||||||
run_wrap_func(&buffers,
|
run_wrap_func(&buffers,
|
||||||
do_intermix_both,
|
do_intermix_both,
|
||||||
p->copy, h->hang);
|
p->copy, h->hang);
|
||||||
@ -1465,7 +1469,7 @@ run_basic_modes(const char *prefix,
|
|||||||
/* try to read the results before the copy completes */
|
/* try to read the results before the copy completes */
|
||||||
igt_subtest_f("%s-%s-%s-early-read%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
igt_subtest_f("%s-%s-%s-early-read%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
||||||
p->require();
|
p->require();
|
||||||
buffers_create(&buffers, num_buffers);
|
buffers_create(&buffers);
|
||||||
run_wrap_func(&buffers,
|
run_wrap_func(&buffers,
|
||||||
do_early_read,
|
do_early_read,
|
||||||
p->copy, h->hang);
|
p->copy, h->hang);
|
||||||
@ -1474,7 +1478,7 @@ run_basic_modes(const char *prefix,
|
|||||||
/* concurrent reads */
|
/* concurrent reads */
|
||||||
igt_subtest_f("%s-%s-%s-read-read-bcs%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
igt_subtest_f("%s-%s-%s-read-read-bcs%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
||||||
p->require();
|
p->require();
|
||||||
buffers_create(&buffers, num_buffers);
|
buffers_create(&buffers);
|
||||||
run_wrap_func(&buffers,
|
run_wrap_func(&buffers,
|
||||||
do_read_read_bcs,
|
do_read_read_bcs,
|
||||||
p->copy, h->hang);
|
p->copy, h->hang);
|
||||||
@ -1482,7 +1486,7 @@ run_basic_modes(const char *prefix,
|
|||||||
igt_subtest_f("%s-%s-%s-read-read-rcs%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
igt_subtest_f("%s-%s-%s-read-read-rcs%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
||||||
p->require();
|
p->require();
|
||||||
igt_require(rendercopy);
|
igt_require(rendercopy);
|
||||||
buffers_create(&buffers, num_buffers);
|
buffers_create(&buffers);
|
||||||
run_wrap_func(&buffers,
|
run_wrap_func(&buffers,
|
||||||
do_read_read_rcs,
|
do_read_read_rcs,
|
||||||
p->copy, h->hang);
|
p->copy, h->hang);
|
||||||
@ -1491,7 +1495,7 @@ run_basic_modes(const char *prefix,
|
|||||||
/* split copying between rings */
|
/* split copying between rings */
|
||||||
igt_subtest_f("%s-%s-%s-write-read-bcs%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
igt_subtest_f("%s-%s-%s-write-read-bcs%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
||||||
p->require();
|
p->require();
|
||||||
buffers_create(&buffers, num_buffers);
|
buffers_create(&buffers);
|
||||||
run_wrap_func(&buffers,
|
run_wrap_func(&buffers,
|
||||||
do_write_read_bcs,
|
do_write_read_bcs,
|
||||||
p->copy, h->hang);
|
p->copy, h->hang);
|
||||||
@ -1499,7 +1503,7 @@ run_basic_modes(const char *prefix,
|
|||||||
igt_subtest_f("%s-%s-%s-write-read-rcs%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
igt_subtest_f("%s-%s-%s-write-read-rcs%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
||||||
p->require();
|
p->require();
|
||||||
igt_require(rendercopy);
|
igt_require(rendercopy);
|
||||||
buffers_create(&buffers, num_buffers);
|
buffers_create(&buffers);
|
||||||
run_wrap_func(&buffers,
|
run_wrap_func(&buffers,
|
||||||
do_write_read_rcs,
|
do_write_read_rcs,
|
||||||
p->copy, h->hang);
|
p->copy, h->hang);
|
||||||
@ -1508,7 +1512,7 @@ run_basic_modes(const char *prefix,
|
|||||||
/* and finally try to trick the kernel into loosing the pending write */
|
/* and finally try to trick the kernel into loosing the pending write */
|
||||||
igt_subtest_f("%s-%s-%s-gpu-read-after-write%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
igt_subtest_f("%s-%s-%s-gpu-read-after-write%s%s", prefix, mode->name, p->prefix, suffix, h->suffix) {
|
||||||
p->require();
|
p->require();
|
||||||
buffers_create(&buffers, num_buffers);
|
buffers_create(&buffers);
|
||||||
run_wrap_func(&buffers,
|
run_wrap_func(&buffers,
|
||||||
do_gpu_read_after_write,
|
do_gpu_read_after_write,
|
||||||
p->copy, h->hang);
|
p->copy, h->hang);
|
||||||
@ -1521,7 +1525,10 @@ run_basic_modes(const char *prefix,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
run_modes(const char *style, const struct access_mode *mode, unsigned allow_mem)
|
run_modes(const char *style,
|
||||||
|
const struct access_mode *mode,
|
||||||
|
const int num_buffers,
|
||||||
|
unsigned allow_mem)
|
||||||
{
|
{
|
||||||
if (!igt_only_list_subtests()) {
|
if (!igt_only_list_subtests()) {
|
||||||
if (mode->require && !mode->require())
|
if (mode->require && !mode->require())
|
||||||
@ -1534,13 +1541,15 @@ run_modes(const char *style, const struct access_mode *mode, unsigned allow_mem)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
run_basic_modes(style, mode, "", run_single);
|
run_basic_modes(style, mode, num_buffers, "", run_single);
|
||||||
run_basic_modes(style, mode, "-child", run_child);
|
run_basic_modes(style, mode, num_buffers, "-child", run_child);
|
||||||
run_basic_modes(style, mode, "-forked", run_forked);
|
run_basic_modes(style, mode, num_buffers, "-forked", run_forked);
|
||||||
|
|
||||||
igt_fork_signal_helper();
|
igt_fork_signal_helper();
|
||||||
run_basic_modes(style, mode, "-interruptible", run_interruptible);
|
run_basic_modes(style, mode, num_buffers,
|
||||||
run_basic_modes(style, mode, "-bomb", run_bomb);
|
"-interruptible", run_interruptible);
|
||||||
|
run_basic_modes(style, mode, num_buffers,
|
||||||
|
"-bomb", run_bomb);
|
||||||
igt_stop_signal_helper();
|
igt_stop_signal_helper();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1558,6 +1567,7 @@ igt_main
|
|||||||
}, *c;
|
}, *c;
|
||||||
uint64_t pin_sz = 0;
|
uint64_t pin_sz = 0;
|
||||||
void *pinned = NULL;
|
void *pinned = NULL;
|
||||||
|
int num_buffers = 0;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
igt_skip_on_simulation();
|
igt_skip_on_simulation();
|
||||||
@ -1582,7 +1592,7 @@ igt_main
|
|||||||
if (c->require()) {
|
if (c->require()) {
|
||||||
snprintf(name, sizeof(name), "%s%s", c->name, "tiny");
|
snprintf(name, sizeof(name), "%s%s", c->name, "tiny");
|
||||||
for (i = 0; i < ARRAY_SIZE(access_modes); i++)
|
for (i = 0; i < ARRAY_SIZE(access_modes); i++)
|
||||||
run_modes(name, &access_modes[i], CHECK_RAM);
|
run_modes(name, &access_modes[i], num_buffers, CHECK_RAM);
|
||||||
}
|
}
|
||||||
|
|
||||||
igt_fixture {
|
igt_fixture {
|
||||||
@ -1592,7 +1602,7 @@ igt_main
|
|||||||
if (c->require()) {
|
if (c->require()) {
|
||||||
snprintf(name, sizeof(name), "%s%s", c->name, "small");
|
snprintf(name, sizeof(name), "%s%s", c->name, "small");
|
||||||
for (i = 0; i < ARRAY_SIZE(access_modes); i++)
|
for (i = 0; i < ARRAY_SIZE(access_modes); i++)
|
||||||
run_modes(name, &access_modes[i], CHECK_RAM);
|
run_modes(name, &access_modes[i], num_buffers, CHECK_RAM);
|
||||||
}
|
}
|
||||||
|
|
||||||
igt_fixture {
|
igt_fixture {
|
||||||
@ -1602,7 +1612,7 @@ igt_main
|
|||||||
if (c->require()) {
|
if (c->require()) {
|
||||||
snprintf(name, sizeof(name), "%s%s", c->name, "thrash");
|
snprintf(name, sizeof(name), "%s%s", c->name, "thrash");
|
||||||
for (i = 0; i < ARRAY_SIZE(access_modes); i++)
|
for (i = 0; i < ARRAY_SIZE(access_modes); i++)
|
||||||
run_modes(name, &access_modes[i], CHECK_RAM);
|
run_modes(name, &access_modes[i], num_buffers, CHECK_RAM);
|
||||||
}
|
}
|
||||||
|
|
||||||
igt_fixture {
|
igt_fixture {
|
||||||
@ -1612,7 +1622,7 @@ igt_main
|
|||||||
if (c->require()) {
|
if (c->require()) {
|
||||||
snprintf(name, sizeof(name), "%s%s", c->name, "global");
|
snprintf(name, sizeof(name), "%s%s", c->name, "global");
|
||||||
for (i = 0; i < ARRAY_SIZE(access_modes); i++)
|
for (i = 0; i < ARRAY_SIZE(access_modes); i++)
|
||||||
run_modes(name, &access_modes[i], CHECK_RAM);
|
run_modes(name, &access_modes[i], num_buffers, CHECK_RAM);
|
||||||
}
|
}
|
||||||
|
|
||||||
igt_fixture {
|
igt_fixture {
|
||||||
@ -1622,7 +1632,7 @@ igt_main
|
|||||||
if (c->require()) {
|
if (c->require()) {
|
||||||
snprintf(name, sizeof(name), "%s%s", c->name, "full");
|
snprintf(name, sizeof(name), "%s%s", c->name, "full");
|
||||||
for (i = 0; i < ARRAY_SIZE(access_modes); i++)
|
for (i = 0; i < ARRAY_SIZE(access_modes); i++)
|
||||||
run_modes(name, &access_modes[i], CHECK_RAM);
|
run_modes(name, &access_modes[i], num_buffers, CHECK_RAM);
|
||||||
}
|
}
|
||||||
|
|
||||||
igt_fixture {
|
igt_fixture {
|
||||||
@ -1644,7 +1654,7 @@ igt_main
|
|||||||
if (c->require()) {
|
if (c->require()) {
|
||||||
snprintf(name, sizeof(name), "%s%s", c->name, "swap");
|
snprintf(name, sizeof(name), "%s%s", c->name, "swap");
|
||||||
for (i = 0; i < ARRAY_SIZE(access_modes); i++)
|
for (i = 0; i < ARRAY_SIZE(access_modes); i++)
|
||||||
run_modes(name, &access_modes[i], CHECK_RAM | CHECK_SWAP);
|
run_modes(name, &access_modes[i], num_buffers, CHECK_RAM | CHECK_SWAP);
|
||||||
}
|
}
|
||||||
|
|
||||||
igt_fixture {
|
igt_fixture {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user