|
XenevaOS
|
#include <xe_drm.h>
Public Attributes | |
| __u64 | extensions |
| __u16 | width |
| __u16 | num_placements |
| __u32 | vm_id |
| __u32 | flags |
| __u32 | exec_queue_id |
| __u64 | instances |
| __u64 | reserved [2] |
struct drm_xe_exec_queue_create - Input of &DRM_IOCTL_XE_EXEC_QUEUE_CREATE
This ioctl supports setting the following properties via the DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY extension, which uses the generic &struct drm_xe_ext_set_property:
The example below shows how to use &struct drm_xe_exec_queue_create to create a simple exec_queue (no parallel submission) of class DRM_XE_ENGINE_CLASS_RENDER.
.. code-block:: C
struct drm_xe_engine_class_instance instance = {
.engine_class = DRM_XE_ENGINE_CLASS_RENDER,
};
struct drm_xe_exec_queue_create exec_queue_create = {
.extensions = 0,
.vm_id = vm,
.width = 1,
.num_placements = 1,
.instances = to_user_pointer(&instance),
};
ioctl(fd, DRM_IOCTL_XE_EXEC_QUEUE_CREATE, &exec_queue_create);
Allow users to provide a hint to kernel for cases demanding low latency profile. Please note it will have impact on power consumption. User can indicate low latency hint with flag while creating exec queue as mentioned below:
.. code-block:: C
struct drm_xe_exec_queue_create exec_queue_create = {
.flags = DRM_XE_EXEC_QUEUE_LOW_LATENCY_HINT,
.extensions = 0,
.vm_id = vm,
.width = 1,
.num_placements = 1,
.instances = to_user_pointer(&instance),
};
ioctl(fd, DRM_IOCTL_XE_EXEC_QUEUE_CREATE, &exec_queue_create);
| __u32 drm_xe_exec_queue_create::exec_queue_id |
@exec_queue_id: Returned exec queue ID
| __u64 drm_xe_exec_queue_create::extensions |
@extensions: Pointer to the first extension struct, if any
| __u32 drm_xe_exec_queue_create::flags |
@flags: flags to use for this exec queue
| __u64 drm_xe_exec_queue_create::instances |
@instances: user pointer to a 2-d array of struct drm_xe_engine_class_instance
length = width (i) * num_placements (j) index = j + i * width
| __u16 drm_xe_exec_queue_create::num_placements |
@num_placements: number of valid placements for this exec queue
| __u64 drm_xe_exec_queue_create::reserved[2] |
@reserved: Reserved
| __u32 drm_xe_exec_queue_create::vm_id |
@vm_id: VM to use for this exec queue
| __u16 drm_xe_exec_queue_create::width |
@width: submission width (number BB per exec) for this exec queue