Thread (35 messages) 35 messages, 2 authors, 2021-01-14

[igt-dev] [PATCH i-g-t v15 29/33] tests/gem_ppgtt: Migrate memory check out of render blits

From: Zbigniew Kempczyński <hidden>
Date: 2021-01-14 19:58:41
Subsystem: the rest · Maintainer: Linus Torvalds

Running memory cache flush when bcs is doing blits leads to serializing
bcs and rcs part. So we move memory check before blitting giving chance
to parallel the execution.

Signed-off-by: Zbigniew Kempczyński <redacted>
Cc: Dominik Grzegorzek <redacted>
Cc: Chris Wilson <redacted>
---
 tests/i915/gem_ppgtt.c | 46 +++++++++++++++++++++++-------------------
 1 file changed, 25 insertions(+), 21 deletions(-)
diff --git a/tests/i915/gem_ppgtt.c b/tests/i915/gem_ppgtt.c
index 674bba43a..10ddea403 100644
--- a/tests/i915/gem_ppgtt.c
+++ b/tests/i915/gem_ppgtt.c
@@ -81,14 +81,8 @@ static void fork_rcs_copy(int timeout, uint32_t final,
 #define CREATE_CONTEXT 0x1
 {
 	igt_render_copyfunc_t render_copy;
-	uint64_t mem_per_child;
 	int devid;
 
-	mem_per_child = SIZE;
-	if (flags & CREATE_CONTEXT)
-		mem_per_child += 2 * 128 * 1024; /* rough context sizes */
-	intel_require_memory(count, mem_per_child, CHECK_RAM);
-
 	for (int child = 0; child < count; child++) {
 		int fd = drm_open_driver(DRIVER_INTEL);
 		struct buf_ops *bops;
@@ -270,7 +264,8 @@ static bool has_contexts(void)
 	return result;
 }
 
-#define N_CHILD 8
+#define BCS_CHILD 1
+#define RCS_CHILD 8
 igt_main
 {
 	igt_fixture {
@@ -281,41 +276,50 @@ igt_main
 	}
 
 	igt_subtest("blt-vs-render-ctx0") {
-		struct intel_buf *bcs[1], *rcs[N_CHILD];
+		struct intel_buf *bcs[BCS_CHILD], *rcs[RCS_CHILD];
+		uint64_t mem_per_test;
 
 		intel_allocator_multiprocess_start();
 
-		fork_bcs_copy(30, 0x4000, bcs, 1);
-		fork_rcs_copy(30, 0x8000 / N_CHILD, rcs, N_CHILD, 0);
+		mem_per_test = SIZE;
+		intel_require_memory(BCS_CHILD + RCS_CHILD,
+				     mem_per_test, CHECK_RAM);
+
+		fork_bcs_copy(30, 0x4000, bcs, BCS_CHILD);
+		fork_rcs_copy(30, 0x8000 / RCS_CHILD, rcs, RCS_CHILD, 0);
 
 		igt_waitchildren();
 
-		surfaces_check(bcs, 1, 0x4000);
-		surfaces_check(rcs, N_CHILD, 0x8000 / N_CHILD);
+		surfaces_check(bcs, BCS_CHILD, 0x4000);
+		surfaces_check(rcs, RCS_CHILD, 0x8000 / RCS_CHILD);
 
-		cleanup_bufs(bcs, 1);
-		cleanup_bufs(rcs, N_CHILD);
+		cleanup_bufs(bcs, BCS_CHILD);
+		cleanup_bufs(rcs, RCS_CHILD);
 
 		intel_allocator_multiprocess_stop();
 	}
 
 	igt_subtest("blt-vs-render-ctxN") {
-		struct intel_buf *bcs[1], *rcs[N_CHILD];
+		struct intel_buf *bcs[BCS_CHILD], *rcs[RCS_CHILD];
+		uint64_t mem_per_test, mem_per_ctx = 2 * 128 * 1024; /* rough context sizes */
 
 		igt_require(has_contexts());
 
 		intel_allocator_multiprocess_start();
 
-		fork_rcs_copy(30, 0x8000 / N_CHILD, rcs, N_CHILD, CREATE_CONTEXT);
-		fork_bcs_copy(30, 0x4000, bcs, 1);
+		mem_per_test = SIZE + mem_per_ctx;
+		intel_require_memory(BCS_CHILD + RCS_CHILD, mem_per_test, CHECK_RAM);
+
+		fork_rcs_copy(30, 0x8000 / RCS_CHILD, rcs, RCS_CHILD, CREATE_CONTEXT);
+		fork_bcs_copy(30, 0x4000, bcs, BCS_CHILD);
 
 		igt_waitchildren();
 
-		surfaces_check(bcs, 1, 0x4000);
-		surfaces_check(rcs, N_CHILD, 0x8000 / N_CHILD);
+		surfaces_check(bcs, BCS_CHILD, 0x4000);
+		surfaces_check(rcs, RCS_CHILD, 0x8000 / RCS_CHILD);
 
-		cleanup_bufs(bcs, 1);
-		cleanup_bufs(rcs, N_CHILD);
+		cleanup_bufs(bcs, BCS_CHILD);
+		cleanup_bufs(rcs, RCS_CHILD);
 
 		intel_allocator_multiprocess_stop();
 	}
-- 
2.26.0

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help