Message ID | 20230823213901.335696-1-rodrigo.vivi@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/i915: Add missing CCS documentation. | expand |
On Wed, Aug 23, 2023 at 05:39:01PM -0400, Rodrigo Vivi wrote: > Let's introduce the basic documentation about CCS. > While doing that, also removed the legacy execution flag name. That flag > simply doesn't exist for CCS and it is not needed on current context > submission. Those flag names are only needed on legacy context, > while on new ones we only need to pass the engine ID. > > It is worth mention that this documentation should probably live with > the engine definitions rather than in the i915.rst file directly and > that more updates are likely need in this section. But this should > come later. It may be better to just delete this completely and instead provide a reference to the better engine documentation we already have in include/uapi/drm/i915_drm.h? > > Fixes: 944823c94639 ("drm/i915/xehp: Define compute class and engine") > Cc: Matt Roper <matthew.d.roper@intel.com> > Cc: Sushma Venkatesh Reddy <sushma.venkatesh.reddy@intel.com> > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> > Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > --- > Documentation/gpu/i915.rst | 24 +++++++++++------------- > 1 file changed, 11 insertions(+), 13 deletions(-) > > diff --git a/Documentation/gpu/i915.rst b/Documentation/gpu/i915.rst > index 60ea21734902..87bdcd616944 100644 > --- a/Documentation/gpu/i915.rst > +++ b/Documentation/gpu/i915.rst > @@ -267,19 +267,17 @@ i915 driver. > Intel GPU Basics > ---------------- > > -An Intel GPU has multiple engines. There are several engine types. > - > -- RCS engine is for rendering 3D and performing compute, this is named > - `I915_EXEC_RENDER` in user space. > -- BCS is a blitting (copy) engine, this is named `I915_EXEC_BLT` in user > - space. > -- VCS is a video encode and decode engine, this is named `I915_EXEC_BSD` > - in user space > -- VECS is video enhancement engine, this is named `I915_EXEC_VEBOX` in user > - space. > -- The enumeration `I915_EXEC_DEFAULT` does not refer to specific engine; > - instead it is to be used by user space to specify a default rendering > - engine (for 3D) that may or may not be the same as RCS. > +An Intel GPU has multiple engines. There are several engine types: > + > +- Render Command Streamer (RCS). An engine for rendering 3D and > + performing compute on platforms without CCS. I don't think the "without CCS" here is accurate; even platforms with CCS engines can still access the GPGPU pipeline via the RCS. > +- Blitting Command Streamer (BCS). An engine for performing blitting and/or > + copying operations. > +- Video Command Streamer. An engine used for video decoding. For historical > + reasons this engine was alsso called 'BCS'. I don't think this is true? As far as I recall, BCS has always referred to the blitter/copy engines, not the VCS. Matt > +- Video Enhancement Command Streamer (VECS). The engine used only by media. > +- Compute Command Streamer (CCS). An engine that has access to the media and > + GPGPU pipelines, but not the 3D pipeline. > > The Intel GPU family is a family of integrated GPU's using Unified > Memory Access. For having the GPU "do work", user space will feed the > -- > 2.41.0 >
On Wed, Aug 23, 2023 at 03:22:07PM -0700, Matt Roper wrote: > On Wed, Aug 23, 2023 at 05:39:01PM -0400, Rodrigo Vivi wrote: > > Let's introduce the basic documentation about CCS. > > While doing that, also removed the legacy execution flag name. That flag > > simply doesn't exist for CCS and it is not needed on current context > > submission. Those flag names are only needed on legacy context, > > while on new ones we only need to pass the engine ID. > > > > It is worth mention that this documentation should probably live with > > the engine definitions rather than in the i915.rst file directly and > > that more updates are likely need in this section. But this should > > come later. > > It may be better to just delete this completely and instead provide a > reference to the better engine documentation we already have in > include/uapi/drm/i915_drm.h? I thought about that, but I believe the 2 different documentation have different reader targets, although there are some overlapping. But probably the right way is indeed to move these things to the .h where they are defined... or we are sentenced to keep forgetting to update this one way or another. > > > > > Fixes: 944823c94639 ("drm/i915/xehp: Define compute class and engine") > > Cc: Matt Roper <matthew.d.roper@intel.com> > > Cc: Sushma Venkatesh Reddy <sushma.venkatesh.reddy@intel.com> > > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> > > Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > > --- > > Documentation/gpu/i915.rst | 24 +++++++++++------------- > > 1 file changed, 11 insertions(+), 13 deletions(-) > > > > diff --git a/Documentation/gpu/i915.rst b/Documentation/gpu/i915.rst > > index 60ea21734902..87bdcd616944 100644 > > --- a/Documentation/gpu/i915.rst > > +++ b/Documentation/gpu/i915.rst > > @@ -267,19 +267,17 @@ i915 driver. > > Intel GPU Basics > > ---------------- > > > > -An Intel GPU has multiple engines. There are several engine types. > > - > > -- RCS engine is for rendering 3D and performing compute, this is named > > - `I915_EXEC_RENDER` in user space. > > -- BCS is a blitting (copy) engine, this is named `I915_EXEC_BLT` in user > > - space. > > -- VCS is a video encode and decode engine, this is named `I915_EXEC_BSD` > > - in user space > > -- VECS is video enhancement engine, this is named `I915_EXEC_VEBOX` in user > > - space. > > -- The enumeration `I915_EXEC_DEFAULT` does not refer to specific engine; > > - instead it is to be used by user space to specify a default rendering > > - engine (for 3D) that may or may not be the same as RCS. > > +An Intel GPU has multiple engines. There are several engine types: > > + > > +- Render Command Streamer (RCS). An engine for rendering 3D and > > + performing compute on platforms without CCS. > > I don't think the "without CCS" here is accurate; even platforms with > CCS engines can still access the GPGPU pipeline via the RCS. indeed. > > > +- Blitting Command Streamer (BCS). An engine for performing blitting and/or > > + copying operations. > > +- Video Command Streamer. An engine used for video decoding. For historical > > + reasons this engine was alsso called 'BCS'. > > I don't think this is true? As far as I recall, BCS has always referred > to the blitter/copy engines, not the VCS. doh! I meant 'BSD' to reflect the removed I915_EXEC_BSD... I can't even recall why that ever got the BSD name to start with. > > > Matt > > > +- Video Enhancement Command Streamer (VECS). The engine used only by media. > > +- Compute Command Streamer (CCS). An engine that has access to the media and > > + GPGPU pipelines, but not the 3D pipeline. > > > > The Intel GPU family is a family of integrated GPU's using Unified > > Memory Access. For having the GPU "do work", user space will feed the > > -- > > 2.41.0 > > > > -- > Matt Roper > Graphics Software Engineer > Linux GPU Platform Enablement > Intel Corporation
On Thu, Aug 24, 2023 at 06:06:10PM -0400, Rodrigo Vivi wrote: > On Wed, Aug 23, 2023 at 03:22:07PM -0700, Matt Roper wrote: > > On Wed, Aug 23, 2023 at 05:39:01PM -0400, Rodrigo Vivi wrote: > > > Let's introduce the basic documentation about CCS. > > > While doing that, also removed the legacy execution flag name. That flag > > > simply doesn't exist for CCS and it is not needed on current context > > > submission. Those flag names are only needed on legacy context, > > > while on new ones we only need to pass the engine ID. > > > > > > It is worth mention that this documentation should probably live with > > > the engine definitions rather than in the i915.rst file directly and > > > that more updates are likely need in this section. But this should > > > come later. > > > > It may be better to just delete this completely and instead provide a > > reference to the better engine documentation we already have in > > include/uapi/drm/i915_drm.h? > > I thought about that, but I believe the 2 different documentation have > different reader targets, although there are some overlapping. > > But probably the right way is indeed to move these things to the .h where > they are defined... or we are sentenced to keep forgetting to update > this one way or another. > > > > > > > > > Fixes: 944823c94639 ("drm/i915/xehp: Define compute class and engine") > > > Cc: Matt Roper <matthew.d.roper@intel.com> > > > Cc: Sushma Venkatesh Reddy <sushma.venkatesh.reddy@intel.com> > > > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> > > > Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > > > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > > > --- > > > Documentation/gpu/i915.rst | 24 +++++++++++------------- > > > 1 file changed, 11 insertions(+), 13 deletions(-) > > > > > > diff --git a/Documentation/gpu/i915.rst b/Documentation/gpu/i915.rst > > > index 60ea21734902..87bdcd616944 100644 > > > --- a/Documentation/gpu/i915.rst > > > +++ b/Documentation/gpu/i915.rst > > > @@ -267,19 +267,17 @@ i915 driver. > > > Intel GPU Basics > > > ---------------- > > > > > > -An Intel GPU has multiple engines. There are several engine types. > > > - > > > -- RCS engine is for rendering 3D and performing compute, this is named > > > - `I915_EXEC_RENDER` in user space. > > > -- BCS is a blitting (copy) engine, this is named `I915_EXEC_BLT` in user > > > - space. > > > -- VCS is a video encode and decode engine, this is named `I915_EXEC_BSD` > > > - in user space > > > -- VECS is video enhancement engine, this is named `I915_EXEC_VEBOX` in user > > > - space. > > > -- The enumeration `I915_EXEC_DEFAULT` does not refer to specific engine; > > > - instead it is to be used by user space to specify a default rendering > > > - engine (for 3D) that may or may not be the same as RCS. > > > +An Intel GPU has multiple engines. There are several engine types: > > > + > > > +- Render Command Streamer (RCS). An engine for rendering 3D and > > > + performing compute on platforms without CCS. > > > > I don't think the "without CCS" here is accurate; even platforms with > > CCS engines can still access the GPGPU pipeline via the RCS. > > indeed. > > > > > > +- Blitting Command Streamer (BCS). An engine for performing blitting and/or > > > + copying operations. > > > +- Video Command Streamer. An engine used for video decoding. For historical > > > + reasons this engine was alsso called 'BCS'. > > > > I don't think this is true? As far as I recall, BCS has always referred > > to the blitter/copy engines, not the VCS. > > doh! I meant 'BSD' to reflect the removed I915_EXEC_BSD... I can't even > recall why that ever got the BSD name to start with. BSD = "Bitstream decode" Matt > > > > > > > Matt > > > > > +- Video Enhancement Command Streamer (VECS). The engine used only by media. > > > +- Compute Command Streamer (CCS). An engine that has access to the media and > > > + GPGPU pipelines, but not the 3D pipeline. > > > > > > The Intel GPU family is a family of integrated GPU's using Unified > > > Memory Access. For having the GPU "do work", user space will feed the > > > -- > > > 2.41.0 > > > > > > > -- > > Matt Roper > > Graphics Software Engineer > > Linux GPU Platform Enablement > > Intel Corporation
On 23/08/2023 22:39, Rodrigo Vivi wrote: > Let's introduce the basic documentation about CCS. > While doing that, also removed the legacy execution flag name. That flag > simply doesn't exist for CCS and it is not needed on current context > submission. Those flag names are only needed on legacy context, > while on new ones we only need to pass the engine ID. > > It is worth mention that this documentation should probably live with > the engine definitions rather than in the i915.rst file directly and > that more updates are likely need in this section. But this should > come later. > > Fixes: 944823c94639 ("drm/i915/xehp: Define compute class and engine") > Cc: Matt Roper <matthew.d.roper@intel.com> > Cc: Sushma Venkatesh Reddy <sushma.venkatesh.reddy@intel.com> > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> > Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> > Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > --- > Documentation/gpu/i915.rst | 24 +++++++++++------------- > 1 file changed, 11 insertions(+), 13 deletions(-) > > diff --git a/Documentation/gpu/i915.rst b/Documentation/gpu/i915.rst > index 60ea21734902..87bdcd616944 100644 > --- a/Documentation/gpu/i915.rst > +++ b/Documentation/gpu/i915.rst > @@ -267,19 +267,17 @@ i915 driver. > Intel GPU Basics > ---------------- > > -An Intel GPU has multiple engines. There are several engine types. > - > -- RCS engine is for rendering 3D and performing compute, this is named > - `I915_EXEC_RENDER` in user space. > -- BCS is a blitting (copy) engine, this is named `I915_EXEC_BLT` in user > - space. > -- VCS is a video encode and decode engine, this is named `I915_EXEC_BSD` > - in user space > -- VECS is video enhancement engine, this is named `I915_EXEC_VEBOX` in user > - space. > -- The enumeration `I915_EXEC_DEFAULT` does not refer to specific engine; > - instead it is to be used by user space to specify a default rendering > - engine (for 3D) that may or may not be the same as RCS. > +An Intel GPU has multiple engines. There are several engine types: > + > +- Render Command Streamer (RCS). An engine for rendering 3D and > + performing compute on platforms without CCS. To be tweaked as already agreed in the thread. > +- Blitting Command Streamer (BCS). An engine for performing blitting and/or > + copying operations. > +- Video Command Streamer. An engine used for video decoding. For historical You deliberately dropped encoding? > + reasons this engine was alsso called 'BCS'. BSD as already pointed out in the thread. Probably replace historical reasons with "also sometimes called", in hw docs, or something. Also sometimes called VDBOX. And VEBOX for VECS to complete the confusion. :) s/alsso/also > +- Video Enhancement Command Streamer (VECS). The engine used only by media. Old explanation seems to contain marginally more information so I would keep the video enhancement as explanation. > +- Compute Command Streamer (CCS). An engine that has access to the media and > + GPGPU pipelines, but not the 3D pipeline. > > The Intel GPU family is a family of integrated GPU's using Unified > Memory Access. For having the GPU "do work", user space will feed the Overall I agree I915_EXEC_DEFAULT should be removed from this blurb since the thing seems to be explaining hw components and not uapi. Only not sure if uapi references for other engines should be removed or not. Perhaps they are useful for cross-referencing, and I don't see i915_drm.h is explaining what they are. Regards, Tvrtko
diff --git a/Documentation/gpu/i915.rst b/Documentation/gpu/i915.rst index 60ea21734902..87bdcd616944 100644 --- a/Documentation/gpu/i915.rst +++ b/Documentation/gpu/i915.rst @@ -267,19 +267,17 @@ i915 driver. Intel GPU Basics ---------------- -An Intel GPU has multiple engines. There are several engine types. - -- RCS engine is for rendering 3D and performing compute, this is named - `I915_EXEC_RENDER` in user space. -- BCS is a blitting (copy) engine, this is named `I915_EXEC_BLT` in user - space. -- VCS is a video encode and decode engine, this is named `I915_EXEC_BSD` - in user space -- VECS is video enhancement engine, this is named `I915_EXEC_VEBOX` in user - space. -- The enumeration `I915_EXEC_DEFAULT` does not refer to specific engine; - instead it is to be used by user space to specify a default rendering - engine (for 3D) that may or may not be the same as RCS. +An Intel GPU has multiple engines. There are several engine types: + +- Render Command Streamer (RCS). An engine for rendering 3D and + performing compute on platforms without CCS. +- Blitting Command Streamer (BCS). An engine for performing blitting and/or + copying operations. +- Video Command Streamer. An engine used for video decoding. For historical + reasons this engine was alsso called 'BCS'. +- Video Enhancement Command Streamer (VECS). The engine used only by media. +- Compute Command Streamer (CCS). An engine that has access to the media and + GPGPU pipelines, but not the 3D pipeline. The Intel GPU family is a family of integrated GPU's using Unified Memory Access. For having the GPU "do work", user space will feed the
Let's introduce the basic documentation about CCS. While doing that, also removed the legacy execution flag name. That flag simply doesn't exist for CCS and it is not needed on current context submission. Those flag names are only needed on legacy context, while on new ones we only need to pass the engine ID. It is worth mention that this documentation should probably live with the engine definitions rather than in the i915.rst file directly and that more updates are likely need in this section. But this should come later. Fixes: 944823c94639 ("drm/i915/xehp: Define compute class and engine") Cc: Matt Roper <matthew.d.roper@intel.com> Cc: Sushma Venkatesh Reddy <sushma.venkatesh.reddy@intel.com> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> --- Documentation/gpu/i915.rst | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-)