diff options
author | Andrzej Turko <andrzej.turko@linux.intel.com> | 2021-05-26 14:00:18 +0100 |
---|---|---|
committer | Matthew Auld <matthew.auld@intel.com> | 2021-05-27 11:36:21 +0100 |
commit | b0789992cefc3b08fb5fd891522a116b367c3963 (patch) | |
tree | cdbbeef3017df11916a648e38c52a80b26618cb8 /lib | |
parent | 072973f7f70f4c0b7f070b442d2ca8ec1c4fd60d (diff) |
lib/i915/gem_create: Add gem_create_ext
Add a wrapper for gem_create_ext ioctl (a version of gem_create that
accepts extensions). In preparation for the driver change implementing it,
a local definition of its id and necessary structs have been added,
which are to be erased as soon as those definitions
appear in the i915_drm.h file.
The new ioctl wrapper is added to a separate file.
For consistency the wrapper of the old ioctl, gem_create
is moved from ioctl_wrappers to gem_create.
Signed-off-by: Andrzej Turko <andrzej.turko@linux.intel.com>
Cc: Zbigniew Kempczynski <zbigniew.kempczynski@intel.com>
Cc: Dominik Grzegorzek <dominik.grzegorzek@intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Cc: Chris P Wilson <chris.p.wilson@intel.com>
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Acked-by: Petri Latvala <petri.latvala@intel.com>
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" |