diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/i915/gem.h | 3 | ||||
-rw-r--r-- | lib/i915/gem_create.c | 43 | ||||
-rw-r--r-- | lib/i915/gem_create.h | 19 | ||||
-rw-r--r-- | lib/i915/gem_mman.c | 2 | ||||
-rw-r--r-- | lib/i915/gem_ring.c | 1 | ||||
-rw-r--r-- | lib/i915/gem_submission.c | 1 | ||||
-rw-r--r-- | lib/igt_draw.c | 2 | ||||
-rw-r--r-- | lib/igt_dummyload.c | 2 | ||||
-rw-r--r-- | lib/igt_fb.c | 2 | ||||
-rw-r--r-- | lib/intel_batchbuffer.c | 2 | ||||
-rw-r--r-- | lib/intel_bufops.c | 2 | ||||
-rw-r--r-- | lib/ioctl_wrappers.c | 2 |
12 files changed, 70 insertions, 11 deletions
diff --git a/lib/i915/gem.h b/lib/i915/gem.h index bd23a2776..feabac8df 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 a8c1a5813..b2e8d5595 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 000000000..c2b531b4d --- /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 ab04cbecb..300ca13d3 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 f224e822e..6d28b5d96 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 051f9d046..bd4bbb3ef 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 949c0d77b..a3144b500 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 34ad92216..1a3abb5dc 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 f8f02766e..3e6841fd9 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 0b2c5b21e..cc976a624 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 5dece5764..3ce686633 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 4440004c4..0c1b5e323 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" |