drm/i915: Update i915 uapi documentation
Add some missing i915 uapi documentation which the new i915 VM_BIND feature documentation will be refer to. Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com> Reviewed-by: Matthew Auld <matthew.auld@intel.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Matt Roper <matthew.d.roper@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220701003110.24843-3-niranjana.vishwanathapura@intel.com
This commit is contained in:
parent
ece91c882d
commit
a913bde810
@ -751,14 +751,27 @@ typedef struct drm_i915_irq_wait {
|
||||
|
||||
/* Must be kept compact -- no holes and well documented */
|
||||
|
||||
typedef struct drm_i915_getparam {
|
||||
/**
|
||||
* struct drm_i915_getparam - Driver parameter query structure.
|
||||
*/
|
||||
struct drm_i915_getparam {
|
||||
/** @param: Driver parameter to query. */
|
||||
__s32 param;
|
||||
/*
|
||||
|
||||
/**
|
||||
* @value: Address of memory where queried value should be put.
|
||||
*
|
||||
* WARNING: Using pointers instead of fixed-size u64 means we need to write
|
||||
* compat32 code. Don't repeat this mistake.
|
||||
*/
|
||||
int __user *value;
|
||||
} drm_i915_getparam_t;
|
||||
};
|
||||
|
||||
/**
|
||||
* typedef drm_i915_getparam_t - Driver parameter query structure.
|
||||
* See struct drm_i915_getparam.
|
||||
*/
|
||||
typedef struct drm_i915_getparam drm_i915_getparam_t;
|
||||
|
||||
/* Ioctl to set kernel params:
|
||||
*/
|
||||
@ -1239,76 +1252,119 @@ struct drm_i915_gem_exec_object2 {
|
||||
__u64 rsvd2;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_i915_gem_exec_fence - An input or output fence for the execbuf
|
||||
* ioctl.
|
||||
*
|
||||
* The request will wait for input fence to signal before submission.
|
||||
*
|
||||
* The returned output fence will be signaled after the completion of the
|
||||
* request.
|
||||
*/
|
||||
struct drm_i915_gem_exec_fence {
|
||||
/**
|
||||
* User's handle for a drm_syncobj to wait on or signal.
|
||||
*/
|
||||
/** @handle: User's handle for a drm_syncobj to wait on or signal. */
|
||||
__u32 handle;
|
||||
|
||||
/**
|
||||
* @flags: Supported flags are:
|
||||
*
|
||||
* I915_EXEC_FENCE_WAIT:
|
||||
* Wait for the input fence before request submission.
|
||||
*
|
||||
* I915_EXEC_FENCE_SIGNAL:
|
||||
* Return request completion fence as output
|
||||
*/
|
||||
__u32 flags;
|
||||
#define I915_EXEC_FENCE_WAIT (1<<0)
|
||||
#define I915_EXEC_FENCE_SIGNAL (1<<1)
|
||||
#define __I915_EXEC_FENCE_UNKNOWN_FLAGS (-(I915_EXEC_FENCE_SIGNAL << 1))
|
||||
__u32 flags;
|
||||
};
|
||||
|
||||
/*
|
||||
* See drm_i915_gem_execbuffer_ext_timeline_fences.
|
||||
*/
|
||||
#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
|
||||
|
||||
/*
|
||||
/**
|
||||
* struct drm_i915_gem_execbuffer_ext_timeline_fences - Timeline fences
|
||||
* for execbuf ioctl.
|
||||
*
|
||||
* This structure describes an array of drm_syncobj and associated points for
|
||||
* timeline variants of drm_syncobj. It is invalid to append this structure to
|
||||
* the execbuf if I915_EXEC_FENCE_ARRAY is set.
|
||||
*/
|
||||
struct drm_i915_gem_execbuffer_ext_timeline_fences {
|
||||
#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
|
||||
/** @base: Extension link. See struct i915_user_extension. */
|
||||
struct i915_user_extension base;
|
||||
|
||||
/**
|
||||
* Number of element in the handles_ptr & value_ptr arrays.
|
||||
* @fence_count: Number of elements in the @handles_ptr & @value_ptr
|
||||
* arrays.
|
||||
*/
|
||||
__u64 fence_count;
|
||||
|
||||
/**
|
||||
* Pointer to an array of struct drm_i915_gem_exec_fence of length
|
||||
* fence_count.
|
||||
* @handles_ptr: Pointer to an array of struct drm_i915_gem_exec_fence
|
||||
* of length @fence_count.
|
||||
*/
|
||||
__u64 handles_ptr;
|
||||
|
||||
/**
|
||||
* Pointer to an array of u64 values of length fence_count. Values
|
||||
* must be 0 for a binary drm_syncobj. A Value of 0 for a timeline
|
||||
* drm_syncobj is invalid as it turns a drm_syncobj into a binary one.
|
||||
* @values_ptr: Pointer to an array of u64 values of length
|
||||
* @fence_count.
|
||||
* Values must be 0 for a binary drm_syncobj. A Value of 0 for a
|
||||
* timeline drm_syncobj is invalid as it turns a drm_syncobj into a
|
||||
* binary one.
|
||||
*/
|
||||
__u64 values_ptr;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_i915_gem_execbuffer2 - Structure for DRM_I915_GEM_EXECBUFFER2
|
||||
* ioctl.
|
||||
*/
|
||||
struct drm_i915_gem_execbuffer2 {
|
||||
/**
|
||||
* List of gem_exec_object2 structs
|
||||
*/
|
||||
/** @buffers_ptr: Pointer to a list of gem_exec_object2 structs */
|
||||
__u64 buffers_ptr;
|
||||
|
||||
/** @buffer_count: Number of elements in @buffers_ptr array */
|
||||
__u32 buffer_count;
|
||||
|
||||
/** Offset in the batchbuffer to start execution from. */
|
||||
__u32 batch_start_offset;
|
||||
/** Bytes used in batchbuffer from batch_start_offset */
|
||||
__u32 batch_len;
|
||||
__u32 DR1;
|
||||
__u32 DR4;
|
||||
__u32 num_cliprects;
|
||||
/**
|
||||
* This is a struct drm_clip_rect *cliprects if I915_EXEC_FENCE_ARRAY
|
||||
* & I915_EXEC_USE_EXTENSIONS are not set.
|
||||
* @batch_start_offset: Offset in the batchbuffer to start execution
|
||||
* from.
|
||||
*/
|
||||
__u32 batch_start_offset;
|
||||
|
||||
/**
|
||||
* @batch_len: Length in bytes of the batch buffer, starting from the
|
||||
* @batch_start_offset. If 0, length is assumed to be the batch buffer
|
||||
* object size.
|
||||
*/
|
||||
__u32 batch_len;
|
||||
|
||||
/** @DR1: deprecated */
|
||||
__u32 DR1;
|
||||
|
||||
/** @DR4: deprecated */
|
||||
__u32 DR4;
|
||||
|
||||
/** @num_cliprects: See @cliprects_ptr */
|
||||
__u32 num_cliprects;
|
||||
|
||||
/**
|
||||
* @cliprects_ptr: Kernel clipping was a DRI1 misfeature.
|
||||
*
|
||||
* It is invalid to use this field if I915_EXEC_FENCE_ARRAY or
|
||||
* I915_EXEC_USE_EXTENSIONS flags are not set.
|
||||
*
|
||||
* If I915_EXEC_FENCE_ARRAY is set, then this is a pointer to an array
|
||||
* of struct drm_i915_gem_exec_fence and num_cliprects is the length
|
||||
* of the array.
|
||||
* of &drm_i915_gem_exec_fence and @num_cliprects is the length of the
|
||||
* array.
|
||||
*
|
||||
* If I915_EXEC_USE_EXTENSIONS is set, then this is a pointer to a
|
||||
* single struct i915_user_extension and num_cliprects is 0.
|
||||
* single &i915_user_extension and num_cliprects is 0.
|
||||
*/
|
||||
__u64 cliprects_ptr;
|
||||
|
||||
/** @flags: Execbuf flags */
|
||||
__u64 flags;
|
||||
#define I915_EXEC_RING_MASK (0x3f)
|
||||
#define I915_EXEC_DEFAULT (0<<0)
|
||||
#define I915_EXEC_RENDER (1<<0)
|
||||
@ -1326,10 +1382,6 @@ struct drm_i915_gem_execbuffer2 {
|
||||
#define I915_EXEC_CONSTANTS_REL_GENERAL (0<<6) /* default */
|
||||
#define I915_EXEC_CONSTANTS_ABSOLUTE (1<<6)
|
||||
#define I915_EXEC_CONSTANTS_REL_SURFACE (2<<6) /* gen4/5 only */
|
||||
__u64 flags;
|
||||
__u64 rsvd1; /* now used for context info */
|
||||
__u64 rsvd2;
|
||||
};
|
||||
|
||||
/** Resets the SO write offset registers for transform feedback on gen7. */
|
||||
#define I915_EXEC_GEN7_SOL_RESET (1<<8)
|
||||
@ -1432,9 +1484,23 @@ struct drm_i915_gem_execbuffer2 {
|
||||
* drm_i915_gem_execbuffer_ext enum.
|
||||
*/
|
||||
#define I915_EXEC_USE_EXTENSIONS (1 << 21)
|
||||
|
||||
#define __I915_EXEC_UNKNOWN_FLAGS (-(I915_EXEC_USE_EXTENSIONS << 1))
|
||||
|
||||
/** @rsvd1: Context id */
|
||||
__u64 rsvd1;
|
||||
|
||||
/**
|
||||
* @rsvd2: in and out sync_file file descriptors.
|
||||
*
|
||||
* When I915_EXEC_FENCE_IN or I915_EXEC_FENCE_SUBMIT flag is set, the
|
||||
* lower 32 bits of this field will have the in sync_file fd (input).
|
||||
*
|
||||
* When I915_EXEC_FENCE_OUT flag is set, the upper 32 bits of this
|
||||
* field will have the out sync_file fd (output).
|
||||
*/
|
||||
__u64 rsvd2;
|
||||
};
|
||||
|
||||
#define I915_EXEC_CONTEXT_ID_MASK (0xffffffff)
|
||||
#define i915_execbuffer2_set_context_id(eb2, context) \
|
||||
(eb2).rsvd1 = context & I915_EXEC_CONTEXT_ID_MASK
|
||||
@ -1814,19 +1880,58 @@ struct drm_i915_gem_context_create {
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_i915_gem_context_create_ext - Structure for creating contexts.
|
||||
*/
|
||||
struct drm_i915_gem_context_create_ext {
|
||||
__u32 ctx_id; /* output: id of new context*/
|
||||
/** @ctx_id: Id of the created context (output) */
|
||||
__u32 ctx_id;
|
||||
|
||||
/**
|
||||
* @flags: Supported flags are:
|
||||
*
|
||||
* I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS:
|
||||
*
|
||||
* Extensions may be appended to this structure and driver must check
|
||||
* for those. See @extensions.
|
||||
*
|
||||
* I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE
|
||||
*
|
||||
* Created context will have single timeline.
|
||||
*/
|
||||
__u32 flags;
|
||||
#define I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS (1u << 0)
|
||||
#define I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE (1u << 1)
|
||||
#define I915_CONTEXT_CREATE_FLAGS_UNKNOWN \
|
||||
(-(I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE << 1))
|
||||
|
||||
/**
|
||||
* @extensions: Zero-terminated chain of extensions.
|
||||
*
|
||||
* I915_CONTEXT_CREATE_EXT_SETPARAM:
|
||||
* Context parameter to set or query during context creation.
|
||||
* See struct drm_i915_gem_context_create_ext_setparam.
|
||||
*
|
||||
* I915_CONTEXT_CREATE_EXT_CLONE:
|
||||
* This extension has been removed. On the off chance someone somewhere
|
||||
* has attempted to use it, never re-use this extension number.
|
||||
*/
|
||||
__u64 extensions;
|
||||
#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
|
||||
#define I915_CONTEXT_CREATE_EXT_CLONE 1
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_i915_gem_context_param - Context parameter to set or query.
|
||||
*/
|
||||
struct drm_i915_gem_context_param {
|
||||
/** @ctx_id: Context id */
|
||||
__u32 ctx_id;
|
||||
|
||||
/** @size: Size of the parameter @value */
|
||||
__u32 size;
|
||||
|
||||
/** @param: Parameter to set or query */
|
||||
__u64 param;
|
||||
#define I915_CONTEXT_PARAM_BAN_PERIOD 0x1
|
||||
/* I915_CONTEXT_PARAM_NO_ZEROMAP has been removed. On the off chance
|
||||
@ -1973,6 +2078,7 @@ struct drm_i915_gem_context_param {
|
||||
#define I915_CONTEXT_PARAM_PROTECTED_CONTENT 0xd
|
||||
/* Must be kept compact -- no holes and well documented */
|
||||
|
||||
/** @value: Context parameter value to be set or queried */
|
||||
__u64 value;
|
||||
};
|
||||
|
||||
@ -2371,23 +2477,29 @@ struct i915_context_param_engines {
|
||||
struct i915_engine_class_instance engines[N__]; \
|
||||
} __attribute__((packed)) name__
|
||||
|
||||
/**
|
||||
* struct drm_i915_gem_context_create_ext_setparam - Context parameter
|
||||
* to set or query during context creation.
|
||||
*/
|
||||
struct drm_i915_gem_context_create_ext_setparam {
|
||||
#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
|
||||
/** @base: Extension link. See struct i915_user_extension. */
|
||||
struct i915_user_extension base;
|
||||
|
||||
/**
|
||||
* @param: Context parameter to set or query.
|
||||
* See struct drm_i915_gem_context_param.
|
||||
*/
|
||||
struct drm_i915_gem_context_param param;
|
||||
};
|
||||
|
||||
/* This API has been removed. On the off chance someone somewhere has
|
||||
* attempted to use it, never re-use this extension number.
|
||||
*/
|
||||
#define I915_CONTEXT_CREATE_EXT_CLONE 1
|
||||
|
||||
struct drm_i915_gem_context_destroy {
|
||||
__u32 ctx_id;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/*
|
||||
/**
|
||||
* struct drm_i915_gem_vm_control - Structure to create or destroy VM.
|
||||
*
|
||||
* DRM_I915_GEM_VM_CREATE -
|
||||
*
|
||||
* Create a new virtual memory address space (ppGTT) for use within a context
|
||||
@ -2397,20 +2509,23 @@ struct drm_i915_gem_context_destroy {
|
||||
* The id of new VM (bound to the fd) for use with I915_CONTEXT_PARAM_VM is
|
||||
* returned in the outparam @id.
|
||||
*
|
||||
* No flags are defined, with all bits reserved and must be zero.
|
||||
*
|
||||
* An extension chain maybe provided, starting with @extensions, and terminated
|
||||
* by the @next_extension being 0. Currently, no extensions are defined.
|
||||
*
|
||||
* DRM_I915_GEM_VM_DESTROY -
|
||||
*
|
||||
* Destroys a previously created VM id, specified in @id.
|
||||
* Destroys a previously created VM id, specified in @vm_id.
|
||||
*
|
||||
* No extensions or flags are allowed currently, and so must be zero.
|
||||
*/
|
||||
struct drm_i915_gem_vm_control {
|
||||
/** @extensions: Zero-terminated chain of extensions. */
|
||||
__u64 extensions;
|
||||
|
||||
/** @flags: reserved for future usage, currently MBZ */
|
||||
__u32 flags;
|
||||
|
||||
/** @vm_id: Id of the VM created or to be destroyed */
|
||||
__u32 vm_id;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user