Re: [Intel-gfx] [RFC v2 01/22] drm: RFC for Plane Color Hardware Pipeline

Pekka Paalanen
2021-11-26T08:21:18Z

[-- Attachment #1: Type: text/plain, Size: 5231 bytes --]

On Thu, 25 Nov 2021 20:43:19 +0000
"Shankar, Uma" <uma.shankar@intel.com> wrote:

> > -----Original Message-----
> > From: Harry Wentland <harry.wentland@amd.com>
> > Sent: Tuesday, November 23, 2021 8:35 PM
> > To: Shankar, Uma <uma.shankar@intel.com>; intel-gfx@lists.freedesktop.org; dri-
> > devel@lists.freedesktop.org
> > Cc: ville.syrjala@linux.intel.com; ppaalanen@gmail.com; brian.starkey@arm.com;
> > sebastian@sebastianwick.net; Shashank.Sharma@amd.com
> > Subject: Re: [RFC v2 01/22] drm: RFC for Plane Color Hardware Pipeline
> >
> >
> >
> > On 2021-09-06 17:38, Uma Shankar wrote:
> > > This is a RFC proposal for plane color hardware blocks.
> > > It exposes the property interface to userspace and calls out the
> > > details or interfaces created and the intended purpose.
> > >
> > > Credits: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> > > ---
> > > Documentation/gpu/rfc/drm_color_pipeline.rst | 167
> > > +++++++++++++++++++
> > > 1 file changed, 167 insertions(+)
> > > create mode 100644 Documentation/gpu/rfc/drm_color_pipeline.rst
> > >
> > > diff --git a/Documentation/gpu/rfc/drm_color_pipeline.rst
> > > b/Documentation/gpu/rfc/drm_color_pipeline.rst
> > > new file mode 100644
> > > index 000000000000..0d1ca858783b
> > > --- /dev/null
> > > +++ b/Documentation/gpu/rfc/drm_color_pipeline.rst
> > > @@ -0,0 +1,167 @@
> > > +==================================================
> > > +Display Color Pipeline: Proposed DRM Properties
> > > +==================================================
> > > +
> > > +This is how a typical display color hardware pipeline looks like:
> > > + +-------------------------------------------+
> > > + | RAM |
> > > + | +------+ +---------+ +---------+ |
> > > + | | FB 1 | | FB 2 | | FB N | |
> > > + | +------+ +---------+ +---------+ |
> > > + +-------------------------------------------+
> > > + | Plane Color Hardware Block |
> > > + +--------------------------------------------+
> > > + | +---v-----+ +---v-------+ +---v------+ |
> > > + | | Plane A | | Plane B | | Plane N | |
> > > + | | DeGamma | | Degamma | | Degamma | |
> > > + | +---+-----+ +---+-------+ +---+------+ |
> > > + | | | | |
> > > + | +---v-----+ +---v-------+ +---v------+ |
> > > + | |Plane A | | Plane B | | Plane N | |
> > > + | |CSC/CTM | | CSC/CTM | | CSC/CTM | |
> > > + | +---+-----+ +----+------+ +----+-----+ |
> > > + | | | | |
> > > + | +---v-----+ +----v------+ +----v-----+ |
> > > + | | Plane A | | Plane B | | Plane N | |
> > > + | | Gamma | | Gamma | | Gamma | |
> > > + | +---+-----+ +----+------+ +----+-----+ |
> > > + | | | | |
> > > + +--------------------------------------------+
> > > ++------v--------------v---------------v-------|
> > > +|| ||
> > > +|| Pipe Blender ||
> > > ++--------------------+------------------------+
> > > +| | |
> > > +| +-----------v----------+ |
> > > +| | Pipe DeGamma | |
> > > +| | | |
> > > +| +-----------+----------+ |
> > > +| | Pipe Color |
> > > +| +-----------v----------+ Hardware |
> > > +| | Pipe CSC/CTM | |
> > > +| | | |
> > > +| +-----------+----------+ |
> > > +| | |
> > > +| +-----------v----------+ |
> > > +| | Pipe Gamma | |
> > > +| | | |
> > > +| +-----------+----------+ |
> > > +| | |
> > > ++---------------------------------------------+
> > > + |
> > > + v
> > > + Pipe Output
> > > +
> >
> > This diagram defines what happens before and after the blending space but did
> > where does scaling fit into it? Scaling can look different when performed in linear or
> > non-linear space so I think it is important to define where in the pipeline it sits.
> >
> > In my view scaling would happen between plane degamma and plane CSC.
>
> Yeah we can add scaling as well to make it clear. Scaling ideally should happen after
> Degamma. In intel's case it is after the CSC.

Btw. are you aware that if a plane has an alpha channel which is used
for pixel coverage (i.e. shape anti-aliasing), then non-nearest
sampling and therefore also scaling must operate on alpha
pre-multiplied optical (linear) values?

For the best results, of course.

So after degamma indeed, but you cannot degamma with pre-multiplied
alpha, yet scaling should use pre-multiplied alpha.

Thanks,
pq

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]