summaryrefslogtreecommitdiff
path: root/tests/kms_addfb_basic.c
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2016-04-22 20:47:05 +0200
committerDaniel Vetter <daniel.vetter@ffwll.ch>2016-06-07 15:52:20 +0200
commitec26d970825ad54a69478c65b854879e6aaafc37 (patch)
treecfab7dbb650d476fa61a2f624da47d5d7a0a29ae /tests/kms_addfb_basic.c
parentf5d370cbd6c4fbd3bdf9ec0ea0addb4e42b30c1d (diff)
tests/kms_addfb_basic: Add invalid tests to set fb props
There's no properties on fb modeset objects, bug bugs in the kernel when trying to use those ioctls in such an invalid way. Cc: Dave Airlie <airlied@gmail.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'tests/kms_addfb_basic.c')
-rw-r--r--tests/kms_addfb_basic.c66
1 files changed, 66 insertions, 0 deletions
diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
index cdfcd179..29fbe817 100644
--- a/tests/kms_addfb_basic.c
+++ b/tests/kms_addfb_basic.c
@@ -475,6 +475,70 @@ static void addfb25_ytile(int fd)
}
}
+static void prop_tests(int fd)
+{
+ struct drm_mode_fb_cmd2 f = {};
+ struct drm_mode_obj_get_properties get_props = {};
+ struct drm_mode_obj_set_property set_prop = {};
+ uint64_t prop, prop_val;
+
+ f.width = 1024;
+ f.height = 1024;
+ f.pixel_format = DRM_FORMAT_XRGB8888;
+ f.pitches[0] = 1024*4;
+
+ igt_fixture {
+ gem_bo = igt_create_bo_with_dimensions(fd, 1024, 1024,
+ DRM_FORMAT_XRGB8888, 0, 0, NULL, NULL, NULL);
+ igt_assert(gem_bo);
+
+ f.handles[0] = gem_bo;
+
+ igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_ADDFB2, &f) == 0);
+ }
+
+ get_props.props_ptr = (uintptr_t) &prop;
+ get_props.prop_values_ptr = (uintptr_t) &prop_val;
+ get_props.count_props = 1;
+ get_props.obj_id = f.fb_id;
+
+ igt_subtest("invalid-get-prop-any") {
+ get_props.obj_type = 0; /* DRM_MODE_OBJECT_ANY */
+
+ igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_OBJ_GETPROPERTIES,
+ &get_props) == -1 && errno == EINVAL);
+ }
+
+ igt_subtest("invalid-get-prop") {
+ get_props.obj_type = DRM_MODE_OBJECT_FB;
+
+ igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_OBJ_GETPROPERTIES,
+ &get_props) == -1 && errno == EINVAL);
+ }
+
+ set_prop.value = 0;
+ set_prop.prop_id = 1;
+ set_prop.obj_id = f.fb_id;
+
+ igt_subtest("invalid-set-prop-any") {
+ set_prop.obj_type = 0; /* DRM_MODE_OBJECT_ANY */
+
+ igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_OBJ_SETPROPERTY,
+ &set_prop) == -1 && errno == EINVAL);
+ }
+
+ igt_subtest("invalid-set-prop") {
+ set_prop.obj_type = DRM_MODE_OBJECT_FB;
+
+ igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_OBJ_SETPROPERTY,
+ &set_prop) == -1 && errno == EINVAL);
+ }
+
+ igt_fixture
+ igt_assert(drmIoctl(fd, DRM_IOCTL_MODE_RMFB, &f.fb_id) == 0);
+
+}
+
int fd;
igt_main
@@ -494,6 +558,8 @@ igt_main
tiling_tests(fd);
+ prop_tests(fd);
+
igt_fixture
close(fd);
}