[igt-dev] [PATCH i-g-t] i915/gem_blits: Fix for devices without mappable aperture

Ashutosh Dixit ashutosh.dixit at intel.com
Thu Feb 6 06:45:11 UTC 2020


Skip using the gtt or applying tiling. Instead use the blitter for
detiling on devices without mappable aperture.

Signed-off-by: Ashutosh Dixit <ashutosh.dixit at intel.com>
---
 tests/i915/gem_blits.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/tests/i915/gem_blits.c b/tests/i915/gem_blits.c
index f9cb12bb8..985be3a63 100644
--- a/tests/i915/gem_blits.c
+++ b/tests/i915/gem_blits.c
@@ -143,7 +143,7 @@ static void buffer_set_tiling(const struct device *device,
 	const bool has_64b_reloc = device->gen >= 8;
 	uint32_t stride, size, pitch;
 	uint32_t *batch;
-	int i;
+	int i, err;
 
 	if (buffer->tiling == tiling)
 		return;
@@ -162,7 +162,9 @@ static void buffer_set_tiling(const struct device *device,
 	obj[0].handle = gem_create(device->fd, size);
 	if (tiling) {
 		obj[0].flags = EXEC_OBJECT_NEEDS_FENCE;
-		gem_set_tiling(device->fd, obj[0].handle, tiling, stride);
+		err = __gem_set_tiling(device->fd, obj[0].handle, tiling, stride);
+		/* If we can't use fences, we won't use ggtt detiling later. */
+		igt_assert(err == 0 || err == -EOPNOTSUPP);
 	}
 
 	obj[1].handle = buffer->handle;
@@ -381,6 +383,11 @@ static void *download(const struct device *device,
 
 	igt_assert(posix_memalign(&linear, 4096, buffer->size) == 0);
 
+	if (!gem_has_mappable_ggtt(device->fd) && buffer->tiling) {
+		igt_assert(blit_to_linear(device, buffer, linear));
+		return linear;
+	}
+
 	switch (mode) {
 	case CPU:
 		if (buffer->tiling) {
@@ -755,6 +762,9 @@ igt_main
 								buffer_set_tiling(&device, dst, dst_tiling);
 
 								for (enum mode down = CPU; down <= WC; down++) {
+									if (down == GTT && !gem_has_mappable_ggtt(device.fd))
+										continue;
+
 									igt_debug("Testing src_tiling=%d, dst_tiling=%d, down=%d at (%d, %d) x (%d, %d)\n",
 										  src_tiling,
 										  dst_tiling,
-- 
2.25.0



More information about the igt-dev mailing list