[igt-dev] [PATCH i-g-t 07/74] lib/i915/gem_context: Add gem_context_create_ext helpers

Daniel Vetter daniel at ffwll.ch
Thu Apr 15 16:07:44 UTC 2021


On Mon, Apr 12, 2021 at 10:52:43PM -0500, Jason Ekstrand wrote:
> ---
>  lib/i915/gem_context.c | 57 ++++++++++++++++++++++++++++++++++++++++++
>  lib/i915/gem_context.h |  3 +++
>  2 files changed, 60 insertions(+)
> 
> diff --git a/lib/i915/gem_context.c b/lib/i915/gem_context.c
> index 79411e10..49ed7120 100644
> --- a/lib/i915/gem_context.c
> +++ b/lib/i915/gem_context.c
> @@ -107,6 +107,40 @@ int __gem_context_create(int fd, uint32_t *ctx_id)
>         return err;
>  }
>  
> +/**
> + * __gem_context_create_config:
> + * @fd: open i915 drm file descriptor
> + * @flags: context create flags
> + * @extensions: first extension struct, or 0 for no extensions
> + * @ctx_id: on success, the context ID is written here
> + *
> + * Creates a new GEM context with flags and extensions.  If no flags or
> + * extensions are required, it's the same as __gem_context_create and works
> + * on older kernels.
> + */
> +int __gem_context_create_ext(int fd, uint32_t flags, uint64_t extensions,
> +			     uint32_t *ctx_id)
> +{
> +	struct drm_i915_gem_context_create_ext ctx_create;
> +	int err = 0;
> +
> +	if (!flags && !extensions)
> +		return __gem_context_create(fd, ctx_id);
> +
> +	memset(&ctx_create, 0, sizeof(ctx_create));
> +	ctx_create.flags = flags;
> +	if (extensions) {
> +		ctx_create.flags |= I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS;
> +		ctx_create.extensions = extensions;
> +	}
> +
> +	err = create_ext_ioctl(fd, &ctx_create);
> +	if (!err)
> +		*ctx_id = ctx_create.ctx_id;
> +
> +	return err;
> +}
> +
>  /**
>   * gem_context_create:
>   * @fd: open i915 drm file descriptor
> @@ -127,6 +161,29 @@ uint32_t gem_context_create(int fd)
>  	return ctx_id;
>  }
>  
> +/**
> + * __gem_context_create_config:

Uh this should warn ... I guess you're not seeing the warning in all
the other gtkdoc fail?

> + * @fd: open i915 drm file descriptor
> + * @flags: context create flags
> + * @extensions: first extension struct, or 0 for no extensions
> + * @ctx_id: on success, the context ID is written here
> + *
> + * Creates a new GEM context with flags and extensions.  If no flags or
> + * extensions are required, it's the same as gem_context_create and works
> + * on older kernels.
> + *
> + * Returns: The id of the allocated context.
> + */
> +uint32_t gem_context_create_ext(int fd, uint32_t flags, uint64_t extensions)
> +{
> +	uint32_t ctx_id;
> +
> +	igt_assert_eq(__gem_context_create_ext(fd, flags, extensions, &ctx_id), 0);
> +	igt_assert(ctx_id != 0);
> +
> +	return ctx_id;
> +}
> +
>  int __gem_context_destroy(int fd, uint32_t ctx_id)
>  {
>  	struct drm_i915_gem_context_destroy destroy = { ctx_id };
> diff --git a/lib/i915/gem_context.h b/lib/i915/gem_context.h
> index c2c2b827..91bb9e7f 100644
> --- a/lib/i915/gem_context.h
> +++ b/lib/i915/gem_context.h
> @@ -30,7 +30,10 @@
>  struct drm_i915_gem_context_param;
>  
>  uint32_t gem_context_create(int fd);
> +uint32_t gem_context_create_ext(int fd, uint32_t flags, uint64_t extensions);
>  int __gem_context_create(int fd, uint32_t *ctx_id);
> +int __gem_context_create_ext(int fd, uint32_t flags, uint64_t extensions,
> +			     uint32_t *ctx_id);

With the gtkdoc fixed: Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
>  void gem_context_destroy(int fd, uint32_t ctx_id);
>  int __gem_context_destroy(int fd, uint32_t ctx_id);
>  
> -- 
> 2.31.1
> 
> _______________________________________________
> igt-dev mailing list
> igt-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/igt-dev

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the igt-dev mailing list