From bc30feb7ebbdba2e8abcb53829df364d619189d0 Mon Sep 17 00:00:00 2001 From: Daniel Vetter Date: Thu, 28 Feb 2019 15:19:15 +0100 Subject: tests/kms_lease: test implicit cursor plane usage Figured I'll only test the SetCursor interface since in the kernel it's all the same anyway, it's just libdrm that splits it up. Current kernels fail this. Cc: Keith Packard Reviewed-by: Boris Brezillon Signed-off-by: Daniel Vetter --- tests/kms_lease.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'tests/kms_lease.c') diff --git a/tests/kms_lease.c b/tests/kms_lease.c index e749e10c..6967c489 100644 --- a/tests/kms_lease.c +++ b/tests/kms_lease.c @@ -432,6 +432,42 @@ static void setcrtc_implicit_plane(data_t *data) connector_id_to_output(&data->master.display, data->connector_id)); } +static void cursor_implicit_plane(data_t *data) +{ + uint32_t object_ids[3]; + struct local_drm_mode_create_lease mcl; + + mcl.object_ids = (uint64_t) (uintptr_t) &object_ids[0]; + mcl.object_count = 0; + mcl.flags = 0; + + object_ids[mcl.object_count++] = data->connector_id; + object_ids[mcl.object_count++] = data->crtc_id; + + drmSetClientCap(data->master.fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 0); + do_or_die(create_lease(data->master.fd, &mcl)); + drmSetClientCap(data->master.fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1); + + /* Set a mode on the leased output */ + igt_assert_eq(0, prepare_crtc(&data->master, data->connector_id, data->crtc_id)); + + /* sanity check */ + do_or_die(drmModeSetCursor(data->master.fd, data->crtc_id, 0, 0, 0)); + do_or_die(drmModeSetCursor(mcl.fd, data->crtc_id, 0, 0, 0)); + close(mcl.fd); + + /* primary plane is never the cursor */ + object_ids[mcl.object_count++] = data->plane_id; + do_or_die(create_lease(data->master.fd, &mcl)); + + igt_assert_eq(drmModeSetCursor(mcl.fd, data->crtc_id, 0, 0, 0), + -EACCES); + close(mcl.fd); + + cleanup_crtc(&data->master, + connector_id_to_output(&data->master.display, data->connector_id)); +} + /* Test listing lessees */ static void lessee_list(data_t *data) { @@ -1147,6 +1183,7 @@ igt_main { "lease_invalid_plane", lease_invalid_plane }, { "page_flip_implicit_plane", page_flip_implicit_plane }, { "setcrtc_implicit_plane", setcrtc_implicit_plane }, + { "cursor_implicit_plane", cursor_implicit_plane }, { } }, *f; -- cgit v1.2.3