From: Tvrtko Ursulin <tvrtko.ursu...@intel.com>

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

Signed-off-by: Tvrtko Ursulin <tvrtko.ursu...@intel.com>
Cc: Chris Wilson <ch...@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

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to