From: Dmitry Osipenko <digetx@gmail.com>
To: Russell King - ARM Linux <linux@armlinux.org.uk>
Cc: "Ville Syrjälä" <ville.syrjala@linux.intel.com>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Laurent Pinchart" <laurent.pinchart+renesas@ideasonboard.com>,
"Thierry Reding" <thierry.reding@gmail.com>,
"Neil Armstrong" <narmstrong@baylibre.com>,
"Maxime Ripard" <maxime.ripard@free-electrons.com>,
dri-devel@lists.freedesktop.org,
"Paul Kocialkowski" <paul.kocialkowski@bootlin.com>,
"Thomas Hellstrom" <thellstrom@vmware.com>,
linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
"Ben Skeggs" <bskeggs@redhat.com>,
"Rodrigo Vivi" <rodrigo.vivi@intel.com>,
linux-tegra@vger.kernel.org, linux-media@vger.kernel.org
Subject: Re: [RFC PATCH v3 1/2] drm: Add generic colorkey properties for DRM planes
Date: Fri, 06 Jul 2018 22:48:26 +0300 [thread overview]
Message-ID: <1862420.zvYl24lURK@dimapc> (raw)
In-Reply-To: <20180706170136.GC17271@n2100.armlinux.org.uk>
On Friday, 6 July 2018 20:01:36 MSK Russell King - ARM Linux wrote:
> On Fri, Jul 06, 2018 at 07:33:14PM +0300, Dmitry Osipenko wrote:
> > On Friday, 6 July 2018 18:40:27 MSK Russell King - ARM Linux wrote:
> > > On Fri, Jul 06, 2018 at 05:58:50PM +0300, Dmitry Osipenko wrote:
> > > > On Friday, 6 July 2018 17:10:10 MSK Ville Syrjälä wrote:
> > > > > IIRC my earlier idea was to have different colorkey modes for the
> > > > > min+max and value+mask modes. That way userspace might actually have
> > > > > some chance of figuring out which bits of state actually do
> > > > > something.
> > > > > Although for Intel hw I think the general rule is that min+max for
> > > > > YUV,
> > > > > value+mask for RGB, so it's still not 100% clear what to pick if the
> > > > > plane supports both.
> > > > >
> > > > > I guess one alternative would be to have min+max only, and the
> > > > > driver
> > > > > would reject 'min != max' if it only uses a single value?
> > > >
> > > > You should pick both and reject unsupported property values based on
> > > > the
> > > > planes framebuffer format. So it will be possible to set unsupported
> > > > values
> > > > while plane is disabled because it doesn't have an associated
> > > > framebuffer
> > > > and then atomic check will fail to enable plane if property values are
> > > > invalid for the given format.
> > >
> > > The colorkey which is attached to a plane 'A' is not applied to plane
> > > 'A', so the format of plane 'A' is not relevant. The colorkey is
> > > applied to some other plane which will be below this plane in terms
> > > of the plane blending operation.
> > >
> > > What if you have several planes below plane 'A' with differing
> > > framebuffer formats - maybe an ARGB8888 plane and a ARGB1555 plane -
> > > do you decide to limit the colorkey to 8bits per channel, or to
> > > ARGB1555 format?
> > >
> > > The answer is, of course, hardware dependent - generic code can't
> > > know the details of the colorkey implementation, which could be one
> > >
> > > of:
> > > lower plane data -> expand to 8bpc -> match ARGB8888 colorkey
> > > lower plane data -> match ARGB8888 reduced to plane compatible
> > > colorkey
> > >
> > > which will give different results depending on the format of the
> > > lower plane data.
> >
> > All unsupportable cases should be rejected in the atomic check. If your HW
> > can't handle the case where multiple bottom planes have a different
> > format,
> > then in the planes atomic check you'll have to walk up all the bottom
> > planes and verify their formats.
>
> That is *not* what I'm trying to point out.
>
> You are claiming that we should check the validity of the colorkey
> format in relation to the lower planes, and it sounds like you're
> suggesting it in generic code. I'm trying to get you to think a
> bit more about what you're suggesting by considering a theoretical
> (or maybe not so theoretical) case.
>
> We do have hardware out there which can have multiple planes that
> are merged together - I seem to remember that Tegra? hardware has
> that ability, but it isn't implemented in the driver yet.
>
I'm not sure what you're meaning by planes "merging", could you please
elaborate?
> So, I'm asking how you forsee the validity check working in the
> presence of different formats for multiple lower planes.
>
> I'm not talking about whether the hardware supports it or not - I'm
> assuming that the hardware _does_ support multiple lower planes with
> differing formats.
>
> From what I understand, to take the simple case of one lower plane,
> you are proposing:
>
> - if the lower plane is ARGB1555, then specifying a colorkey with
> an alpha of anything except 0 or 0xffff would be invalid and should
> be rejected.
>
> - if a lower plane is ARGB8888, then specifying a colorkey which
> is anything except 0...0xffff in 0x101 (65535 / 255) steps would
> be invalid and should be rejected.
>
> Now consider the case I mentioned above. What if there are two lower
> planes, one with ARGB1555 and the other with ARGB8888. Does this mean
> that (eg) the alpha colorkey component should be rejected if:
>
> - the alpha in the colorkey is not 0 or 0xffff, or
> - it's anything except 0...0xffff in 0x101 steps?
>
> My assertion is that this is only a decision that can be made by the
> driver and not by generic code, because it is hardware dependent.
>
Definitely the conversion rule must be defined explicitly, otherwise colorkey
property values can't be considered generic. Thank you for pointing at it. I
think rounding to a closest value should be the generic conversion rule.
I'll document the conversion rule in the next revision. Please let me know if
you see any problems with the rounding to a closest value.
The final decision will be made by the driver, but driver and userspace will
have to take into account the defined generic conversion rule.
> I am _not_ disagreeing with the general principle of validating that
> the requested state is possible with the hardware.
Thank you for the clarification.
next prev parent reply other threads:[~2018-07-06 19:48 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-03 22:00 [RFC PATCH v3 0/2] drm: Add generic colorkey plane properties Dmitry Osipenko
2018-06-03 22:00 ` [RFC PATCH v3 1/2] drm: Add generic colorkey properties for DRM planes Dmitry Osipenko
2018-07-06 12:11 ` Maarten Lankhorst
2018-07-06 12:23 ` Ville Syrjälä
2018-07-06 13:05 ` Dmitry Osipenko
2018-07-06 14:10 ` Ville Syrjälä
2018-07-06 14:58 ` Maarten Lankhorst
2018-07-06 14:58 ` Dmitry Osipenko
2018-07-06 15:40 ` Russell King - ARM Linux
2018-07-06 16:32 ` Ville Syrjälä
2018-07-06 16:33 ` Dmitry Osipenko
2018-07-06 17:01 ` Russell King - ARM Linux
2018-07-06 19:48 ` Dmitry Osipenko [this message]
2018-06-03 22:00 ` [RFC PATCH v3 2/2] drm/tegra: plane: Implement generic colorkey property for older Tegra's Dmitry Osipenko
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=1862420.zvYl24lURK@dimapc \
--to=digetx@gmail.com \
--cc=bskeggs@redhat.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=laurent.pinchart+renesas@ideasonboard.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=maarten.lankhorst@linux.intel.com \
--cc=maxime.ripard@free-electrons.com \
--cc=narmstrong@baylibre.com \
--cc=paul.kocialkowski@bootlin.com \
--cc=rodrigo.vivi@intel.com \
--cc=thellstrom@vmware.com \
--cc=thierry.reding@gmail.com \
--cc=ville.syrjala@linux.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;
as well as URLs for NNTP newsgroup(s).