[Intel-gfx] [PATCH i-g-t] kms_flip_tiling: [linear, X]<->[Y, Yf] tiling changes are not allowed

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Wed Apr 22 09:00:27 PDT 2015


From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>

This matches the behaviour in kernel patch
"drm/i915/skl: Disallow tiling changes during page flip".

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Cc: Chris Wilson <chris at chris-wilson.co.uk>
---
 tests/kms_flip_tiling.c | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)

diff --git a/tests/kms_flip_tiling.c b/tests/kms_flip_tiling.c
index 8345505..3eef4cc 100644
--- a/tests/kms_flip_tiling.c
+++ b/tests/kms_flip_tiling.c
@@ -63,7 +63,7 @@ fill_linear_fb(struct igt_fb *fb, data_t *data, drmModeModeInfo *mode)
 }
 
 static void
-test_flip_changes_tiling(data_t *data, igt_output_t *output, uint64_t tiling)
+test_flip_changes_tiling(data_t *data, igt_output_t *output, uint64_t tiling, int expect)
 {
 	struct igt_fb linear, tiled;
 	drmModeModeInfo *mode;
@@ -107,13 +107,15 @@ test_flip_changes_tiling(data_t *data, igt_output_t *output, uint64_t tiling)
 	/* flip to the linear buffer */
 	ret = drmModePageFlip(data->drm_fd, output->config.crtc->crtc_id,
 			      fb_id, 0, NULL);
-	igt_assert_eq(ret, 0);
+	igt_assert_eq(ret, expect);
 
-	igt_wait_for_vblank(data->drm_fd, pipe);
+	if (expect == 0) {
+		igt_wait_for_vblank(data->drm_fd, pipe);
 
-	/* get a crc and compare with the reference */
-	igt_pipe_crc_collect_crc(pipe_crc, &crc);
-	igt_assert_crc_equal(&reference_crc, &crc);
+		/* get a crc and compare with the reference */
+		igt_pipe_crc_collect_crc(pipe_crc, &crc);
+		igt_assert_crc_equal(&reference_crc, &crc);
+	}
 
 	/* clean up */
 	igt_plane_set_fb(primary, NULL);
@@ -145,7 +147,8 @@ igt_main
 	igt_subtest_f("flip-changes-tiling") {
 		for_each_connected_output(&data.display, output)
 			test_flip_changes_tiling(&data, output,
-						LOCAL_I915_FORMAT_MOD_X_TILED);
+						LOCAL_I915_FORMAT_MOD_X_TILED,
+						0);
 	}
 
 	igt_subtest_f("flip-changes-tiling-Y") {
@@ -154,7 +157,8 @@ igt_main
 
 		for_each_connected_output(&data.display, output)
 			test_flip_changes_tiling(&data, output,
-						LOCAL_I915_FORMAT_MOD_Y_TILED);
+						LOCAL_I915_FORMAT_MOD_Y_TILED,
+						-EINVAL);
 	}
 
 	igt_subtest_f("flip-changes-tiling-Yf") {
@@ -163,7 +167,8 @@ igt_main
 
 		for_each_connected_output(&data.display, output)
 			test_flip_changes_tiling(&data, output,
-						LOCAL_I915_FORMAT_MOD_Yf_TILED);
+						LOCAL_I915_FORMAT_MOD_Yf_TILED,
+						-EINVAL);
 	}
 
 	igt_fixture {
-- 
2.3.5



More information about the Intel-gfx mailing list