const struct {
const char *match;
enum drm_i915_gem_engine_class engine_class;
+ bool parse_instance;
} rings[] = {
- { "rcs", I915_ENGINE_CLASS_RENDER },
- { "vcs", I915_ENGINE_CLASS_VIDEO },
- { "vecs", I915_ENGINE_CLASS_VIDEO_ENHANCE },
- { "bcs", I915_ENGINE_CLASS_COPY },
- { "global", I915_ENGINE_CLASS_INVALID },
+ { "rcs", I915_ENGINE_CLASS_RENDER, true },
+ { "vcs", I915_ENGINE_CLASS_VIDEO, true },
+ { "vecs", I915_ENGINE_CLASS_VIDEO_ENHANCE, true },
+ { "bcs", I915_ENGINE_CLASS_COPY, true },
+ { "global", I915_ENGINE_CLASS_INVALID, false },
+ { "render command stream", I915_ENGINE_CLASS_RENDER, false },
+ { "blt command stream", I915_ENGINE_CLASS_COPY, false },
+ { "bsd command stream", I915_ENGINE_CLASS_VIDEO, false },
+ { "vebox command stream", I915_ENGINE_CLASS_VIDEO_ENHANCE, false },
{ NULL, I915_ENGINE_CLASS_INVALID },
}, *r;
for (r = rings; r->match; r++) {
if (strncasecmp(engine_name, r->match, strlen(r->match)) == 0) {
*engine_class = r->engine_class;
- *engine_instance = strtol(engine_name + strlen(r->match), NULL, 10);
+ if (r->parse_instance)
+ *engine_instance = strtol(engine_name + strlen(r->match), NULL, 10);
+ else
+ *engine_instance = 0;
return;
}
}