summaryrefslogtreecommitdiff
path: root/tests/panfrost_prime.c
diff options
context:
space:
mode:
authorBoris Brezillon <boris.brezillon@collabora.com>2021-06-21 11:42:12 +0200
committerBoris Brezillon <boris.brezillon@collabora.com>2021-06-28 10:04:30 +0200
commitd488d7f3dff14df5c077c360f13ef129eea7de77 (patch)
treefdabcee6d4bbcedc2d04a8b587bfc2bb44ce705d /tests/panfrost_prime.c
parent7ff8e8b857f8b5729c5b6d499e1bcde9a494def0 (diff)
tests/panfrost: Make sure we open a DUMB capable node for prime tests
v3: * Check capabilities separately v2: * Use __drm_open_driver_another() Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com> Acked-by: Petri Latvala <petri.latvala@intel.com>
Diffstat (limited to 'tests/panfrost_prime.c')
-rw-r--r--tests/panfrost_prime.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/tests/panfrost_prime.c b/tests/panfrost_prime.c
index 351d46f2..40ba036b 100644
--- a/tests/panfrost_prime.c
+++ b/tests/panfrost_prime.c
@@ -35,13 +35,33 @@
#include <sys/ioctl.h>
#include "panfrost_drm.h"
+static bool igt_has_dumb(int fd)
+{
+ uint64_t value = 0;
+ int ret;
+
+ ret = drmGetCap(fd, DRM_CAP_DUMB_BUFFER, &value);
+ igt_assert(ret == 0 || errno == EINVAL || errno == EOPNOTSUPP);
+ return value == 1;
+}
+
+static bool igt_has_prime(int fd, uint64_t flags)
+{
+ uint64_t value = 0;
+ int ret;
+
+ ret = drmGetCap(fd, DRM_CAP_PRIME, &value);
+ igt_assert(ret == 0 || errno == EINVAL || errno == EOPNOTSUPP);
+ return (value & flags) == flags;
+}
+
igt_main
{
int fd, kms_fd;
igt_fixture {
- kms_fd = drm_open_driver_master(DRIVER_ANY);
fd = drm_open_driver(DRIVER_PANFROST);
+ kms_fd = __drm_open_driver_another(1, DRIVER_ANY);
}
igt_subtest("gem-prime-import") {
@@ -50,6 +70,9 @@ igt_main
struct drm_panfrost_get_bo_offset get_bo_offset = {0,};
int dmabuf_fd;
+ igt_skip_on(!igt_has_dumb(kms_fd));
+ igt_skip_on(!igt_has_prime(kms_fd, DRM_PRIME_CAP_EXPORT));
+
/* Just to be sure that when we import the dumb buffer it has
* a non-NULL address.
*/