Message ID | 20180323134616.16058-3-daniels@collabora.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Fri, Mar 23, 2018 at 01:46:16PM +0000, Daniel Stone wrote: > Mirroring addfb2, add tests for the new ioctl which will return us > information about framebuffers containing multiple buffers, as well as > modifiers. lgtm Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Maybe we also want to encode my earlier 'getfb2(&cmd); addfb2(&cmd);' idea into a test? > > Signed-off-by: Daniel Stone <daniels@collabora.com> > --- > tests/kms_getfb.c | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 91 insertions(+) > > diff --git a/tests/kms_getfb.c b/tests/kms_getfb.c > index a9852626..b8583694 100644 > --- a/tests/kms_getfb.c > +++ b/tests/kms_getfb.c > @@ -186,7 +186,96 @@ static void test_duplicate_handles(int fd) > do_ioctl(fd, DRM_IOCTL_MODE_RMFB, &add.fb_id); > gem_close(fd, add.handles[0]); > } > +} > + > +static void test_getfb2(int fd) > +{ > + struct drm_mode_fb_cmd2 add_basic = {}; > + > + igt_fixture { > + struct drm_mode_fb_cmd2 get = {}; > + > + add_basic.width = 1024; > + add_basic.height = 1024; > + add_basic.pixel_format = DRM_FORMAT_XRGB8888; > + add_basic.pitches[0] = 1024*4; > + add_basic.handles[0] = igt_create_bo_with_dimensions(fd, 1024, 1024, > + DRM_FORMAT_XRGB8888, 0, 0, NULL, NULL, NULL); > + igt_assert(add_basic.handles[0]); > + do_ioctl(fd, DRM_IOCTL_MODE_ADDFB2, &add_basic); > + > + get.fb_id = add_basic.fb_id; > + do_ioctl(fd, DRM_IOCTL_MODE_GETFB2, &get); > + igt_assert_neq_u32(get.handles[0], 0); > + gem_close(fd, get.handles[0]); > + } > + > + igt_subtest("getfb2-handle-zero") { > + struct drm_mode_fb_cmd2 get = {}; > + do_ioctl_err(fd, DRM_IOCTL_MODE_GETFB2, &get, ENOENT); > + } > + > + igt_subtest("getfb2-handle-closed") { > + struct drm_mode_fb_cmd2 add = add_basic; > + struct drm_mode_fb_cmd2 get = { }; > + > + add.handles[0] = igt_create_bo_with_dimensions(fd, 1024, 1024, > + DRM_FORMAT_XRGB8888, 0, 0, NULL, NULL, NULL); > + igt_assert(add.handles[0]); > + do_ioctl(fd, DRM_IOCTL_MODE_ADDFB2, &add); > + do_ioctl(fd, DRM_IOCTL_MODE_RMFB, &add.fb_id); > > + get.fb_id = add.fb_id; > + do_ioctl_err(fd, DRM_IOCTL_MODE_GETFB2, &get, ENOENT); > + gem_close(fd, add.handles[0]); > + } > + > + igt_subtest("getfb2-handle-not-fb") { > + struct drm_mode_fb_cmd get = { .fb_id = get_prop_id(fd) }; > + igt_require(get.fb_id > 0); > + do_ioctl_err(fd, DRM_IOCTL_MODE_GETFB, &get, ENOENT); > + } > + > + igt_subtest("getfb2-accept-ccs") { > + struct drm_mode_fb_cmd2 add_ccs = { }; > + struct drm_mode_fb_cmd2 get = { }; > + int i; > + > + get_ccs_fb(fd, &add_ccs); > + igt_require(add_ccs.fb_id != 0); > + get.fb_id = add_ccs.fb_id; > + do_ioctl(fd, DRM_IOCTL_MODE_GETFB2, &get); > + > + igt_assert_eq_u32(get.width, add_ccs.width); > + igt_assert_eq_u32(get.height, add_ccs.height); > + igt_assert(get.flags & DRM_MODE_FB_MODIFIERS); > + > + for (i = 0; i < ARRAY_SIZE(get.handles); i++) { > + igt_assert_eq_u32(get.pitches[i], add_ccs.pitches[i]); > + igt_assert_eq_u32(get.offsets[i], add_ccs.offsets[i]); > + if (add_ccs.handles[i] != 0) { > + igt_assert_neq_u32(get.handles[i], 0); > + igt_assert_neq_u32(get.handles[i], > + add_ccs.handles[i]); > + igt_assert_eq_u64(get.modifier[i], > + add_ccs.modifier[i]); > + } else { > + igt_assert_eq_u32(get.handles[i], 0); > + igt_assert_eq_u64(get.modifier[i], > + DRM_FORMAT_MOD_INVALID); > + } > + } > + igt_assert_eq_u32(get.handles[0], get.handles[1]); > + > + do_ioctl(fd, DRM_IOCTL_MODE_RMFB, &get.fb_id); > + gem_close(fd, add_ccs.handles[0]); > + gem_close(fd, get.handles[0]); > + } > + > + igt_fixture { > + do_ioctl(fd, DRM_IOCTL_MODE_RMFB, &add_basic.fb_id); > + gem_close(fd, add_basic.handles[0]); > + } > } > > igt_main > @@ -200,6 +289,8 @@ igt_main > > test_duplicate_handles(fd); > > + test_getfb2(fd); > + > igt_fixture > close(fd); > } > -- > 2.16.2 > > _______________________________________________ > igt-dev mailing list > igt-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/igt-dev
diff --git a/tests/kms_getfb.c b/tests/kms_getfb.c index a9852626..b8583694 100644 --- a/tests/kms_getfb.c +++ b/tests/kms_getfb.c @@ -186,7 +186,96 @@ static void test_duplicate_handles(int fd) do_ioctl(fd, DRM_IOCTL_MODE_RMFB, &add.fb_id); gem_close(fd, add.handles[0]); } +} + +static void test_getfb2(int fd) +{ + struct drm_mode_fb_cmd2 add_basic = {}; + + igt_fixture { + struct drm_mode_fb_cmd2 get = {}; + + add_basic.width = 1024; + add_basic.height = 1024; + add_basic.pixel_format = DRM_FORMAT_XRGB8888; + add_basic.pitches[0] = 1024*4; + add_basic.handles[0] = igt_create_bo_with_dimensions(fd, 1024, 1024, + DRM_FORMAT_XRGB8888, 0, 0, NULL, NULL, NULL); + igt_assert(add_basic.handles[0]); + do_ioctl(fd, DRM_IOCTL_MODE_ADDFB2, &add_basic); + + get.fb_id = add_basic.fb_id; + do_ioctl(fd, DRM_IOCTL_MODE_GETFB2, &get); + igt_assert_neq_u32(get.handles[0], 0); + gem_close(fd, get.handles[0]); + } + + igt_subtest("getfb2-handle-zero") { + struct drm_mode_fb_cmd2 get = {}; + do_ioctl_err(fd, DRM_IOCTL_MODE_GETFB2, &get, ENOENT); + } + + igt_subtest("getfb2-handle-closed") { + struct drm_mode_fb_cmd2 add = add_basic; + struct drm_mode_fb_cmd2 get = { }; + + add.handles[0] = igt_create_bo_with_dimensions(fd, 1024, 1024, + DRM_FORMAT_XRGB8888, 0, 0, NULL, NULL, NULL); + igt_assert(add.handles[0]); + do_ioctl(fd, DRM_IOCTL_MODE_ADDFB2, &add); + do_ioctl(fd, DRM_IOCTL_MODE_RMFB, &add.fb_id); + get.fb_id = add.fb_id; + do_ioctl_err(fd, DRM_IOCTL_MODE_GETFB2, &get, ENOENT); + gem_close(fd, add.handles[0]); + } + + igt_subtest("getfb2-handle-not-fb") { + struct drm_mode_fb_cmd get = { .fb_id = get_prop_id(fd) }; + igt_require(get.fb_id > 0); + do_ioctl_err(fd, DRM_IOCTL_MODE_GETFB, &get, ENOENT); + } + + igt_subtest("getfb2-accept-ccs") { + struct drm_mode_fb_cmd2 add_ccs = { }; + struct drm_mode_fb_cmd2 get = { }; + int i; + + get_ccs_fb(fd, &add_ccs); + igt_require(add_ccs.fb_id != 0); + get.fb_id = add_ccs.fb_id; + do_ioctl(fd, DRM_IOCTL_MODE_GETFB2, &get); + + igt_assert_eq_u32(get.width, add_ccs.width); + igt_assert_eq_u32(get.height, add_ccs.height); + igt_assert(get.flags & DRM_MODE_FB_MODIFIERS); + + for (i = 0; i < ARRAY_SIZE(get.handles); i++) { + igt_assert_eq_u32(get.pitches[i], add_ccs.pitches[i]); + igt_assert_eq_u32(get.offsets[i], add_ccs.offsets[i]); + if (add_ccs.handles[i] != 0) { + igt_assert_neq_u32(get.handles[i], 0); + igt_assert_neq_u32(get.handles[i], + add_ccs.handles[i]); + igt_assert_eq_u64(get.modifier[i], + add_ccs.modifier[i]); + } else { + igt_assert_eq_u32(get.handles[i], 0); + igt_assert_eq_u64(get.modifier[i], + DRM_FORMAT_MOD_INVALID); + } + } + igt_assert_eq_u32(get.handles[0], get.handles[1]); + + do_ioctl(fd, DRM_IOCTL_MODE_RMFB, &get.fb_id); + gem_close(fd, add_ccs.handles[0]); + gem_close(fd, get.handles[0]); + } + + igt_fixture { + do_ioctl(fd, DRM_IOCTL_MODE_RMFB, &add_basic.fb_id); + gem_close(fd, add_basic.handles[0]); + } } igt_main @@ -200,6 +289,8 @@ igt_main test_duplicate_handles(fd); + test_getfb2(fd); + igt_fixture close(fd); }
Mirroring addfb2, add tests for the new ioctl which will return us information about framebuffers containing multiple buffers, as well as modifiers. Signed-off-by: Daniel Stone <daniels@collabora.com> --- tests/kms_getfb.c | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+)