[igt-dev] [PATCH i-g-t] tests/kms_plane_scaling: Test if pixel format supports rotation

Mika Kahola mika.kahola at intel.com
Fri Apr 12 11:07:40 UTC 2019


Before actually do the commit with plane rotation, test if the pixel format
supports requested rotation. Kernel replies with -EINVAL when requested to do
rotation with the pixel format that is not supported. The patch uses this fact
to filter out unsupported pixel formats.

References: https://bugs.freedesktop.org/show_bug.cgi?id=109052
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110369
Signed-off-by: Mika Kahola <mika.kahola at intel.com>
---
 tests/kms_plane_scaling.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/tests/kms_plane_scaling.c b/tests/kms_plane_scaling.c
index e843bf86..57092263 100644
--- a/tests/kms_plane_scaling.c
+++ b/tests/kms_plane_scaling.c
@@ -138,6 +138,7 @@ static void check_scaling_pipe_plane_rot(data_t *d, igt_plane_t *plane,
 	igt_display_t *display = &d->display;
 	int width, height;
 	drmModeModeInfo *mode;
+	int errno;
 
 	cleanup_crtc(d);
 
@@ -158,7 +159,15 @@ static void check_scaling_pipe_plane_rot(data_t *d, igt_plane_t *plane,
 	igt_plane_set_position(plane, 0, 0);
 	igt_plane_set_size(plane, mode->hdisplay, mode->vdisplay);
 	igt_plane_set_rotation(plane, rot);
-	igt_display_commit2(display, COMMIT_ATOMIC);
+
+	/*
+	 * Test first, if pixel format supports rotation.
+	 * We expect from kernel to return with -EINVAL
+	 * if format is not supported.
+	 */
+	errno = igt_display_try_commit_atomic(display, DRM_MODE_ATOMIC_TEST_ONLY, NULL);
+	if (errno != -EINVAL)
+		igt_display_commit2(display, COMMIT_ATOMIC);
 
 	igt_plane_set_fb(plane, NULL);
 	igt_plane_set_position(plane, 0, 0);
-- 
2.17.1



More information about the igt-dev mailing list