[igt-dev] [PATCH i-g-t] tests/kms_plane_scaling: Test if pixel format supports rotation
Kahola, Mika
mika.kahola at intel.com
Mon Apr 15 08:13:10 UTC 2019
On Fri, 2019-04-12 at 07:54 -0700, Souza, Jose wrote:
> 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.
DRM_MODE_ATOMIC_TEST_ONLY is only used to filter out unsupported pixel
formats. On various checks the scaling can still fail with -ERANGE.
This is still tested with actual commit.
> 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);
We have merged these patches that add igt_plane_has_format_mod() check.
Unfortunately, this wasn't able to filter out formats that doesn't
support rotation. That's why we need find another solution.
Cheers,
Mika
>
>
> >
> > igt_plane_set_fb(plane, NULL);
> > igt_plane_set_position(plane, 0, 0);
More information about the igt-dev
mailing list