|
@@ -50,6 +50,8 @@ struct engine_class_info {
|
|
|
const char *name;
|
|
|
int (*init_legacy)(struct intel_engine_cs *engine);
|
|
|
int (*init_execlists)(struct intel_engine_cs *engine);
|
|
|
+
|
|
|
+ u8 uabi_class;
|
|
|
};
|
|
|
|
|
|
static const struct engine_class_info intel_engine_classes[] = {
|
|
@@ -57,21 +59,25 @@ static const struct engine_class_info intel_engine_classes[] = {
|
|
|
.name = "rcs",
|
|
|
.init_execlists = logical_render_ring_init,
|
|
|
.init_legacy = intel_init_render_ring_buffer,
|
|
|
+ .uabi_class = I915_ENGINE_CLASS_RENDER,
|
|
|
},
|
|
|
[COPY_ENGINE_CLASS] = {
|
|
|
.name = "bcs",
|
|
|
.init_execlists = logical_xcs_ring_init,
|
|
|
.init_legacy = intel_init_blt_ring_buffer,
|
|
|
+ .uabi_class = I915_ENGINE_CLASS_COPY,
|
|
|
},
|
|
|
[VIDEO_DECODE_CLASS] = {
|
|
|
.name = "vcs",
|
|
|
.init_execlists = logical_xcs_ring_init,
|
|
|
.init_legacy = intel_init_bsd_ring_buffer,
|
|
|
+ .uabi_class = I915_ENGINE_CLASS_VIDEO,
|
|
|
},
|
|
|
[VIDEO_ENHANCEMENT_CLASS] = {
|
|
|
.name = "vecs",
|
|
|
.init_execlists = logical_xcs_ring_init,
|
|
|
.init_legacy = intel_init_vebox_ring_buffer,
|
|
|
+ .uabi_class = I915_ENGINE_CLASS_VIDEO_ENHANCE,
|
|
|
},
|
|
|
};
|
|
|
|
|
@@ -213,13 +219,15 @@ intel_engine_setup(struct drm_i915_private *dev_priv,
|
|
|
WARN_ON(snprintf(engine->name, sizeof(engine->name), "%s%u",
|
|
|
class_info->name, info->instance) >=
|
|
|
sizeof(engine->name));
|
|
|
- engine->uabi_id = info->uabi_id;
|
|
|
engine->hw_id = engine->guc_id = info->hw_id;
|
|
|
engine->mmio_base = info->mmio_base;
|
|
|
engine->irq_shift = info->irq_shift;
|
|
|
engine->class = info->class;
|
|
|
engine->instance = info->instance;
|
|
|
|
|
|
+ engine->uabi_id = info->uabi_id;
|
|
|
+ engine->uabi_class = class_info->uabi_class;
|
|
|
+
|
|
|
engine->context_size = __intel_engine_context_size(dev_priv,
|
|
|
engine->class);
|
|
|
if (WARN_ON(engine->context_size > BIT(20)))
|