[Intel-gfx] [PATCH v4 2/5] i915: add a text about what happens at bottom of stack in processing a batchbuffer
Joonas Lahtinen
joonas.lahtinen at linux.intel.com
Tue Apr 3 12:15:46 UTC 2018
Quoting kevin.rogovin at intel.com (2018-04-03 13:52:24)
> From: Kevin Rogovin <kevin.rogovin at intel.com>
>
> Now that "DOC: User command execution" of i915_gem_execbuffer.c is included
> in the i915.rst, it is benecifial (for new developers) to read what happens
> at the bottom of the driver stack (in terms of bytes written to be read
> by the GPU) when processing a user-space batchbuffer.
>
> Signed-off-by: Kevin Rogovin <kevin.rogovin at intel.com>
> ---
> drivers/gpu/drm/i915/i915_gem_execbuffer.c | 22 ++++++++++++++++++++++
> 1 file changed, 22 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> index 8c170db8495d..1fe5da1fed47 100644
> --- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> +++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
> @@ -81,6 +81,28 @@ enum {
> * but this remains just a hint as the kernel may choose a new location for
> * any object in the future.
> *
> + * At the level of talking to the hardware, submitting a batchbuffer for the
> + * GPU to execute is to add content to a buffer from which the HW
> + * command streamer is reading.
> + * 1. Add a command to load the HW context. For Logical Ring Contexts, i.e.
> + * Execlists, this command is not placed on the same buffer as the
> + * remaining items.
> + * 2. Add a command to invalidate caches to the buffer.
> + * 3. Add a batchbuffer start command to the buffer; the start command is
> + * essentially a token together with the GPU address of the batchbuffer
> + * to be executed.
> + * 4. Add a pipeline flush to the buffer.
> + * 5. Add a memory write command to the buffer to record when the GPU
> + * is done executing the batchbuffer. The memory write writes the
> + * global sequence number of the request, `i915_request::global_seqno``;
Double tick here. With that fixed:
Reviewed-by: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
Regards, Joonas
> + * the i915 driver uses the current value in the register to determine
> + * if the GPU has completed the batchbuffer.
> + * 6. Add a user interrupt command to the buffer. This command instructs
> + * the GPU to issue an interrupt when the command, pipeline flush and
> + * memory write are completed.
> + * 7. Inform the hardware of the additional commands added to the buffer
> + * (by updating the tail pointer).
> + *
> * Processing an execbuf ioctl is conceptually split up into a few phases.
> *
> * 1. Validation - Ensure all the pointers, handles and flags are valid.
> --
> 2.16.2
>
More information about the Intel-gfx
mailing list