summaryrefslogtreecommitdiff
path: root/tests/kms_rotation_crc.c
diff options
context:
space:
mode:
authorThomas Wood <thomas.wood@intel.com>2014-08-14 14:06:37 +0100
committerThomas Wood <thomas.wood@intel.com>2014-08-14 16:34:34 +0100
commit1bec6cb2c241ec449cd75579041506d1708bd341 (patch)
tree453ffcfbbff9771c851ed1c67b6e28855ca59859 /tests/kms_rotation_crc.c
parentfcb324c2cca6549cd95fb84269622feb72c90cbd (diff)
tests: check plane rotation is reset after the VT mode is restored
Make sure the rotation is reset after the VT mode is restored by collecting the unrotated CRC and comparing with the CRC value after VT mode has been restored. The CRC is used to ensure the hardware state is checked, rather than any software state. References: https://bugs.freedesktop.org/show_bug.cgi?id=82236 Signed-off-by: Thomas Wood <thomas.wood@intel.com>
Diffstat (limited to 'tests/kms_rotation_crc.c')
-rw-r--r--tests/kms_rotation_crc.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/tests/kms_rotation_crc.c b/tests/kms_rotation_crc.c
index 9146b4fc..9f272fa2 100644
--- a/tests/kms_rotation_crc.c
+++ b/tests/kms_rotation_crc.c
@@ -153,7 +153,7 @@ static void test_plane_rotation(data_t *data, enum igt_plane plane_type)
igt_output_t *output;
enum pipe pipe;
int valid_tests = 0;
- igt_crc_t crc_output;
+ igt_crc_t crc_output, crc_unrotated;
enum igt_commit_style commit = COMMIT_LEGACY;
if (plane_type == IGT_PLANE_PRIMARY) {
@@ -173,12 +173,25 @@ static void test_plane_rotation(data_t *data, enum igt_plane plane_type)
if (!prepare_crtc(data, output, pipe, plane))
continue;
+ /* collect unrotated CRC */
+ igt_display_commit2(display, commit);
+ igt_pipe_crc_collect_crc(data->pipe_crc, &crc_unrotated);
+
igt_plane_set_rotation(plane, IGT_ROTATION_180);
igt_display_commit2(display, commit);
igt_pipe_crc_collect_crc(data->pipe_crc, &crc_output);
igt_assert(igt_crc_equal(&data->ref_crc, &crc_output));
+ /* check the rotation state has been reset when the VT
+ * mode is restored */
+ kmstest_restore_vt_mode();
+ kmstest_set_vt_graphics_mode();
+ prepare_crtc(data, output, pipe, plane);
+ igt_pipe_crc_collect_crc(data->pipe_crc, &crc_output);
+ igt_assert(igt_crc_equal(&crc_unrotated, &crc_output));
+
+
valid_tests++;
cleanup_crtc(data, output, plane);
}