[Intel-gfx] [PATCH i-g-t] i915: Improve static engine map for legacy
Chris Wilson
chris at chris-wilson.co.uk
Thu May 23 09:09:48 UTC 2019
Quoting Tvrtko Ursulin (2019-05-23 09:46:08)
>
> On 23/05/2019 09:06, Chris Wilson wrote:
> > const struct intel_execution_engine2 intel_execution_engines2[] = {
> > - { "rcs0", I915_ENGINE_CLASS_RENDER, 0 },
> > - { "bcs0", I915_ENGINE_CLASS_COPY, 0 },
> > - { "vcs0", I915_ENGINE_CLASS_VIDEO, 0 },
> > - { "vcs1", I915_ENGINE_CLASS_VIDEO, 1 },
> > - { "vcs2", I915_ENGINE_CLASS_VIDEO, 2 },
> > - { "vecs0", I915_ENGINE_CLASS_VIDEO_ENHANCE, 0 },
> > + { "rcs0", I915_ENGINE_CLASS_RENDER, 0, I915_EXEC_RENDER },
> > + { "bcs0", I915_ENGINE_CLASS_COPY, 0, I915_EXEC_BLT },
> > + { "vcs0", I915_ENGINE_CLASS_VIDEO, 0, I915_EXEC_BSD | I915_EXEC_BSD_RING1 },
>
> execbuf will reject this on single vcs parts. :( Am I not seeing some
> place where you fudge it into compliance?
if (user_ring_id == I915_EXEC_BSD && HAS_ENGINE(dev_priv, VCS1)) {
unsigned int bsd_idx = args->flags & I915_EXEC_BSD_MASK;
if (bsd_idx == I915_EXEC_BSD_DEFAULT) {
bsd_idx = gen8_dispatch_bsd_engine(dev_priv, file);
} else if (bsd_idx >= I915_EXEC_BSD_RING1 &&
bsd_idx <= I915_EXEC_BSD_RING2) {
bsd_idx >>= I915_EXEC_BSD_SHIFT;
bsd_idx--;
} else {
DRM_DEBUG("execbuf with unknown bsd ring: %u\n",
bsd_idx);
return NULL;
}
engine = dev_priv->engine[_VCS(bsd_idx)];
} else {
engine = dev_priv->engine[user_ring_map[user_ring_id]];
}
Looks ok to me... I was trying to double check but dif didn't boot on
bsw. Sigh.
-Chris
More information about the Intel-gfx
mailing list