summaryrefslogtreecommitdiff
path: root/tests/ugpu/ugpu_basic.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ugpu/ugpu_basic.c')
-rw-r--r--tests/ugpu/ugpu_basic.c80
1 files changed, 80 insertions, 0 deletions
diff --git a/tests/ugpu/ugpu_basic.c b/tests/ugpu/ugpu_basic.c
index 6d506b07..d2ea9c2d 100644
--- a/tests/ugpu/ugpu_basic.c
+++ b/tests/ugpu/ugpu_basic.c
@@ -1,3 +1,5 @@
+#include "ugpu.h"
+
#include "igt.h"
#include "igt_core.h"
@@ -6,6 +8,64 @@ static int ugpu_open(int i915)
return igt_ioctl(i915, DRM_IOCTL_I915_UGPU, 0);
}
+static int __ugpu_get(int fd, struct ugpu_query *q)
+{
+ int err;
+
+ err = 0;
+ if (igt_ioctl(fd, UGPU_IOCTL_GET, q)) {
+ err = -errno;
+ igt_assume(err);
+ }
+
+ return err;
+}
+
+static int __ugpu_set(int fd, struct ugpu_query *q)
+{
+ int err;
+
+ err = 0;
+ if (igt_ioctl(fd, UGPU_IOCTL_SET, q)) {
+ err = -errno;
+ igt_assume(err);
+ }
+
+ return err;
+}
+
+static int __ugpu_set_command_ring(int fd, uint32_t sz)
+{
+ struct ugpu_query q = {
+ .property = 0,
+ .value = sz,
+ };
+
+ return __ugpu_set(fd, &q);
+}
+
+static void ugpu_set_command_ring(int fd, uint32_t sz)
+{
+ igt_assert_eq(__ugpu_set_command_ring(fd, sz), 0);
+}
+
+static void igt_ugpu_name(int i915)
+{
+ int fd = ugpu_open(i915);
+ char name[128];
+
+ struct ugpu_query q = {
+ .property = 0,
+ .value = to_user_pointer(name),
+ .length = sizeof(name),
+ };
+ igt_assert_eq(__ugpu_get(fd, &q), 0);
+
+ igt_info("ugpu queue '%s'\n", name);
+
+ close(fd);
+}
+
igt_main {
int i915;
@@ -15,4 +75,24 @@ igt_main {
igt_subtest("openclose")
close(ugpu_open(i915));
+
+ igt_subtest("name")
+ igt_ugpu_name(i915);
+
+ igt_subtest("mmap") {
+ int fd = ugpu_open(i915);
+ void *ctl, *mem;
+
+ ugpu_set_command_ring(fd, 4096);
+
+ ctl = mmap(NULL, 4096, PROT_WRITE, MAP_PRIVATE, fd, 0);
+ igt_assert(ctl != MAP_FAILED);
+ munmap(ctl, 4096);
+
+ mem = mmap(NULL, 4096, PROT_WRITE, MAP_PRIVATE, fd, 4096);
+ igt_assert(mem != MAP_FAILED);
+ munmap(mem, 4096);
+
+ close(fd);
+ }
}