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

Souza, Jose jose.souza at intel.com
Fri Apr 12 14:54:07 UTC 2019


On Fri, 2019-04-12 at 14:07 +0300, Mika Kahola wrote:
> 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);

This is going to cause the test to always pass, becoming useless.

It is already filtering out the know format and rotation combination
that should not work in the caller, if a combination is not covered it
should be added to those:

if (igt_fb_supported_format(format) && igt_plane_has_format_mod(plane,
format, tiling) && can_rotate(d, format))
	check_scaling_pipe_plane_rot(d, plane, format, tiling, pipe,
output, rot);


>  
>  	igt_plane_set_fb(plane, NULL);
>  	igt_plane_set_position(plane, 0, 0);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: This is a digitally signed message part
URL: <https://lists.freedesktop.org/archives/igt-dev/attachments/20190412/14992aa8/attachment.sig>


More information about the igt-dev mailing list