From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Sebastian Wick <sebastian.wick@redhat.com>
Cc: dri-devel@lists.freedesktop.org,
Pekka Paalanen <ppaalanen@gmail.com>,
Uma Shankar <uma.shankar@intel.com>,
amd-gfx@lists.freedesktop.org,
Harry Wentland <harry.wentland@amd.com>,
Joshua Ashton <joshua@froggi.es>,
Vitaly.Prosyak@amd.com
Subject: Re: [PATCH 3/3] drm/connector: Deprecate split for BT.2020 in drm_colorspace enum
Date: Tue, 14 Feb 2023 22:10:35 +0200 [thread overview]
Message-ID: <Y+vqu3qGUQayTjd+@intel.com> (raw)
In-Reply-To: <CA+hFU4y=N3bR-vXXeLP0xTe0-HJPgF_GTbKrb3A9St-z2LignQ@mail.gmail.com>
On Tue, Feb 14, 2023 at 08:45:00PM +0100, Sebastian Wick wrote:
> On Tue, Feb 14, 2023 at 5:57 PM Harry Wentland <harry.wentland@amd.com> wrote:
> >
> >
> >
> > On 2/14/23 10:49, Sebastian Wick wrote:
> > > On Fri, Feb 3, 2023 at 5:00 PM Ville Syrjälä
> > > <ville.syrjala@linux.intel.com> wrote:
> > >>
> > >> On Fri, Feb 03, 2023 at 10:24:52AM -0500, Harry Wentland wrote:
> > >>>
> > >>>
> > >>> On 2/3/23 10:19, Ville Syrjälä wrote:
> > >>>> On Fri, Feb 03, 2023 at 09:39:42AM -0500, Harry Wentland wrote:
> > >>>>>
> > >>>>>
> > >>>>> On 2/3/23 07:59, Sebastian Wick wrote:
> > >>>>>> On Fri, Feb 3, 2023 at 11:40 AM Ville Syrjälä
> > >>>>>> <ville.syrjala@linux.intel.com> wrote:
> > >>>>>>>
> > >>>>>>> On Fri, Feb 03, 2023 at 02:07:44AM +0000, Joshua Ashton wrote:
> > >>>>>>>> Userspace has no way of controlling or knowing the pixel encoding
> > >>>>>>>> currently, so there is no way for it to ever get the right values here.
> > >>>>>>>
> > >>>>>>> That applies to a lot of the other values as well (they are
> > >>>>>>> explicitly RGB or YCC). The idea was that this property sets the
> > >>>>>>> infoframe/MSA/SDP value exactly, and other properties should be
> > >>>>>>> added to for use userspace to control the pixel encoding/colorspace
> > >>>>>>> conversion(if desired, or userspace just makes sure to
> > >>>>>>> directly feed in correct kind of data).
> > >>>>>>
> > >>>>>> I'm all for getting userspace control over pixel encoding but even
> > >>>>>> then the kernel always knows which pixel encoding is selected and
> > >>>>>> which InfoFrame has to be sent. Is there a reason why userspace would
> > >>>>>> want to control the variant explicitly to the wrong value?
> > >>>>>>
> > >>>>>
> > >>>>> I've asked this before but haven't seen an answer: Is there an existing
> > >>>>> upstream userspace project that makes use of this property (other than
> > >>>>> what Joshua is working on in gamescope right now)? That would help us
> > >>>>> understand the intent better.
> > >>>>
> > >>>> The intent was to control the infoframe colorimetry bits,
> > >>>> nothing more. No idea what real userspace there was, if any.
> > >>>>
> > >>>>>
> > >>>>> I don't think giving userspace explicit control over the exact infoframe
> > >>>>> values is the right thing to do.
> > >>>>
> > >>>> Only userspace knows what kind of data it's stuffing into
> > >>>> the pixels (and/or how it configures the csc units/etc.) to
> > >>>> generate them.
> > >>>>
> > >>>
> > >>> Yes, but userspace doesn't control or know whether we drive
> > >>> RGB or YCbCr on the wire. In fact, in some cases our driver
> > >>> needs to fallback to YCbCr420 for bandwidth reasons. There
> > >>> is currently no way for userspace to know that and I don't
> > >>> think it makes sense.
> > >>
> > >> People want that control as well for whatever reason. We've
> > >> been asked to allow YCbCr 4:4:4 output many times.
> > >
> > > I don't really think it's a question of if we want it but rather how
> > > we get there. Harry is completely right that if we would make the
> > > subsampling controllable by user space instead of the kernel handling
> > > it magically, user space which does not adapt to the new control won't
> > > be able to light up some modes which worked before.
> > >
> >
> > Thanks for continuing this discussion and touching on the model of how
> > we get to where we want to go.
> >
> > > This is obviously a problem and not one we can easily fix. We would
> > > need a new cap for user space to signal "I know that I can control
> > > bpc, subsampling and compression to lower the bandwidth and light up
> > > modes which otherwise fail". That cap would also remove all the
> > > properties which require kernel magic to work (that's also what I
> > > proposed for my KMS color pipeline API).
> > >
> > > We all want to expose more of the scanout capability and give user
> > > space more control but I don't think an incremental approach works
> > > here and we would all do better if we accept that the current API
> > > requires kernel magic to work and has a few implicit assumptions baked
> > > in.
> > >
> > > With all that being said, I think the right decision here is to
> > >
> > > 1. Ignore subsampling for now
> > > 2. Let the kernel select YCC or RGB on the cable
> > > 3. Let the kernel figure out the conversion between RGB and YCC based
> > > on the color space selected
> > > 4. Let the kernel send the correct infoframe based on the selected
> > > color space and cable encoding
> > > 5. Only expose color spaces for which the kernel can do the conversion
> > > and send the infoframe
> >
> > I agree. We don't want to break or change existing behavior (that is
> > used by userspace) and this will get us far without breaking things.
> >
> > > 6. Work on the new API which is hidden behind a cap
> > >
> >
> > I assume you mean something like
> > https://gitlab.freedesktop.org/pq/color-and-hdr/-/issues/11
>
> Something like that, yes. The main point being a cap which removes a
> lot of properties and sets new expectations between user space and
> kernel. The actual API is not that important.
>
> > Above you say that you don't think an incremental approach works
> > here. Can you elaborate?
>
> Backwards compatibility is really hard. If we add another property to
> control e.g. the color range infoframe which doesn't magically convert
> colors, we now have to define how it interacts with the existing
> property.
I think that's easy. The old prop simply override the
infoframe/etc. stuff. Pretty sure that's how we have it
implemented in i915 since the start.
And if you set it wrong it's you own fault.
> We also have to figure out how a user space which doesn't
> know about the new property behaves when another client has set that
> property. If any property which currently might change the pixel
> values is used, we can't expose the entire color pipeline because the
> kernel might have to use some element in it to achieve its magic
> conversion. So essentially you already have this hard device between
> "old" and "new" and you can't use the new stuff incrementally.
That problem exists with any new property. Old userspace and new
userspace may interact badly enought that nothing works right.
In that sense I think these props might even be pretty mundane
as the worst you might get from setting the infoframe wrong is
perhaps wrong colors on your display.
To solve that particular problem there has been talk (for years)
about some kind of "reset all" knob to make sure everything is
at a safe default value. I have a feeling there was even some
kind of semi-real proposal in recent times, but maybe I imgained
it?
Right now I guess what you do is either just reboot, or muck
around with modetest to manually reset properties.
I have occasionally abused this btw, to set some prop with
modetest and then run some real userspace that doesn't even
know about said property. Easy way to test stuff :P
--
Ville Syrjälä
Intel
next prev parent reply other threads:[~2023-02-14 20:10 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-03 2:07 [PATCH 1/3] drm/connector: Convert DRM_MODE_COLORIMETRY to enum Joshua Ashton
2023-02-03 2:07 ` [PATCH 2/3] drm/connector: Add enum documentation to drm_colorspace Joshua Ashton
2023-02-08 8:56 ` Pekka Paalanen
2023-02-16 21:22 ` Harry Wentland
2023-02-03 2:07 ` [PATCH 3/3] drm/connector: Deprecate split for BT.2020 in drm_colorspace enum Joshua Ashton
2023-02-03 10:39 ` Ville Syrjälä
2023-02-03 12:59 ` Sebastian Wick
2023-02-03 13:35 ` Ville Syrjälä
2023-02-03 13:52 ` Sebastian Wick
2023-02-03 14:02 ` Ville Syrjälä
2023-02-08 9:18 ` Pekka Paalanen
2023-02-08 14:49 ` Ville Syrjälä
2023-02-09 10:05 ` Pekka Paalanen
2023-02-03 14:39 ` Harry Wentland
2023-02-03 15:19 ` Ville Syrjälä
2023-02-03 15:24 ` Harry Wentland
2023-02-03 16:00 ` Ville Syrjälä
2023-02-03 18:28 ` Harry Wentland
2023-02-03 18:56 ` Ville Syrjälä
2023-02-03 19:16 ` Harry Wentland
2023-02-03 19:25 ` Ville Syrjälä
2023-02-03 19:33 ` Harry Wentland
2023-02-08 10:03 ` Pekka Paalanen
2023-02-03 19:34 ` Ville Syrjälä
2023-02-03 19:43 ` Harry Wentland
2023-02-04 6:09 ` Joshua Ashton
2023-02-06 9:47 ` Ville Syrjälä
2023-02-06 17:16 ` Harry Wentland
2023-02-08 10:32 ` Pekka Paalanen
2023-02-08 9:30 ` Pekka Paalanen
2023-02-08 9:25 ` Pekka Paalanen
2023-02-14 15:49 ` Sebastian Wick
2023-02-14 16:56 ` Harry Wentland
2023-02-14 19:45 ` Sebastian Wick
2023-02-14 20:04 ` Harry Wentland
2023-02-15 9:40 ` Pekka Paalanen
2023-02-15 20:45 ` Harry Wentland
2023-02-14 20:10 ` Ville Syrjälä [this message]
2023-02-14 21:18 ` Sebastian Wick
2023-02-14 21:27 ` Ville Syrjälä
2023-02-15 10:01 ` Pekka Paalanen
2023-02-15 10:33 ` Ville Syrjälä
2023-02-15 11:46 ` Daniel Stone
2023-02-15 20:54 ` Harry Wentland
2023-02-15 22:07 ` Daniel Stone
2023-02-03 14:52 ` Harry Wentland
2023-02-04 16:06 ` kernel test robot
2023-02-08 9:30 ` Pekka Paalanen
2023-02-09 16:38 ` Joshua Ashton
2023-02-09 17:03 ` Simon Ser
2023-02-09 18:08 ` Ville Syrjälä
2023-02-10 9:37 ` Pekka Paalanen
2023-02-10 9:44 ` Simon Ser
2023-02-04 9:06 ` [PATCH 1/3] drm/connector: Convert DRM_MODE_COLORIMETRY to enum kernel test robot
2023-02-04 10:28 ` kernel test robot
2023-02-08 8:29 ` Pekka Paalanen
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=Y+vqu3qGUQayTjd+@intel.com \
--to=ville.syrjala@linux.intel.com \
--cc=Vitaly.Prosyak@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=harry.wentland@amd.com \
--cc=joshua@froggi.es \
--cc=ppaalanen@gmail.com \
--cc=sebastian.wick@redhat.com \
--cc=uma.shankar@intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox