summaryrefslogtreecommitdiff
path: root/tests/i915/gem_ppgtt.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2019-01-08 14:47:45 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2019-01-11 13:44:50 +0000
commit9376f4ec3947e61a1985225cdb9e34b06dde5bf7 (patch)
tree7ced235e364ce9cc7c1c75893b39f4e15094788d /tests/i915/gem_ppgtt.c
parente7fb96af70605a6a8fa4838c5ca7c132c8b5e942 (diff)
i915/gem_ppgtt: Convert stress test to run for a fixed duration
Currently blt-vs-render runs for a fixed loop count, and exceeds 360s on a slow Skylake-y. It really doesn't tell us anything useful about low likelihood events after the first few seconds it takes to fill memory, so limit it to 30s (and hope that repeated runs in CI is enough to exercise the even rarer corner cases). Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108039 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Diffstat (limited to 'tests/i915/gem_ppgtt.c')
-rw-r--r--tests/i915/gem_ppgtt.c55
1 files changed, 39 insertions, 16 deletions
diff --git a/tests/i915/gem_ppgtt.c b/tests/i915/gem_ppgtt.c
index c2e4ca67..11ca31e7 100644
--- a/tests/i915/gem_ppgtt.c
+++ b/tests/i915/gem_ppgtt.c
@@ -85,7 +85,9 @@ static void scratch_buf_fini(struct igt_buf *buf)
memset(buf, 0, sizeof(*buf));
}
-static void fork_rcs_copy(int target, drm_intel_bo **dst, int count, unsigned flags)
+static void fork_rcs_copy(int timeout, uint32_t final,
+ drm_intel_bo **dst, int count,
+ unsigned flags)
#define CREATE_CONTEXT 0x1
{
igt_render_copyfunc_t render_copy;
@@ -117,6 +119,8 @@ static void fork_rcs_copy(int target, drm_intel_bo **dst, int count, unsigned fl
igt_fork(child, count) {
struct intel_batchbuffer *batch;
struct igt_buf buf = {};
+ struct igt_buf src;
+ unsigned long i;
batch = intel_batchbuffer_alloc(dst[child]->bufmgr,
devid);
@@ -135,23 +139,29 @@ static void fork_rcs_copy(int target, drm_intel_bo **dst, int count, unsigned fl
buf.size = SIZE;
buf.bpp = 32;
- for (int i = 0; i <= target; i++) {
- struct igt_buf src;
-
+ i = 0;
+ igt_until_timeout(timeout) {
scratch_buf_init(&src, dst[child]->bufmgr,
- i | child << 16);
-
+ i++ | child << 16);
render_copy(batch, NULL,
&src, 0, 0,
WIDTH, HEIGHT,
&buf, 0, 0);
-
scratch_buf_fini(&src);
}
+
+ scratch_buf_init(&src, dst[child]->bufmgr,
+ final | child << 16);
+ render_copy(batch, NULL,
+ &src, 0, 0,
+ WIDTH, HEIGHT,
+ &buf, 0, 0);
+ scratch_buf_fini(&src);
}
}
-static void fork_bcs_copy(int target, drm_intel_bo **dst, int count)
+static void fork_bcs_copy(int timeout, uint32_t final,
+ drm_intel_bo **dst, int count)
{
int devid;
@@ -169,18 +179,20 @@ static void fork_bcs_copy(int target, drm_intel_bo **dst, int count)
igt_fork(child, count) {
struct intel_batchbuffer *batch;
+ drm_intel_bo *src[2];
+ unsigned long i;
+
batch = intel_batchbuffer_alloc(dst[child]->bufmgr,
devid);
igt_assert(batch);
- for (int i = 0; i <= target; i++) {
- drm_intel_bo *src[2];
-
+ i = 0;
+ igt_until_timeout(timeout) {
src[0] = create_bo(dst[child]->bufmgr,
~0);
src[1] = create_bo(dst[child]->bufmgr,
- i | child << 16);
+ i++ | child << 16);
intel_copy_bo(batch, src[0], src[1], SIZE);
intel_copy_bo(batch, dst[child], src[0], SIZE);
@@ -188,6 +200,17 @@ static void fork_bcs_copy(int target, drm_intel_bo **dst, int count)
drm_intel_bo_unreference(src[1]);
drm_intel_bo_unreference(src[0]);
}
+
+ src[0] = create_bo(dst[child]->bufmgr,
+ ~0);
+ src[1] = create_bo(dst[child]->bufmgr,
+ final | child << 16);
+
+ intel_copy_bo(batch, src[0], src[1], SIZE);
+ intel_copy_bo(batch, dst[child], src[0], SIZE);
+
+ drm_intel_bo_unreference(src[1]);
+ drm_intel_bo_unreference(src[0]);
}
}
@@ -314,8 +337,8 @@ int main(int argc, char **argv)
igt_subtest("blt-vs-render-ctx0") {
drm_intel_bo *bcs[1], *rcs[N_CHILD];
- fork_bcs_copy(0x4000, bcs, 1);
- fork_rcs_copy(0x8000 / N_CHILD, rcs, N_CHILD, 0);
+ fork_bcs_copy(30, 0x4000, bcs, 1);
+ fork_rcs_copy(30, 0x8000 / N_CHILD, rcs, N_CHILD, 0);
igt_waitchildren();
@@ -326,8 +349,8 @@ int main(int argc, char **argv)
igt_subtest("blt-vs-render-ctxN") {
drm_intel_bo *bcs[1], *rcs[N_CHILD];
- fork_rcs_copy(0x8000 / N_CHILD, rcs, N_CHILD, CREATE_CONTEXT);
- fork_bcs_copy(0x4000, bcs, 1);
+ fork_rcs_copy(30, 0x8000 / N_CHILD, rcs, N_CHILD, CREATE_CONTEXT);
+ fork_bcs_copy(30, 0x4000, bcs, 1);
igt_waitchildren();