[igt-dev] [PATCH i-g-t 2/2] i915/gem_render_copy: Add support for local memory

apoorva1.singh at intel.com apoorva1.singh at intel.com
Wed Sep 1 15:48:46 UTC 2021


From: Apoorva Singh <apoorva1.singh at intel.com>

Add support for local memory region (Device memory)

Signed-off-by: Apoorva Singh <apoorva1.singh at intel.com>
Cc: Zbigniew Kempczyński <zbigniew.kempczynski at intel.com>
Cc: Thomas Hellström <thomas.hellstrom at linux.intel.com>
Cc: Melkaveri, Arjun <arjun.melkaveri at intel.com>
---
 tests/i915/gem_render_copy.c | 61 +++++++++++++++++++++++++-----------
 1 file changed, 42 insertions(+), 19 deletions(-)

diff --git a/tests/i915/gem_render_copy.c b/tests/i915/gem_render_copy.c
index e48b5b99..3aac1628 100644
--- a/tests/i915/gem_render_copy.c
+++ b/tests/i915/gem_render_copy.c
@@ -213,12 +213,13 @@ scratch_buf_copy(data_t *data,
 static void scratch_buf_init(data_t *data, struct intel_buf *buf,
 			     int width, int height,
 			     uint32_t req_tiling,
-			     enum i915_compression compression)
+			     enum i915_compression compression,
+			     uint32_t region)
 {
 	int bpp = 32;
 
-	intel_buf_init(data->bops, buf, width, height, bpp, 0,
-		       req_tiling, compression);
+	intel_buf_init_in_region(data->bops, buf, width, height, bpp, 0,
+				 req_tiling, compression, region);
 
 	igt_assert(intel_buf_width(buf) == width);
 	igt_assert(intel_buf_height(buf) == height);
@@ -338,7 +339,8 @@ dump_intel_buf_to_file(data_t *data, struct intel_buf *buf, const char *filename
 static void test(data_t *data, uint32_t src_tiling, uint32_t dst_tiling,
 		 enum i915_compression src_compression,
 		 enum i915_compression dst_compression,
-		 int flags)
+		 int flags,
+		 struct igt_collection *memregion_set)
 {
 	struct intel_bb *ibb;
 	struct intel_buf ref, src_tiled, src_ccs, dst_ccs, dst;
@@ -370,6 +372,7 @@ static void test(data_t *data, uint32_t src_tiling, uint32_t dst_tiling,
 		},
 	};
 	int num_src = ARRAY_SIZE(src);
+	uint32_t region = igt_collection_get_value(memregion_set, 0);
 	const bool src_mixed_tiled = flags & SOURCE_MIXED_TILED;
 	const bool src_compressed = src_compression != I915_COMPRESSION_NONE;
 	const bool dst_compressed = dst_compression != I915_COMPRESSION_NONE;
@@ -401,21 +404,21 @@ static void test(data_t *data, uint32_t src_tiling, uint32_t dst_tiling,
 
 	for (int i = 0; i < num_src; i++)
 		scratch_buf_init(data, &src[i].buf, WIDTH, HEIGHT, src[i].tiling,
-				 I915_COMPRESSION_NONE);
+				 I915_COMPRESSION_NONE, region);
 	if (!src_mixed_tiled)
 		scratch_buf_init(data, &src_tiled, WIDTH, HEIGHT, src_tiling,
-				 I915_COMPRESSION_NONE);
+				 I915_COMPRESSION_NONE, region);
 	scratch_buf_init(data, &dst, WIDTH, HEIGHT, dst_tiling,
-			 I915_COMPRESSION_NONE);
+			 I915_COMPRESSION_NONE, region);
 
 	if (src_compressed)
 		scratch_buf_init(data, &src_ccs, WIDTH, HEIGHT,
-				 src_tiling, src_compression);
+				 src_tiling, src_compression, region);
 	if (dst_compressed)
 		scratch_buf_init(data, &dst_ccs, WIDTH, HEIGHT,
-				 dst_tiling, dst_compression);
+				 dst_tiling, dst_compression, region);
 	scratch_buf_init(data, &ref, WIDTH, HEIGHT, I915_TILING_NONE,
-			 I915_COMPRESSION_NONE);
+			 I915_COMPRESSION_NONE, region);
 
 	for (int i = 0; i < num_src; i++)
 		scratch_buf_draw_pattern(data, &src[i].buf,
@@ -782,6 +785,8 @@ igt_main_args("dac", NULL, help_str, opt_handler, NULL)
 		  0, },
 	};
 	int i;
+	struct drm_i915_query_memory_regions *regions;
+	struct igt_collection *set, *region_set;
 
 	data_t data = {0, };
 
@@ -798,11 +803,19 @@ igt_main_args("dac", NULL, help_str, opt_handler, NULL)
 
 		data.bops = buf_ops_create(data.drm_fd);
 
+		regions = gem_get_query_memory_regions(data.drm_fd);
+		igt_assert(regions);
+
+		set = get_memory_region_set(regions,
+					    I915_SYSTEM_MEMORY,
+					    I915_DEVICE_MEMORY);
+
 		igt_fork_hang_detector(data.drm_fd);
 	}
 
 	for (i = 0; i < ARRAY_SIZE(tests); i++) {
 		const struct test_desc *t = &tests[i];
+		char name[128];
 		char src_mode[32];
 		char dst_mode[32];
 		const bool src_mixed_tiled = t->flags & SOURCE_MIXED_TILED;
@@ -832,23 +845,33 @@ igt_main_args("dac", NULL, help_str, opt_handler, NULL)
 		    t->dst_compression == I915_COMPRESSION_NONE)
 			src_mode[0] = '\0';
 
-		igt_subtest_f("%s%s%s%s",
-			      src_mode,
-			      src_mode[0] ? "-to-" : "",
-			      force_vebox_dst_copy ? "vebox-" : "",
-			      dst_mode) {
+		snprintf(name, sizeof(name),
+			 "%s%s%s%s",
+			 src_mode,
+			 src_mode[0] ? "-to-" : "",
+			 force_vebox_dst_copy ? "vebox-" : "",
+			 dst_mode);
+		igt_subtest_with_dynamic(name) {
 			igt_require_f(data.vebox_copy || !vebox_copy_used,
 				      "no vebox-copy function\n");
+			for_each_combination(region_set, 1, set) {
+				char *sub_name = memregion_dynamic_subtest_name(region_set);
 
-			test(&data,
-			     t->src_tiling, t->dst_tiling,
-			     t->src_compression, t->dst_compression,
-			     t->flags);
+				igt_dynamic_f("%s", sub_name)
+					test(&data,
+					     t->src_tiling, t->dst_tiling,
+					     t->src_compression, t->dst_compression,
+					     t->flags,
+					     region_set);
+
+				free(sub_name);
+			}
 		}
 	}
 
 	igt_fixture {
 		igt_stop_hang_detector();
 		buf_ops_destroy(data.bops);
+		igt_collection_destroy(set);
 	}
 }
-- 
2.25.1



More information about the igt-dev mailing list