[Intel-gfx] [PATCH 2/2] drm/i915/guc: default to using GuC submission where possible
Dave Gordon
david.s.gordon at intel.com
Mon Apr 25 07:31:07 UTC 2016
On 22/04/16 19:51, Chris Wilson wrote:
> On Fri, Apr 22, 2016 at 07:45:15PM +0100, Chris Wilson wrote:
>> On Fri, Apr 22, 2016 at 07:22:55PM +0100, Dave Gordon wrote:
>>> This patch simply changes the default value of "enable_guc_submission"
>>> from 0 (never) to -1 (auto). This means that GuC submission will be
>>> used if the platform has a GuC, the GuC supports the request submission
>>> protocol, and any required GuC firmwware was successfully loaded. If any
>>> of these conditions are not met, the driver will fall back to using
>>> execlist mode.
>
> I just remembered something else.
>
> * Work Items:
> * There are several types of work items that the host may place into a
> * workqueue, each with its own requirements and limitations. Currently only
> * WQ_TYPE_INORDER is needed to support legacy submission via GuC, which
> * represents in-order queue. The kernel driver packs ring tail pointer and an
> * ELSP context descriptor dword into Work Item.
>
> Is this right? You only allocate a single client covering all engines and
> specify INORDER. We expect parallel execution between engines, is this
> supported? Empirically it seems like guc is only executing commands in
> series across engines and not in parallel.
> -Chris
AFAIK, INORDER represents in-order executions of elements in the GuC's
(internal) submission queue, which is per-engine; i.e. this option
bypasses the GuC's internal scheduling algorithms and makes the GuC
behave as a simple dispatcher. It demultiplexes work queue items into
the multiple submission queues, then executes them in order from there.
Alex can probably confirm this in the GuC code, but I really think we'd
have noticed if execution were serialised across engines. For a start,
the validation tests that have one engine busy-spin while waiting for a
batch on a different engine to update a buffer wouldn't ever finish.
For other reasons, however, John & I are planning to test a
one-client-per-engine configuration for use by the GPU scheduler.
.Dave.
More information about the Intel-gfx
mailing list