summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/i915/gem.h3
-rw-r--r--lib/i915/gem_create.c43
-rw-r--r--lib/i915/gem_create.h19
-rw-r--r--lib/i915/gem_mman.c2
-rw-r--r--lib/i915/gem_ring.c1
-rw-r--r--lib/i915/gem_submission.c1
-rw-r--r--lib/igt_draw.c2
-rw-r--r--lib/igt_dummyload.c2
-rw-r--r--lib/igt_fb.c2
-rw-r--r--lib/intel_batchbuffer.c2
-rw-r--r--lib/intel_bufops.c2
-rw-r--r--lib/ioctl_wrappers.c2
12 files changed, 70 insertions, 11 deletions
diff --git a/lib/i915/gem.h b/lib/i915/gem.h
index bd23a277..feabac8d 100644
--- a/lib/i915/gem.h
+++ b/lib/i915/gem.h
@@ -32,7 +32,4 @@ void gem_quiescent_gpu(int i915);
int gem_reopen_driver(int i915);
-int __gem_create(int fd, uint64_t *size, uint32_t *handle);
-uint32_t gem_create(int fd, uint64_t size);
-
#endif /* I915_GEM_H */
diff --git a/lib/i915/gem_create.c b/lib/i915/gem_create.c
index a8c1a581..b2e8d559 100644
--- a/lib/i915/gem_create.c
+++ b/lib/i915/gem_create.c
@@ -5,7 +5,7 @@
#include <errno.h>
-#include "gem.h"
+#include "gem_create.h"
#include "i915_drm.h"
#include "igt_core.h"
#include "ioctl_wrappers.h"
@@ -47,3 +47,44 @@ uint32_t gem_create(int fd, uint64_t size)
return handle;
}
+
+int __gem_create_ext(int fd, uint64_t *size, uint32_t *handle,
+ struct i915_user_extension *ext)
+{
+ struct drm_i915_gem_create_ext create = {
+ .size = *size,
+ .extensions = to_user_pointer(ext),
+ };
+ int err = 0;
+
+ if (igt_ioctl(fd, DRM_IOCTL_I915_GEM_CREATE_EXT, &create) == 0) {
+ *handle = create.handle;
+ *size = create.size;
+ } else {
+ err = -errno;
+ igt_assume(err != 0);
+ }
+
+ errno = 0;
+ return err;
+}
+
+/**
+ * gem_create_ext:
+ * @fd: open i915 drm file descriptor
+ * @size: desired size of the buffer
+ * @ext: optional extensions chain
+ *
+ * This wraps the GEM_CREATE_EXT ioctl, which allocates a new gem buffer object
+ * of @size.
+ *
+ * Returns: The file-private handle of the created buffer object
+ */
+uint32_t gem_create_ext(int fd, uint64_t size, struct i915_user_extension *ext)
+{
+ uint32_t handle;
+
+ igt_assert_eq(__gem_create_ext(fd, &size, &handle, ext), 0);
+
+ return handle;
+}
diff --git a/lib/i915/gem_create.h b/lib/i915/gem_create.h
new file mode 100644
index 00000000..c2b531b4
--- /dev/null
+++ b/lib/i915/gem_create.h
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: MIT
+/*
+ * Copyright © 2021 Intel Corporation
+ */
+
+#ifndef GEM_CREATE_H
+#define GEM_CREATE_H
+
+#include <stdint.h>
+
+#include "i915_drm.h"
+
+int __gem_create(int fd, uint64_t *size, uint32_t *handle);
+uint32_t gem_create(int fd, uint64_t size);
+int __gem_create_ext(int fd, uint64_t *size, uint32_t *handle,
+ struct i915_user_extension *ext);
+uint32_t gem_create_ext(int fd, uint64_t size, struct i915_user_extension *ext);
+
+#endif /* GEM_CREATE_H */
diff --git a/lib/i915/gem_mman.c b/lib/i915/gem_mman.c
index ab04cbec..300ca13d 100644
--- a/lib/i915/gem_mman.c
+++ b/lib/i915/gem_mman.c
@@ -31,7 +31,7 @@
#include "ioctl_wrappers.h"
#include "intel_chipset.h"
-#include "gem.h"
+#include "gem_create.h"
#include "gem_mman.h"
#ifdef HAVE_VALGRIND
diff --git a/lib/i915/gem_ring.c b/lib/i915/gem_ring.c
index f224e822..6d28b5d9 100644
--- a/lib/i915/gem_ring.c
+++ b/lib/i915/gem_ring.c
@@ -27,6 +27,7 @@
#include <sys/time.h>
#include "gem.h"
+#include "gem_create.h"
#include "gem_ring.h"
#include "gem_submission.h"
diff --git a/lib/i915/gem_submission.c b/lib/i915/gem_submission.c
index 051f9d04..bd4bbb3e 100644
--- a/lib/i915/gem_submission.c
+++ b/lib/i915/gem_submission.c
@@ -31,6 +31,7 @@
#include <i915_drm.h>
#include "i915/gem.h"
+#include "i915/gem_create.h"
#include "i915/gem_engine_topology.h"
#include "i915/gem_submission.h"
diff --git a/lib/igt_draw.c b/lib/igt_draw.c
index 949c0d77..a3144b50 100644
--- a/lib/igt_draw.c
+++ b/lib/igt_draw.c
@@ -34,7 +34,7 @@
#include "igt_fb.h"
#include "ioctl_wrappers.h"
#include "i830_reg.h"
-#include "i915/gem.h"
+#include "i915/gem_create.h"
#include "i915/gem_mman.h"
#ifndef PAGE_ALIGN
diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c
index 34ad9221..1a3abb5d 100644
--- a/lib/igt_dummyload.c
+++ b/lib/igt_dummyload.c
@@ -31,7 +31,7 @@
#include <i915_drm.h>
#include "drmtest.h"
-#include "i915/gem.h"
+#include "i915/gem_create.h"
#include "i915/gem_engine_topology.h"
#include "i915/gem_mman.h"
#include "i915/gem_submission.h"
diff --git a/lib/igt_fb.c b/lib/igt_fb.c
index f8f02766..3e6841fd 100644
--- a/lib/igt_fb.c
+++ b/lib/igt_fb.c
@@ -33,7 +33,7 @@
#include <pixman.h>
#include "drmtest.h"
-#include "i915/gem.h"
+#include "i915/gem_create.h"
#include "i915/gem_mman.h"
#include "igt_aux.h"
#include "igt_color_encoding.h"
diff --git a/lib/intel_batchbuffer.c b/lib/intel_batchbuffer.c
index 0b2c5b21..cc976a62 100644
--- a/lib/intel_batchbuffer.c
+++ b/lib/intel_batchbuffer.c
@@ -35,7 +35,7 @@
#include "drm.h"
#include "drmtest.h"
-#include "i915/gem.h"
+#include "i915/gem_create.h"
#include "intel_batchbuffer.h"
#include "intel_bufmgr.h"
#include "intel_bufops.h"
diff --git a/lib/intel_bufops.c b/lib/intel_bufops.c
index 5dece576..3ce68663 100644
--- a/lib/intel_bufops.c
+++ b/lib/intel_bufops.c
@@ -25,7 +25,7 @@
#include <sys/ioctl.h>
#include <cairo.h>
-#include "i915/gem.h"
+#include "i915/gem_create.h"
#include "igt.h"
#include "igt_x86.h"
#include "intel_bufops.h"
diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c
index 4440004c..0c1b5e32 100644
--- a/lib/ioctl_wrappers.c
+++ b/lib/ioctl_wrappers.c
@@ -49,7 +49,7 @@
#include "drmtest.h"
#include "i915_drm.h"
-#include "i915/gem.h"
+#include "i915/gem_create.h"
#include "intel_batchbuffer.h"
#include "intel_chipset.h"
#include "intel_io.h"