[Intel-xe] [PATCH v2 49/50] drm/xe/uapi: Add block diagram of a device
Souza, Jose
jose.souza at intel.com
Thu Nov 9 15:35:41 UTC 2023
On Fri, 2023-11-03 at 14:34 +0000, Francois Dugast wrote:
> In order to make proper use the uAPI, a prerequisite is to understand
> some key concepts about the discrete GPU devices which are supported
> by the Xe driver. For example, some structs defined in the uAPI are an
> abstraction of a hardware component with a specific role.
>
> This diagram helps to build a mental representation of a device how it
> is seen by the Xe driver. As written in the documentation, it does not
> intend to be a literal representation of an existing device. A lot
> more information could be added but the intention for the overview is
> to keep it simple, and go into detail as needed in other sections.
>
> Signed-off-by: Francois Dugast <francois.dugast at intel.com>
> ---
> include/uapi/drm/xe_drm.h | 41 +++++++++++++++++++++++++++++++++++++++
> 1 file changed, 41 insertions(+)
>
> diff --git a/include/uapi/drm/xe_drm.h b/include/uapi/drm/xe_drm.h
> index 85dc0d343ea8..0bab53f2bed9 100644
> --- a/include/uapi/drm/xe_drm.h
> +++ b/include/uapi/drm/xe_drm.h
> @@ -28,6 +28,47 @@ extern "C" {
> *
> */
>
> +/**
> + * DOC: Xe Device Block Diagram
> + *
> + * The diagram below represents a high-level simplification of a discrete
> + * GPU supported by the Xe driver. It shows some device components which
> + * are necessary to understand this API, as well as how their relations
> + * to each other. This diagram does not represent real hardware::
> + *
> + * ┌──────────────────────────────────────────────────────────────────┐
> + * │ ┌──────────────────────────────────────────────────┐ ┌─────────┐ │
> + * │ │ ┌───────────────────────┐ │ │ ┌─────┐ │ │
> + * │ │ │ VRAM0 │ │ │ │VRAM1│ │ │
> + * │ │ └───────────┬───────────┘ │ │ └──┬──┘ │ │
> + * │ │ ┌────────────────────────┴─────────────────────┐ │ │ ┌──┴──┐ │ │
> + * │ │ │ ┌─────────────────────┐ ┌─────────────────┐ │ │ │ │ │ │ │
> + * │ │ │ │ ┌──┐ ┌──┐ ┌──┐ ┌──┐ │ │ ┌─────┐ ┌─────┐ │ │ │ │ │ │ │ │
> + * │ │ │ │ │EU│ │EU│ │EU│ │EU│ │ │ │RCS0 │ │BCS0 │ │ │ │ │ │ │ │ │
> + * │ │ │ │ └──┘ └──┘ └──┘ └──┘ │ │ └─────┘ └─────┘ │ │ │ │ │ │ │ │
> + * │ │ │ │ ┌──┐ ┌──┐ ┌──┐ ┌──┐ │ │ ┌─────┐ ┌─────┐ │ │ │ │ │ │ │ │
> + * │ │ │ │ │EU│ │EU│ │EU│ │EU│ │ │ │VCS0 │ │VCS1 │ │ │ │ │ │ │ │ │
> + * │ │ │ │ └──┘ └──┘ └──┘ └──┘ │ │ └─────┘ └─────┘ │ │ │ │ │ │ │ │
> + * │ │ │ │ ┌──┐ ┌──┐ ┌──┐ ┌──┐ │ │ ┌─────┐ ┌─────┐ │ │ │ │ │ │ │ │
> + * │ │ │ │ │EU│ │EU│ │EU│ │EU│ │ │ │VECS0│ │VECS1│ │ │ │ │ │ ... │ │ │
> + * │ │ │ │ └──┘ └──┘ └──┘ └──┘ │ │ └─────┘ └─────┘ │ │ │ │ │ │ │ │
> + * │ │ │ │ ┌──┐ ┌──┐ ┌──┐ ┌──┐ │ │ ┌─────┐ ┌─────┐ │ │ │ │ │ │ │ │
> + * │ │ │ │ │EU│ │EU│ │EU│ │EU│ │ │ │CCS0 │ │CCS1 │ │ │ │ │ │ │ │ │
> + * │ │ │ │ └──┘ └──┘ └──┘ └──┘ │ │ └─────┘ └─────┘ │ │ │ │ │ │ │ │
> + * │ │ │ └─────────DSS─────────┘ │ ┌─────┐ ┌─────┐ │ │ │ │ │ │ │ │
> + * │ │ │ │ │CCS2 │ │CCS3 │ │ │ │ │ │ │ │ │
> + * │ │ │ ┌─────┐ ┌─────┐ ┌─────┐ │ └─────┘ └─────┘ │ │ │ │ │ │ │ │
> + * │ │ │ │ ... │ │ ... │ │ ... │ │ │ │ │ │ │ │ │ │
> + * │ │ │ └─DSS─┘ └─DSS─┘ └─DSS─┘ └─────Engines─────┘ │ │ │ │ │ │ │
> + * │ │ └───────────────────────────GT0────────────────┘ │ │ └─GT1─┘ │ │
> + * │ └────────────────────────────Tile0─────────────────┘ └─ Tile1──┘ │
> + * └─────────────────────────────Device0───────┬──────────────────────┘
> + * │
> + * │
> + * ───────────────────────┴────────── PCI bus
> + *
> + */
> +
Why not also include a GT1 inside Tile0? To reflect the standalone media in MTL+.
> /**
> * DOC: Xe uAPI Overview
> *
More information about the Intel-xe
mailing list