From: Pekka Paalanen <ppaalanen@gmail.com>
To: Daniel Vetter <daniel@ffwll.ch>,
Laurentiu Palcu <laurentiu.palcu@oss.nxp.com>
Cc: dri-devel@lists.freedesktop.org,
Sebastian Wick <sebastian@sebastianwick.net>,
Vitaly Prosyak <vitaly.prosyak@amd.com>,
Sam Ravnborg <sam@ravnborg.org>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Subject: Re: per-plane LUTs and CSCs?
Date: Thu, 10 Sep 2020 11:50:26 +0300 [thread overview]
Message-ID: <20200910115026.58dffaf1@eldfell> (raw)
In-Reply-To: <20200910075226.GF438822@phenom.ffwll.local>
[-- Attachment #1.1: Type: text/plain, Size: 3359 bytes --]
On Thu, 10 Sep 2020 09:52:26 +0200
Daniel Vetter <daniel@ffwll.ch> wrote:
> On Thu, Sep 10, 2020 at 10:25:43AM +0300, Pekka Paalanen wrote:
> > On Wed, 9 Sep 2020 13:57:28 +0300
> > Laurentiu Palcu <laurentiu.palcu@oss.nxp.com> wrote:
> >
> > > Hi all,
> > >
> > > I was wondering whether you could give me an advise on how to proceed further
> > > with the following issue as I'm preparing to upstream the next set of patches
> > > for the iMX8MQ display controller(DCSS). The display controller has 3 planes,
> > > each with 2 CSCs and one degamma LUT. The CSCs are in front and after the LUT
> > > respectively. Then the output from those 3 pipes is blended together and then
> > > gamma correction is applied using a linear-to-nonlinear LUT and another CSC, if
> > > needed.
Hi,
hmm, so FB -> CSC -> LUT -> CSC -> blending?
Is it then
blending -> LUT -> CSC -> encoder
or
blending -> CSC -> LUT -> encoder?
Are all these LUTs per-channel 1D LUTs or something else?
What ever the KMS UAPI for these is going to be looking like, it
obviously needs to define all this. So I'm guessing we need to define
the abstract color pipeline of KMS in general that includes everything
any driver might want to expose. Then each driver picks the blocks in
the pipeline it wants to expose and the other blocks are assumed to be
"identity transform".
Without such general abstract color pipeline defined and documented it
is very unlikely IMO for generic userspace to make use of the driver
features.
All blocks must also default to identity transform. A block
unimplemented by a driver is the same as a block not used or understood
by a KMS client.
Userspace that does not understand all the blocks will need to use the
"harmless default values". This then ties in with what I've discussed
with danvet before: when you are VT-switching from one KMS client to
another, how do you reset the full KMS state (including blocks you
don't understand) to the same state you had before. The other KMS
client may have messed them up while you were gone.
All this default value talk is to ensure that the abstract KMS color
pipeline can be extended without breaking existing userspace.
...
> > > So, how should I continue with this one? Any pointers?
> >
> > Hi,
> >
> > I can't help you, but I can say that we are currently in the process of
> > designing a color management and HDR extension for Wayland, and I'm
> > sure in the long term I would like to use per-plane color space
> > transformation features of KMS in Weston eventually.
> >
> > IOW, one more userspace that is going to be taking advantage of such
> > features as long as they are not too driver-specific.
>
> Personally I think best to wait for userspace to come up with color
> manager protocols, that should give us a much clearer idea of what the
> kernel interface should look like. Since hw is pretty special in this
> area, I expect we'll have to do a bunch of impendendance mismatching in
> the kernel anyway.
Speaking of that, where should we scream if we feel like we are missing
KMS properties to get the best out of color management and HDR in
Weston, assuming we're not kernel devs?
Who to Cc?
We currently have intel and AMD hardware at hand if that makes any
difference.
Thanks,
pq
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
[-- Attachment #2: Type: text/plain, Size: 160 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2020-09-10 8:50 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-09 10:57 per-plane LUTs and CSCs? Laurentiu Palcu
2020-09-10 7:25 ` Pekka Paalanen
2020-09-10 7:52 ` Daniel Vetter
2020-09-10 8:50 ` Pekka Paalanen [this message]
2020-09-10 9:30 ` Laurentiu Palcu
2020-09-10 10:28 ` Pekka Paalanen
2020-09-10 10:39 ` Laurentiu Palcu
2020-09-10 10:56 ` Laurent Pinchart
2020-09-10 17:09 ` Vitaly Prosyak
2020-09-10 17:51 ` Laurent Pinchart
2020-09-10 18:07 ` Vitaly Prosyak
2020-09-10 19:39 ` Vitaly Prosyak
2020-09-11 12:57 ` Pekka Paalanen
2020-09-10 10:53 ` Laurent Pinchart
2020-09-10 7:50 ` Simon Ser
2020-09-10 8:18 ` Daniel Vetter
2020-09-10 8:29 ` Simon Ser
2020-09-14 6:13 ` Alex Deucher
2020-09-14 13:32 ` Ville Syrjälä
2020-09-14 14:38 ` Alex Deucher
2020-09-14 15:07 ` Ville Syrjälä
2020-09-10 11:38 ` Ville Syrjälä
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200910115026.58dffaf1@eldfell \
--to=ppaalanen@gmail.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=laurent.pinchart@ideasonboard.com \
--cc=laurentiu.palcu@oss.nxp.com \
--cc=sam@ravnborg.org \
--cc=sebastian@sebastianwick.net \
--cc=vitaly.prosyak@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.